L’Intelligenza artificiale
2.4 Gli agenti intelligent
2.4.4 Agenti per il riconoscimento del linguaggio naturale
La comprensione del linguaggio naturale è uno dei campi di ricerca più importanti dell’intelligenza artificiale; esso coinvolge filosofia, linguistica, rappresentazione della conoscenza, ragionamento logico e probabilistico; la comprensione del linguaggio naturale richiede anche analisi empiriche dei comportamenti umani. Gli agenti possono inviarsi segnali (atti linguistici) per informare, avvertire, chiedere aiuto, condividere conoscenze, ecc.; gli esseri umani sembrano essere gli unici animali a usare una grammatica per produrre una varietà illimitata di linguaggi strutturati. L’ambiguità è un problema di grande rilievo per la comprensione del linguaggio naturale; moltissime frasi hanno molte possibili interpretazioni, di cui in genere soltanto una è appropriata; la disambiguazione dipende dalla conoscenza del mondo, dalla situazione corrente, e dall’uso del linguaggio. Gran parte dell’uso del linguaggio avviene nel contesto di frasi multiple; lo studio del discorso si dedica a testi collegati, al fine di risolvere riferimenti pronominali da una frase all’altra, e unire più frasi in segmenti coerenti.
Quando Turing ha proposto il test sull’intelligenza di un agente artificiale lo ha basato sul linguaggio, perché il linguaggio è intimamente legato al pensiero. La comprensione del linguaggio naturale è uno dei campi più importanti dell’intelligenza artificiale; tra le sue influenze si possono includere la filosofia e la linguistica, oltre alla rappresentazione della conoscenza e al ragionamento logico e probabilistico; a differenza di altre aree dell’intelligenza artificiale, la comprensione del linguaggio naturale richiede una investigazione empirica del comportamento umano reale. Gli agenti si possono inviare segnali per diversi scopi: informare, avvertire, richiedere aiuto, condividere conoscenza, promettere qualcosa. Inviare un segnale origina un atto linguistico; tutti gli atti linguistici rappresentano un tentativo di far sì che un altro agente creda o faccia qualcosa32. I primi algoritmi al computer per l’analisi sintattica furono dimostrati da Yngve [Yngve, 1955]; algoritmi efficienti sono stati sviluppati alla fine degli anni sessanta e successivamente perfezionati sempre più; Church e Patil ad esempio, hanno affrontato il problema delle ambiguità sintattiche [Church, Patil, 1982].
Uno dei primi studi sulla “disambiguazione” fu la teoria di Wilks sulla “semantica della preferenza”, che cerca di trovare le interpretazioni che minimizzano il numero di anomalie semantiche [Wilks, 1975].
Le frasi in linguaggio naturale sono ben diverse dalle formule logiche; in logica, se si affermano le formule A, B, e C a una base di conoscenza, si avrà comunque una congiunzione fra A, B, e C; in linguaggio naturale, invece, l’ordine delle frasi è molto importante.
Il riconoscimento sintattico di un linguaggio non contestuale può essere effettuato utilizzando un “chart parser”; è utile aumentare una grammatica per gestire problemi come la concordanza tra oggetto e verbo e il caso dei pronomi. Il formalismo delle grammatiche a clausole definite (DGC = definite clauses grammar) permette di esprimere gli aumenti; con una grammatica a clausole definite il riconoscimento sintattico e l’interpretazione semantica (e persino la generazione del linguaggio) possono essere svolti utilizzando l’inferenza logica. Anche l’interpretazione semantica può essere gestita ricorrendo a una grammatica aumentata; una forma quasi-logica può servire da utile passo intermedio tra analisi sintattica e semantica.
32 L’idea del linguaggio come azione nasce con la filosofia del linguaggio del ventesimo secolo (Wittgenstein,
58 L’ambiguità è un problema molto grave nell’interpretazione del linguaggio naturale; moltissime frasi possono avere diversi significati, ma di solito soltanto uno è quello appropriato. La soluzione delle ambiguità dipende dalla conoscenza del mondo, dalla situazione corrente, e dall’uso del linguaggio. Gran parte dell’uso del linguaggio avviene nel contesto di frasi multiple; lo studio del discorso si dedica quindi ai testi collegati; è importante sapere come risolvere i riferimenti pronominali fra una frase e l’altra, e come unire più frasi in segmenti coerenti. Mediante l’induzione di grammatiche l’agente potrebbe apprendere una grammatica dagli esempi, ma i diversi test effettuati hanno avuto esiti negativi, essendoci limitazioni quanto si va a generalizzare la grammatica appresa.
Il riconoscimento del parlato è considerato anche un problema di inferenza probabilistica per il fatto che le comunicazioni vocali sono caratterizzate da variazioni nel modo in cui le parole sono pronunciate, rumori di fondo, parole diverse con pronuncia analoga, ecc. L’agente quindi identifica una sequenza di parole pronunciate da un oratore in base al corrispondente segnale acustico. I modelli probabilistici “acustici” di riconoscimento del parlato mirano a massimizzare la probabilità condizionata che una certa parola corrisponda al segnale acustico osservato; i modelli probabilistici “linguistici” di riconoscimento del parlato si basano sulla probabilità a priori di frasi diverse. Il modello “a bigrammi” si basa sulla probabilità che una parola compaia subito dopo un’altra parola. I modelli “acustici” sono quelli più complessi; essi si basano su un’importante coperta nel campo della fonologia (lo studio del linguaggio), secondo cui tutti i linguaggi umani usano un repertorio limitato di circa 40-50 suoni chiamati “foni”. Approssimativamente un fono corrisponde a una singola vocale o consonante, alcune combinazioni di lettere producono a volte tuttavia foni distinti, e alcune lettere producono foni diversi in contesti diversi. Il modello inferenziale tipicamente utilizzato per il riconoscimento del parlato è il modello di Markov nascosto. Un modello di Markov nascosto é un modello statistico in cui viene modellizzato un processo markoviano con parametri sconosciuti; esso può essere considerato il più semplice modello di rete bayesiana dinamica [Markov, 1971; Russel, Norvig, 2005]
I sistemi di riconoscimento vocale utilizzano insiemi di dati giganteschi, ed enormi risorse computazionali. Nel riconoscimento di parole isolate in buone condizioni acustiche, con un vocabolario di poche migliaia di parole e un singolo osservatore, l’accuratezza può superare il 99 per cento. Nel caso di parlato continuo e senza restrizioni e una varietà di oratori, l’accuratezza di solito varia fra il 60 e l’80 per cento, anche in buone condizioni acustiche; l’accuratezza è ancora minore nel caso di trasmissioni telefoniche con rumori di fondo. Alcuni ricercatori hanno esplorato la possibilità di utilizzare reti bayesiane dinamiche invece del modello bayesiano nascosto, al fine di sfruttare il maggior potere espressivo delle reti dinamiche bayesiane, e catturare una parte maggiore del complesso stato nascosto dall’apparato che produce il parlato [Zweig e Russel, 1998; Richardson et al, 2000]. Questi tentativi non sembrano tuttavia avere avuto fino ad ora successo, così che il modello nascosto di Markov rimane ancora il modello di gran lunga più utilizzato per il riconoscimento automatico del parlato.
Una delle aree più rilevanti per quel che riguarda le utilizzazioni commerciali dei sistemi artificiali di riconoscimento vocale é la sanità, in particolare negli Stati Uniti. Altre aree di applicazione sono l’aeronautica, in particolare per gli aerei da combattimento, e per l’addestramento dei controllori di volo, la telefonia (i programmi di trasferimento voce-testo richiedono tuttavia troppa memoria per essere implementati efficacemente sui cellulari, anche se Symbiam e Windows hanno ideato dei programmi di riconoscimento vocale per smartphones), le persone diversamente abili, le traduzioni automatiche, il controllo delle automobili, la telematica, la documentazione dei processi nei tribunali, l’automazione domestica, la posta elettronica, l’interazione multimediale, la robotica, ecc.
59 2.4.5 Agenti a supporto delle decisioni di acquisto online
Tra gli agenti di ricerca realizzati per applicazioni in ambienti online, risultano di particolare importanza gli agenti di supporto alle decisioni di acquisto. L’obiettivo del nostro lavoro è infatti, quello di semplificare il compito arduo di ogni consumatore al momento di acquistare un prodotto o servizio. Quindi, ciò che riguarda la codificazione della conoscenza relativa allo shopping su internet, mediante la costruzione di un agente di ricerca in grado di aiutare un acquirente a trovare in rete offerte di prodotti. Negli ambienti online, quando l’acquirente fornisce una descrizione del prodotto, l’agente per lo shopping ha il compito di produrre una lista di pagine web che ne offrono la vendita. Se la descrizione del prodotto è precisa, il compito dell’agente sarà di cercare i negozi che offrono i prezzi più convenienti; se la descrizione è parziale, l’agente dovrà confrontare prodotti diversi. Ovviamente, l’ambiente dell’agente per lo shopping in internet è costituito dall’intero World Wide Web, quindi un ambiente complesso e in costante evoluzione utilizzato ogni giorno da milioni di persone. Le percezioni dell’agente sono pagine web; mentre l’utente le vedrebbe presentate in forma grafica, l’agente le percepisce come stringhe di caratteri comprendenti parole comuni mescolate a etichette del linguaggio HTML (Hyper Text Markup Language)33. L’agente quindi, deve essere in grado di estrarre informazioni utili da questo tipo di percezioni; non sempre ciò è facile, se si considera che le pagine web possono includere cookie, codici Java, Javascript e Flash, protocolli di esclusione dei softbots, HTML scorretto, file sonori, filmati e testo integrato nelle immagini grafiche. Il primo compito dell’agente è trovare offerte di prodotti rilevanti che siano effettivamente in vendita; in genere conviene cominciare dalla home page di un negozio online e considerare tutte le pagine che possono essere raggiunte seguendo collegamenti rilevanti, che a un certo punto giungeranno fino alle offerte. Una pagina è rilevante se può essere raggiunta da una catena di collegamenti di categoria rilevanti partendo dalla home page di un negozio online e se da lì si può raggiungere un’offerta di prodotto. Per riuscire a seguire i collegamenti rilevanti è necessario conoscere una complessa gerarchia di prodotti e non è facile elencare tutte le possibili categorie dello shopping perché un acquirente potrebbe sempre escogitare un nuovo desiderio, e le aziende cercheranno continuamente di inventare nuovi prodotti. In genere, una ontologia che comprende un migliaio di prodotti potrà soddisfare le necessità di gran parte dei potenziali acquirenti [Russel, Norvig, 2005]. Problemi possono derivare dal fatto che a volte la stessa categoria ha più nomi (sinomia), e lo stesso nome si riferisce a più categorie (omonimia o ambiguità). Un problema ancora più rilevante è rappresentato dall’enorme varietà delle descrizioni che un utente può inserire o dei nomi di categoria utilizzati dai diversi negozi. La sinomia e l’ambiguità possono provocare un rilevante aumento del numero di cammini dell’agente, e a volte può rendere difficile determinare se una pagina è effettivamente rilevante. Difficoltà maggiori possono derivare dalla grande varietà di descrizioni che un utente può inserire e dalla loro possibile discrepanza rispetto alle denominazioni utilizzate dai negozi online. Si supponga a questo punto che l’agente abbia “prodotto” un certo numero di pagine a cui corrispondo altrettante offerte per il tipo di prodotto cercato. Per confrontarle dovrà innanzitutto estrarvi le informazioni rilevanti per la scelta: in particolare i prezzi e le diverse caratteristiche qualitative dei prodotti; i programmi wrapper in genere consentono ai softbots di estrarre informazioni dalle pagine web. Altri problemi possono derivare dal fatto che di solito il prezzo dipende dal metodo di pagamento o dall’eventuale diritto di alcuni clienti di ottenere degli sconti. Una volta ottenute le diverse offerte l’agente dovrà confrontarle; un semplice metodo di confronto consiste nell’esclusione delle offerte dominate, vale a dire le offerte uguali o migliori delle altre per gran parte degli aspetti e peggiori per alcuni aspetti. In genere alla fine di questo
33 HTML é il “markup language” predominante per le pagine web. Esso fornisce uno strumento di descrizione della
struttura delle informazioni testuali in un documento, indicando collegamenti, intestazioni, paragrafi, liste, ecc., e aggiungendo al testo forme interattive, immagini, codici, ecc. HTML fu ideato verso la fine degli anni ottanta da Tim Berners-Lee e Robert Cailliau presso il CERN di Ginevra.
60 tipo di confronto rimane ancora un rilevante numero di offerte, ciascuna delle quali è migliore di altre per alcuni aspetti e peggiore per altri aspetti.
Per scegliere fra tante offerte residue l’agente dovrebbe conoscere il grado d’importanza che per l’utente hanno i diversi attributi del prodotto considerato.