¿Cuáles son los mejores algoritmos de aprendizaje sin supervisión para la corrección de errores tipográficos?

Si el caso de uso de la corrección ortográfica es buscar contenido en un corpus grande específico de un dominio, entonces un algoritmo de corrección de errores no supervisado ( no necesariamente el mejor ) es

  • simplemente tomar todo el corpus específico de ese dominio y alimentarlo como entrada para fastText y generar incrustaciones. Cuando entrenamos corpus, debemos asegurarnos de elegir los ngrams de caracteres mínimos y máximos para que sean 1; esto asegura que solo aprende incrustaciones a nivel de caracteres individuales como ngrams opuestos con múltiples caracteres (los ngrams de caracteres múltiples nos impedirán corregir las transposiciones de caracteres como alzhiemer en su lugar de alzheimer ).
  • Luego, para una palabra de entrada dada, hay dos casos,
    • Caso 1. La palabra de entrada se encuentra en el corpus entrenado incluso si está mal escrita (el corpus también puede tener errores de ortografía). Realice el producto de puntos con las incrustaciones capacitadas para conseguir vecinos. Esto nos da un candidato listo para trabajar. Elija la que sea la distancia de edición más cercana a la palabra de entrada, que también forma parte de una lista de palabras de etiqueta dorada seleccionada.
    • Caso 2. La palabra está fuera de vocabulario. Fasttext todavía puede traernos candidatos vecinos. Luego hacemos la misma operación que en el caso 1.
  • Entonces, ¿por qué es mejor el texto rápido que la simple corrección de edición basada en la distancia?
    • El candidato establece que saca de un corpus no solo está léxicamente ( edite la distancia como medida ) cerca de la entrada, sino también semánticamente cerca. Entonces, para alzhiemer, los vecinos son todas palabras sobre la enfermedad de alzheimer. Por lo tanto, las sugerencias de corrección no están lejos, incluso si no es la correcta en algunos casos. Un método basado únicamente en la distancia de edición generaría un conjunto de candidatos que no tiene en cuenta la cercanía semántica y podría estar muy alejado cuando se trata de una sugerencia incorrecta.

Referencias

¿Cómo genera fastText un vector para una palabra que no está en el modelo pre-entrenado?

Puede usar un codificador automático para la corrección de errores tipográficos. Tome un conjunto de datos de palabras grandes, diga Google mil millones de palabras. Una versión corrupta al azar de cada palabra puede ser la entrada al autoencoder, y la salida puede ser la palabra original. Entrene a un autoencoder para asignar la entrada corrupta aleatoriamente a la palabra correcta correspondiente.

Echa un vistazo a la ortografía profunda

More Interesting

¿Cuál es el método de práctica más eficiente para mejorar las preguntas sobre algoritmos?

¿Puedo encontrar el camino hamiltoniano más corto en un gráfico completo ponderado no dirigido en tiempo polinómico (donde todos los pesos no son negativos)?

¿Por qué las funciones de límite superior e inferior en C ++ STL dan diferentes índices para el mismo número?

¿La democratización de los algoritmos de aprendizaje automático es una bendición o un peligro para los profesionales no expertos?

¿Necesito aprender algún lenguaje de programación antes de intentar estructuras de datos?

¿Cómo asigno enteros de o a n en una matriz bidimensional en Java?

¿Cuál es el error lógico en mi siguiente código para la multiplicación de karatsuba?

¿Qué significa el algoritmo en informática?

¿Cuál es el propósito de estudiar pequeñas mejoras (como usar dos hilos o evitar la basura) mientras puedo reducir la complejidad de los algoritmos?

¿Dónde debo comenzar si quiero aprender estructuras de datos y algoritmos?

¿Qué debo hacer si no soy bueno en el desarrollo de backend o en los algoritmos, debería enfocarme en UI / UX?

Cómo implementar la codificación y decodificación de Huffman usando una matriz y no un árbol

¿Cuáles son los mejores algoritmos de selección de apareamiento en informática evolutiva?

¿Cómo funciona el algoritmo de adsorción?

¿Dónde puedo encontrar un algoritmo de relevancia marginal máxima en Python para la eliminación de redundancia en dos documentos?