Насколько похожи две строки? (90%, 100%, 40%) - PullRequest
2 голосов
/ 25 июня 2011

У меня есть входная строка и коллекция строк, и я хочу сравнить входную строку и найти лучшие варианты для просмотра. Я хочу написать функцию, которая скажет мне, насколько эти две строки похожи. У вас есть идеи?

Ответы [ 2 ]

10 голосов
/ 25 июня 2011

Для «коротких» различий строк алгоритм, который вы ищете, называется:

Расстояние Левенштейна

http://en.wikipedia.org/wiki/Levenshtein_distance

Для поиска различий в предложениях вы можете проверить алгоритмы, которые решают проблему ' самая длинная общая последовательность '.

Один инструмент, который делает это (первоначально unix) ' diff '

1 голос
/ 25 июня 2011

Ну, в 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...