Skip to content

development of an ML model for comparing musical texts and searching for covers

Notifications You must be signed in to change notification settings

denis-42ds/cover_songs_search

Repository files navigation

Название проекта: Разработка алгоритма предсказательной модели для Яндекс.Музыки

Статус проекта: в работе

Описание рабочих файлов:

  • requirements.txt - библиотеки Python, необходимые для работы проекта, а также их версии
  • music_covers.ipynb - рабочая тетрадь с исследованиями, визуализациями и текстовыми описаниями
  • research_class.py - файл, содержащий класс для проведения исследования
  • assets - директория с сохранёнными артефактами
  • run_mlflow_server.sh - скрипт для запуска mlflow server

Описание проекта

Разработка ML-модели для сопоставления текстов музыкальных произведений и для поиска каверов (вариации обработки оригинала с элементами новой аранжировки) по их текстам

Цель проекта

  • Необходимо разработать ML-продукт, который:
  • Находит все кавер-треки и/или исходники к заданному треку в датасете
  • Перечисляет все кавер-треки и/или оригиналы к заданному, указывает положение данного трека в цепочке каверов

Ход исследования

  • Предобработка данных
  • Разделение на выборки
  • Применение техник кодирования с учётом моделей, которые будут использованы
  • Масштабирование данных (при необходимости)
  • Обучение трёх моделей на тренировочной выборке (подбор гиперпараметров)
  • Выбор оптимальной модели
  • Проверка качества лучшей модели на тестовой выборке, выявление важности признаков
  • Отчёт

Используемые инструменты

  • PostgreSQL,
  • MLflow,
  • Python: pandas, numpy, matplotlib, seaborn, sentence_transformers, torch, sklearn, catboost

Вывод:

  • в решении поставленной задачи основными признаками приняты текст и дата появления трека
  • целевой метрикой выбрана roc-auc, т.к. она устойчива к дисбалансу классов, который присущ предоставленным данным
  • при кодировании текстов использованы два трансформера: SentenceTransformer, Bert transformer
  • для обучения использовались признаки: дата выхода трека, эмбеддинги
  • целевой признак - метка оригинал/кавер
  • удалённые признаки:
    • ID треков и текстов (чтобы модель была более универсальной)
    • текст - удалён, т.к. есть его эмбеддинги
    • язык, продолжительность, жанр - удалены, т.к. сами по себе данные признаки не информативны для решения поставленной задачи
  • при обучении выбирали лучшую из моделей: XGBoost, CatBoost, LogisticRegression
  • наилучший результат по выбранной метрике показала модель: CatBoost на эмбеддингах, полученных через Bert Transformer
  • не реализованные идеи:
    • пробовали использовать библиотеку MusicMetaLinker для обогащения предоставленных данных, но для полноценного использования не хватило отведённого времени
    • рассматривали алгоритм Doc2Vec, для полноценного изучения не хватило времени
    • кластеризация данных библиотекой DBScan, для полноценного изучения не хватило времени

Releases

No releases published

Packages

No packages published

Languages