Упрощение названий песен и исполнителей

#python #neural-network #spotify

Вопрос:

Введение

Привет. В настоящее время я создаю веб-приложение, которое берет случайную песню и помещает ее в список spotify воспроизведения. (Пользователь не может выбрать, какие песни он хочет)

Поэтому я ищу входные данные с spotify api помощью и получаю список результатов.

Проблема

Поскольку spotify возвращает не всегда лучший результат, я хотел просмотреть результаты и найти наиболее подходящий. Как бы вы добились наилучшего результата?

Моя попытка

Первое, что я попробовал, это сопоставить строки с fuzzywuzzy библиотекой. Это выглядело примерно так:

 song_ratio = ratio(real_song_name,result_song_name)
 

Это было хорошо, и это очень помогло, но что такое с песнями, в которых просто другая пунктуация?

Итак, что я сделал, так это убрал знаки препинания с:

 song_name = song_name.translate(str.maketrans('', '', punctuation))
 

Я также хочу избежать Караоке, ремастированных или живых версий и т. Д., Например:
Останься со мной до рассвета — Живи в Великобритании, 1982 / 2010 Ремастер от Джуди Цуке
Просто фильтровать по этим именам не имело бы смысла, потому что они выглядят по-разному.

Еще одна проблема: Поиск песни «Очарование» из «Джейн Морган и трубадуры»

Что я получаю, так это:

 Best found song: Its Been A Long Long Time to 22 % match<br>
Best found artist: Jane Morgan 54 %
 

Если бы я просто запросил песню «Очарование» у «Джейн Морган», я бы получил:

 Best found song: Fascination 100 % <br>
Best found artist: Jane Morgan 100 % 
 

Вопрос

Каков хороший способ решить эту проблему? Можно ли обучить a neural network обрабатывать мои строки в правильном формате, а затем находить наилучшее соответствие?

Комментарии:

1. Если пользователь должен ввести песню и исполнителя, вы можете просто отобразить список результатов и позволить им выбрать, какой из них выбрать

2. @Питер, спасибо тебе за твой комментарий. То, как я описал это в своем вопросе, не совсем соответствует тому, как работает мое приложение. Я старался не усложнять ситуацию. Короче говоря, пользователь не может выбрать нужную песню. Я отредактирую свой вопрос.

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

Ответ №1:

Что-то, что вы могли бы попробовать, — это использовать расширенный синтаксис запросов, предлагаемый Spotify search, и искать только часть названия песни/имени исполнителя. Например, ваш запрос на «Очарование» от «Джейн Морган и трубадуры» может стать:

исполнитель:»Jane Mo» трек:»Fascin»

и все равно верните правильный результат. Этот запрос ищет точную строку «Джейн М», появляющуюся в имени исполнителя, и «Очаровательную» в названии трека.

Комментарии:

1. спасибо вам за ваш ответ. Я на самом деле не думал ни о чем подобном, и я думаю, что это может быть ответом на мою проблему. В соответствии с какой процедурой вы бы тогда перерезали веревку? Просто отрежьте 30 % струны?

2. Вероятно, для всех ситуаций нет идеального среза, но, может быть, вы можете разделиться по словам и сохранить только первые пару слов из имени исполнителя/названия песни?