Te doy la bienvenida a proyecto online, ahora vas a encontrar la resolución a lo que necesitas.
Solución:
Lo que está buscando se llama algoritmos métricos de cadena. Hay un significativo número de ellos, muchos con características similares. Entre los más populares:
- Distancia de Levenstein : El número mínimo de ediciones de un solo carácter necesarias para cambiar una palabra por otra. Las cadenas no tienen que tener la misma longitud
- Distancia de Hamming : El número de caracteres que son diferentes en dos cadenas de igual longitud.
- Smith–Waterman : una familia de algoritmos para calcular similitudes de subsecuencias variables.
- Coeficiente de Sørensen-Dice : Un algoritmo de similitud que calcula los coeficientes de diferencia de pares de caracteres adyacentes.
Eche un vistazo a estos y a otros en la página wiki sobre el tema.
La distancia de Damerau Levenshtein es otro algoritmo para comparar dos cadenas y es similar al algoritmo de distancia de Levenshtein. La diferencia entre los dos es que también puede verificar las transposiciones entre caracteres y, por lo tanto, puede dar un mejor resultado para la corrección de errores.
Por ejemplo: La distancia de Levenshtein entre night
y nigth
es 2 pero Damerau Levenshtein distancia entre night
y nigth
será 1 porque es solo un intercambio de un par de caracteres.
Podrías usar ngrams para eso. Por ejemplo, transforme las dos cadenas en trigramas de palabras (generalmente en minúsculas) y compare el porcentaje de ellos que son iguales entre sí.
Su desafío es definir un porcentaje mínimo de similitud.
http://en.wikipedia.org/wiki/N-grama
Si eres capaz, puedes dejar una división acerca de qué le añadirías a este tutorial.