Intelligenza artificiale e trattamento dei dati non strutturati: un caso concreto

Home PA Digitale Intelligenza artificiale e trattamento dei dati non strutturati: un caso concreto

Oggigiorno la possibilità di utilizzare un language model per trattare il linguaggio naturale ci consente di avere uno strumento potentissimo per lavorare con i metadati di un dataset strutturato o semistrutturato

19 Marzo 2025

P

Vincenzo Patruno

Project Manager e Open Data Expert, Istat

Foto di Ilyuza Mingazova su Unsplash - https://unsplash.com/it/foto/donna-in-camicia-bianca-usando-macbook-HaTIYO87qWQ

Questo articolo è tratto dal capitolo “Trasformazione Digitale” dell’Annual Report 2024 di FPA (la pubblicazione è disponibile online gratuitamente, previa registrazione)


Ognuno di noi ha certamente incontrato e avuto modo di utilizzare dati strutturati. Sono tutti quei dati che possono essere in qualche modo organizzati sotto forma di tabelle e che troviamo un po’ ovunque: all’interno di report, sulle pagine di un giornale, nei siti web sotto forma di tavole di dati o dataset da scaricare, ma soprattutto all’interno dei database di tutti i sistemi informativi. Sono dati che possiamo importare in un foglio elettronico e che possiamo processare, elaborare, visualizzare, analizzare.

Può però accadere che i dati, sebbene siano organizzati all’interno di una struttura, non siano esprimibili in modo rigorosamente tabellare. La struttura di un dato tabellare è infatti omogenea in quanto tutte le righe sono essenzialmente fatte allo stesso modo e presentano gli stessi campi (attributi). In questo caso stiamo parlando molto probabilmente di dati semi-strutturati, ossia di dati che hanno sì una struttura e uno schema, ma che non sono riconducibili ad una tabella fatta di righe e di colonne omogenee. Questi tipi di dati sono ampiamente utilizzati sul web e vengono generalmente organizzati all’interno di file Json.

Ma ci sono altri elementi, su cui forse si presta generalmente meno attenzione ma che sono fondamentali per la comprensione del dato stesso. Sono quelli che chiamiamo “metadati” e che ritroviamo sia all’interno dei dati strutturati che in quelli semi-strutturati.

I metadati possono essere essenzialmente di due tipi: possiamo avere i metadati “referenziali”, cioè delle descrizioni che spiegano in linguaggio naturale qual è il contenuto di una tavola di dati o di uno specifico dataset, che cosa questi dati rappresentano, come sono stati ottenuti, e così via. Ma abbiamo anche quelli che vengono chiamati metadati “strutturali”.

I metadati strutturali sono, per intenderci, quelli che utilizziamo per etichettare ogni singola colonna del nostro dato tabellare. Sono tutti gli attributi che ci servono per associare un significato al dato e capire cosa rappresenta un determinato valore. Facciamo un esempio con un dato statistico. Se io prendo il valore 1.446.173, preso da solo non abbiamo idea di cosa voglia significare. Ma se poi cominciamo ad associare metadati che vanno a “spiegare” il dato come ad esempio “Comune di Roma”, “2024”, “popolazione residente al primo gennaio”, “femmine”, quello che era inizialmente soltanto un numero assume improvvisamente un significato preciso.

Questo tipo di metadati sono quindi fondamentali non soltanto per comprendere la semantica di un dato ma anche per consentire di combinare, integrare e mettere correttamente assieme questi con altri dati.

Spesso mettere assieme due o più dataset richiede un’operazione che viene chiamata “armonizzazione”.

Armonizzare significa essenzialmente ricondurre a metadati comuni due o più dataset in modo tale da poterli combinare opportunamente tra loro. È un’operazione spesso onerosa, che generalmente richiede un importante e lungo lavoro manuale. Serve infatti operare sui metadati e sulla loro semantica e non c’è niente di meglio della mente umana per fare questo tipo di operazione.

Oppure possiamo pensare di avvalerci dell’intelligenza artificiale (IA). Oggigiorno la possibilità di utilizzare un language model per trattare il linguaggio naturale ci consente di avere uno strumento potentissimo per lavorare con i metadati di un dataset strutturato o semi-strutturato. Voglio raccontare qui un caso d’uso che ho ritenuto essere interessante e che riguarda in particolare i dati dei sondaggi elettorali[1].

