¿Qué algoritmo da sugerencias en un corrector ortográfico?

Voy a mantener esta discusión básica. Hay tres pasos para un corrector ortográfico.
– Detectando la palabra incorrecta
– Generando sugerencias de candidatos
– Puntuación y clasificación de los reemplazos candidatos

Detectar una palabra incorrecta es relativamente más fácil. Si la palabra no existe en nuestro diccionario, podemos marcarla como incorrecta. (Tenga en cuenta que esto no resuelve los errores sensibles al contexto, como usar ‘pieza’ en lugar de ‘paz’, etc.)

Necesitamos encontrar palabras similares a la palabra incorrecta. Puede haber muchas formas de hacerlo. Mencionaré algunos que he probado.
– Genere todas las palabras que están a una distancia de Levenshtein de 2 o 3 de las palabras incorrectas y conserve solo las que están presentes en el diccionario. Marcarlos como reemplazos candidatos. (Por ejemplo, la palabra incorrecta ‘rong’ tendrá candidatos ‘incorrectos’, ‘canción’, etc.)
– Otro método es usar n-gramos. (Ejemplo: los trigramas de una palabra, ‘belleza’ son ‘bea’, ‘eau’, ‘aut’ y ‘uty’). Preprocese el diccionario y almacene los trigramas de cada palabra. Divide la palabra incorrecta en trigramas. Marque todas las palabras en el diccionario como candidatos que comparten al menos un trigrama con la palabra incorrecta. Esto se puede hacer de manera eficiente utilizando un índice invertido.

A los candidatos se les puede dar una puntuación basada en muchos factores.
¿Qué posibilidades hay de escribir la palabra incorrecta en lugar de la palabra candidata? (Las frecuencias de errores que se cometen más comúnmente se requieren para este paso. Como ‘m’ y ‘n’ se intercambian comúnmente)
¿Qué tan similares suenan la palabra incorrecta y la palabra candidata? (Un algoritmo fonético puede ayudar en este frente)

Si desea más detalles, consulte Cómo escribir un corrector ortográfico.

Arriba da una descripción de solo un corrector ortográfico básico. Obviamente, hay más en un corrector ortográfico industrial.
Es difícil detectar cuándo una palabra en particular (escrita correctamente) se usa incorrectamente en una oración. Los correctores ortográficos modernos hacen eso la mayoría de las veces.

Para construir un ingenuo corrector ortográfico, el algoritmo de distancia de edición sería suficiente. Pero, es O (n ^ 2).

El corrector ortográfico de Google aprende automáticamente la nueva ortografía del corpus web y los registros de consultas de búsqueda:

  1. construir un modelo de lenguaje para el idioma (estas son esencialmente reglas para aprender)
  2. construyendo un modelo de error
  3. clasificadores de corrección ortográfica para determinar si hay una ortografía incorrecta.