У меня есть входная строка и коллекция строк, и я хочу сравнить входную строку и найти лучшие варианты для просмотра. Я хочу написать функцию, которая скажет мне, насколько эти две строки похожи. У вас есть идеи?
Для «коротких» различий строк алгоритм, который вы ищете, называется:
Расстояние Левенштейна
http://en.wikipedia.org/wiki/Levenshtein_distance
Для поиска различий в предложениях вы можете проверить алгоритмы, которые решают проблему ' самая длинная общая последовательность '.
Один инструмент, который делает это (первоначально unix) ' diff '
Ну, в Perl есть функция String :: Approx, которая, кажется, делает эту работу за вас.Но в целом, вы можете взглянуть на: Алгоритм Левенштейна .
Некоторые другие полезные ресурсы (в основном объясняются в C #):
Сравнение строк с допуском http://mihkeltt.blogspot.com/2009/04/dameraulevenshtein-distance.html http://www.perlmonks.org/?node=Levenshtein%20distance%3A%20calculating%20similarity%20of%20strings http://www.dotnetperls.com/levenshtein