erniesto77
@erniesto77
oop, rb, py, php, js

Как выявить похожие словосочетания в колонке SQL таблицы?

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

Задача сгруппировать похожие названия исполнителей присвоив им group_id равный минимальному значению id исполнителя среди похожих. Для примера вот так должно быть в идеале:

id 1137 Red Hot Chili Peppers в Олимпийском - group_id 1137
id 1138 Red Hot Chili Peppers - group_id 1137
id 1139 Группа Red Hot Chili Peppers - group_id 1137
id 1140 Red Hot (Live in CA) - group_id 1137

но сейчас у многих исполнителей поле group_id пустое.

Сейчас каждый день по крону ночью скрипт проходится по точным совпадениям в названии исполнителя и группирует их. Но много исполнителей остаются не объединенными.

Подскажите на уровне алгоритма, в общих чертах, как можно выявить похожие словосочетания и объединить их в группы?

Заранее всех благодарю!
  • Вопрос задан
  • 214 просмотров
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега Веб-разработка
{PHP, MySql, HTML, JS, CSS} developer
Я бы прошелся по всей выборке сначала - нашел максимальное количество вхождений слов, в топе наверняка будет мусор аля "Группа", "Live" и прочее. В идеале их вообще почистить(или пометить как-то, например так {{live}}). Дальше по 1 слову (допустим Red), делаем выборку, если в выборке много двух и более -словных сочетаний и мало однословных - скорее всего однословные мусор, а многословные содержат как минимум двухсловное название. Далее чистая стастистика - считаем вхождения каждого слова в выборку, если много - входит в название, мало - мусор. По статистике собираем название из максимально повторяющихся слов. Более подробно уже серьезно на бумажке порисовать/почёркать и вывести стройный алгоритм.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы