ITLAB – Andrea Gumina

SOA (Service Oriented Architecture), Web As Platform, Data, Java and Open Source

Google Refine: ripulire, trasformare e arricchire dati

Refine è un’applicazione con cui ripulire, trasformare e arricchire dati. E’ una web application scritta in Java, che si installa in locale. Google l’ha acquisita con Metaweb e ne ha rilasciato da pochi giorni la release 2.0.

Refine importa dati strutturati in formati standard (CSV, XML, JSON, ecc.) o personalizzati – e in questo caso offre potenti funzionalità con cui organizzare in colonne ciò che si è caricato. I dati importati sono mantenuti in locale (nella mia installazione su C:\Users\USER\AppData\Local\Google\Refine), in file costituiti da diverse strutture JSON (una per ogni intestazione di colonna, riga e modifica eseguita).

Con filtri e facet si isolano i dati su cui lavorare. I filtri si applicano come testo o come espressioni regolari (con la sintassi Java regex), e ritornano solo le righe che li soddisfano. I facet, invece, ritornano gruppi di righe: uno per ogni valore unico in una certa colonna, uno per ogni intervallo numerico unico, oppure, applicando un’espressione, uno per tutte quelle che la soddisfano ed un altro per le rimanenti. Più filtri e facet possono essere applicati contemporaneamente. Il clustering va oltre i facet: torna gruppi di righe per valori che potrebbero essere rappresentazioni alternative di uno soltanto; raggruppa infatti ciò che per sintassi, secondo certi algoritmi, sembra così simile che potrebbe essere la stessa cosa (per maggiori informazioni si veda http://code.google.com/p/google-refine/wiki/ClusteringInDepth).

Una volta isolati i dati si possono ad esempio eseguire delle trasformazioni. Ce ne sono di preconfezionate (ad esempio per rimuovere gli spazi in testa ed in coda al testo) e se ne possono implementare tante altre esprimendole con Google Refine Expression Language (GREL), Clojure o Jython. Mentre si implementa la trasformazione, una comoda finestra di pre-view mostra i risultati che si avranno.

Refine mantiene la storia delle modifiche applicate: si può usare per l’undo (tornando indietro anche di più passi contemporaneamente) e il redo (per riapplicare tutti o parte dei passi su cui si è eseguito l’undo).

Non c’è una funzionalità nativa di geo-decodifica, ma si può ottenere costruendo una colonna con i risultati delle invocazioni alle API di Google Geodecoding (tenendo conto dei limiti). In pratica, come descritto in http://code.google.com/p/google-refine/wiki/Geocoding, si tratta di invocare le API con la stringa da geo-decodificare, prelevare la risposta in formato JSON ed estrarne le coordinate ritornate – Refine, infatti, è in grado di estrarre valori da dati strutturati nel formato JSON.

Tramite la riconciliazione, dati caricati su Google Refine possono essere uniti ad altri – però, solo se esposti da un qualche servizio attraverso le Reconciliation Service API (come ad esempio fa Freebase). Il processo è semi-automatico: talvolta il giudizio umano è indispensabile per discriminare tra i match proposti.

Il risultato della lavorazione può essere esportato come TSV (Tab Separated Values), CSV, Excel, (tabella) HTML o in un formato personalizzato implementando un template.

—-><—-

Hai trovato questo articolo interessante? Segui il feed e commenta!

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s

Follow

Get every new post delivered to your Inbox.