L’innovazione scientifica ha prodotto metodologie efficaci per l’analisi e l’estrazione di informazioni da documenti che, indipendentemente dal tipo di dominio, ne consentono una classificazione automatica: parliamo della metodologia che prende il nome di Information extraction. Per approfondire l’argomento, abbiamo chiesto al nostro R&D Engineer Giulio Carducci di esporci il lavoro effettuato per estrarre informazioni riguardanti l’ISO 9001 da documenti relativi ai contratti pubblici italiani.
Per alimentare il motore di ricerca ContrattiPubblici.org da noi sviluppato, il team lavora per raccogliere e analizzare le informazioni sui contratti pubblici e sui bandi pubblicati dalle pubbliche amministrazioni. In questo contesto, la certificazione ISO 9001, in quanto indice di qualità organizzativa e produttiva, è un requisito importante per le aziende ed è molte volte criterio di selezione dei fornitori da parte degli enti pubblici nel caso di una gara.
Al fine di potenziare il servizio di alert sui bandi che la nostra piattaforma fornisce, è stato effettuato questo lavoro per estrapolare le informazioni relative alla certificazione ISO 9001 dai testi degli allegati dei contratti e dei bandi. Mettere in evidenza questo requisito potrebbe aiutare i fornitori a cercare le gare a cui partecipare in base alle proprie caratteristiche e potrebbe aiutare gli acquirenti a individuare un’azienda già certificata.
Cos’è l’information extraction?
Sotto il nome di information extraction rientrano tutte le tecniche per l’estrazione di informazioni strutturate da dati testuali non strutturati, con l’obiettivo di rendere queste informazioni leggibili in modo automatico.
Questa tecnica permette di estrarre, da un testo in forma estesa o parzialmente strutturato (es. file xml o Excel), dati specifici ed è applicabile a qualsiasi argomento; questi dati, arricchiti da metadati di contesto, vengono salvati in modo strutturato e ordinato, per applicazioni che possono variare dalla catalogazione dei dati all’inferenza logica su di essi.
Con l’espressione dati strutturati ci si riferisce a informazioni che possono essere lette e interpretate in modo automatico dalle macchine.
Per fare un esempio pratico possiamo far riferimento a una ricetta di cucina (testo esteso) da cui si vogliono estrarre gli ingredienti principali per stilare un elenco (dati strutturati).
Cos’è l’ISO 9001?
Si tratta dell’insieme di normative e linee guida che definiscono gli standard e le regole da seguire per avere un sistema di gestione della qualità all’interno dell’azienda; la qualità può essere intesa come un determinato livello con cui vogliamo fornire i nostri prodotti o erogare i nostri servizi, dei particolari standard con cui vogliamo gestire i processi aziendali e garantire la soddisfazione del cliente.
Come si estraggono i dati?
In questo caso specifico, per individuare in una raccolta di documenti relativi alle gare pubbliche (es. bandi, disciplinare, verbali, ecc.) i riferimenti alla norma ISO 9001, è possibile agire ricorrendo a un approccio di apprendimento automatico che è in grado di capire da un determinato contesto se quest’ultimo si riferisce a una ISO 9001 e a che tipo, perché come vedremo i riferimenti alla normativa possono essere di vario tipo.
Le fasi di lavoro
Per prima cosa è necessaria una analisi manuale dei dati: è importante esaminare all’interno dei testi come viene fatto riferimento alla normativa, studiando a livello sintattico in che modo viene espressa, tenendo conto del contesto.
I casi principali individuati sono tre:
- requisito tecnico, quando indicato come fondamentale per partecipare a una gara;
- ISO aziendale, quando è indicato che un’azienda è certificata, ad esempio nell’intestazione del documento;
- ISO oggetto, cioè quando si trova ad essere l’oggetto del contratto stesso, ad esempio i costi legati al rinnovo della ISO 9001 di una pubblica amministrazione.
Sono state individuate anche delle classi minori come ad esempio:
- requisito fornitura (sotto-classe di requisito tecnico), quando la norma è indicata come necessaria per effettuare la fornitura richiesta, in quanto l’oggetto della fornitura deve essere prodotto secondo processi conformi alla norma;
- agevolazione ISO, quando il fornitore può ricevere delle agevolazioni fiscali presentando la certificazione;
- modulo, moduli preimpostati per la partecipazione ai bandi ad esempio, ma in questo caso presteremo attenzione alle tre principali.
Estrazione attraverso le Regex
Sulla base di queste tre classi è possibile impostare delle espressioni regolari, per l’estrazione dei dati.
Questa estrazione è necessaria per creare un training set per l’addestramento di un classificatore.
Con espressioni regolari (o regex) si fa riferimento a stringhe di caratteri speciali costruite secondo regole specifiche, ad esempio la sequenza \d{3}-\d{3}-\d{4} corrisponde a qualsiasi numero di telefono di 10 cifre, secondo il modello nnn-nnn-nnnn.
Per raggiungere lo scopo, è stato necessario impostare un’espressione regolare specifica per ogni classe per individuare nel testo il riferimento all’ISO 9001; poi, una volta individuato il testo, è stato possibile estrarne il contesto, un insieme di informazioni utili sia per il classificatore sia per l’essere umano a risolvere eventuali ambiguità e quindi utile al fine di attribuire al documento la classe appropriata.
Addestramento automatizzato
Dopo aver individuato con l’uso delle espressioni regolari un numero significativo di documenti che riportano un riferimento alla norma, è possibile addestrare un classificatore; una volta interpretati i dati salvati dal processo di estrazione con le regex, il classificatore è in grado di stabilire autonomamente la classe di un nuovo testo sottoposto.
Annotazione manuale
A questo punto il processo potrebbe essere completo, ma per una maggiore precisione, per migliorare le prestazioni del classificatore si può ricorrere a un altro step che prevede una fase di annotazione manuale per confrontare i risultati. verificando la classificazione ottenuta precedentemente in automatico dal classificatore.
In questo modo, infatti, lavorando sui documenti processati dal primo classificatore, con l’annotazione manuale si punta a una classificazione più accurata, nello stesso tempo si valutano i risultati della classificazione automatica e di conseguenza si ottengono suggerimenti sugli errori utili per migliorare il livello di accuratezza del sistema.
Infatti, se dal lavoro manuale dovesse emergere che il classificatore, probabilmente avendo frainteso il contesto, ha sbagliato nell’individuare la classe, taggando nuovamente a mano il documento si ottiene un input sulla classe che il classificatore avrebbe dovuto attribuire.
Test finale del classificatore
Proprio per quanto accennato, in quest’ultima fase, al classificatore vengono sottoposti i dati risultati sia dall’addestramento automatico sia manuale; in questo modo, con un numero ancor più significativo di dati, tra i quali stavolta i risultati dell’annotazione manuale considerati più attendibili, è possibile migliorare le prestazioni del sistema.
Da questo test finale il livello di accuratezza ottenuto è stato molto soddisfacente, infatti nel 97% dei casi la classificazione è risultata corretta.
Una volta completato l’ultimo test, il metodo esposto è stato applicato per l’estrazione di tutte le occorrenze di ISO identificate negli allegati dei contratti disponibili su ContrattiPubblici.org; sono stati identificati circa 70.000 allegati con riferimenti alla norma, poi classificati attraverso il classificatore addestrato.
La seguente tabella riassume i risultati ottenuti:
Requisito tecnico | 41000 |
ISO azienda | 20000 |
ISO oggetto | 4000 |
Altro (classe minore o no ISO) | 5000 |
Per gli sviluppi futuri continua a seguire il nostro blog.