Существует расстояние Дамерау – Левенштейна , которое добавляет поддержку транспонирования символов и обеспечивает больший охват для общих опечаток.
Чтобы получить процент сходства для Левенштейн или Дамерау-Левенштейн сделать что-то вроде этого:
int relative_similarity = 1.0 - 1.0 / ((len(x) + len(y)) / 2) * lev(x, y); //untested
В качестве альтернативы вы можете взглянуть на самая длинная общая подпоследовательность как показатель сходства.
Далее идут
, которые являются алгоритмами фонетического сопоставления.
В то время как Smith
и его немецкий аналог Schmidt
окажутся вполнеВ отличие от расстояния редактирования (он же Левенштейн), Soundex и MEtaphone будут считать их фонетически похожими или даже эквивалентными.
Но без того, чтобы вы сказали нам, что неправильно относительно чистых Расстояние Левенштейна трудно угадатьss лучший алгоритм.