2012-04-13 14 views
7

Sto usando Java 6. Sto cercando un modo automatico per analizzare gli indirizzi. Non sono interessato se gli indirizzi esistono o no. La cosa migliore che ho trovato è JGeocoder (v 0.4.1), ma JGeocoder è in grado di analizzare gli indirizzi come questoC'è un parser Java che può analizzare indirizzi come questo

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

Qualcuno sa di un libero Java indirizzo parser che è all'altezza della sfida? Per "analisi" intendo la capacità di distinguere tra via, città, stato, codice postale e potenzialmente il nome della sede (il nome della sede sopra indicata è "16th Street Theatre, Berwyn Cultural Center").

+6

Buona fortuna. Questo è un ben noto problema estremamente difficile, principalmente a causa della varietà infinita nella formattazione degli indirizzi. Avendo fatto un sacco di questo tipo di lavoro negli anni '80, posso garantire che non esiste una soluzione perfetta (o addirittura perfetta al 99%). Sono necessarie diverse regole di analisi per paesi diversi e anche per le regioni all'interno di un paese e un ampio dizionario di eccezioni. Se sei limitato all'indirizzo degli Stati Uniti, il sito Web del servizio postale degli Stati Uniti potrebbe essere di aiuto. –

risposta

0

Se i servizi Web sono consentiti, è possibile provare google maps.

+2

Il TOS non consente query automatizzate. – Matt

6

Aggiornamento: Questo argomento è trattato in modo più esaustivo in this StackOverflow question.


Io lavoro per SmartyStreets dove analizzare e indirizzi di processo, e noi abbiamo una risposta. Questo è ciò che chiamiamo "SLAP" o Single-Line Address Parsing (or Processing). Il termine formale è Named Entity Recognition (NER).

Non sono un esperto di librerie Java, ma so che eventuali implementazioni interne non saranno all'altezza delle aspettative. Ecco alcuni motivi comuni per cui le persone che ho aiutato hanno precedentemente avuto difficoltà:

  • Google/Yahoo!/I servizi Web di Bing Maps non consentono query automatizzate e non verificano l'accuratezza dell'indirizzo analizzato.

  • Il codice interno può fare anche solo una migliore ipotesi senza alcuna conoscenza di indirizzi esistenti (un database) o altri tipi di fonti ufficiali. So che vuoi una libreria che può fare questo in casa, ma si può al massimo fare una congettura ...

  • Tra l'altro, le espressioni regolari sono non la risposta. La migliore regex che ho visto per analizzare gli indirizzi è stata generata dinamicamente su centinaia di righe di codice e diverse classi. Era un disastro, ed era corretto solo per i tipi di indirizzi che dovresti aspettarti, non tutti i formati validi (USA) effettivamente disponibili.

Questo è un compito incredibilmente complesso ... a meno che non si abbiano gli strumenti giusti. Uno dei nostri servizi è chiamato LiveAddress API ed è simile a Google Maps in quanto analizza gli indirizzi e li geocode, ma fa un passo avanti essendo CASS-Certified e restituendo solo indirizzi validi, quasi a prescindere dal formato di input.

Ti incoraggio a fare qualche ricerca personale, ma questo è probabilmente il metodo più efficace e affidabile.

+0

Come temevo, questo servizio non è gratuito. Non sto contrassegnando questo come corretto solo b/c ho specificato che cercavo qualcosa gratis. Tuttavia, forse otterrai una buona promozione poiché le persone trovano questa risposta tramite Google. – Dave

+0

In realtà è gratuito; costa solo denaro se scegli un limite di query più elevato rispetto al valore predefinito 250/mese. Ma ovviamente dovresti trovare qualcosa per soddisfare le tue esigenze. Facci sapere cosa decidi se trovi qualcos'altro! – Matt

3

https://code.google.com/p/usaddressparser/ Analizza la stringa di indirizzo statunitense e la divide in campi (numero, via, suite, città, zip ecc.). Java jar e fonti

+1

sembra che questa pagina di progetto sia stata creata e una singola riga di codice non sia mai stata scritta – jordanpg

+0

in realtà, c'è il codice, è solo sepolto in un file zip – slf