Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Usare il deep learning per il parsing degli indirizzi postali

Il modulo deepparse di Python permette di interpretare le parti di una stringa contenente un indirizzo postale in modo automatico.
Usare il deep learning per il parsing degli indirizzi postali
Il modulo deepparse di Python permette di interpretare le parti di una stringa contenente un indirizzo postale in modo automatico.
Link copiato negli appunti

Quando si implementa un sito di e-commerce, o si raccolgono dati sugli utenti, capita spesso di dover richiedere l'indirizzo postale. L'interpretazione delle informazioni contenute in esso, contrariamente a quanto si possa pensare, può rivelarsi un procedimento molto complicato, soprattutto quando si ha a che fare con utenti dislocati in varie nazioni, che utilizzano formati completamente diversi.

Per risolvere questo problema, alcuni ricercatori hanno sviluppato una tecnica che mette insieme diverse soluzioni di deep learning per analizzare automaticamente il contenuto di un indirizzo postale, suddividendolo nelle sue parti costituenti. Tale tecnica è implementata in un modulo Python accessibile a chiunque, denominato deepparse. Di seguito vedremo come usarlo.

Installare deepparse

La prima cosa che dobbiamo fare per utilizzare deepparse è, ovviamente, installarlo. Possiamo farlo tramite il package manager pip, utilizzando il comando seguente:

pip install deepparse

In alternativa, potremmo valutare l'installazione direttamente tramite il codice sorgente (che si trova su GitHub), sebbene questa sia sconsigliata (a meno di necessità particolari che esulano dagli scopi di questa breve introduzione allo strumento).

È comunque importante tenere a mente che deepparse richiede una versione di Python uguale o successiva alla 3.6. Inoltre, durante l'installazione tramite pip, sarà installata anche l'ultima versione di PyTorch, uno dei requisiti fondamentali di questo modulo.

Usare deepparse

Una volta installato deepparse, possiamo utilizzarlo in maniera abbastanza semplice:

from deepparse.parser import AddressParser
 
parser = AddressParser(model_type="bpemb", device=0)
indirizzo = parser("Via Garibaldi, 33 - 00153 Roma")

Eseguite queste poche righe di codice, la variabile indirizzo conterrà un'instanza della classe deepparse.parser.ParsedAddress, a sua volta contenente 8 proprietà:

  • street_number, corrispondente al numero civico
  • street_name, corrispondente alla via
  • unit, corrispondente all'unità immobiliare (ad esempio il numero dell'appartamente)
  • municipality, corrispondente alla città
  • province, corrispondente alla provincia
  • postal_code, corrispondente al codice di avviamento postale (CAP)
  • orientation, corrispondente all'orientazione della strada (ad esempio East o West, tipico in alcune nazioni)
  • general_delivery, corrispondente ad altre informazioni

Nel caso dell'indirizzo precedente, saranno identificate 4 delle suddette proprietà, come si vede di seguito:

>>> parsed_address
ParsedAddress<street_number='33 -', street_name='Via Garibaldi,', municipality='Roma', postal_code='00153'>

La cosa interessante di deepparse è che questa capacità di segmentazione degli indirizzi non è legata al formato specifico, che nel caso summenzionato è quello di un indirizzo postale italiano. Il funzionamento di deepparse è infatti basato su dataset molto vasti di indirizzi postali, formattati secondo i diversi formati diffusi in varie nazioni. Ciò ne rende le performance abbastanza robuste indipendentemente dal contenuto specifico dell'indirizzo.

È inoltre possibile utilizzare modelli di machine learning diversi da bpemb (quello usato nell'esempio precedente), optando per alternative come FastText o semplicemente facendo in modo che sia deepparse a segliere per noi il modello migliore. Infine, possiamo scegliere di ri-addestrate i modelli che stanno alla base di deepparse, in modo da modificarne il comportamento sulla base di altri dati, magari più specifici. Non scenderemo nel dettaglio in questa sede, rimandando al sito ufficiale del progetto chiunque volesse approfondire.

Ti consigliamo anche