Nonostante la disciplina della linguistica computazionale sia in giro ormai da più di 50 anni, non passa giorno senza qualcuno che mi chieda di cosa mi occupo nella mia ricerca e, alla mia risposta “linguistica computazionale”, risponda nel migliore dei casi con un “ok” a scopo diversivo.

La linguistica computazionale è quella disciplina che si pone il problema di far interpretare a una macchina il linguaggio naturale, ovvero quella lingua che tutti i giorni usiamo per comunicare con i nostri simili (per esempio l’italiano o l’inglese). Se questo suona come il preludio a uno di quei film apocalittici in cui le macchine prenderanno il sopravvento sull’umanità, in realtà la linguistica computazionale ci circonda senza che nemmeno ce ne accorgiamo. Basti pensare a servizi come Google Translate, i motori di ricerca, Alexa, e chi più ne ha più ne metta.

Uno degli strumenti alla base di questa disciplina è l’analisi sintattica del testo, che permette di segmentare un documento in frasi e in parole, di cui poi analizza le caratteristiche, spesso confrontandole le une con le altre. Mentre per l’inglese ci sono moltissimi applicativi che permettono di svolgere questo compito, per le lingue meno diffuse come l’italiano la situazione non è sempre delle più rosee. Per questo motivo, nel 2016 abbiamo iniziato lo sviluppo di Tint, un software di analisi che, dato un testo scritto in lingua italiana, cerca di estrarne la struttura sintattica.

Il programma, utilizzando il framework CoreNLP sviluppato alla Stanford University, procede per gradi, in quel paradigma che tecnicamente si chiama pipeline: ogni passo utilizza le informazioni di quelli precedenti per procedere nell’analisi.

Il primo step consiste nel dividere il testo in parole, dette anche token, e frasi. Anche se è sicuramente la funzionalità meno sorprendente, non nasconde alcune insidie, come la gestione della punteggiatura per capire la fine di un periodo o l’aggregazione delle sigle (per esempio “S.r.l.”, “d.C.”, ecc.).

Il secondo passo serve per assegnare una funzione grammaticale a ciascuna parola. Utilizzando un algoritmo di intelligenza artificiale piuttosto datato ma ancora funzionale, detto Conditional Random Fields, il sistema riesce a capire che un certo token è un nome, un aggettivo, un avverbio, e via di seguito, con una precisione che si avvicina al 98%. Qualcuno potrebbe chiedersi con ingenuità come mai non si arrivi al 100%, e la risposta purtroppo è complessa al punto che potrebbe prendere un libro intero: uno dei motivi principali è che anche gli esseri umani esperti del campo, se chiamati a compiere lo stesso lavoro, non raggiungono la perfezione.

Si va poi avanti con la lemmatizzazione, ovvero risalire alla parola base di un termine partendo dalla forma che si è usata nel testo. Per esempio, se la forma è “parlammo”, ci aspettiamo che il sistema ci dia come risposta “parlare”. Anche questo compito è all’apparenza semplice, ma diventa arduo se si pensa che il computer non riesce a estrarre con efficienza il contesto in cui una certa frase è inserita, per cui in casi come “spariamo” è quasi impossibile capire se il lemma base è “sparire” o “sparare”, entrambi legittimi.

L’analisi più profonda di cui Tint si occupa è l’estrazione dell’albero sintattico della frase. Corrisponde più o meno a quello che a scuola si chiama “analisi logica”. Dato un verbo, si tratta di trovare il soggetto e l’oggetto (se presenti), capire a quale termine o concetto si legano un certo aggettivo o una frase subordinata.

Oltre a questo, Tint svolge anche molti altri compiti: estrae i nomi propri e li classifica tra persone, luoghi, organizzazioni; collega i nomi trovati a Wikipedia, se un link esiste; calcola l’indice di leggibilità di un testo e dà suggerimenti sui punti in cui intervenire per renderlo più fruibile.

Se volete provare Tint, è disponibile una coloratissima demo online, semplice e intuitiva, con cui potete testare l’efficienza del programma. Se volete usarlo in qualche progetto, il codice è disponibile in modo aperto e gratuito su Github, mentre la documentazione può essere trovata sulla pagina dedicata del nostro sito.