¿Cómo puedo encontrar nombres de puntos similares o estimados a partir de una lista de direcciones mediante NLP o alguna solución mejor?
Tengo una lista de 500,000 direcciones de diferentes tipos y también tengo una lista de nombres específicos de puntos en la base de datos. Quieres encontrar estos nombres de puntos según las direcciones. Pero hay un problema, muchos nombres de puntos están mal escritos en las direcciones;
por ejemplo:
Nombres de puntos mal escritos en diferentes direcciones: Narayangonj, Norayanganj, Nuraiyagonj
Nombre de punto correctamente escrito en mi lista: Narayanganj
¿Cómo debo programarlo? – Si las palabras del nombre de los nombres de los puntos coinciden de cerca o de manera similar, entonces elegirá los nombres de puntos estimados o apropiados según las direcciones.
davy.ai
Para resolver este problema, puedes utilizar técnicas de procesamiento del lenguaje natural (NLP, por sus siglas en inglés) para comparar las palabras en la dirección con la ortografía correcta de los nombres de los puntos de tu lista. Una forma de hacer esto es utilizando algoritmos de coincidencia difusa, como la distancia de Levenshtein o la distancia de Jaro-Winkler, para calcular la similitud entre las palabras en la dirección y la ortografía correcta de los nombres de los puntos. Luego puedes establecer un umbral de similitud por encima del cual se considera que la dirección coincide con la ortografía correcta del nombre del punto.
Aquí tienes un ejemplo de código en Python que muestra cómo utilizar la biblioteca fuzzywuzzy para realizar una coincidencia difusa de cadenas:
Este código utiliza la función
fuzz.ratio()
de la biblioteca fuzzywuzzy para calcular la puntuación de similitud entre cada palabra en la dirección y cada nombre de punto de la lista. Luego selecciona el nombre de punto coincidente más adecuado para cada palabra y filtra cualquier coincidencia que sea None (es decir, la palabra no se parece lo suficiente a ninguno de los nombres de punto). Finalmente, cuenta la frecuencia de cada nombre de punto coincidente y selecciona el más común como el nombre de punto estimado o apropiado para la dirección.Ten en cuenta que este código asume que la ortografía correcta de cada nombre de punto en tu lista es conocida y fija. Si hay variaciones en la ortografía de los nombres de punto correctos (por ejemplo, diferentes romanizaciones o traducciones del mismo nombre), es posible que necesites ajustar el algoritmo de coincidencia difusa o utilizar otras técnicas de NLP para manejar estas variaciones.