Вы когда-нибудь слушали песню, и в целом она вам нравилась, но чувствовали, что некоторые функции можно улучшить? Возможно, припев был слишком громким, уровень энергии был не совсем правильным, или было слишком много или слишком мало слов. У меня тоже был такой опыт, и именно это вдохновило меня на создание рекомендателя песен на основе отзывов пользователей. Теперь, если вам интересно, как это работает? Давайте объясним процесс с помощью четырех ключевых шагов:

Выберите набор данных

Основная цель — создать рабочий пример, поэтому я стараюсь, чтобы набор данных был небольшим из-за вычислительных проблем, но достаточно большим, чтобы обеспечить соответствующие результаты. Набор данных, который я использовал, состоял примерно из 170 000 песен, полученных из Spotify API. Чтобы измерить песни и извлечь их соответствующие функции, я использовал те же 15 функций, предоставленных Spotify. Эти функции дают ценную информацию о характеристиках каждой песни.

  • Акустика: это значение описывает, насколько акустической является песня. Оценка 1,0 означает, что песня, скорее всего, будет акустической.
  • Инструментальность: это значение представляет количество вокала в песне. Чем он ближе к 1.0, тем инструментальнее песня.
  • Liveness: это значение описывает вероятность того, что песня была записана с живой аудиторией. Согласно официальной документации, «значение выше 0,8 дает высокую вероятность того, что трек активен».
  • Speechiness: «Speechiness определяет наличие произносимых слов в дорожке». Если речь песни выше 0,66, она, вероятно, состоит из произнесенных слов, оценка от 0,33 до 0,66 — это песня, которая может содержать как музыку, так и слова, а оценка ниже 0,33 означает, что в песне нет речи.
  • Энергия: «(энергия) представляет собой воспринимаемую меру интенсивности и активности. Как правило, энергичные треки кажутся быстрыми, громкими и шумными».
  • Танцевальность: «Танцевальность описывает, насколько трек подходит для танцев, основываясь на сочетании музыкальных элементов, включая темп, стабильность ритма, силу удара и общую регулярность. Значение 0,0 соответствует наименее танцевальному, а 1,0 — наиболее танцевальному».
  • Валентность: «Показатель от 0,0 до 1,0, описывающий музыкальную позитивность, передаваемую треком. Треки с высокой валентностью звучат более позитивно (например, счастливо, весело, эйфорично), а треки с низкой валентностью звучат более негативно (например, грустно, подавленно, злобно)».

Создать модель

Я использую кластеризацию k-mean в качестве основной модели после Standard Scaler. Кластеризация K-средних — это популярный алгоритм машинного обучения без присмотра, используемый для группировки похожих точек данных в кластеры. Он работает путем итеративного назначения точек данных кластерам и обновления центроидов кластеров до конвергенции. Алгоритм начинается со случайного выбора K центроидов, которые представляют начальные центры кластеров. Затем, на этапе назначения, каждая точка данных назначается кластеру, центроид которого находится ближе всего к ней, обычно на основе евклидова расстояния. Как только все точки данных назначены, алгоритм переходит к этапу обновления, где центроиды пересчитываются, взяв среднее значение точек данных, назначенных каждому кластеру. Эти два шага повторяются итеративно до тех пор, пока центроиды не перестанут значительно перемещаться или не будет достигнуто максимальное количество итераций, что приводит к окончательному решению кластеризации.

Обработка отзывов с помощью НЛП

Когда дело доходит до использования отзывов пользователей для рекомендации песен, есть один сложный аспект, который требует внимания. Идея моего проекта Song Recommender, основанного на NLP, заключалась в том, чтобы использовать языковую модель для анализа обзоров и предложения необходимых изменений в функциях песни, упомянутых ранее. Поскольку для этой задачи мне понадобилась языковая модель, я использую ChatGPT, потому что он мощный и имеет API. Поскольку создание точно настроенной модели может быть дорогостоящим и требует значительного объема данных, которых у меня не было, я изучил альтернативный подход: оперативное проектирование.

Инжиниринг подсказок включает в себя создание подсказки для языковой модели, чтобы вызвать желаемый ответ. В моем случае я использовал подсказку, начинающуюся с «действовать как» (вероятно, вы знакомы с этим), и предоставил массив значений песни, включая такие атрибуты, как продолжительность, энергия, громкость и т. д. Наряду со значениями песни я включил отзыв пользователя и попросил модель предложить изменения значений на основе обзора. Первоначально результаты не были многообещающими. Однако я также включил значения описания из набора данных, что позволило языковой модели генерировать более содержательные и актуальные рекомендации на основе отзывов пользователей и атрибутов песни.

Создать приложение

Для создания приложения я использую Streamlit, мощный фреймворк для создания веб-приложений. Streamlit предложил идеальное сочетание эстетики, простоты разработки и функциональности для моего проекта. Я также использую меню функций с подсветкой для улучшения визуальных эффектов и функциональности. Все, что вам нужно сделать, чтобы получить рекомендации, это нажать кнопку случайной песни для случайной песни или ввести песню, а затем ввести свой критический отзыв о песне после нажатия кнопки запуска рекомендации, появится счетчик. После завершения счетчика вы можете получить доступ к рекомендуемым песням на страницу результатов. Также спасибо за базу приложения Streamlit для abdelrhmanelruby.

Заключение

Хотя важно отметить, что набор данных, использованный для обучения модели, был относительно небольшим (170 000), рекомендатель по-прежнему стремится предоставить ценные предложения. Хотя он может не раскрыть весь свой потенциал из-за ограниченности данных, он служит отправной точкой для изучения новых песен, которые соответствуют вашим индивидуальным вкусам.

Итак, если вы хотите настроить свой музыкальный опыт и найти песни, которые лучше соответствуют вашим предпочтениям, попробуйте этот рекомендатель песен. Введите свой отзыв, и пусть алгоритм творит чудеса, чтобы рекомендовать песни, которые вам, скорее всего, понравятся.

Ресурсы