Нечеткий поиск?

Есть две строки, 1я короткая 1-3 слова, вторая длинная 10-20 слов, надо определить, находится ли первая строка во второй или на сколько процентов она там находится. Посоветуйте алгоритмы :)
  • Вопрос задан
  • 7102 просмотра
Пригласить эксперта
Ответы на вопрос 7
Nicolette
@Nicolette
Я когда-то писала диплом на эту тему; у меня получилось, что лучше всего сравнивать русские слова по длине максимального общего префикса (как процент от длины меньшего из слов, должен быть выше порога). Для сравнения предложений — действительно сравнивать слова строк попарно и выводить функцию схожести через расстояния между похожими словами.
Ответ написан
@bear11
попробуйте дистанцию Левенштейна считать:http://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B5_%D0%9B%D0%B5%D0%B2%D0%B5%D0%BD%D1%88%D1%82%D0%B5%D0%B9%D0%BD%D0%B0
пример
bytes.com/topic/python/answers/580959-fuzzy-string-comparison
Ответ написан
Nigrimmist
@Nigrimmist
Asp.net senior developer
if(longStr.Contains(shortStr))
Ответ написан
tampere
@tampere
Есть много разных расстояний между словами, я бы разбил фразы на слова и взял бы среднюю из максимальных полученных мер попарного соответствия слов.
Ответ написан
Комментировать
Можно сравнивать методом триграмм. Даст определенный результат, даже если слова с разными окончаниями и т.д.
Ответ написан
Комментировать
@lightcaster
Традиционно — расстояние левенштейна.

Но я бы рекомендовал использвоать common longest subsequence. При этом, можно ввести некий штраф за гэпы между словами.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Комментировать
Ваш ответ на вопрос

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

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