2008-11-05 13 views
6

Me imagino que este problema es más fácil que un simple corrector ortográfico, ya que la lista de ciudades de los EE. UU. Es pequeña en comparación con todas las palabras conocidas en inglés.Corrector ortográfico nombres de las ciudades?

De todos modos, aquí está el problema: Tengo archivos de texto con todos los nombres de las ciudades; algunos de los cuales están deletreados correctamente y otros que no.

¿Qué tipo de algoritmo puedo usar para corregir todos los errores ortográficos de los nombres de las ciudades?

+0

¿Podría publicar un ejemplo? ¿Corregir el nombre y las muestras del nombre incorrecto de la misma ciudad, tal vez? – shahkalpesh

Respuesta

7

¿De verdad necesitas corregir los errores ortográficos o simplemente marcarlos como con un corrector ortográfico normal? Si es lo último, solo necesita obtener una lista de ortografías correctas y asegurarse de que cada nombre sea el mismo que uno en su lista.

Si realmente desea corregirlos, probablemente desee utilizar el concepto de edit distance para comparar la similitud de cadenas mal escritas con las de su lista de referencias. Luego puede reemplazar la palabra mal escrita con la coincidencia más cercana. También es posible que desee manejar la posibilidad de que la ciudad prevista no esté en su lista.

El artículo de Wikipedia de Levenshtein distance es otro buen recurso.

+0

Necesito corregirlos. –

+0

Sí, creo que la idea de distancia de edición es el enfoque correcto para esto. Ese es el camino al que me dirigí cuando comencé esto de todos modos. –

-3

Si el mismo nombre de ciudad aparece más de una vez en el archivo, puede usar el número de ocurrencia de cada nombre de ciudad y marcar el que aparece solo una vez.

+0

Es posible que una ciudad aparezca solo una vez y se deletree correctamente. –

+0

... o está mal escrito, de la misma manera, más de una vez. –

+0

Esteban y Brad: Por supuesto, tienes razón, pero si lo único que tienes que validar es el archivo, tienes que confiar en la ocurrencia para calcular la estadística –

3

Primero cargue los nombres correctos de las ciudades en una matriz, luego recorra los nombres de las ciudades en su archivo. Verifica si el nombre actual de la ciudad está escrito correctamente al ver si está en la matriz de nombres correctos. Si no está en la matriz, intente comparar el valor Soundex o Metaphone de la palabra mal escrita con las palabras en la matriz de nombres correctos para encontrar la forma correcta de deletrearla.

-1

Hay listas en la web de nombres de ciudades comúnmente mal escritos (como Pittsburg h). Aparte de eso, estoy con Jeremy. Solo tienes que encontrar el conjunto de datos de nombres de ciudades, es posible que quieras probar el USGS. Zillow tiene datos de vecindario que quizás puedas usar.

2

El truco está en saber a qué ciudad se refiere realmente el nombre y cómo ese nombre de la ciudad está escrito correctamente. No es lo mismo que simplemente consultar palabras en inglés.

¿Cuál es la verdadera tarea que estás tratando de resolver? ¿Está procesando listas de direcciones? No debe escribir sus propias herramientas para eso: hay toda una industria dedicada a esta tarea engañosamente simple. :)

Tengo que hacer esto para las listas de suscripción para The Perl Review. Me he familiarizado bastante con los servicios web para las distintas oficinas de correos de todo el mundo. A menudo puede ir a un sitio web de servicio postal para obtener una forma canónica de una dirección. Hay herramientas de geocodificación que pueden obtener los mismos datos.

+0

Tienes razón, es engañosamente complicado. Ahora que he estado jugando con eso, también he notado que las personas a veces abrevian los nombres de las ciudades. Escribir esto es un gran ejercicio en DP; Estoy seguro de que uno puede lograr resultados bastante decentes sin demasiado esfuerzo. –

0

He hecho esto. El enfoque de editar distancia es lo que hice y funciona bastante bien, pero es demasiado lento para hacerlo en tiempo real.

Uno de los desafíos que enfrentará es que hay una serie de ciudades que están a 1 ed. De distancia de otros nombres de ciudades. No dijiste de dónde venían los nombres en el archivo de texto y eso marca una gran diferencia. Cuando en mi caso eran personas al azar las que estaban tipeando los nombres de las ciudades para una búsqueda y ocasionalmente escribían mal la ciudad que pretendían, pero su error ortográfico era el verdadero nombre de una ciudad. En este caso, debe hacer algunas conjeturas acerca de la intención del usuario y una manera fácil de hacerlo es considerar el estado si se proporciona.

Cuestiones relacionadas