Estoy usando el algoritmo de Levenshtein para encontrar la similitud entre dos cadenas. Esta es una parte muy importante del programa que estoy haciendo, por lo que debe ser efectiva. El problema es que el algoritmo no encuentra los siguientes ejemplos como similares:Similitud de cadenas -> distancia de Levenshtein
Conair
AIRE ACONDICIONADO
El algoritmo dará una distancia de 6. Así, por esta palabra de 6 letras (Miras la palabra con la mayor cantidad de letras), la diferencia es de 100% => la similitud es 0%.
Necesito encontrar una manera de encontrar las similitudes entre dos cadenas, pero también teniendo en cuenta casos como el que presenté antes.
¿Hay algún algoritmo mejor que pueda usar? ¿O qué me recomiendan?
EDITAR: También he estudiado el algoritmo "Damerau-Levenshtein", que agrega transposiciones. El problema es que estas transposiciones son solo para caracteres adyacentes (y no para una cantidad de caracteres).
Antes de que pueda descifrar un algoritmo de distancia de cadena, debe definir claramente qué tipo de transformaciones cree que son aceptables. ¿Qué hace que estas cadenas sean más similares entre sí que dos cadenas de 6 letras al azar? ¿Puedes expresarlo de una manera tal que puedas 'trepar colina' de una cuerda a otra, cada vez más similar? –