Делаю парсер на nodeJs, есть событие, но на двух разных сайтах, оно называет по-разному, например: Робин Хаазе VS Фабио Фоньини
А на втором сайте: Хасе Робин VS Фоньини Фабио
Проблема:
Визуально мы можем увидеть, что это одно событие, но написанное по-разному. Если взглянуть детально, они серьёзно различаются, например фамилия Хаазе и Хасе, а также порядок имени и фамилии.
Не знаю как написать алгоритм, который сможет посчитать на сколько эти строки похожи без учёта порядка слов и сделать отрез по коэффициенту, если он например меньше 60%.
Задача:
Другими словами, алгоритм должен чётко нам сказать, что скорее всего приведённые в пример две строки - представление одного и того же события.
вот есть пакет для анализа натуральных языков https://www.npmjs.com/package/natural
В т. ч. там есть ряд функция для анализа схожести строк (то же расстояние Левенштейна и другие). Надо подбирать что лучше подходит, возможно комбинация разных метрик.
Можно попробовать парсить фразы на слова, сортировать в одном направлении, слить результат обратно в одну строку, затем вычислять расстояние Левеншейна и его уже сравнивать с каким-то пороговым значением