Hai iniziato un progetto di analisi dei testi con l’Intelligenza Artificiale, hai selezionato ed utilizzato le migliori librerie software in circolazione di #NLP, il progetto prosegue da mesi, ma ci sono ancora molti problemi di comprensione, apparentemente banali, eppure di difficile soluzione.
Cosa sta succedendo?
I motivi possono essere parecchi, iniziamo a trattare qui quello dell’Anaphora Resolution (AR).
Ho già detto in un altro articolo cosa intendo per comprensione e per una introduzione ti rimando a quello, che introduceva anche i Knowledge Graph (KG) come base per ragionamenti sui testi.
Tra le capacità che si ritrovano raramente nelle migliori librerie software in circolazione, ma sono davvero fondamentali c’è quella della risoluzione dell’anafora, appunto.
Per evitare che anche l’ultimo 20% di chi ha aperto l’articolo smetta di leggerlo qui, proverò a spiegare di che si tratta in modo il più semplice possibile, con degli esempi.
In moltissimi casi, nel linguaggio parlato e nello scritto, noi ripetiamo
(anafora vuol dire ripetizione)
parti del discorso, ma riassumendole o addirittura omettendole.
Per esempio:
- usiamo i pronomi (“lui mi ha detto che…”) al posto del riferimento esplicito all’attore di cui stiamo parlando
- a volte, ancora più complicato, i pronomi si riferiscono ad intere frasi (“questo disse prima di partire”)
- in italiano lasciamo soggetti sottintesi. Questa problematica è una ulteriore complicazione ed è pochissimo trattata perché non presente in inglese, che è la lingua a cui si riferisce la stragrande maggioranza della letteratura scientifica.
- Omettiamo spesso anche i verbi (es.: “Luca andò da Mario. Più tardi [verbo mancante] al pub.“)
Capire a cosa si riferiscano i pronomi è un serio problema, perché ci potrebbero essere tanti possibili “lui”, nel testo che stiamo leggendo.
Se dico “lui”, però, almeno so che si riferisce ad un attore di genere grammaticale maschile, mentre se lascio un soggetto sottinteso (“si diresse verso casa”) non ho neppure questo aiutino.
Ovviamente le cose si complicano quando abbiamo più attori, che possono essere referenziati assieme o separatamente. Es: “Mario e Maria entrarono nel negozio. Lei [AR: Maria] provò diversi vestiti. Poi uscirono [AR per soggetto sottinteso: Mario e Maria].”
Una variante del dover individuare a chi si riferisce una ripetizione è quando viene indicato l’attore attraverso un sostantivo. Es:
- “L’imperatore decise di iniziare la guerra”: ok, ma chi sarebbe l’imperatore? Ne abbiamo già parlato? Se sì, devo scegliere tra le tante persone di cui stavo parlando poco prima (più raro, ma capita, che il riferimento sia successivo: in questo caso si parla di catafora, e può essere ancora più complicato)
- “Napoleone fu esiliato a Sant’Elena”: ok, ma prima abbiamo accennato a Napoleone Bonaparte e abbiamo anche detto che ha avuto un figlio chiamato “Napoleone Francesco”, di quale dei due stiamo parlando? Dimenticate per un momento di sapere che il Napoleone per antonomasia è il padre, immaginate di doverlo capire solo dal testo.
In questi casi si parla di Co-reference Resolution, ma per gli scopi introduttivi di questo articolo possiamo considerarli assieme come AR.
Ci sono molti altri casi, che vanno oltre lo scopo di questo articolo introduttivo, con complessità di comprensione crescente ed anche così elevata da richiedere conoscenza enciclopedica e ragionamento complesso.
Tanto è vero che esiste un test, il Winograd Schema Challenge, paragonabile al test di Turing (in soldoni, in grado di decidere se una macchina è intelligente), che è basato praticamente solo sull’AR.
Ovviamente, siccome ad oggi nessun programma ha ancora superato il test di Turing in senso esteso.
In generale, quindi, il problema dell’AR è, nel suo senso più ampio, irrisolto, ma per la grandissima parte delle casistiche più comuni
possiamo ottenere risultati di grande aiuto nella comprensione.
L’AR NON è un nice-to-have, ma è essenziale:
- Se devo capire chi ha fatto cosa, sia per costruire basi di conoscenza strutturate partendo da un testo o anche solo per rispondere puntualmente a semplici domande: non serve a nulla un programma che estragga la struttura della frase, se non riesco a mantenere i riferimenti.
- Partendo da testi indipendenti, è importante riconoscere se parlino o meno dello stesso argomento, per unificare la base di conoscenza
- Per estrarre le parole chiave di un testo: se l’argomento principale fosse esplicitato solo una volta, ma poi fosse ripetuto solo con pronomi od omissioni, rischierei di perdermi tra le parole chiave nientemeno che l’argomento base del mio discorso.
- Uno dei modi più semplici per fare riassunti automatici è quello di individuare, tipicamente con metodi statistici, le frasi di maggior importanza ed eliminare quelle di minor importanza (riassunti di tipo estrattivo, ottenuti per estrazione, appunto, di parti di testo). In questo scenario, che succede eliminando la frase in cui c’era il nome del soggetto e mantenendo solo quella col pronome? Che nessuno capirà più nulla, ovviamente. Se però avrò prima eseguito una AR, allora potrò scrivere il nome al posto del pronome e rendere utilizzabile il mio riassunto.
Spiegare come si implementi un algoritmo di AR è molto complesso e fuori dagli scopi di questo articolo introduttivo, che vuole solo indicare uno degli argomenti più importanti da tenere presente per migliorare la comprensione automatica.
Diciamo che, come minimo, servono:
- un parsing (comprensione “sintattica” della struttura della frase) molto forte, possibilmente individuando bene i complementi (ruoli o label delle dipendenze logiche)
- l’applicazione di restrizioni lessicali (genere, numero, etc. etc.)
- l’applicazione di conoscenze semantiche e relazioni tra parole
- un riconoscimento del tipo di entità citate (persone, luoghi, etc. etc.), in modo da poter individuare meglio i riferimenti
- un po’ di ragionamento sulle frasi precedenti e sul contesto del testo
Eppure, come dicevo,
sono rare le librerie che implementano una AR al di fuori dell’ambito accademico, tanto più per l’italiano.
Ovviamente AlgaKnow, il prodotto di Algaware più esteso nelle capacità di comprensione del linguaggio naturale, implementa l’AR adattando all’italiano i migliori algoritmi presenti in letteratura e estendendoli con ampie basi di conoscenza, peraltro personalizzabili su un dominio specifico, permettendo, quindi, una più ampia comprensione anche in ambiti molto complessi.
Collegati a me per ulteriori esempi ed approfondimenti che ti permettano di comprendere quali caratteristiche dell’AI ed NLP devi ricercare per ottenere risultati reali a supporto del business della tua azienda.
Leave a reply