Сходство строк -> расстояние Левенштейна

Я использую алгоритм Левенштейна, чтобы найти сходство между двумя строками. Это очень важная часть программы, которую я делаю, поэтому она должна быть эффективной. Проблема в том, что алгоритм не считает следующие примеры похожими:

CONAIR
AIRCON

Алгоритм даст расстояние 6. Итак, для этого слова из 6 букв (Вы смотрите на слово с наибольшим количеством букв ), разница составляет 100% => сходство составляет 0%.

Мне нужно найти способ найти сходство между двумя строками, но также принимая во внимание случаи, подобные тому, который я представил ранее.

Есть ли лучший алгоритм, который я могу использовать? Или что вы мне посоветуете?

РЕДАКТИРОВАТЬ :Я также изучил алгоритм «Дамерау–Левенштейна», который добавляет транспозиции. Проблема в том, что эти транспозиции предназначены только для соседних символов (, а не для ряда символов ).

26
задан Bart 26 July 2012 в 18:02
поделиться