2012-04-13 12 views
7

Estoy usando Java 6. Estoy buscando una forma automática de analizar direcciones. No estoy preocupado si las direcciones existen o no. Lo mejor que he encontrado es JGeocoder (v 0.4.1), pero JGeocoder no puede analizar direcciones como ésta¿Hay un analizador de Java que pueda analizar direcciones como esta

16th Street Theater, Berwyn Cultural Center, 6420 16th St. 

¿Alguien sabe de una dirección analizador de Java libre que está preparado para el desafío? Por "análisis" me refiero a la capacidad de distinguir la calle, la ciudad, el estado, el código postal y, potencialmente, el nombre de la sede (el nombre de la sede es "16th Street Theatre, Berwyn Cultural Center").

+6

Buena suerte. Este es un problema muy conocido extremadamente difícil, principalmente debido a la variedad infinita en el formato de direcciones. Después de haber hecho mucho de este tipo de trabajo en los años 80, puedo garantizar que no existe una solución perfecta (o incluso el 99% perfecta). Necesita diferentes reglas de análisis para diferentes países, e incluso para regiones dentro de un país, y un gran diccionario de excepciones. Si está limitado a una dirección de EE. UU., El sitio web del Servicio Postal de EE. UU. Puede ser de ayuda. –

Respuesta

0

Si se permiten los servicios web, puede probar los mapas de Google.

+2

El TOS no permite consultas automatizadas. – Matt

6

Actualización: Este tema está cubierto más exhaustivamente en this StackOverflow question.


Yo trabajo para SmartyStreets en el que analizar y direcciones de proceso, y tenemos una respuesta. Esto es lo que llamamos "SLAP" o Single-Line Address Parsing (or Processing). El término formal es Named Entity Recognition (NER).

No soy un experto en bibliotecas Java, pero sé que cualquier implementación interna no cumplirá con las expectativas. Estas son algunas de las razones más comunes por las que las personas a las que he ayudado anteriormente tuvieron dificultades:

  • Google/Yahoo!/Los servicios web de Bing Maps no permiten consultas automáticas y no verifican la precisión de la dirección analizada.

  • El código interno también puede hacer una mejor estimación sin conocimiento de direcciones existentes (una base de datos) u otro tipo de fuentes oficiales. Sé que quiere una biblioteca que pueda hacer esto en la empresa, pero puede hacer una suposición ...

  • Por cierto, las expresiones regulares son no la respuesta. La mejor expresión regular que he visto para analizar direcciones se generó dinámicamente a través de cientos de líneas de código y varias clases. Era un desastre, y solo era correcto para los tipos de direcciones que esperaba, no todos los formatos válidos (EE. UU.) Que realmente existen.

Esta es una tarea increíblemente compleja ... a menos que tenga las herramientas adecuadas. Uno de nuestros servicios se llama LiveAddress API, y es similar a Google Maps en que analiza direcciones y códigos geográficos, pero va un paso más allá al ser CASS-Certified y devolver solo direcciones válidas, casi sin importar el formato de entrada.

Te animo a que hagas tu propia investigación, pero este es probablemente el método más efectivo y confiable.

+0

Como temía, este servicio no es gratuito. No estoy marcando esto como correcto solo b/c Especifiqué que estaba buscando algo gratis. Sin embargo, tal vez obtenga una buena promoción a medida que las personas encuentren esta respuesta a través de Google. – Dave

+0

En realidad es gratis; solo cuesta dinero si elige un límite de consulta superior al 250/mo predeterminado. Pero, por supuesto, debe encontrar algo que satisfaga sus necesidades. ¡Déjanos saber lo que decides si encuentras algo más! – Matt

3

https://code.google.com/p/usaddressparser/ Analiza la cadena de dirección de EE. UU. Y la divide en campos (número, calle, suite, ciudad, etc.). Java jar y fuentes

+1

parece que se creó esta página de proyecto y nunca se escribió una sola línea de código – jordanpg

+0

en realidad, hay código, simplemente está enterrado en un archivo zip – slf

Cuestiones relacionadas