Domanda

Quali sono i migliori algoritmi per riconoscere i dati strutturati su una pagina HTML?

Ad esempio, Google riconoscerà l'indirizzo di casa / azienda in un'e-mail e offrirà una mappa a questo indirizzo.

È stato utile?

Soluzione

Un framework di estrazione di entità nominate come GATE ha almeno affrontato il problema di estrazione delle informazioni per località, assistito da un dizionario dei luoghi noti per aiutare a risolvere problemi comuni. A meno che le pagine non siano state generate automaticamente da una fonte comune, troverai espressioni regolari un po 'deboli per il lavoro.

Altri suggerimenti

Se hai il markup corretto & # 8212; e non solo il testo della pagina & # 8212; secondo il suggerimento Beautiful Soup sopra. In particolare, il tag indirizzo dovrebbe fornire il frutto più basso possibile. Guarda anche nel adr microformat . Ritornerei alle regex solo se i primi due non tirassero abbastanza informazioni o non avessi i dati necessari per cercare i primi due.

Se devi anche gestire indirizzi internazionali, ti trovi in ??un mondo di mal di testa; formati di indirizzi internazionali sono incredibilmente vari.

Immagino che Google adotti un approccio in due passaggi al problema (almeno è quello che farei). Prima usano un modello di ricerca abbastanza generale per selezionare tutto ciò che potrebbe essere un indirizzo, quindi usano il loro database di mappe per cercare quella stringa e vedere se ottengono corrispondenze. Se lo fanno è probabilmente un indirizzo se non lo fanno probabilmente non lo è. Se riesci a utilizzare un database di mappe nel tuo codice, questo probabilmente ti semplifica la vita.

A meno che tu non possa limitare la posizione geografica degli indirizzi, immagino che sia praticamente impossibile identificare una stringa come indirizzo semplicemente analizzandola, semplicemente a causa dell'enorme variazione dei formati di indirizzo utilizzati in tutto il mondo.

Non usare espressioni regolari. Utilizzare un parser HTML esistente, ad esempio in Python, consiglio vivamente BeautifulSoup . Anche se usi un'espressione regolare per analizzare gli elementi HTML che cattura BeautifulSoup.

Se lo fai con i tuoi regex, non devi solo preoccuparti di trovare i dati richiesti, devi preoccuparti di cose come HTML non valido e molti altri problemi molto ovvi in ??cui ti imbatterai. .

Quello che stai chiedendo è davvero un problema difficile se vuoi renderlo perfetto. Mentre un semplice regexp lo farà quasi sempre per la maggior parte del tempo, scriverne uno che lo farà esattamente ogni volta è diabolicamente difficile. Ci sono molti strani casi angolari e in molti casi non esiste una risposta univoca. La maggior parte dei siti Web che ho visto svolgere un lavoro piuttosto male gestendo tutti tranne gli URL più semplici.

Se vuoi seguire la regexp route, la soluzione migliore è probabilmente quella di controllare il codice sorgente di http://metacpan.org/pod/Regexp::Common::URI :: http

Ancora una volta, le espressioni regolari dovrebbero fare il trucco.

A causa della grande varietà di indirizzi, puoi solo indovinare se una stringa è un indirizzo o meno da un'espressione come " (numero), (nome) Via | Boulevard | Principale " ;, ecc

Puoi considerare di esaminare alcune estensioni di firefox che mirano a mappare gli indirizzi trovati nel testo per vedere come funzionano

Puoi controllare questo esempio di estrazione negli USA http://code.google.com / p / grafico-espressione / wiki / USAAddressExtraction

  1. Dipende dalle tue esigenze.

per e-mail e dettagli di contatto regex è più che sufficiente. Per gli indirizzi regex da solo non aiuterà. Pensa alla PNL (NER) & amp; Tag POS. Per trovare informazioni relative alle persone non puoi fare nulla senza NER.

  • Se hai bisogno di informazioni come i paragrafi ottieni i contenuti usando i tag.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top