Насколько похожи два слова - PullRequest
0 голосов
/ 07 декабря 2011

есть ли более точный алгоритм, чем алгоритм "расстояния Левенштейна" ?? http://en.wikipedia.org/wiki/Levenshtein_distance

1 Ответ

4 голосов
/ 07 декабря 2011

Существует расстояние Дамерау – Левенштейна , которое добавляет поддержку транспонирования символов и обеспечивает больший охват для общих опечаток.

Чтобы получить процент сходства для Левенштейн или Дамерау-Левенштейн сделать что-то вроде этого:

int relative_similarity = 1.0 - 1.0 / ((len(x) + len(y)) / 2) * lev(x, y); //untested

В качестве альтернативы вы можете взглянуть на самая длинная общая подпоследовательность как показатель сходства.

Далее идут

, которые являются алгоритмами фонетического сопоставления.

В то время как Smith и его немецкий аналог Schmidt окажутся вполнеВ отличие от расстояния редактирования (он же Левенштейн), Soundex и MEtaphone будут считать их фонетически похожими или даже эквивалентными.


Но без того, чтобы вы сказали нам, что неправильно относительно чистых Расстояние Левенштейна трудно угадатьss лучший алгоритм.

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