Ti devo avvisare: leggere questo articolo non sarà una passeggiata, ti toccherà persino pensare un paio di volte, ma confido che troverai qualcosa di nuovo e importante e potrai capire meglio cosa cercare nei sistemi di AI a supporto del tuo Business aziendale.
Se non ti hanno raccontato qualcosa di simile in passato è facile che dipenda dal fatto che sono veramente pochi i sistemi sul mercato che al momento hanno queste caratteristiche (anche se stanno aumentando).
I #KnowledgeGraph, (KG), in passato chiamati anche Reti Semantiche (Semantic Network) sono una delle armi più potenti per capire davvero testi in #LinguaggioNaturale.
Ho evidenziato “capire” e servirà una breve introduzione su cosa si voglia qui intendere con questo termine, dai significati troppo ricchi.
Il contesto che qui sceglieremo è quello di riuscire a:
- Far corrispondere il testo di una frase ad una struttura dati logica che evidenzi i significati delle parole e loro relazioni
- In modo da poter usare questa struttura per risolvere problemi e spiegare i contenuti
Mi soffermo ancora un momento sulla capacità di spiegazione.
Uno dei punti segnalati spesso come più critici relativi all’AI è la sua (possibile) mancanza di trasparenza e incapacità di spiegare gli output
Questo capita perché la maggior parte dei sistemi di AI oggi di successo, utilizza quasi esclusivamente tecniche di Machine Learning (ML – Deep Learning in particolare).
Questi strumenti, pur ottenendo risultati spesso eccellenti, funzionano come delle scatole nere: viene fornito un input, viene emesso un output, derivato da un training, ma è complicato o impossibile vedere il percorso logico interno che ha portato a quel risultato.
La maggior parte di questi sistemi hanno imparato, come dice il nome, a fornire degli output corretti, ma in realtà non sono in grado di spiegare perché.
Non importa se montagne di teoria e pratica matematica e probabilistica confermano che questi output tendono a convergere e i sistemi di ML migliorano davvero nel tempo, anche con risultati superiori agli umani:
- Comunque a volte fanno errori: come capire se l’output è errato, se non fornisce il ragionamento alla base?
- Io, esperto del settore XY, avrei fornito un parere diverso: come capire chi ha ragione, se il sistema di AI si comporta come se avesse avuto una intuizione, per quanto potenzialmente geniale?
- Certi ambiti, per loro sensibilità sia umana (pensiamo ai problemi di salute) che legata al diritto richiedono comunque una spiegazione, senza la quale non è possibile utilizzare l’output fornito
Come uscirne, senza perdere un potenziale aiuto decisivo?
Serve mettere assieme tecniche di ML e tecniche di AI simbolica, per ottenere quella che oggi si chiama AI Neuro-Simbolica
Della AI Neuro-Simbolica ho parlato più volte in passato (vi consiglio di andare a leggere gli altri spunti in precedenti articoli).
E veniamo ai nostri KG.
Si tratta di strutture dati a grafo, appunto, che collegano, nell’utilizzo che se ne fa nell’Elaborazione del Linguaggio Naturale (#NLP, in inglese):
- concetti, rappresentati solitamente come nodi
- relazioni semantiche tra i concetti, rappresentate solitamente come archi
Un concetto, nel NLP, tipicamente (si tratta di esempi non esaustivi, ma molto comuni) potrebbe essere:
- Una parola del testo, di cui possiamo, per esempio, aver individuato genere e numero, radice (cioè la forma da “dizionario”, non declinata o coniugata), POS (Part of Speech, ovvero se si tratti di un verbo o un aggettivo o un nome etc. etc.), e molto altro
- Un insieme di parole tra loro sinonimi (si usa spesso il termine Synset, derivato da un dizionario semantico molto famoso, WordNet e suoi derivati), con l’aggiunta che solitamente si tratta di sinonimi a parità di significato (per es: la parola “prova” potrà stare in tanti Synset, uno insieme a “evidenza” e “testimonianza”, in un significato più giuridico, uno insieme a “sforzo”, “tentativo”, “impresa”, con un significato più fisico, etc. etc.)
- Un sintagma, ovvero insieme di parole del testo che sono logicamente aggregate (per esempio, nella frase “Napoleone fu un grande generale francese dopo la Rivoluzione Francese” potremmo trovare i seguenti sintagmi: “Napoleone”, “fu”, “un grande generale francese” e “dopo la Rivoluzione Francese”)
Si vede subito nell’esempio del sintagma, come, per esempio, sia utile non spezzare “Rivoluzione” e “Francese”, che rappresentano un concetto diverso rispetto ai due termini slegati.
Relazioni semantiche tipiche:
- Se i concetti sono parole o Synset, le relazioni più comuni che inducono un significato saranno quelle, per esempio, di iponimia o iperonimia (es: “cane” è iponimo di “animale” – è meno esteso, ma stessa classe -, mentre “animale” è iperonimo di “cane” – ne è una generalizzazione), parte di (una “ruota” è una parte di una “automobile”) etc. etc.
- Se i concetti sono sintagmi, si possono utilizzare relazioni più complesse, per esempio simili all’analisi logica (es: nella frase precedente su Napoleone, il verbo “essere” – declinato in “fu” – può essere rappresentato al centro e da questo possono dipartirsi archi verso “Napoleone” – soggetto – “un grande generale francese” – predicato – “dopo la Rivoluzione Francese” – tempo)
Nell’immagine seguente puoi vedere un estratto estremamente ridotto (anche limitandosi al solo termine “prova”) di KG tratto dal dizionario semantico MultiWordNet, progetto europeo per allineare diverse lingue europee all’originale WordNet di cui abbiamo parlato prima (quindi, in particolare, siamo di fronte ad un pezzo di Dizionario Semantico).
Per un esempio del secondo caso serve un attimo di pazienza, perché dobbiamo prima introdurre un paio di ragionamenti.
Abbiamo detto che possiamo usare ML + AI Simbolica per ottenere AI Neuro-Simbolica, che fornisce più informazioni delle due prese da sole.
Quindi, per esempio, potremmo usare il ML per:
- Spezzare le frasi (no, non basta spezzarle sul punto, ci sono le abbreviazioni, per esempio)
- Spezzare le parole (tokenizzazione – e no, non basta usare spazi e punteggiatura, ci sono mille varianti di simboli che possono spezzare o meno)
- Trovare i POS e/o i sintagmi (task che si chiama chunking, in inglese)
- Trovare le Named Entity (ovvero quelle parole che sono nomi, ma bisogna capire cosa rappresentino; per es: nella frase “Manzoni ha scritto i Promessi Sposi”, Manzoni è una persona, ma nella frase “Ci troviamo di fronte al Manzoni”, Manzoni è la mia scuola media a Piacenza)
- etc. etc.
Queste attività vanno benissimo per il ML, anche noi umani non diamo spiegazioni su questi task, ma otteniamo per lo più inconsapevolmente questi risultati che, peraltro, sono quasi atomici: difficilmente ci chiederanno come li abbiamo ottenuti.
Ora, se noi riuscissimo a mappare sintagmi e tutto quanto ottenuto sopra in una KG, potremmo ottenere qualcosa di molto potente, come nell’immagine (finalmente!) seguente, che è un possibile KG della frase, presa dalla Wikipedia relativa a Napoleone:
“Sposò Giuseppina di Beauharnais nel 1796 e, in seconde nozze, l’arciduchessa Maria Luisa d’Austria, l’11 marzo 1810, dalla quale ebbe l’unico figlio legittimo, Napoleone Francesco, detto il re di Roma (1811-1832)”
Intanto notiamo come il mapping sia stato completato con:
- Anaphora Resolution: è stato recuperato, analizzando le frasi precedenti e seguenti, Napoleone che era un soggetto sottinteso della frase (ottenuto da elaborazione simbolica, in questo caso – questo è un task su cui ancora il ML non è al suo massimo)
- Lemmatizing: ovvero abbiamo riportato i termini alla loro radice, usando anche l’informazione di POS ottenuta in precedenza, per ridurre gli errori (per esempio: “sposò” diventa “sposare” e nel nodo sono memorizzate molte altre informazioni come il valore originale e il tempo del verbo, che non sono mostrate nel diagramma)
- Identificazione di ruoli: possiamo in prima battuta considerarli come i complementi dell’analisi logica imparata a scuola. Anche questa parte ottiene risultati migliori con elaborazione simbolica, al momento (si può fare anche con ML, ma non avete idea di quante centinaia di migliaia o milioni di frasi servano, con una analisi logica già pre-preparata manualmente da un esperto umano, per un training decente).
È decisamente un grande punto di partenza e la rappresentazione grafica è già in sé una prima spiegazione: se anafore, ruoli, e radici delle parole fossero sbagliati, si vedrebbe già da qui: essendo operazioni quasi atomiche, non servirebbe andare oltre nell’utilizzo di questo KG.
Il vantaggio di un Knowledge Graph inteso come rappresentazione strutturata di un testo originale non strutturato è che si può usare per impostare dei ragionamenti.
Come possiamo usare un KG per ragionare?
Per esempio, se è memorizzato in un Graph Database, sarà possibile eseguire delle query e ottenere delle risposte, percorrendo nodi ed archi ed avendo, di conseguenza, anche una spiegazione del perché viene data una risposta.
Facciamo un esempio semplice.
A scuola ti avevano detto che il complemento di tempo risponde alla domanda “Quando?”, giusto?
Ecco, se i complementi “rispondono alle domande”, possiamo per esempio percorrere i ruoli di un KG per rispondere in modo consapevole e spiegabile a delle domande.
Es: Chi ha sposato Napoleone?
La frase è ambigua, perché Napoleone potrebbe essere sia oggetto che soggetto, così come “Chi?” (certamente ricordi dalle medie che sia soggetto che complemento oggetto “rispondono alla domanda: Chi, Cosa?”).
Fa nulla, lo cercheremo in entrambi i modi, trasformando anche la domanda in KG: di conseguenza anche “ha sposato”, per fare un esempio, diventerà “sposare” (e potremmo trovare cosa ci serve anche se nell’originale c’era “sposò”) e capiremo anche la possibile ambiguità dei ruoli della frase.
- Cerchiamo un nodo con “Napoleone” ed un nodo “sposare”
- Per filtrarli, usiamo solo quelli collegati da archi con soggetto e oggetto
- Quindi cerchiamo, per quei nodi del verbo sposare appena individuati, i soggetti o complementi oggetto che possano rispondere a “Chi” e rispondiamo
Seguite i numeri della lista precedente nell’immagine sottostante:
Abbiamo risolto un problema (Query & Answer da testo appreso, per quanto in una casistica semplice adatta all’esempio), capendo e potendo spiegare il percorso fatto.
Ovviamente, va da sé che AlgaKnow, il modulo più avanzato della Piattaforma Algaware è in grado di fare tutte queste cosette e molte altre, per es. usando KG di dizionari semantici come MultiWordNet per capire meglio il significato di ogni parola (disambiguare) e molto altro.
Ora, ho omesso la parte che implica una Natural Language Generation (NLG, fino a qui era Natural Language Understanding – NLU).
Ma spero che avremo modo di trattarla presto in un altro articolo.
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