Invisible link to canonical for Microformats

Il peso delle parole

Cosa si nasconde nelle descrizioni dei progetti

Il Random Forest ha raggiunto un’affidabilità predittiva molto buona utilizzando esclusivamente dati strutturati (importi, localizzazione, tema, tipologia di progetto…). Ma nel database di OpenCoesione esiste un campo testuale libero, che include una sintesi del progetto.

La domanda a cui questa sezione cerca di rispondere è: c’è un’informazione utile in quelle parole che le tabelle non riescono a catturare? E, soprattutto, il linguaggio utilizzato nella fase di progettazione contribuisce a identificare, già all’avvio, i progetti con maggiori probabilità di incepparsi?

In sintesi

Il linguaggio della burocrazia

L'integrazione dell'analisi testuale porta un guadagno predittivo modesto (+0,01 di AUC), ma solido. Il vero valore di questa analisi, tuttavia, è diagnostico: ci ha permesso di scoprire che gran parte del "linguaggio" usato nei progetti è in realtà costituito da descrizioni ricopiate in modo identico. Una volta ripulito il dato, le parole ci confermano la tendenza già vista nei dati strutturati: gli interventi legati alla ricerca e all'imprenditoria affrontano percorsi molto più accidentati.

Il corpus disponibile

Il primo passo consiste nel misurare quanto testo sia effettivamente a nostra disposizione. A differenza dei dati finanziari, la descrizione del progetto è un campo facoltativo.

Sebbene il dataset OpenCoesione contenga oltre 206 mila progetti, solo 107.988 presentano una descrizione compilata (circa il 52% del totale). Per confronto con le analisi successivi, è stato riaddestrato un modello di Random Forest su questo sottoinsieme, ottenendo una AUC di 0,80.

L’analisi mostra inoltre una distribuzione non uniforme tra i diversi cicli di programmazione: i progetti dei cicli 2000-2006 e 2014-2020 sono quasi interamente coperti, mentre gli altri due ne sono quasi privi.

Grafico a barre sulla copertura del corpus testuale
La copertura non è uniforme tra i cicli di programmazione: due cicli sono completi, due quasi vuoti.

Preprocessing

Prima di poter utilizzare le descrizioni nei modelli predittivi, è stato necessario effettuare una rigorosa fase di pulizia per ottenere un corpus confrontabile e realmente informativo. Le operazioni hanno incluso:

  • Lemmatizzazione tramite spaCy. Riduzione delle parole alla loro radice linguistic per evitare la frammentazione del vocabolario.
  • Filtraggio grammaticale. Eliminazione della punteggiatura e delle stop word standard (preposizioni, articoli, congiunzioni).
  • Stop word di dominio. Definizione ed eliminazione di una lista di parole specifiche del dominio amministrativo che non aggiungono valore predittivo (es. progetto, intervento, euro).
  • Pulizia dei segnaposto. Eliminazione di circa 5.600 descrizioni costituite esclusivamente da caratteri privi di contenuto informativo (come .... o ND).

Quanto vale il testo da solo?

Prima di combinare il linguaggio con le variabili strutturali, abbiamo valutato quanto fosse informativo di per sé.

Per rappresentare le descrizioni abbiamo trasformato il testo in numeri attraverso una matrice TF-IDF (Term Frequency - Inverse Document Frequency), calcolando non solo le singole parole (unigrammi) ma anche le associazioni di due parole (bigrammi). Questa matrice è stata utilizzata come input per una Regressione Logistica.

Il modello puramente testuale ha raggiunto un’affidabilità (AUC) pari a 0,77, un risultato vicino allo 0,80 ottenuto dal Random Forest addestrato, su questo stesso sottoinsieme, con le sole variabili strutturali. Questo valore però potrebbe essere soggetto ai problemi evidenziati nelle sezioni successive.

Integrare testo e numeri

Per migliorare il modello predittivo principale, occorreva unire le due fonti. Inserire direttamente decine di migliaia di feature TF-IDF all’interno del Random Forest ne avrebbe compromesso l’efficienza.

Abbiamo quindi adottato un approccio più compatto, noto come stacking. Invece di inserire le singole parole, abbiamo chiesto al nostro modello testuale (una Regressione Logistica) di valutare la descrizione e calcolare un singolo numero: la probabilità di rischio di quello specifico progetto. Ma in che modo l’algoritmo calcola questa probabilità? Durante l’addestramento, il modello impara ad assegnare uno specifico coefficiente a ogni termine del vocabolario. Quando valuta una nuova descrizione, analizza le parole presenti, ne moltiplica l’importanza matematica (il valore TF-IDF) per i coefficienti che ha memorizzato, e restituisce una stima finale compresa tra 0 e 1.