La normativa vigente (art. 8, comma 3, Legge 22 febbraio 2000, n. 28) obbliga i produttori di sondaggi elettorali a pubblicare i dati sul sito sondaggipoliticoelettorali.it gestito dal Dipartimento per l’informazione e l’editoria presso la Presidenza del Consiglio dei ministri. Sono gli stessi dati che i giornali e i telegiornali pubblicano ogni settimana e che mostrano quali sono le intenzioni di voto degli elettori. Sono dati di indubbio interesse ma, come spesso accade sui siti della Pubblica Amministrazione (PA), non sono pubblicati nel modo corretto. I dati pubblici, lo ricordiamo, dovrebbero essere sempre considerati come un bene comune e pubblicati come dati aperti, in un formato machine readable e in modo che possano essere scaricabili e riutilizzabili. Questi sono temi che la campagna “datibenecomune”, sottoscritta da più di 64.000 firmatari e da 320 organizzazioni sta portando avanti già da qualche anno.

Ma torniamo a noi e ai dati sui sondaggi. Questi sono sì pubblicati sul sito, ma sono dei semplici testi organizzati all’interno di schede informative. I dati non sono strutturati in alcun modo e non seguono nessuno standard di riferimento. I nomi dei partiti, ad esempio, sono spesso scritti in modo diverso. Inoltre, i dati sono pubblicati in maniera tale da poter essere soltanto letti da un utente che si collega al sito e non c’è nessun modo per scaricarli.

Nuovi sondaggi vengono aggiunti di continuo, per cui è necessario pensare ad un sistema che acquisisca i dati automaticamente e che, altrettanto automaticamente, faccia tutte quelle trasformazioni per strutturare i dati e ad armonizzare i metadati.

E se acquisire i dati è possibile attraverso un web scraper, per tutto il resto possiamo utilizzare l’IA. Attraverso il web scraping, i dati di ogni sondaggio possono essere prelevati da una pagina web e sistemati all’interno di un file di testo.

Utilizzando poi i Large language models (LLM) è stato possibile lavorare su ogni singolo file innanzitutto per trasformare il testo in dati strutturati. In questo caso particolare è stato utilizzato GPT-4o mini attraverso le API di OpenAI. La trasformazione dei dati non strutturati in dati strutturati è uno dei task basilari del modello: con un opportuno prompt il modello lo applica infatti senza particolari problemi. All’LLM viene però chiesto di eseguire ulteriori task, e cioè di trasformare i dati in formato Json e di fare refining sui dati, andando ad armonizzare e standardizzare i metadati relativi ai nomi dei partiti politici e i valori numerici. Riportare a valori comuni i campi che hanno nomi diversi ma significato simile è un’operazione che riguarda proprio la semantica del dato. E un language model, essendo un modello linguistico riesce a svolgere questo task in modo molto efficace. In particolare, l’utilizzo degli embeddings sui metadati consente di misurarne la similarità, permettendo di “capire” se descrizioni testualmente diverse hanno in realtà lo stesso significato e dando così la possibilità di automatizzare la fase di armonizzazione dei metadati. Gli embeddings sono infatti una rappresentazione vettoriale dei testi e permettono di valutarne la somiglianza semantica. La possibilità di “capire” la semantica e il significato dei testi attraverso l’IA permette in questo caso anche di identificare il tipo di sondaggio, consentendo di scartare tutti quei sondaggi politici che sono altra cosa rispetto al sondaggio nazionale.

Credo che uno degli aspetti più importanti da evidenziare in questo caso d’uso sia come attraverso l’introduzione dell’IA sia stato possibile automatizzare completamente la pipeline del dato. Operazioni come il refining dei dati sono state effettuate avvalendosi della capacità di un language model. Con il risultato che il dataset finale sarà costituito dai dati armonizzati di tutti i sondaggi pronti per poter essere processati e analizzati.

Ma anche combinati con ulteriori dati per nuove possibilità di analisi. Infine, non dobbiamo dimenticare che nella fase di armonizzazione possiamo decidere di convergere e ricondurre i metadati verso ontologie e vocabolari controllati comuni per quel particolare dominio di conoscenza. Fornendo così un ulteriore tassello per l’automazione di ulteriori processi di data integration e di riutilizzo delle basi di conoscenza così ottenute.


[1] Un ringraziamento a Ruggero Marino Lazzaroni per la bella chiacchiera su questo suo lavoro di hacking civico.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Su questo argomento

Linee Guida EDPB: i modelli di IA conformi al GDPR