La corrección de hechizos es un campo activo de investigación en PNL. Hay muchos enfoques para abordar el problema. Te recomendaría comenzar desde el principio. Primero, eche un vistazo a Cómo escribir un corrector ortográfico de Peter Norvig [1].
Componentes del enfoque simple para la corrección de hechizos
- Modelo candidato Dada la lista de palabras, encuentre los candidatos para la palabra mal escrita.
- Modelo de lenguaje Calcular la probabilidad de una palabra en el lenguaje.
- Modelo de error Calcule la probabilidad de que la palabra1 se escriba en un texto cuando el autor se refirió a la palabra2.
- Mecanismo de selección. Seleccione el candidato con la mayor probabilidad.
Creo que el componente más importante en su aplicación es el modelo candidato. El modelo candidato es tan importante que diría cuidadosamente que puede ignorar toda la otra parte.
- ¿Son buenos los cursos de Machine Learning AZ y Deep Learning AZ de Kirill Eremenko en Udemy?
- ¿Cuál es la mejor manera de personalizar los artículos para un usuario en función de su historial de lectura?
- ¿Cuál es la diferencia entre una inferencia y una predicción?
- Si alguien sin experiencia en programación quisiera aprender algoritmos y aprendizaje automático, ¿cuáles serían las mejores fases de estudio e investigación? ¿Sería mejor comenzar con el aprendizaje de la codificación? ¿Con qué idioma es mejor comenzar?
- ¿Cuál es la diferencia entre análisis de datos, análisis de datos, minería de datos, ciencia de datos, aprendizaje automático y Big Data?
Modelo de candidato
Necesita tener una lista de nombres de hoteles. La lista de hoteles en los Estados Unidos [2] artículo de Wikipedia puede ser un buen comienzo. El dado el nombre mal escrito encuentra el mejor candidato. Puedes usar el enfoque de Norvig.
def edits1 (palabra):
letras = ‘abcdefghijklmnopqrstuvwxyz’
divisiones = [(palabra [: i], palabra [i:]) para i en rango (len (palabra) + 1)]
elimina = [L + R [1:] para L, R en divisiones si R]
transpone = [L + R [1] + R [0] + R [2:] para L, R en divisiones si len (R)> 1]
reemplaza = [L + c + R [1:] para L, R en divisiones si R para c en letras] inserta = [L + c + R para L, R en divisiones para c en letras]
conjunto de retorno (elimina + transpone + reemplaza + inserta)
Alternativamente, puede utilizar uno de los dos enfoques que se mencionaron en alguna parte [3]. Yo personalmente recomendaría el segundo basado en la puntuación AZUL.
Por supuesto, todavía tienes algunos desafíos que no mencioné aquí. ¿Cómo encontrar el nombre del hotel mal escrito? ¿Es esto una palabra o una frase? Y muchos otros. Sin embargo, esta respuesta puede ser un buen punto de partida.
Bienvenido al mundo de la PNL.
Notas al pie
[1] Cómo escribir un corrector ortográfico
[2] Lista de hoteles en los Estados Unidos – Wikipedia
[3] ¿Cuál es un buen algoritmo de coincidencia para palabras mal escritas?