Я использую алгоритм Левенштейна, чтобы найти сходство между двумя строками. Это очень важная часть программы, которую я делаю, поэтому она должна быть эффективной. Проблема в том, что алгоритм не считает следующие примеры похожими:
CONAIR
AIRCON
Алгоритм даст расстояние 6. Итак, для этого слова из 6 букв (Вы смотрите на слово с наибольшим количеством букв ), разница составляет 100% => сходство составляет 0%.
Мне нужно найти способ найти сходство между двумя строками, но также принимая во внимание случаи, подобные тому, который я представил ранее.
Есть ли лучший алгоритм, который я могу использовать? Или что вы мне посоветуете?
РЕДАКТИРОВАТЬ :Я также изучил алгоритм «Дамерау–Левенштейна», который добавляет транспозиции. Проблема в том, что эти транспозиции предназначены только для соседних символов (, а не для ряда символов ).