Peter Norvig escribió una excelente publicación explicando la corrección automática de una manera fácil de entender. En resumen, es como,
Dada una palabra, estamos tratando de elegir la corrección ortográfica más probable para esa palabra (la “corrección” puede ser la palabra original)
Luego crea su modelo que es básicamente un diccionario de clave: palabra y valor: frecuencia basada en alguna fuente de datos. P.ej. {‘dog’: 3, ‘dom’: 1}, lo que significa que si ingresas ‘doc’, el corrector automático probablemente te corresponderá con ‘dog’ y luego ‘dom’ en función de la probabilidad simple en este modelo simplista. ¡Piensa en el teorema de Bayes por aquí!
- ¿Cuál es el mejor servidor para alojar una combinación de aplicaciones Java, Android e iOS?
- ¿Cuál es la mejor práctica para cargar un archivo CSV con menos de 5000 entradas en un programa Android Java?
- ¿Qué tan difícil es crear aplicaciones de Android para un no especialista?
- Cómo construir un APK en Android Studio
- ¿Cuáles son excelentes ejemplos de hermosos patrones de diseño de Android e iOS?
Para transformar la palabra que tiene entrada, a algo que podría ser, necesita aplicar un montón de transformaciones
def edits1 (palabra):
divisiones = [(palabra [: i], palabra [i:]) para i en rango (len (palabra) + 1)]
elimina = [a + b [1:] para a, b en divisiones si b]
transpone = [a + b [1] + b [0] + b [2:] para a, b en divisiones si len (b)> 1]
reemplaza = [a + c + b [1:] para a, b en divisiones para c en alfabeto si b]
inserciones = [a + c + b para a, b en divisiones para c en alfabeto]
conjunto de retorno (elimina + transpone + reemplaza + inserta)
Para una palabra de longitud n, habrá n deleciones, n-1 transposiciones, 26n alteraciones e 26 (n + 1) inserciones, para un total de 54n + 25 (de las cuales algunas son típicamente duplicados). Por ejemplo, len (ediciones1 (‘algo’)), es decir, el número de elementos en el resultado de ediciones1 (‘algo’) es 494.
Luego, de todas las posibles transformaciones anteriores, elimina las palabras que no están en su diccionario y luego del conjunto de palabras que quedan, devolverá esa palabra que es más probable, es decir, si ‘perro’ y ‘dom’ son el conjunto final de palabras más cercanas, entonces es estadísticamente más probable que sea ‘perro’ según nuestro conocimiento modelo.
Esta es la explicación más simple y puede leer el artículo completo aquí: http://norvig.com/spell-correct…. que también hace referencia a otros trabajos de investigación en profundidad.