Questo “Punteggio Testuale” è diventato la nona colonna, l’unica variabile in più passata all’algoritmo principale. In questo modo, il Random Forest ha ricevuto l’analisi del linguaggio già “digerita”.

Ma qui si nascondeva una trappola statistica. Se avessimo fatto valutare al modello testuale le stesse descrizioni su cui aveva appena studiato per addestrarsi, avrebbe restituito punteggi artificialmente perfetti, e il Random Forest si sarebbe fidato troppo. Per evitare questo overfitting, abbiamo calcolato i punteggi con una tecnica chiamata out-of-fold: abbiamo diviso l’intero database in 5 blocchi e abbiamo fatto calcolare il punteggio di ciascun blocco da un modello testuale addestrato esclusivamente sugli altri quattro. In questo modo, ci siamo assicurati che ogni “text score” fosse il frutto di una valutazione onesta su testi mai visti prima dal modello.

L’integrazione di questa sintesi numerica del linguaggio porta l’AUC del Random Forest da 0,80 a 0,83, con un miglioramento apparente di +3 punti percentuali.

Le verifiche contro il data leakage

Questo risultato solleva un dubbio metodologico: il modello sta davvero interpretando il linguaggio, o sta semplicemente riconoscendo i bandi amministrativi attraverso la presenza di descrizioni ripetute o il lessico tipico di un decennio rispetto a un altro?

Per scongiurare l’effetto di data leakage, sono stati effettuati due controlli stringenti:

  1. Split per testo unico. Lo split dei dati tra fase di addestramento e di test è stato vincolato affinché descrizioni identiche non potessero mai comparire in entrambi i gruppi.
  2. Isolamento del calendario. L’analisi è stata ristretta al solo ciclo di programmazione 2014-2020, disinnescando le differenze linguistiche temporali.

In entrambi i casi, l’impatto del testo si riduce fisiologicamente: il “guadagno” predittivo passa dall’iniziale +3, a un modesto ma solido +1% (portando l’AUC del ciclo ‘14-‘20 da 0,83 del modello base allo 0,84 del modello integrato). Il contributo del testo si assottiglia, dunque, ma rimane reale e significativo. Questo conferma che le descrizioni contengono informazioni intrinseche utili, e non soltanto anomalie algoritmiche dovute alla ripetizione seriale dei bandi.

Quali parole caratterizzano i progetti?

Analizzando il contenuto lessicale, è emerso che molte delle parole associate ai tassi di rischio più estremi (sia in positivo che in negativo) non rappresentavano veri concetti progettuali, ma facevano riferimento a specifici bandi, emergenze territoriali o meri refusi di trascrizione di singoli uffici.

Per restituire un vocabolario rappresentativo, abbiamo imposto un filtro di sbarramento: analizzare solo i termini presenti in almeno 100 descrizioni del tutto distinte.

Il grafico evidenzia come le parole che richiamano la complessità del mondo aziendale, dei dipartimenti e della ricerca tendano ad associarsi ad un rischio maggiore.

La lunghezza della descrizione conta?

Un’ulteriore analisi esplorativa ha valutato la relazione tra la lunghezza della descrizione e la probabilità di rischio. I risultati mostrano che descrizioni molto brevi non sono necessariamente associate a performance peggiori. Tuttavia, le descrizioni più corpose (oltre le 60 parole) risultano mediamente associate a una minore percentuale di progetti a rischio. L’effetto è presente, ma relativamente contenuto, e da solo non costituisce un indicatore primario.

Conclusioni

Inizialmente, abbiamo scoperto che quando un modello predittivo legge le descrizioni della Pubblica Amministrazione, la sua prima tendenza non è comprendere il “senso” del progetto, ma sfruttare i testi ripetuti per riconoscere il bando o la scrivania di origine.

Tuttavia, una volta disinnescata questa illusione statistica, il linguaggio contiene un segnale predittivo reale e misurabile. Il modesto ma solido guadagno di affidabilità (+1% di AUC) ci dice che il modo in cui un progetto viene raccontato nasconde indizi sul suo destino. E, cosa ancora più importante, le “parole del rischio” confermano in pieno l’identikit tracciato dai modelli strutturali: fare ricerca, coinvolgere dipartimenti o erogare incentivi alle aziende porta con sé una complessità che sfocia più facilmente nel ritardo, rispetto ad esempio al collaudo formale di procedure già codificate.

Per un decisore pubblico, questo significa due cose. Primo: le variabili strutturali (dove si fa il progetto, quanti soldi muove, di che natura è) restano la bussola più potente per inquadrare il rischio al “giorno zero”. Secondo: utilizzare descrizioni testuali che siano davvero significative potrebbe essere d’aiuto nella realizzazione di modelli predittivi efficaci.