No hay nada en .NET framework que lo ayude con este out-of-the-box.
Los errores ortográficos más comunes son aquellos en los que las letras son una representación fonética decente de la palabra, pero no la ortografía correcta de la palabra.
Por ejemplo, podría argumentarse que las palabras sword
y sord
(sí, que es una palabra) tienen las mismas raíces fonéticas (suenan igual cuando las pronuncias).
Dicho esto, hay una serie de algoritmos que puede utilizar para traducir palabras (incluso mal) en variantes fonéticas.
El primero es Soundex. Es bastante simple de implementar y hay un buen número de .NET implementations of this algorithm. Es bastante simple, pero te da valores reales que puedes comparar el uno con el otro.
Otra es Metaphone. Si bien no puedo encontrar una implementación .NET nativa de Metaphone, el enlace provisto tiene enlaces a otras implementaciones que podrían convertirse. El más fácil de convertir sería probablemente el Java implementation of the Metaphone algorithm.
Cabe señalar que el algoritmo de Metaphone ha pasado por revisiones.Hay Double Metaphone (que tiene un .NET implementation) y Metaphone 3. Metaphone 3 es una aplicación comercial, pero tiene una tasa de precisión del 98% en comparación con una tasa de precisión del 89% para el algoritmo Double Metaphone cuando se ejecuta en una base de datos de palabras comunes en inglés. Dependiendo de su necesidad, es posible que desee buscar (en el caso de Double Metaphone) o comprar (en el caso de Metaphone 3) la fuente para el algoritmo y convertirlo o acceder a él a través de la capa P/Invoke (hay implementaciones C++ abundar).
Metaphone y Soundex difieren en el sentido de que Soundex produce claves numéricas de longitud fija, mientras que Metaphone produce claves de diferente longitud, por lo que los resultados serán diferentes. Al final, ambos harán el mismo tipo de comparación para usted, solo tiene que averiguar cuál se adapta mejor a sus necesidades, dados sus requisitos y recursos (y los niveles de intolerancia para los errores ortográficos, por supuesto).
Tendría que argumentar en contra de la distancia de Levenshtein en este caso. Si bien es genial para descubrir qué tan diferentes son dos cadenas, los errores de ortografía más a menudo no conservan la fonética adecuada. Por ejemplo, el algoritmo LD probablemente * no * indicará que "cool cat" y "kool kat" son similares (que es lo que creo que el afiche desea) mientras que Soundex y Metaphone son más propensos a indicar la similitud entre esas palabras/frases . – casperOne
@casperOne: difícil de decir sin conocer el conjunto de datos al que se está aplicando, pero estoy de acuerdo en que no existe un enfoque único para todos. Soy un gran fanático del doble metafonía. – RedFilter
@RedFilter hola ... he usado distancia levenshtein ... pero en realidad estoy comparando países o regiones del mundo. entonces si mantengo la tolerancia como 2, entonces Austria y Australia se muestran iguales. al mismo tiempo, Estados Unidos y Estados Unidos se muestran diferentes. ¿Qué puedo hacer por este problema? –