Estoy buscando un algoritmo que toma 2 cadenas y me devolverá un "factor de similitud".Encontrar cómo dos cadenas similares son
Básicamente, tendré una entrada que puede estar mal escrita, tener letras transpuestas, etc., y tengo que encontrar la (s) coincidencia (s) más cercana (s) en una lista de valores posibles que tengo.
Esto no es para buscar en una base de datos. Tendré una lista en memoria de aproximadamente 500 cadenas para hacer coincidir, todas menores de 30 caracteres, por lo que puede ser relativamente lenta.
Sé que esto existe, lo he visto antes, pero no recuerdo su nombre.
Editar: Gracias por señalar Levenshtein and Hamming. Ahora, ¿cuál debo implementar? Básicamente miden cosas diferentes, que pueden usarse para lo que quiero, pero no estoy seguro de cuál es más apropiado.
He leído sobre los algoritmos, Hamming parece obviamente más rápido. Ya que ninguno detectará la transposición de dos caracteres (es decir, Jordan y Jodran), lo cual creo que será un error común, ¿cuál será más preciso para lo que quiero? ¿Puede alguien decirme algo sobre las concesiones?
En realidad, tanto de Hamming y la distancia Levenshtein detectar transposiciones, cada asignación de un costo de 2 .Este es uno de los pocos errores típicos que la distancia * de Hamming recogerá con sensatez: cualquier inserción o eliminación de un solo carácter le dará inmediatamente grandes puntajes de desemejanza. Use Levenshtein. –