UNIVERSITÀ DEGLI STUDI DI MILANO BICOCCA FACOLTÀ DI SCIENZE MATEMATICHE FISICHE E NATURALI
Corso di Laurea Specialistica in Teoria e Tecnologia della Comunicazione
Architetture per Assistenti Virtuali Emozionali
RELATORI:
Prof. Roberto Polillo Leandro Agrò CONTRO RELATORE:
Prof. Flavio DePaoli RELAZIONE DELLA PROVA FINALE DI:
Davide Casali Matr. n. 041666
Anno Accademico 2006/2007
INDICE Indice ...................................................................................... 2 1 Introduzione...................................................................... 6 1.1 Obbiettivi ............................................................................................. 7 1.2 Struttura dell’elaborato ........................................................................ 7
2 Concetti Chiave ................................................................ 9 2.1 Human-Like Interaction ....................................................................... 9 2.2 Assistente Virtuale ............................................................................ 10 2.3 Intelligenza ........................................................................................ 12 2.3.1
Intelligenza Artificiale............................................................................... 13
2.4 Emozione .......................................................................................... 14 2.5 Architetture........................................................................................ 16
3 Intelligenza Artificiale.................................................... 18 3.1 Input .................................................................................................. 19 3.2 Elaborazione ..................................................................................... 20 3.2.1
Keyword Based ....................................................................................... 21
3.2.2
Rule Based.............................................................................................. 23
3.2.3
Expert systems........................................................................................ 24
3.2.4
Neural Networks...................................................................................... 25
3.3 Output ............................................................................................... 26 3.4 Rappresentazione del Significato...................................................... 27 3.4.1
Requisiti .................................................................................................. 27
3.4.2
Modello ................................................................................................... 30
3.4.3
Alcuni Concetti Linguisticamente Rilevanti .............................................. 32
3.4.4
FOL: First-Order Logic............................................................................. 33
2
4 Agenti Intelligenti........................................................... 35 4.1 Razionalità ........................................................................................ 36 4.2 Struttura ............................................................................................ 38 4.3 Tipologie di Agenti............................................................................. 38 4.3.1
Agenti a Riflesso Semplice ...................................................................... 39
4.3.2
Agenti che Tengono Traccia del Mondo .................................................. 39
4.3.3
Agenti basati sullo Scopo ........................................................................ 40
4.3.4
Agenti basati sull’Utilità............................................................................ 40
4.4 Ambienti ............................................................................................ 41 4.5 Agenti di Interfaccia........................................................................... 41
5 Emozioni.......................................................................... 43 5.1 Utilità ................................................................................................. 43 5.2 Modelli Emozionali ............................................................................ 45 5.2.1
Paul Ekman............................................................................................. 45
5.2.2
Robert Plutchik ........................................................................................ 48
5.3 Interfaccia utente............................................................................... 50 5.3.1
Uncanny Valley ....................................................................................... 50
5.3.2
Facial Action Coding System (FACS) ...................................................... 51
6 Ambiti Applicativi........................................................... 53 6.1 Pro..................................................................................................... 53 6.2 Contro ............................................................................................... 54 6.3 Ambiti ................................................................................................ 55 6.3.1
Recupero Informazioni ............................................................................ 56
6.3.2
Guide ...................................................................................................... 56
6.3.3
Risoluzione Problemi............................................................................... 57
6.3.4
Insegnamento ......................................................................................... 57
6.3.5
Giochi ...................................................................................................... 58
6.3.6
Mobile ..................................................................................................... 58
6.4 Prodotti e architetture esistenti.......................................................... 59 6.4.1
Parametri di Osservazione ...................................................................... 60
6.5 Prodotti.............................................................................................. 61 6.5.1
A.L.I.C.E.................................................................................................. 62
6.5.2
Oddcast................................................................................................... 64
6.5.3
MeteoSam ............................................................................................... 66
3
6.5.4
Lingubot .................................................................................................. 67
6.5.5
H-Care .................................................................................................... 69
6.5.6
Freewalk ................................................................................................. 71
6.5.7
Colloquis ................................................................................................. 72
6.5.8
VirtuOz .................................................................................................... 74
7 Architettura del Sistema ............................................... 76 7.1 Modello di Sviluppo Software............................................................ 76 7.2 Descrizione Macroscopica ................................................................ 78 7.2.1
Livello 1: Interazione................................................................................ 78
7.2.2
Livello 2: Elaborazione ............................................................................ 79
7.2.3
Livello 3: Integrazione.............................................................................. 79
7.3 Architettura Generale ........................................................................ 80 7.4 Il Protocollo VAMP come Mediatore ................................................. 82 7.4.1
Concept................................................................................................... 82
7.4.2
Protocollo VAMP 1.1 ............................................................................... 83
7.4.3
Controllo.................................................................................................. 84
7.4.4
Messaggio............................................................................................... 85
7.4.5
Metadati: Contesto .................................................................................. 86
7.4.6
Metadati: Scelte Multiple ......................................................................... 86
7.4.7
Metadati: Reazioni ad Eventi ................................................................... 87
7.4.8
Emozioni ................................................................................................. 87
7.5 Architettura........................................................................................ 88 7.5.1
Routing.................................................................................................... 89
7.5.2
Understanding Engine ............................................................................. 91
7.5.3
Troubleshooting Engine........................................................................... 92
7.5.4
Emotions Engine ..................................................................................... 92
7.5.5
Language Generation Engine .................................................................. 93
7.6 Architettura Estesa............................................................................ 94 7.6.1
Integrazione ............................................................................................ 94
7.6.2
User Profiling........................................................................................... 95
7.6.3
Audio/Video ............................................................................................. 96
8 Case study ...................................................................... 97 8.1 Kallideas K-Humans™...................................................................... 97 8.2 Gabetti............................................................................................... 98 8.2.1
Problema................................................................................................. 99
4
8.2.2
Soluzione .............................................................................................. 100
8.2.3
Architettura Web.................................................................................... 100
8.2.4
Architettura Telefonia ............................................................................ 102
8.2.5
Gabi ...................................................................................................... 102
8.2.6
Esempi di Dialogo ................................................................................. 104
8.2.7
Risultati ................................................................................................. 107
8.2.8
Conclusioni............................................................................................ 109
8.3 Sviluppi Futuri ................................................................................. 110
9 Riferimenti..................................................................... 113
5
1 INTRODUZIONE Quando Damasio pubblicò L’Errore di Cartesio (Damasio, 1994) venne posta la pietra che segnò il momento nel quale il mondo scientifico tornava a rendersi conto del ruolo cruciale delle emozioni sia nell’intelligenza che nella vita umana. Dopo secoli di indiscussa superiorità della razionalità sull’emozione, si è riaperto il dibattito e sono ripresi gli studi che hanno evidenziato il legame strettissimo tra queste due componenti della nostra natura: troppe poche emozioni possono addirittura danneggiare in modo grave la capacità di prendere decisioni. Queste ricerche prosperano anche nell’ambito dell’Intelligenza Artificiale e dell’Interazione Uomo-Macchina. Infatti anche senza la necessità di considerare una intelligenza artificiale pienamente sviluppata – sulla quale si sta ancora lavorando – l’emozione si rivela di cruciale importanza per più semplici agenti che devono comunicare con l’uomo (Picard, 1998 e Norman, 2004). La comprensione e l’espressione di emozioni rendono possibile una migliore interazione con l’uomo. E’ evidente come il modo più naturale di interazione è quello esistente fra membri della stessa specie. Non è nuova l’idea di realizzare un agente simile all’uomo (Human-Like Interaction) per abbattere la barriera tecnologica che richiede normalmente un addestramento, seppur minimo. Uno dei primi concept sul tema è il Knowledge Navigator di Apple (1987) che mostra un maggiordomo virtuale come principale interfaccia di
6
interazione con il dispositivo informatico, ma è predatato dal ben più famoso HAL 9000 di 2001: Odissea Nello Spazio (1968). La realizzazione di assistenti virtuali emozionali è quindi un processo fortemente interdisciplinare, tuttora in fase di pieno sviluppo. Oggi è però già possibile giungere ad un prodotto efficace, effettuando una fusione sintetica dei vari ambiti teorici. Il supporto di una Intelligenza Artificiale non è ancora alla nostra portata, ma uno strumento intermedio, già utile ed efficace, è comunque possibile e già in commercio.
1.1 OBBIETTIVI Questa tesi vuole mostrare come sia già tecnologicamente fattibile la realizzazione di assistenti virtuali specifici per un contesto, capaci di interagire con l’uomo tramite il linguaggio naturale e le emozioni. La tesi ha quindi tre obbiettivi: 1. Riassumere il corpo teorico contenente tutti gli elementi necessari per le varie funzionalità che un assistente virtuale emozionale richiede. 2. Definire l’architettura software e hardware generica per la realizzazione di un assistente virtuale emozionale. 3. Descrivere un esempio di applicazione dell’architettura individuata in un contesto reale.
1.2 STRUTTURA DELL’ELABORATO Questa tesi procede lungo i tre obbiettivi sopra definiti. Nei primi capitoli introdurrà i concetti chiave (cap.2) che inquadrano l’ambito del progetto e proseguirà approfondendo le tre parti teoriche più importanti: intelligenza artificiale (cap.3), agenti intelligenti (cap.4) ed emozioni (cap.5).
7
Vi è quindi una seconda parte applicativa, nella quale verranno esposti i principali contesti di utilizzo e le offerte attualmente esistenti in rete (cap.6). Il punto centrale dell’esposizione è quindi la definizione dell’architettura di un assistente virtuale (cap.7). L’ultimo obbiettivo viene soddisfatto con il case study dell’assistente virtuale K-Human installato presso Gabetti (cap.8).
8
2 CONCETTI CHIAVE 2.1 HUMAN-LIKE INTERACTION “To err is human, but to really foul things up requires a computer” – Farmers' Almanac, 1978 Qualunque manufatto creato dall’uomo per l’uomo deve contemplare nella sua progettazione un’efficace ed efficiente interfaccia perché svolga correttamente il suo lavoro. Nell’ambito informatico questa premessa è ancora più rilevante perché l’aumento della libertà dai limiti fisici ottenuta con il computer incrementa contemporaneamente sia la potenza espressiva sia – purtroppo – la possibilità di progettare dispositivi inefficaci nell’interagire con l’uomo. Per questo motivo esiste un’area di studio interdisciplinare denominata Interazione Uomo-Macchina (IUM) o Human-Computer Interaction (HCI). La HCI è una disciplina che riguarda il design, la valutazione e l’implementazione di sistemi informatici interattivi per l’utilizzo da parte dell’uomo e il loro studio scientifico (SigCHI, 2007). Si può considerare la HCI come costituita principalmente dalle scienze informatiche e da quelle psicologiche, ma spaziante anche in altri ambiti specifici come l’ergonomia e il design grafico.
9
In particolar modo questa tesi tratterà un ambito specifico, ovvero la Human-Like Interaction:
Human-Like Interaction include tutte quelle modalità di interazione fra uomo e macchina che permettono di conversare con un sistema in grado di capire il parlato, leggere testi e formulare risposte con la naturalezza, l’intelligenza e le interazioni umane.
emozioni
che
caratterizzano
le
La tastiera ed il mouse non sono più quindi uno strumento preferenziale di interazione con il computer.
2.2 ASSISTENTE VIRTUALE “While you were busy, your mother called again to remind you to pick up the birthday cake” – Knowledge Navigator video, 1987 Gli assistenti virtuali sono una particolare declinazione degli agenti software, ovvero programmi in grado di interagire all’interno di un contesto e fra altri agenti e/o l’uomo. Gli agenti software possiedono essenzialmente quattro caratteristiche: 1. Autonomia: l’abilità di perseguire uno scopo specifico e prendere decisioni senza l’intervento umano. 2. Abilità sociali: l’abilità di interagire con altri agenti o con l’ambiente. 3. Reattività: l’abilità di percepire il contesto in cui agiscono e reagire alle sue variazioni.
10
4. Persistenza: l’abilità di essere sempre attivo nel tempo. Il termine assistente virtuale è evidentemente più specifico e già dal nome si evidenziano alcune caratteristiche principali: A. Assistente: è realizzato per interfacciarsi principalmente con un essere umano e a fornirgli un supporto di qualche genere, esattamente come farebbe un assistente fisico. B. Virtuale: a parte l’ovvietà che si tratta di un software, il termine virtuale richiama alla realtà virtuale, quindi anche ad una componente sensoria più significativa rispetto all’utilizzo tradizionale (“realtà virtuale”). La definizione è quindi:
Assistenti Virtuali sono agenti software che mostrano intelligenza ed emozioni in grado di relazionarsi con l’uomo in modo naturale (Human-Like Interaction) al fine di agire o di rispondere in modo consistente alle sue richieste. Osservando la definizione possiamo rilevare alcuni punti, in aggiunta a quelli che lo caratterizzano come agente software: 1. Intelligenza ed emozioni sono fenomeni percepiti, esteriori. Non deve essere quindi presente una Intelligenza Artificiale perché si possa avere un assistente virtuale. 2. La relazione con l’uomo deve essere il più naturale possibile, sia come media che come messaggio. 3. Deve soddisfare le richieste dell’utente. Seppure ovvio, questo sott’intende che deve capire di cosa si sta parlando. Un assistente virtuale è quindi uno strato di interazione efficace tra uomo e macchina.
11
2.3 INTELLIGENZA “Within a generation the problem of creating 'artificial intelligence' will substantially be solved” – Marvin Minsky, 1967 Il termine proviene dal latino ‘intus’, dentro e ‘legere’, leggere e significa quindi la capacità di “leggere dentro”, ovvero di mostrare curiosità attiva di comprendere il funzionamento del mondo. La definizione precisa di intelligenza è piuttosto complessa, si tratta di una proprietà sicuramente umana, ma in alcuni casi è estesa a certe specie animali. Possiamo partire da una definizione generale: Intelligenza è la facoltà della mente umana di intendere, pensare, giudicare, comunicare fatti e conoscenze, di formulare giudizi ed elaborare soluzioni in risposta agli stimoli esterni, di adattarsi all’ambiente o di modificarlo in base alle proprie necessità.
– De Mauro Paravia E’ sicuramente ad ampio spettro e considera l’umanità come portatrice unica di tale caratteristica. Contiene inoltre molti altri termini che andrebbero a loro volta definiti in modo adeguato (‘intendere’, ‘pensare’,’formulare’, ‘elaborare’). Questa è una formulazione comprensibile ma inadeguata per gli scopi di questa tesi. Partendo invece da un approccio costruttivista dell’intelligenza, troviamo la seguente definizione:
12
Intelligenza è la capacità di ragionare, apprendere, risolvere problemi che vengono posti dall’ambiente. Questa è molto vicina alla definizione inglese di ‘intelligent’, che ha una sfumatura meno carica di significati e più pratica: L’abilità di acquisire ed applicare conoscenza ed abilità. “The ability to acquire and apply knowledge and skills.”
– New Oxford American Dictionary Non essendo possibile concordare una definizione univoca, terremo in considerazione l’accezione costruttivista, che presenta meno problemi filosofici ed è più limitata.
2.3.1 INTELLIGENZA ARTIFICIALE La prima certificazione ufficiale del campo scientifico dell’Intelligenza Artificiale o Artificial Intelligence (AI) si può fissare con la prima Dartmouth Conference on Artificial Intelligence, che si tenne nel 1956 nel College di Dartmouth e porta la firma di McCarthy, Minsky, Rochester e Shannon (McCarthy, 1955). E’ anche ipotizzabile che sia stato affrontato questo argomento nelle precedenti Macy Conferences sulla cibernetica (1946-1953). Una definizione iniziale di Intelligenza Artificiale venne data da Minsky stesso nel 1978: The science of making machines do things that would require intelligence if done by men.
13
Questa definizione appare piuttosto verticale, ma rimane la più citata dai non addetti ai lavori per la sua semplicità. Dare una definizione anche qui è difficile perché si posano le basi sulle stesse ambiguità del termine intelligenza. Si pensi ad esempio che nell’ambito dell’Intelligenza Artificiale, quello che anni fa rappresentava un problema creduto risolvibile solamente da una entità intelligente, oggi non è più tale. Si pensi in questo senso agli scacchi o ai sistemi esperti. Un approccio molto più ampio, che include anche questioni umanistiche può essere questo: Lo studio di sistemi auto-modificanti basati su un flusso di informazioni, sia naturali (biologici) che artificiali. – Prof. Aaron Sloman (1994)
Il campo dell’Intelligenza Artificiale è indubbiamente quello da cui vengono tratte le principali tecnologie necessarie ad un assistente virtuale. Questo non significa però che un assistente virtuale deve per forza essere una intelligenza artificiale: è sufficiente che soddisfi la definizione ridotta di intelligenza in uno specifico campo, ovvero la capacità di ragionare, apprendere e risolvere problemi in un determinato ambiente.
2.4 EMOZIONE “Una piena comprensione della mente umana richiede una prospettiva integrata” – Antonio R. Damasio (1994)
14
Questo testo terrà in particolare considerazione le emozioni perché al contrario che per l’intelligenza non c’è la percezione socialmente diffusa che questa sia una caratteristica importante e che debba essere studiata di pari passo con l’intelligenza. Emozione deriva dal latino ‘ex’, uscire e ‘motio’, muoversi. Anche in questo caso è difficile dare una definizione univoca. Esistono numerose ipotesi differenti avallate da differenti approcci teorici. In questa tesi verrà considerata la seguente definizione (Damasio, 1994), che sembra idonea in questo contesto:
L’emozione è un intenso stato mentale che nasce automaticamente nel sistema nervoso, associato con una risposta psicologica positiva o negativa. Damasio definisce anche la differenza fra sentimento ed emozione, che può essere una nozione utile nel distinguere un livello conscio da uno inconscio: I sentimenti possono essere visti come l’esperienza soggettiva di una emozione che sorge nel cervello Il concetto di sentimento è quindi legato alla percezione di uno stato interno e quindi all’autocoscienza, mentre l’emozione è uno stato mentale che nasce spontaneamente e genera una risposta. Seppure il sentimento sia la parte più affascinante, noi considereremo soprattutto l’aspetto emotivo che è più facilmente realizzabile con le attuali tecnologie, anche solo realizzando il livello esteriore, ovvero quello che condiziona le comunicazioni.
15
2.5 ARCHITETTURE “L'architettura è una scienza, che è adornata di molte cognizioni, e colla quale si regolano tutti i lavori, che si fanno in ogni arte” – Marco Vitruvio, 30AC Il termine deriva dal greco ‘archè’, eccellenza, superiorità e ‘tèk-ton’, artefice. L’architettura è l’arte e la scienza di progettare strutture. Questa è una definizione generica, perché è chiaro che seppure il significato originale di ‘struttura’ fosse quella di edificio fisico, il termine si trasla adeguatamente anche nel caso delle strutture informatiche, sia software che hardware. Nel campo dell’informatica esistono differenti architetture: software, hardware, dei sistemi, enterprise, dei processi. Ognuna di queste differenti astrazioni può essere un punto di vista diverso del medesimo sistema informatico. Il concetto di architettura non solo ha punti di vista differenti, ma può rappresentare differenti livelli di astrazione anche in rapporto al tipo e alle dimensioni del progetto che si deve realizzare. In ogni caso, indipendentemente dalle definizioni si intende per architettura sempre un processo di astrazione volto a formare la struttura di un sistema. La definizione di architettura dei sistemi, o systems architecture, secondo la IEEE (tradotto da IEEE Std 1471-2000) è la seguente:
16
Architettura è la fondamentale organizzazione di un sistema definito nei suoi componenti, nelle sue relazioni e nei confronti dell’ambiente e i principi che guidano il suo progetto e la sua evoluzione. Una architettura consta di tre elementi: • Rappresentazione: gli elementi costitutivi, le relazioni e le regole sono rappresentate da schemi che astraggono l’implementazione. • Processo: per realizzare una particolare gerarchia è sempre necessaria una sequenza di passi che operino in base a determinati limiti. • Disciplina: esistono numerosi approcci teorici, molto importanti sia per la struttura, sia per la garanzia di interoperabilità. In questo modo si evita di dover ripartire ogni volta da zero. Esattamente come per un edificio reale, la necessità di progettare una architettura diventa sempre maggiore con il crescere delle dimensioni del sistema che si vuole realizzare. Data l’evidente cooperazione di differenti parti, nel caso di un assistente virtuale è fondamentale una buona architettura che garantisca flessibilità, integrazione ed interoperabilità. La spiegazione che verrà fornita in questa tesi sarà posta su un livello di astrazione tale da consentire numerose tipologie di architettura di più basso livello.
17
3 INTELLIGENZA ARTIFICIALE Questo capitolo tratterà l’ambito dell’intelligenza artificiale applicato agli agenti intelligenti. E’ necessario quindi separare le tre fasi dell’elaborazione: 1. Traduzione del linguaggio umano in un linguaggio intermedio (input). 2. Elaborazione del linguaggio intermedio. 3. Traduzione da linguaggio intermedio a linguaggio naturale (output). I primi due punti riguardano un ramo di ricerca definito Natural Language Processing (NLP) o elaborazione del linguaggio, mentre il secondo punto è esattamente il cuore degli studi sull’intelligenza artificiale. Possiamo considerare il NLP come lo strato esterno opzionale, in quanto i dati da elaborare potrebbero giungere già standardizzati o sotto forma di query. L’intelligenza artificiale e l’elaborazione del linguaggio sono due campi di studio estremamente ampi e in questa tesi ci limiteremo a definirne i concetti più importanti, utili in questo contesto applicativo. Il NLP è un ambito di ricerca che si pone a metà strada fra l’AI e la linguistica. Tratta le teorie e le soluzioni algoritmiche per permettere ad un elaboratore di elaborare il linguaggio parlato e scritto dell’uomo. Viene definito come un problema AI-complete (IA-completo) nel senso che la sua completa risoluzione sembra implicare l’uso di una Intelligenza Artificiale completamente funzionante.
18
L’ambito dell’NLP si segmenta in una serie di sottoproblemi: • Segmentazione del parlato, ovvero la comprensione di dove iniziano e finiscono le varie parti del testo (parole, frasi, …). • Segmentazione del testo, ovvero l’identificazione delle singole parole. • Disambiguazione delle parole, ovvero la scelta di un particolare significato fra quelli disponibili per la singola parola. • Disambiguazione della sintassi, ovvero la scelta di un particolare significato nel caso di frasi ambigue. • Normalizzazione del testo, ovvero l’eliminazione di eventuali errori di scrittura e grammaticali. • Significati Metaforici, ovvero l’identificazione di eventuali significati meta-linguistici (i.e. “Sai che ore sono?” non richiede “Sì” come risposta, ma l’orario).
3.1 INPUT In questa fase, denominabile Natural Language Understanding (NLU), è necessario comprendere cosa sta dicendo la persona che vuole interagire con il sistema. Il processo di elaborazione dell’input, indipendentemente da come venga fatto, è separato in due parti: 1. Traduzione del linguaggio parlato e traduzione in linguaggio scritto. 2. Traduzione del linguaggio scritto in un linguaggio intermedio. Questa fase implica una serie di elaborazioni su un flusso di onda sonora. Uno dei primi problemi che si incontrano è che l’onda sonora del parlato è una sequenza continua di informazioni. Noi percepiamo le varie parole non perché sono fisicamente separate, ma perché il nostro cervello opera questa separazione quando sta già comprendendo il senso della frase.
19
E’ abbastanza evidente questo processo mentale quando ci troviamo ad ascoltare una lingua straniera, o in quelle situazioni ove capiamo ciò che viene detto dopo un istante. Si pensi che addirittura il nostro cervello utilizza anche la componente visiva per capire quello che viene detto: non ha un peso rilevante (altrimenti non potremmo usare il telefono) però in presenza di fonemi dubbi, la nostra mente utilizza l’informazione visiva – ovvero l’osservazione della bocca del parlante – per disambiguarli. Per questo motivo i software di riconoscimento automatico del parlato, o Automatic Speech Recognition (ASR), non hanno modo di lavorare su piccole parti, ma devono analizzare una sequenza più lunga e tentare di capire le varie parole e gli spazi in un solo passaggio. La maggior parte dei sistemi oggi in commercio utilizzano dei sistemi statistici (corpora, Markov) che si basano su grosse librerie di parole memorizzate secondo la loro struttura fonetica. Per questo motivo, nonostante abbiano raggiunto notevoli livelli di precisione, hanno grosse difficoltà nel capire parole nuove o estranee al loro dizionario.
3.2 ELABORAZIONE Tutti gli studi di AI sono centrati sulla fase di elaborazione, che è il problema sicuramente più interessante su cui si fonda la disciplina (ricordo le parole di Minsky del §2.3.1). Questi studi han portato alla nascita di strumenti come i Motori a Regole, Lisp e Prolog prima e i sistemi esperti (Expert Systems) poi. Vi sono state anche correnti parallele evolutesi in strumenti come le Reti Neurali.
20
Indipendentemente da come venga elaborato, un ruolo cruciale viene dalla rappresentazione del significato, perché significa avere un linguaggio comune per fare comunicare i vari componenti. Vi sono vari tipologie di sistemi oggi esistenti per l’elaborazione del significato: 1. Keyword Based 2. Rule Based 3. Expert Systems 4. Neural Networks Senza scendere troppo in dettaglio, vediamo una panoramica generale dei vari sistemi esistenti commercialmente.
che
siano
attualmente
utilizzabili
anche
3.2.1 KEYWORD BASED Questo rappresenta il sistema più semplice realizzabile. In pratica si evita l’analisi approfondita e complessa dell’intera frase in linguaggio naturale e ci si limita a intercettare delle specifiche parole chiave o i temi (radici) di queste (tramite un processo chiamato stemming). Seppure questo approccio sia estremamente limitato, è comunque piuttosto efficiente nei casi in cui ci sia poca potenza di calcolo oppure in cui ci sia un contesto di dialogo molto ridotto. Il primo agente della storia, Eliza (1966), applicava proprio un algoritmo di questo tipo. Eliza si presentava come una psicologa ad una prima seduta e se veniva presa come tale per qualche minuto riusciva a mantenere l’illusione di essere una persona vera, nonostante il suo algoritmo banalissimo.
21
Riporto un esempio di log di Eliza: > Hello, I am Eliza. * I'm a bit sad... > Did you come to me because you are a bit sad? * Exactly. But I don't know if it's related to something that happened today... > Does that trouble you? * Yes. Yes. I can't find the reason of my current feelings... > How do you know you can't find the reason of your current feelings? * Do you suppose there's a reason? > We were discussing you, not me. * Yeah. > OK... "Do me suppose there's a reason". Tell me more. Come vedete, la scelta di una psicologa è abbastanza calzante, perché si tratta di un ruolo per il quale siamo abbastanza propensi ad accettare domande su noi stessi. L’algoritmo, pur essendo semplice, aveva alcune furbizie, come ad esempio la capacità di ripetere pezzi di frase per ribaltarli come domande e riprendere discussioni nel caso di digressioni (come dopo il “Yeah.” qui sopra). Già nel testo sopra si sospetta la sua natura reale nel momento in cui si rifiuta di rispondere ad una semplice domanda. Sistemi molto semplici di questo tipo sono definiti bot, una abbreviazione di “robot”, ovvero degli agenti particolari che ripetono operazioni automatiche in modo semplice (o stupido).
22
3.2.2 RULE BASED I sistemi basati su regole dispongono di uno strumento aggiuntivo per elaborare i messaggi in entrata. Si basano infatti su inferenze del tipo forward chaining (concatenamento in avanti, ne parleremo meglio nel §3.4.3), ovvero sistemi di regole che giungono ad un risultato legando una serie di regole che corrispondono (“fire”). A partire da uno stato iniziale quindi più regole verranno ad attivarsi in sequenza, fino ad arrivare in un punto in cui nessuna regola corrisponde più (o viene chiamato uno stop), terminando l’esecuzione. Il vantaggio di questi sistemi è che possono eseguire elaborazioni più complesse e riescono a manipolare i dati in entrata con dei dati che sono già presenti internamente per trarre conseguenze e conclusioni. Con sistemi di questo tipo è inoltre possibile eseguire una semplice analisi grammaticale, in quanto i sistemi a regole presentano analogie con le regole di produzione grammaticale. L’efficienza di questo sistema non è però intrinseca nel modello, ma dipende dalle regole che vengono caricate. In questo modo è possibile demandare ad un motore a regole tutti e tre gli strati che compongono il NLP, quindi: 1. Avuto il testo in ingresso, può eseguire una analisi grammaticale e semantica. 2. In base all’analisi, può elaborare risposte in base anche allo stato interno e allo storico della discussione. 3. Trovata una risposta, può generare il testo in uscita. Sono ovviamente escluse le parti di comprensione del parlato e di sintesi vocale, che rimangono delle parti a sé stanti.
23
L’algoritmo RETE (Forgy, 1974) è una implementazione meno ingenua di un sistema a regole (aumenta sensibilmente la velocità di esecuzione). Rappresenta contemporaneamente una versione molto semplice di un sistema esperto.
3.2.3 EXPERT SYSTEMS I sistemi esperti (expert systems) sono uno dei primi risultati degli studi sull’Intelligenza Artificiale. I sistemi esperti presentano analogie con i sistemi a regole, in quanto si basano comunque su una serie di regole che analizzano l’informazione fornita. In particolare però i sistemi esperti sono focalizzati su uno specifico ambito di problemi e sono in grado di eseguire complesse operazioni di deduzione. Sono molto utilizzati per la risoluzione dei problemi o per l’analisi di sistemi complessi (i.e. analisi di grosse quantità di dati, analisi dello stato di un veicolo spaziale, …). Alle loro radici sono comunque fondati su dei sistemi a regole (sia forward chaining che backward chaining), ma il valore aggiunto è fondato sulla base di conoscenza che possiedono internamente, ovvero sulla loro programmazione interna. Infatti tutta la conoscenza di un sistema esperto è esterna al programma, che si limita a trarre conclusioni basandosi sui dati in suo possesso. Un sistema esperto si compone di due parti: 1. Inference Engine, ovvero il motore che trae conclusioni, indipendente dal problema che si deve risolvere. 2. Rule Base, ovvero tutte le regole (classi, dati, relazioni) che rappresentano l’ambito applicativo di uno specifico sistema esperto.
24
Qui si entra nell’ambito dell’ontologia informatica, ovvero un modello dati che rappresenta una serie di concetti e le loro relazioni all’interno di uno specifico dominio di appartenenza. Le ontologie in senso informatico non sono da intendersi nel senso filosofico del termine, ma costituiscono una forma di astrazione molto elevata in uno specifico contesto. Tale astrazione, se ben costruita, è di fondamentale importanza per trarre deduzioni e conclusioni elaborandole tramite un sistema esperto o tramite una serie di premesse iniziali.
3.2.4 NEURAL NETWORKS Le reti neurali sono un altro degli ambiti di ricerca nell’Intelligenza Artificiale e rappresenta il tentativo di realizzare una AI partendo dagli studi di neuroscienze e quindi basandosi sull’astrazione del funzionamento del cervello. In pratica, si realizza una rete di neuroni software basati su un modello matematico che comunicano tra di loro in modo analogo ai neuroni reali. Intorno allo strato di elaborazione vero e proprio, alcuni di questi neuroni riceveranno l’input, mentre altri forniranno l’output. La creazione della rete dei nodi e delle relazioni non è che una parte del procedimento. Le reti neurali si basano fondamentalmente sull’autoapprendimento. Esistono diversi algoritmi e tre possibili approcci, ognuno dei quali viene scelto in relazione al tipo di problema che si deve risolvere: 1. Apprendimento Supervisionato: vengono fornite coppie di valori in input e output e si lascia che la rete si modifichi per generare quello specifico valore in uscita presentato quel dato valore in entrata. 2. Apprendimento Non Supervisionato: viene fornita solamente una funzione di costo, che deve essere minimizzata. In questo modo la rete neurale cerca di modificarsi per produrre risultati che rendano il più bassa possibile tale funzione.
25
3. Apprendimento Rinforzato: l’input viene fornito come conseguenza delle azioni della rete neurale nell’ambiente in cui viene inserita, con una funzione di costo non esplicitamente definita. In questo modo la rete neurale apprende come interagire con la complessità delle dinamiche dell’ambiente di riferimento, dinamiche spesso sconosciute e/o troppo complesse. Risulta evidente che le reti neurali siano molto efficaci, ma solamente per certe categorie di problemi ed è difficile comprendere come potrebbero essere utili nell’approccio linguistico che un assistente virtuale deve possedere. Per la natura complessa e legata all’apprendimento però, una rete neurale potrebbe essere utilizzata come elemento di gestione delle emozioni, più che per la parte logica del linguaggio.
3.3 OUTPUT In modo analogo all’input, anche la produzione dell’output si può suddividere in due parti distinte: 1. Natural Language Generation (NLG), ovvero la produzione di un testo in una lingua naturale, a partire dal linguaggio intermedio di elaborazione. 2. Trasformazione del testo in una onda sonora equivalente. La fase di NLG è una delle parti forse meno approfondite, in quanto una volta raggiunta una forma di rappresentazione della risposta è solitamente possibile fare una trasformazione fissa da questa al linguaggio corrispondente. Infatti mentre la comprensione (NLU) implica dover gestire tutte le possibili variazioni di significato e le ambiguità di una lingua, nel caso dell’NLG si ha già una forma stabile e si tratta solamente di tradurla.
26
Quindi spesso si stabiliscono alcune formulazioni linguistiche stabili, con al più delle variabili (i.e. “Ciao %s, come ti chiami?”) che vengono legate a precise configurazioni del linguaggio intermedio uscente dalla fase di elaborazione. Una soluzione a cui si sta mirando è quella di realizzare un unico linguaggio intermedio sia in input che in output, che quindi sia adeguatamente vicino alla formulazione linguistica per essere ricco (input) e traducibile (output) e abbastanza vicino ai processi di elaborazione perché possa essere utilizzato. E’ bene notare in ogni caso che l’NLG è un processo complesso che si complica ulteriormente con il crescere della quantità di elaborazioni e trasformazioni interne (i.e. risultato come ontologia).
3.4 RAPPRESENTAZIONE DEL SIGNIFICATO Volendo realizzare un sistema adeguatamente flessibile si capisce immediatamente come vi sia una forte necessità di fare comunicare i vari componenti. Riuscire a trovare quindi una forma di rappresentazione del significato che riesca a soddisfare i requisiti delle varie componenti risulta quindi essere di primaria importanza.
3.4.1 REQUISITI Per poter definire quindi una rappresentazione del significato adeguata bisogna esplicitare tutti i requisiti che tale formato dovrà soddisfare (Jurafsky e Martin, 2007): 1. Computabilità
27
l primo fattore essenziale è quello di essere in grado di usare una rappresentazione per determinare la relazione esistente fra il significato di una frase e il mondo come lo conosciamo. Nella filosofia del linguaggio è definito “valore di verità” la condizione vera o falsa che una frase assume rispetto ai fatti del mondo. Nel nostro caso è necessario che tale valore di verità sia calcolabile da un algoritmo, in modo univoco. 2. Univocità: Qualunque input linguistico che venga elaborato è soggetto all’ambiguità: anche la frase più semplice è possibile che abbia più interpretazioni possibili a partire dalla stessa costruzione simbolica. Un esempio classico è “La vecchia porta la sbarra”, interpretabile sia come una anziana signora che trasporta un’asta, sia come una porta che impedisce l’accesso ad una donna. Un concetto simile all’ambiguità è la vaghezza: esistono frasi che in determinati contesti possono veicolare una quantità di significato sufficiente a comunicare qualcosa, ma in altri contesti la stessa frase può essere troppo generica perché sia di una qualche utilità. Ad esempio “Voglio mangiare cibo italiano” può fornire indicazioni sufficienti ad un ristoratore perché possa suggerire qualche piatto, ma è del tutto inutile se si vuole specificare cosa si vuole mangiare. 3. Forma Canonica Si intende per forma canonica una unica struttura soggiacente a diverse espressioni superficiali. Ad esempio più frasi diverse potrebbero esprimere lo stesso significato. In tale situazione, si può preferire di ridurle ad una precisa forma canonica, comune a tutte. Questo tipo di elaborazione è naturalmente più complessa perché implica dover associare termini differenti (o intere frasi) per ricondurli allo stesso significato. Per farlo si deve ricordare che una parola ha più sensi differenti (esattamente come appare sfogliando un dizionario) e che quindi si
28
possono disambiguare i vari sensi trovando quale sia quello comune a tutti i termini utilizzati nello stesso contesto. 4. Inferenze e Variabili Per alcune forme linguistiche, come per esempio le domande, la forma canonica di per sé non riesce però a soddisfare tutte le necessità. Quando chiediamo ad esempio “chi”, stiamo cercando un soggetto: non è possibile quindi sapere chi sia prima di aver elaborato una possibile risposta. Diventano quindi necessarie le variabili, che permettono di esplicitare elementi chiave di alcune frasi che non hanno una corrispondenza fissata in fase di formulazione. Al contrario, la presenza di una variabile implica che venga fatta una inferenza su chi sia il soggetto ignoto referenziato dalla frase. L’inferenza ha una strettissima connessione con la computabilità che si citava prima: mentre in un caso si tratta di fare corrispondere una rappresentazione del significato ad un background di conoscenza interno per trovare un valore di verità, ora viene fatta la stessa operazione per trovare però un singolo soggetto contenuto all’interno della conoscenza. 5. Espressività Sembra un requisito banale, ma è necessario che la struttura selezionata per rappresentare il significato sia sufficientemente espressiva. Ovviamente l’ideale è che si riesca a coprire qualunque ambito del linguaggio naturale umano, ovvero che qualunque formulazione abbia una corrispondenza. Visto però che una struttura di questo tipo rischia di essere troppo complessa, allora è bene considerare un sott’insieme che riesca a comprendere il più ampio spettro di possibilità (principio dell’80/20). E’ anche da notare che una struttura troppo espressiva potrebbe inficiare la canonicizzazione della frase (punto 3), perché se ogni
29
formulazione avesse una struttura differente per accomodare la massima espressività, sarebbe difficile normalizzare le ambiguità.
3.4.2 MODELLO Una struttura base comune a tutti i sistemi di rappresentazione del significato è basata sull’abilità di rappresentare oggetti, proprietà degli oggetti e relazioni tra di essi. Un modello (model) è un costrutto formale che rappresenta un particolare stato del mondo che stiamo rappresentando. Un modello necessita primariamente di due tipologie di elementi. Il primo insieme è costituito dagli elementi del vocabolario non-logico, che consiste nell’insieme aperto di oggetti, proprietà e relazioni che formano il mondo che stiamo cercando di rappresentare. Il secondo insieme è invece costituito dagli elementi del vocabolario logico, che consiste nell’insieme chiuso di simboli, operatori, quantificatori e collegamenti che forniscono la rappresentazione formale per comporre le espressioni in un linguaggio di rappresentazione del significato. La denotazione è il processo che definisce i vari elementi del vocabolario non-logico in base al modello specifico di riferimento. Gli oggetti definiscono il dominio di applicazione del modello e sono solitamente definiti in modo estensionale, in quanto è la collocazione stessa all’interno del modello che ne definisce le proprietà. In modo analogo, le relazioni sono definite tramite coppie ordinate di valori. Manca ancora un elemento perché questo modello semplificato funzioni: è necessaria una forma di interpretazione che consenta di mappare gli elementi del vocabolario non-logico collegandoli a strutture formali espresse con il vocabolario logico.
30
La struttura che si può così formare definisce una semantica verocondizionale (truth-conditional semantics), ovvero un metodo per determinare il valore di verità di una espressione complessa a partire dal significato delle parti (tramite la consultazione di un modello). Il significato dei vari operatori è solitamente determinato da tavole di verità. Quindi un generico modello di riferimento consta di: 1. Oggetti, Proprietà e Relazioni. 2. Vocabolario non-logico. 3. Vocabolario logico. 4. Traduzione degli elementi del dominio nel vocabolario non-logico. 5. Mappatura degli elementi del vocabolario non-logico al vocabolario logico. Dall’ambito della linguistica possiamo prendere la struttura di analisi del linguaggio X-barra o X-bar (Chomsky, 1970). Dopo aver subito alcune integrazioni (Jackendoff, 1977 e Chomsky, 1994) ad oggi la teoria X-barra è universalmente accettata come un buon strumento di analisi linguistica, in quanto è in grado di spiegare adeguatamente molte espressioni dei parlanti delle lingue del mondo. Per questo motivo si potrebbe pensare di utilizzare una struttura X-barra semplificata per rappresentare il significato, fornendo quindi una base linguistica ai primi due punti sopra citati (Oggetti, Proprietà e Relazioni, assieme al Vocabolario non-logico). Questo approccio potrebbe essere molto ricco dal punto di vista linguistico, ma potrebbe presentare ostacoli nella fase di deduzione e di ragionamento sulla base dati. Uno studio di questo genere esula da questa tesi, ma potrebbe portare interessanti risultati, o quantomeno rilevare con maggiore precisione quale
31
sia la distanza fra una struttura vicina al linguaggio e una invece vicina all’elaborazione deduttiva.
3.4.3 ALCUNI CONCETTI LINGUISTICAMENTE RILEVANTI Ci sono alcune rappresentazioni che sono state trattate anche molto approfonditamente nel corso degli anni, passando da sforzi approfonditi e focalizzati a sforzi monumentali su tutta la conoscenza complessiva umana. Dato però che il NLP tratta in modo molto vicino la linguistica, un ambito nel quale vi è una notevole ricchezza di eccezioni e casi, è utile definire una serie di casistiche delle quali si deve tener conto: 1. Categorie:
definendo
le
categorie
come
relazioni
(Ristorante(Morganti)) è difficile fare inferenze su di essi: è necessario che siano degli oggetti. Per questo motivo si usa la tecnica della reificazione (reification), ove la categoria è un oggetto a sua volta e l’appartenenza è definita tramite due relazioni: IsA (is a, è un), che definisce appartenenza, e AKO (a kind of, un tipo di), che definisce inclusione. 2. Eventi: non è fattibile aumentare il numero di parametri in una relazione per poter gestire tutti i suffissi che un predicato può avere. Per risolvere questo problema si segmenta la frase facendo una reificazione, ove IsA viene usato per definire che una certa persona sta facendo una determinata azione (∃w·IsA(w, Eating)) e quindi definendo tale persona (incognita o meno) in altre clausole legate da un connettivo AND (Eater(w, Speaker) and Eaten(w, Pizza)…). 3. Rappresentazione del Tempo: il tempo è definito in modo relativo ad altri eventi, lungo lo scorrere di una linea temporale, secondo un punto di riferimento. La declinazione del verbo definisce la distanza nel tempo dei soggetti rispetto a chi pronuncia una determinata frase.
32
4. Aspetti: gli eventi sono definiti anche da una modalità di azione (concluso, in compimento, …). Per questo motivo tradizionalmente gli eventi sono distinti in quattro classi: statives, activities, accomplishments, achievements. 5. Rappresentazione delle Credenze: le credenze (beliefs) implicano l’introduzione di operatori modali (modal operators) che quindi definiscono una logica chiamata logica modale (modal logic). Non ci stupisce però che questsa soluzione comporti notevoli problemi sia teorici (Filosofia del Linguaggio) che pratici (Computabilità).
3.4.4 FOL: FIRST-ORDER LOGIC Jurafsky e Martin (2007) utilizzano quindi la First-Order Logic (FOL) come struttura di rappresentazione logica. La scelta ricade su FOL perché si tratta di un approccio flessibile, ben compreso e computazionalmente trattabile. Soprattutto, fa pochi assunti su come le strutture devono essere rappresentate, il che è molto comodo per il tipo di analisi che stiamo conducendo. Evitando di scendere nei dettaglio della FOL, che fondamentalmente dispone di tutti gli strumenti sin qui delineati come necessari, specifichiamo invece qualche tratto che è utile sottolineare, demandando eventuali approfondimenti su FOL in altra sede. L’inferenza in FOL è costituita dal modus ponens, ovvero quello che informalmente è definito come ragionamento if-then: A, se A allora B, B. Vi sono due modalità di inferenza possibili: 1. Forward Chaining: ove il modus ponens è applicato direttamente. Quando dei fatti individuali vengono aggiunti alla base di conoscenza, vengono eseguite tutte le regole di implicazione possibili. Ogni risultato così ottenuto viene aggiunto e vengono ancora una volta
33
eseguite tutte le implicazioni che sono ora possibili. Questo processo continua fino a quando non è più possibile eseguire alcuna implicazione. 2. Backward Chaining: ove il modus ponens è applicato al contrario. In questo caso inizialmente si verifica se il fatto è vero controllando se è presente nella base di conoscenza. Se così non fosse, allora vengono ricercate tutte le inferenze dove il secondo termine corrisponde al fatto (la componente B di se A allora B). Se viene trovata una inferenza corrispondente allora il fatto sarà vero nel momento in cui il primo termine è vero (A). Si procede quindi in questo modo a ritroso, ricorsivamente. Prolog lavora in questo modo. Purtroppo c’è da dire che sia il forward che il backward chaining non sono completi. Una tecnica alternativa è denominata resolution, che pur essendolo risulta molto più pesante dal punto di vista computazionale, riducendo la sua applicabilità.
34
4 AGENTI INTELLIGENTI Abbiamo visto nel capitolo precedente che vi sono molti differenti livelli di complessità nell’elaborazione dei dati in ingresso, ma la capacità di elaborare dati o di gestire un flusso di informazioni non è sufficiente a definire un agente software: l’intelligenza deve relazionarsi con un ambiente di riferimento. E’ bene anche notare che seppure il nostro accento sia sugli assistenti virtuali, non è detto che un agente software debba utilizzare il linguaggio naturale per interagire con il suo ambiente. Per la realizzazione di un agente intelligente non è necessaria l’esistenza di un sistema di NLP (NLU/NLG), la definizione di Russel e Norvig infatti cita: Un agente è qualunque entità che è in grado di percepire il suo ambiente
attraverso
sensori
e
agire
su
quell’ambiente
attraverso degli effettori. “An agent is anything that can be viewed as perceiving its environment through sensors and acting upon that environment through effectors.” (Russel & Norving, 1995) Nell’introduzione abbiamo infatti citato che le caratteristiche essenziali per un agente software sono: autonomia, abilità sociali, reattività, persistenza.
35
Proseguiamo quindi nell’analisi degli agenti intelligenti, come definita da Russel e Norvig (1995), che costituiscono l’insieme entro il quale risiedono anche gli assistenti virtuali.
4.1 RAZIONALITÀ Un agente razionale è in grado di fare la cosa giusta. Per definire quale sia bisogna però definire cosa significhi agire in modo razionale. In una prima approssimazione si può definire una scelta razionale quella in grado di ottenere il maggiore successo. E’ quindi necessario stabilire delle misure della performance dell’agente. Le metriche non sono fisse ma variano in rapporto allo scopo che dovrà essere raggiunto e sono solitamente esterne al sistema considerato, così da essere oggettive. La scelta di cosa misurare non è sempre ovvia: utilizzare ad esempio un lasso di tempo breve premierà uno strumento che svolge il proprio lavoro in modo veloce e discontinuo, rispetto ad uno lento ma costante. La razionalità significa effettuare la scelta giusta, ma questa dipende fortemente dagli input percepiti: per questo motivo bisogna distinguere la razionalità dall’onniscienza. Occorre separare quindi gli errori determinati dal funzionamento interno dell’agente rispetto agli errori che dipendono da un input sensorio mancante per limiti fisici. Sono quindi quattro i fattori che definiscono la razionalità di un agente: 1. La misura della performance 2. La sequenza percettiva (input) 3. La conoscenza dell’agente nel rispetto dell’ambiente 4. Le azioni che l’agente può fare (output) L’acronimo inglese è PAGE: percepts, actions, goals, environment.
36
Per poter collegare le percezioni, gli obbiettivi alle azioni di risposta bisogna effettuare un processo chiamato mapping. Il mapping è la procedura interna degli agenti che associano ad ogni sequenza di percezioni una azione, che nello specifico è quella più razionale. Questo non significa però che dovranno essere esplicitate tutte le possibili combinazioni di input e le loro rispettive azioni in una tabella: anche per un agente semplice questo tipo di elenco sarebbe troppo difficile da stilare. Si realizzano quindi delle funzioni che elaborano di volta in volta la risposta migliore a partire dagli input, in questo modo non solo si risolve il problema di cui sopra, ma si riesce anche ad ottenere l’adattabilità dell’agente a situazioni non calcolate a priori. La sequenza di percezioni non è peraltro mai calcolata per intero. Nei casi più comuni si utilizza l’ultima percezione singola che aggiorna lo stato interno dell’agente istante per istante. Anche nei casi in cui si utilizza una evoluzione cronologica degli input, non viene mai considerata l’intera sequenza (che comporterebbe problemi di spazio e di calcolo) ma solamente gli ultimi istanti, in una finestra temporale grande a sufficienza per l’operazione che deve essere svolta. L’adattabilità ha uno stretto legame con l’autonomia: è infatti importante dare all’agente un insieme di funzioni di elaborazione sia sufficiente a svolgere il proprio lavoro, sia capace di compensare eventuali problemi o mancanze dell’ambiente reale rispetto a quello previsto. Se l’agente può apprendere, questo significa che un agente potrà adattare il proprio comportamento anche a condizioni ambientali mutevoli. L’autonomia è quindi la capacità di apprendere e di modificare nel modo corretto il proprio comportamento, mantenendo il proprio fine anche con condizioni ambientali differenti.
37
4.2 STRUTTURA Un agente intelligente è separabile in due parti distinte: l’architettura (fisica o simulata) e il programma che crea il mapping fra percezioni e azioni (agent program), in modo analogo alla distinzione fra hardware e software. Conformandosi ai principi PAGE precedentemente esposti, possiamo quindi definire un algoritmo generico di funzionamento di un agent program: function agenteAstratto(percezione) { static memoria; memoria = aggiornaMemoria(memoria, percezione) azione = scegliAzioneMigliore(memoria) memoria = aggiornaMemoria(memoria, azione) return azione; } Il suo pseudocodice è piuttosto auto esplicativo: vi è una memoria interna persistente che viene aggiornata dai dati in ingresso e quindi così modificata viene usata per calcolare l’azione migliore da fare. L’azione determina un nuovo aggiornamento della memoria, in modo da sapere come ha agito, prima che l’azione venga data in risposta al sistema.
4.3 TIPOLOGIE DI AGENTI Esistono differenti tipologie di agenti, in base al tipo di architettura logica che utilizzano. Esaminiamo alcune tipologie, procedendo dalla più semplice per arrivare a considerare la più complessa.
38
4.3.1 AGENTI A RIFLESSO SEMPLICE Avendo già escluso la possibilità di utilizzare una tabella di riferimento precalcolata, un agente semplice dovrà utilizzare un altro sistema. In questo caso utilizzeremo delle regole condizione-azione, che non sono altro che strutture del tipo if-then (se-allora): if percepitoEvento1 then eseguiAzione1 L’evento percepito è specificato a partire da una sintesi degli input grezzi in entrata. Per esempio l’aumento di intensità percepito dai recettori della luce può essere tradotto come “accesa illuminazione interna”, che verrà elaborata da una regola condizione-azione corrispondente. Anche le persone hanno questo tipo di strutture per alcune tipologie di reazione, solitamente quelle automatiche.
4.3.2 AGENTI CHE TENGONO TRACCIA DEL MONDO L’agente a riflesso semplice è ovviamente limitato dal fatto che non tiene alcuna memoria storica: lo stato attuale viene calcolato di volta in volta in base a quello che è stato percepito. L’aggiunta di una memoria stabile, o stato interno, è fondamentale appena si prendono in considerazione ambienti più complessi o elaborazioni di dinamiche invece che di singole situazioni. Diventa ancora più importante nel caso in cui l’agente possa muoversi nell’ambiente per reperire informazioni: in questo caso la memoria diventa di primaria importanza per poter decidere le azioni da intraprendere. Progettare questo tipo di agenti richiede una conoscenza aggiuntiva, ovvero la stima di come l’ambiente evolva e quindi la previsione degli
39
eventi. In altri termini, l’agente deve avere una qualche conoscenza delle leggi del mondo in cui si trova. Non solo, dovrà anche sapere gli effetti che la propria azione avrà sull’ambiente.
4.3.3 AGENTI BASATI SULLO SCOPO Conoscere l’esito delle proprie azioni non è sempre sufficiente per sapere come comportarsi. La scelta è infatti più spesso vincolata ad uno scopo ben preciso, che solitamente è il motivo dell’esistenza dell’agente in primo luogo. La ricerca dell’azione migliore per soddisfare un determinato scopo (o più di uno) è separata in ricerca e pianificazione, la prima per riuscire a determinare quali siano le possibilità alternative per soddisfare lo scopo, la seconda per scegliere quale sia la strategia migliore.
4.3.4 AGENTI BASATI SULL’UTILITÀ Lo scopo però non fornisce sempre una granularità sufficiente, ma si tratta di un dato binario: o si è raggiunto lo scopo, o non lo si è raggiunto. Per utilità si intende la capacità di indicare quanto la scelta fatta (o lo stato interno) sia utile per raggiungere il fine, tramite un indicatore numerico. Questa è utile quando la situazione diventa più complessa. Infatti in questo modo si può scegliere fra due obbiettivi in conflitto fra di loro oppure nel caso in cui nessuno di questi sia raggiungibile con certezza assoluta. Per certi versi, si tratta del grado di felicità che l’agente intelligente ha seguendo una certa sequenza di azioni.
40
4.4 AMBIENTI Russel e Norvig definiscono cinque proprietà che definiscono gli ambienti all’interno dei quali possono muoversi gli agenti. A. Accessibile / Inaccessibile Un ambiente è definito accessibile quando tutte le caratteristiche che lo definiscono sono disponibili all’agente. B. Deterministico / Non Deterministico Un ambiente è deterministico se il proprio stato successivo è determinato dallo stato corrente e dalle azioni dell’agente. Se subentrano altri fattori, altri agenti o se l’ambiente è inaccessibile, l’ambiente potrebbe sembrare non deterministico, anche se non lo è. Questa cosa è vera soprattutto nel caso di sistemi complessi. In tale caso si deve sempre considerare il punto di vista dell’agente. C. Episodico / Non Episodico Se la coppia percezione-azione dell’agente è l’unico fattore che determina la qualità della risposta dell’agente, si dice che l’ambiente è episodico. Questo avviene quando lo stato successivo dell’ambiente non dipende da quello precedente. D. Statico / Dinamico Se l’ambiente può trasformarsi nel tempo che l’agente impiega a calcolare si dice che l’ambiente è dinamico. Gli ambienti statici sono ovviamente più semplici perché non ci sono variazioni che devono essere continuamente monitorate. E. Discreto / Continuo Un ambiente è definito discreto se ci sono una serie limitata e chiaramente definita di percezioni e azioni.
4.5 AGENTI DI INTERFACCIA Gli agenti di interfaccia sono specificatamente dedicati ad interagire con l’utente finale e non con sistemi software o ambienti di varia natura.
41
L’ambiente di riferimento è quindi inaccessibile, non deterministico, non episodico, dinamico e continuo, forse una delle situazioni più difficili per un agente intelligente. Interagire con l’uomo non significa necessariamente implementare i principi della humanlike interaction, ma è sufficiente che siano di supporto per le operazioni dell’utente. Agenti di questo tipo, invisibili, sono ad esempio quelli utilizzati da Google per cercare di suggerire quali siano i risultati della ricerca che l’utente ha più probabilità di volere. Un agente piuttosto fallimentare in questo senso è stato Clippy, incluso nelle vecchie versioni di Office (97, versione 8.0). Il problema era rappresentato non tanto dalla sua apparenza, quanto dall’intrusività nelle operazioni dell’utente, che doveva interrompere il proprio lavoro per interagire con l’assistente. Il supporto può essere fornito sia tramite una pura alternativa di accesso all’interfaccia o ai sistemi già esistenti, sia tramite l’apprendimento automatico delle azioni preferite dell’utente (Lashkari, Metral e Maes, 1994). In questo caso il periodo di apprendimento può essere un problema, perché per un reale aiuto è necessario un periodo di apprendimento in relazione con l’utente. Minimizzare questo periodo può essere fatto inserendo delle conoscenze generiche (che però non saranno mai calzate sull’utente) oppure, nel caso migliore, cooperando con altri agenti già esistenti e già addestrati con quell’utente. Si è anche visto (Koda e Maes, 1996) che l’utilizzo di interfacce humanlike ha come risultato un maggiore coinvolgimento dell’utente.
42
5 EMOZIONI Dovendo applicare le emozioni ad un sistema complesso, l’obiettivo del nostro punto di vista su questi studi comprende la ricerca delle emozioni primarie. Le emozioni primarie (basic emotions) sono quelle che non sono ulteriormente scomponibili in impulsi più semplici. Queste sono molto utili perché una volta definite, è possibile utilizzarle come metro di riferimento sia per la comprensione degli stati emotivi umani, sia per la corretta espressione dell’assistente virtuale. Inoltre, essendo primarie significa che sarà possibile comporle, in modo da generare un più ampio spettro di emozione, a partire da pochi valori.
5.1 UTILITÀ In primo luogo si può notare come l’analisi del funzionamento del cervello umano è in grado di fornire ottimi indizi e strumenti per la realizzazione di hardware e software anche non inseribili nel campo dell’Intelligenza Artificiale. Ne è un esempio la strutturazione a 3 livelli analizzata da Norman (Norman et. al., 2003) ove l’inserimento di un livello proto-affettivo è in grado di migliorare l’affidabilità di un sistema. Gli stessi 3 livelli ricalcano in linee generali entità biologiche: un livello reattivo (istinti, rapido), uno di routine (pensiero, lento) e uno riflessivo (coscienza di sé, capace di incanalare il pensiero).
43
Il punto più interessante però nasce quando inseriamo nel contesto dell’Intelligenza Artificiale l’elemento emozione. Damasio stesso afferma quanto questo fattore sia importante nello sviluppo dell’intelligenza (Damasio, 1995). In una prima approssimazione, avendo capito che la ragione è strettamente interconnessa con l’emozione, si può facilmente comprendere come un sistema artificiale deve prendere in considerazione anche l’emozionalità per poter funzionare meglio. Seppure una ipotetica IA non abbia i bisogni di sostentamento vitale di un essere umano, che secondo alcune ricerche sarebbero i vettori evolutivi delle nostre emozioni base (Plutchik, 1980), ne può comunque fare uso per alterare il proprio stato interno in tempi rapidi. Proseguendo su questa linea di ragionamento, è intuitivo che appena iniziamo a prendere in considerazione non più una Intelligenza Artificiale senza corpo ma un eventuale robot, ci rendiamo conto che iniziano a diventare più rilevanti alcune necessità analoghe a quelle biologiche (i.e. autoconservazione). E’ evidente che saranno bisogni differenti in una certa misura da quelli umani, ma in ogni caso è possibile che le emozioni si sviluppino di pari passo. Oltre che offrire un modo addizionale di reagire agli stimoli interni o esterni, le emozioni sono fondamentali per soddisfare lo scopo comunicativo, soprattutto parlando di assistenti virtuali. • Comprendere le Emozioni: è fondamentale in quanto permette all’assistente virtuale di capire meglio quale sia la reazione dell’utente e regolare quindi le risposte successive. • Esprimere le Emozioni: anche semplici reazioni emotive, come esprimere dispiacere nel caso in cui qualcosa non vada come ci si aspetta dovrebbe andare è in grado di migliorare la soddisfazione dell’utente.
44
Per poter esplicitare sia il processo di comprensione che quello di espressione, oltre ad adeguati sistemi di riconoscimento (anche solo testuali o situazionali) è necessario avere un modello teorico adatto ad elaborare lo stato emotivo interno dell’assistente virtuale.
5.2 MODELLI EMOZIONALI La classificazione delle emozioni definite come primarie, ovvero non scomponibili in altre emozioni, varia in rapporto alla teoria di riferimento che prendiamo. In particolar modo passiamo dalle 2 della teoria di Mowrer (dolore e piacere) alle circa 10/12 di altri ricercatori (Gateway Psychiatric, 2005).
5.2.1 PAUL EKMAN La teoria di Ekman si fonda su un esperimento di analisi e raffronto interculturale (Ekman et. al., 1972). In tale esperimento veniva applicato rigore scientifico ad una ricerca precedente documentata in The Expression of the Emotions in Man and Animals (Darwin, 1872). Seguendo alcuni criteri precedentemente elaborati, sono state selezionate 6 fotografie, ognuna associata ad una precisa espressione emotiva. Le emozioni selezionate da Ekman sono: 1. Felicità 2. Sorpresa 3. Disgusto 4. Rabbia 5. Paura 6. Tristezza L’esperimento è stato quindi condotto da 21 gruppi di studio, ciascuno in uno stato differente (Ekman, 1999a). Di questi, solo 11 stati erano di cultura occidentale.
45
Ognuna delle 6 foto veniva mostrata a delle persone e queste dovevano associare la foto del viso ad una delle 6 emozioni (ovviamente tradotte nella loro lingua). Il risultato è stato che: • In tutti e 21 gli stati le persone hanno associato univocamente felicità, tristezza e disgusto. • In 20 su 21 stati la maggioranza era d’accordo anche sulla sorpresa. • In 19 su 21 stati la maggioranza era d’accordo sulla paura. • In 18 su 21 stati la maggioranza era d’accordo sulla rabbia. • In tutti i casi in cui non c’è stata concordanza, la risposta scelta è però risultata la medesima a tutti gli altri che non erano d’accordo, formando di fatto solo due possibili alternative. Seppure la ricerca non escluda la possibilità che esistano altre emozioni universalmente riconosciute, partire da una base di 6 sembra comunque un ottimo riferimento. In secondo luogo, fra le varie critiche sollevabili c’è sicuramente il problema dovuto allo scarto di scelta che è stato sopra evidenziato. Questo in realtà sembrerebbe essere un falso problema, dettato dall’interpretazione differente delle espressioni, non del fatto in sé che l’emozione sia discernibile. Il fatto che le alternative diventano soltanto due, invece di cadere casualmente su tutte e 6 le possibilità, sembra avvalorare questa ipotesi. Un altro studio interessante di Ekman (Ekman, 1999b) riguarda la definizione di quali possano essere le emozioni primarie, ovvero emozioni innate nell’uomo che non sono scomponibili ulteriormente. Giunge a definire 11 caratteristiche che qualunque emozione primaria dovrebbe possedere:
46
1. Segnali universali distintivi: la presenza di una serie di segnali, o anche solo di impulsi nervosi, che si attivano in modo chiaro in presenza di una particolar emozione. Una parziale evidenza di questo fenomeno l’abbiamo nelle espressioni emotive involontarie (Ekman e Davidson, 1990). 2. Fisiologia distintiva: ogni emozione dovrebbe essere associata ad una risposta fisiologica specifica, includendo anche stati di alterazione interni e configurazioni di attivazioni nervose. 3. Valutazione automatica: ovvero la capacità di distinguere una emozione anche se non c’è l’attenzione conscia. 4. Eventi precedenti distintivi: se le emozioni si sono evolute nel tempo, allora dovranno esserci certe configurazioni di stimoli esterni in grado di scatenare specifiche emozioni. 5. Apparizione distintiva nella crescita: le emozioni dovrebbero apparire in momenti differenti della crescita del bambino. 6. Presenza in altri primati: sempre avvalorando la natura evolutiva delle emozioni, dovrebbero rivelarsi anche negli altri primati. 7. Attivazione rapida: l’espressione dell’emozione, o anche la sua sola apparizione interiore, è così veloce da essere percepita solo dopo che si è completamente manifestata. 8. Durata breve: la durata di una emozione è di minuti o secondi. 9. Attivazione non controllabile: non dovrebbe essere possibile controllare consciamente l’apparizione di una emozione. 10. Pensieri e immagini distintive: dovrebbe esserci associazione fra emozioni e certe tipologie di pensiero e di immagini mentali. 11. Esperienza soggettiva distintiva: ogni individuo è in grado di distinguere le varie emozioni. Tutti i punti di questa ipotesi non sono esclusivi: per esempio è possibile che le emozioni primarie si rilevino anche in situazioni che non soddisfino tutti i punti.
47
Inoltre, alcuni di questi punti sono stati già contestati, ma comunque mantengono il loro interesse per guidare la ricerca, pur non essendo universalmente accettati.
5.2.2 ROBERT PLUTCHIK Il punto di partenza preso da Plutchik è di natura evolutiva. Infatti la tesi su cui si fondano le sue ricerche è che le emozioni sono risposte evolutive per consentire alle specie animali di sopravvivere (Plutchik, 1980). Argomenta infatti che ognuna delle emozioni primarie agisce come interruttore per un comportamento con un alto valore di sopravvivenza (es. paura: fight-or-flight response). Secondo Robert Plutchik, vi sono 8 emozioni primarie, definite a coppie: 1. gioia – tristezza 2. fiducia – disgusto 3. rabbia – paura 4. sorpresa – anticipazione La ruota delle emozioni da lui creata evidenzia gli opposti e l’intensità delle emozioni, via via decrescente verso l’esterno, più i vari stati intermedi (decrescendo di intensità le emozioni si mescolano sempre più facilmente). Plutchik, citando anch’egli le ricerche di Darwin che hanno ricevuto numerose conferme, sottolinea il ruolo comunicativo delle emozioni in modo analogo a Ekman, seppure da un altro punto di vista.
48
Come detto inoltre ad ogni emozione viene associato uno stimolo esterno ed una risposta dell’animale. In questa tabella vediamo sinteticamente queste relazioni: Stimolo
Percezione
Emozione
Comportam.
Funzione
ottenere un
possesso
gioia
trattieni e ripeti
ottenere risorse
amico
fiducia
collabora
mutuo supporto
minaccia
pericolo
paura
fuggi
sicurezza
evento inatteso
cos’è?
sorpresa
stop
prendere tempo
perdita di un
abbandono
tristezza
piangi
riottenere le
oggetto membro di un gruppo
oggetto
risorse perse
oggetto
veleno
disgusto
vomita
elimina veleno
nemico
rabbia
attacca
distruggere
inassimilabile ostacolo
ostacolo nuovo territorio
esamina
anticipazione
mappa
conoscenza del territorio
Il primo pensiero che può sorgere è che la teoria di Plutchik sia stata leggermente forzata per ottenere accoppiamenti di emozioni. Per quanto questo sia possibile, rimane una base interessante proprio per questa simmetria, risultando comunque una utile integrazione teorica all’approccio di Ekman, che non è esclusivo. Visto
comunque
che
ad
oggi
non
esiste
alcuna
prova
che
inconfutabilmente propenda per l’una piuttosto che per l’altra tesi, è utile tenere come riferimento quella meglio strutturata, in modo da snellire l’elaborazione, tenendo sempre comunque il beneficio del dubbio. In questo caso, propenderemo per il modello di Plutchik a causa della sua simmetria, in ogni caso non è incompatibile con Ekman.
49
5.3 INTERFACCIA UTENTE Le tre componenti principali che costituiscono l’interfaccia di un assistente virtuale ormai sono chiare: dialogo, aspetto esteriore, voce. Avendo un modello emotivo adeguato, si è quindi in grado di veicolare attraverso questi canali lo stato emotivo dell’assistente virtuale. Vi sono però altri due elementi che devono essere presi in considerazione.
5.3.1 UNCANNY VALLEY La Uncanny Valley (vallata del disagio) è una ipotesi elaborata dal roboticista giapponese Masahiro Mori (Mori, 1970) e si applica in modo analogo a qualunque dispositivo artificiale che tenti di assomigliare all’uomo.
In pratica la Uncanny Valley descrive una parte specifica all’interno di un grafico linearmente crescente che pone sull’asse X la somiglianza all’uomo e sull’asse Y la familiarità. Tale punto del grafo è vicino al lato destro del
50
grafo (100% di somiglianza all’uomo) ed è una discontinuità in cui la familiarità crolla e diventa negativa (provocando quindi disagio, rigetto, disgusto). La linea tratteggiata del grafico rappresenta l’andamento per una entità animata, mentre quella continua figure o oggetti statici. Tale teoria non deriva da studi scientifici approfonditi, ma dall’esperienza diretta che questo roboticista ha avuto nella creazione e visione di robot umanoidi. Questo fatto rappresenta una delle principali critiche, ma ciò nonostante sembra esserci una base di verità che anche in altri ambiti si evidenzia (disegno 3D e 2D). Questo elemento è però fondamentale nella progettazione di interfacce di agenti di interfaccia, perché o si cerca di ottenere la perfetta somiglianza umana, oppure si deve rimanere sempre un po’ indietro, evidenziando addirittura le differenze, in modo che ci sia la percezione che si tratta di un dispositivo virtuale. Commettere l’errore di realizzare un assistente virtuale simile all’uomo ma non abbastanza significa invece cadere in tale vallata e quindi distruggere completamente l’interazione con l’utente ancora prima che ci sia alcun tipo di dialogo.
5.3.2 FACIAL ACTION CODING SYSTEM (FACS) Torna utile citare Ekman anche nell’ambito delle interfacce utente. Infatti con il collega Friesen durante i suoi primi studi delle espressioni e dell’emotività umana (Gladwell, 2002) effettuò una mappa di tutti i muscoli facciali interessati alla produzione dei movimenti del viso. Egli rilevò quindi la presenza di 46 unità di movimento principali, che definì all’interno del Facial Action Coding System (Ekman et. al., 1976-
51
2002). Di queste, 32 sono ‘action units’, ovvero sono associate a specifici muscoli, mentre 14 sono ‘action descriptors’, ovvero sono movimenti più complessi che però si presentano coordinati. Ad oggi rappresenta lo standard utilizzato per la categorizzazione delle espressioni fisiche delle emozioni e si rivela utile sia a psicologi che ad animatori. E’ inoltre interessante notare come Ekman scoprì che si potevano distinguere espressioni di emozioni sincere (involontarie) da quelle volontarie: alcune action units infatti si attivano solamente nel caso involontario e sono praticamente impossibili da sopprimere. Seppure questo sistema consenta anche di identificare le emozioni, questo risulta problematico senza l’installazione di particolari apparecchiature. Diventa invece molto importante nel momento in cui si vuole realizzare un sistema espressivo utilizzato dall’assistente virtuale per comunicare con l’utente.
52
6 AMBITI APPLICATIVI Gli assistenti virtuali sono probabilmente ancora lontani dall’essere un efficace sostituto del normale utilizzo dei dispositivi informatici, in quanto la ricerca nell’ambito dell’Intelligenza Artificiale non ha ancora raggiunto questo traguardo. La scelta dell’ambito applicativo, che riduce la quantità di conoscenza che l’assistente deve avere, risulta quindi essere molto importante per ottenere un risultato positivo.
6.1 PRO L’utilizzo di un assistente virtuale ha alcuni vantaggi: A. Fiducia Dovendo interagire con un essere simile all’uomo si favorisce la nascita di un rapporto di fiducia (trust) fra l’utente e il sistema, fiducia che può essere rinforzata memorizzando anche le informazioni sull’utente in modo da poter personalizzare le risposte future. E’ importante notare come però non è sufficiente la sola apparenza umana a veicolare fiducia, ma è anche necessario il messaggio comunicato e il contesto (Van Mulken et. al., 1999). B. Comprensione del Linguaggio Naturale Seppure non necessaria e non sempre presente, la comprensione del linguaggio naturale, assieme all’espressione nello stesso, consente di utilizzare una modalità di interazione che è già innata nel parlante di una lingua.
53
In questo modo non c’è la necessità di fare capire all’utente in quale modo siano strutturate le informazioni all’interno del sistema. La comprensione del linguaggio naturale consente anche di apprendere quali domande l’assistente non è stato in grado di gestire in modo da migliorare nel tempo la sua efficacia. C. Nessun Apprendimento Richiesto Un sistema come un assistente virtuale che cerca di applicare la human-like interaction consente anche di evitare praticamente qualunque forma di apprendimento, che per ogni altro tipo di interfaccia sarebbe necessario. D. Stabili in contesti cross-mediali Utilizzando lo stesso assistente virtuale in dispositivi web, vocali, e testuali è possibile mantenere la stessa modalità di interazione indipendentemente dal dispositivo che si sta utilizzando, aumentandone l’efficacia. E. Complemento Umano L’assistente virtuale può essere utilizzato per complementare l’attività umana ove questa non sia disponibile o ci siano necessità specifiche per alleggerire il carico di lavoro.
6.2 CONTRO Vi sono anche alcune controindicazioni nell’utilizzo di assistenti virtuali: F. Informativamente non Denso Facendo uso dei canali umani di comunicazione e soprattutto il dialogo, è evidente che un assistente virtuale da solo sia più efficace ma fornisca poche informazioni. E’ quindi essenziale, nel caso in cui si richieda una maggiore densità informativa, l’utilizzo di altri strumenti contestuali per realizzare questo scopo. Ad esempio è possibile posizionare una pagina web, una lavagna o un proiettore a fianco dell’avatar in modo da aumentare la
54
quantità di informazioni veicolate, esattamente come farebbe una persona fisica. G. Media Intensivo Perché un assistente virtuale emozionale sia efficace al massimo richiede un medium ricco (multimodalità, multimedialità). Seppure possa venire utilizzato anche tramite medium monomodali o canali di comunicazione più ristretti, è evidente che ne sarebbe limitato. Al contrario la disponibilità di media più ricchi o anche solamente di un maggiore feedback dell’utente verso l’assistente tramite dispositivi di registrazione aumenta le possibilità dell’assistente virtuale. Ad esempio sistemi la registrazione delle onde cerebrali o della risposta galvanica cutanea riescono a dare all’agente una capacità superiore a quella umana di rilevare determinate emozioni (Picard, 1998). Il costo è però un disagio per l’utente che deve indossare una serie di apparecchiature anche ingombranti. H. Contestualmente Limitato La limitazione ad un unico contesto è un elemento critico e rappresenta il principale limite degli assistenti virtuali oggi: è fondamentale che essi, per funzionare in modo idoneo, siano limitati ad un preciso insieme di conoscenze, limitato. In altri termini deve essere contemplato solamente un piccolo ambito all’interno del quale l’assistente può dialogare e contemporaneamente questo ambito deve essere chiarito preventivamente anche all’utente (in alcuni casi è chiarito dal contesto, in altri no) per evitare che vi siano aspettative troppo elevate (Koda e Maes, 1996).
6.3 AMBITI Gli assistenti virtuali sono quindi idonei a interpretare soprattutto certi ruoli, in virtù delle qualità che possiedono. Indipendentemente dall’ambito applicativo, è fondamentale che il contesto sia specifico, come espresso in precedenza.
55
6.3.1 RECUPERO INFORMAZIONI Il primo ambito in cui un sistema di questo tipo può essere utile è quello del recupero delle informazioni da una base dati, sia integrata che esterna. Questo perché il linguaggio naturale ha un potere espressivo superiore rispetto alle attuali “query” effettuate sui motori di ricerca e quindi è possibile ricercare informazioni in modo più preciso. Non solo, essendo anche contestuali, gli assistenti virtuali potrebbero fornire suggerimenti in modo da guidare meglio gli utenti attraverso banche dati che potrebbero contenere termini specialistici ignoti. Questo tipo di ambito applicativo è evidentemente condiviso con qualunque sistema che utilizzi sistemi di NLU (Natural Language Understanding) per effettuare ricerche, sebbene un assistente virtuale apporti anche altri vantaggi.
6.3.2 GUIDE Un assistente virtuale è anche un’ottima guida, in quanto può fornire la giusta dose di informazioni, contestualizzate, a riguardo di un percorso specifico o di un ambiente. Sono soprattutto efficaci quelli strutturati per fornire assistenza nei siti web, con il ruolo di assistenti alla navigazione. In parte sostituiscono il motore di ricerca interno, vista la loro funzionalità. In ogni caso tendono a non fornire direttamente informazioni, ma ad orientare l’utente verso la fonte corretta.
56
6.3.3 RISOLUZIONE PROBLEMI La risoluzione dei problemi è un processo solitamente iterativo composto da una serie di bivi lungo cui procedere per arrivare a capire ove si possa intervenire efficacemente. Accoppiando un assistente virtuale con un sistema esperto (expert system) che agisce in un preciso contesto è possibile utilizzarli per fornire supporto tecnico, anche molto specialistico, ove il parlato viene fortemente valorizzato da un processo che richiede una serie sequenziale di domande e risposte per procedere.
6.3.4 INSEGNAMENTO Il principale ostacolo all’apprendimento è legato alle emozioni: confusione, frustrazione, irritazione, rabbia, odio, disperazione. I risultati infatti influenzano la risposta emotiva della persona, che viene motivata da eventi positivi e viene demotivata da quelli negativi (D’Mello, 2007). Non solo, ma è anche noto come le emozioni fungano da marcatori per i ricordi: l’assenza di emozioni rende la memorizzazione molto più difficile (Damasio, 1994). In quest’ambito un assistente virtuale sarebbe ideale in quanto potrebbe assecondare gli stati positivi e di alleviare i momenti di frustrazione, lungo un percorso di studio realizzato ad hoc sullo studente. Nonostante quanto si possa credere, non sono richieste particolari periferiche perché questo tipo di supporto sia efficace, anche se evidentemente dispositivi che aumentano la precisione permettano di ottenere risultati migliori nel riconoscimento delle emozioni.
57
Buoni risultati si ottengono anche solo con l’analisi del viso e della struttura della frase, eventualmente supportati dall’analisi della postura (D’Mello, 2007).
6.3.5 GIOCHI I videogiochi sono gli spazi ove un assistente virtuale potrebbe interagire con la massima efficienza, in quanto sarebbe immerso in un mondo a lui affine e non richiederebbe periferiche particolari per interagire. Per questo motivo un eventuale agente interattivo potrebbe avere il ruolo sia di guida all’interno del mondo, sia di supporto generico che di elemento attivo nella trama. Questo vantaggio strutturale presenta svantaggi dal punto di vista dell’interazione con l’utente, in quanto si presentano più problemi nel tentare di determinare il suo stato emotivo e quindi fare inferenze su di esso. In realtà in molti giochi è già presente il concetto di “personaggio non giocante” (PNG o NPC, Non-Playing Character), ovvero una entità programmata che appare alla pari dei giocatori per interagire con essi durante lo svolgersi della trama. La sua complessità è solitamente molto variabile e facilmente limitata ad una serie di operazioni fisse o a una discussione programmata, senza alcun grado di libertà.
6.3.6 MOBILE Questo non è un ambito applicativo, ma un ambito modale. E’ però interessante inserirlo qui perché un assistente virtuale presenta molti aspetti positivi in questo contesto.
58
La telefonia mobile ha il grosso problema di essere limitata da uno schermo piuttosto piccolo. Anche con l’evoluzione tecnologica, le dimensioni richieste da questo tipo di dispositivi sono comunque ridotte. Inoltre, con i telefoni 3G è possibile veicolare non solo testo e voce, ma anche video. In questo modo i dispositivi mobili sono ora equipaggiati con tutte le funzionalità necessarie alla piena espressione di un assistente virtuale, cosa curiosamente non vera nel caso di un computer il quale potrebbe essere sprovvisto di microfono (e telecamera). La limitazione delle dimensioni unitamente ad un canale ricco rappresenta un ambito ideale per un assistente virtuale che verrebbe valorizzato notevolmente da questi limiti fisici. La modesta densità informativa di un assistente non sarebbe qui un limite e contemporaneamente la capacità di dialogare sarebbe un proseguimento naturale delle funzionalità del dispositivo a cui si è abituati. La convergenza che sta avvenendo verso internet renderebbe il sistema ancora più facilmente integrabile in una dimensione globale, con l’assistente che sarebbe in grado di fare uso non solo delle risorse locali, ma anche di quelle disponibili in rete.
6.4 PRODOTTI E ARCHITETTURE ESISTENTI Nell’ambito degli agenti interattivi, agenti intelligenti o anche assistenti virtuali esistono già varie implementazioni che variano molto in rapporto al tipo di interazione che riescono a condurre con le persone.
59
6.4.1 PARAMETRI DI OSSERVAZIONE Per effettuare una panoramica fra alcune delle implementazioni che si possono trovare in rete serve avere almeno qualche criterio generico su cui basare le proprie osservazioni. Sarebbe evidentemente meglio definire dei parametri in modo quantitativo, ma è molto difficile farlo senza un contesto applicativo in cui poter costruire una metrica. Inoltre, visto che un fattore rilevante sono le emozioni, l’aspetto e la gradevolezza, non sarebbe comunque possibile effettuare misure in questo senso. Ci limiteremo quindi ad alcuni criteri qualitativi: A. Comprensione nel proprio contesto: La comprensione dipende unicamente da un tassello che compone l’assistente virtuale, ma sicuramente è fra quelli più critici e difficili da realizzare, il componente di NLP, diviso nelle sue tre parti. La valutazione di questo punto verrà fatta in modo analogo ad un Test di Turing. In pratica verrà determinato il contesto applicativo dalle informazioni presenti per accedere all’agente – o da quelle fornite dall’agente stesso – e in base a questo verranno condotti alcuni dialoghi volti a vedere se l’agente riesce a comprendere e seguire un discorso all’interno di tale ambito di conoscenza. Per la comprensione non è strettamente necessario che l’assistente riesca ad aiutare l’utente, ma deve comunque essere in grado di tentare senza essere un ostacolo per l’utente. B. Utilità L’utilità rappresenta una valutazione su quanto l’agente intelligente, considerato come strumento, è utile nel modo in cui è stato integrato e realizzato, rispetto a forme differenti di interazione. E’ evidente come questo punto dipenda sensibilmente da quello precedente. Lo scopo addizionale è qui quello di verificare se l’agente riesca anche ad essere efficace, oltre che a comprendere.
60
C. Apparenza Grafica Pur evitando gli ostacoli della Uncanny Valley, è importante che l’agente sia piacevole alla vista. Anche nel caso in cui non si sia scelta la verosimiglianza, non dovrebbe essere fastidioso o brutto a vedersi, come insegnano numerosi film di animazione e fumetti. Nell’apparenza grafica è anche contemplata l’integrazione nel suo ambiente applicativo: un agente ben fatto, ma completamente separato, avulso dal resto della pagina darebbe una cattiva impressione. D. Espressività Un avatar di un agente intelligente potrebbe essere identico all’uomo ma non essere per niente espressivo, o addirittura privo del tutto di movimenti. In questo caso il canale comunicativo aperto dalla presenza virtuale non è utilizzabile. L’espressività vuole valutare proprio questo aspetto. E’ un elemento distinto dalla grafica, infatti non è detto che l’espressività e la piacevolezza estetica siano due elementi correlati. E. Tecnologia L’elemento tecnologico permette spesso di capire i limiti entro i quali l’implementazione valutata è in grado di muoversi. Uno strumento flessibile sarà naturalmente migliore di uno chiuso e limitato. Diverse tecnologie sono abilitanti per differenti tipologie di integrazione con i sistemi già esistenti: utilizzare un semplice motore basato su keyword limiterebbe la capacità espressiva mentre un plugin da installare creerebbe un muro con l’utente finale.
6.5 PRODOTTI Esistono numerosi esempi in rete, soprattutto nell’ambito dei bot, ovvero sperimentazioni portate avanti da singole persone a scopo ludico, per interagire in un piccolo contesto.
61
Cercheremo quindi di presentare un ventaglio di esempi esistenti che siano significativi, escludendo quelli più poveri per evidenti motivi e tentando di coprire tutti i vari filoni di interazione e tecnologia.
6.5.1 A.L.I.C.E. Il progetto A.L.I.C.E. (Artificial Linguistic Internet Computer Entity) nasce da un approccio minimalista e prende origine come evoluzione di Eliza. La sua implementazione opensource ha reso possibile una diffusione piuttosto ampia. Fra le varie applicazioni in rete abbiamo provato quella ufficiale, disponibile dal sito alicebot.org, ovvero l’ultima versione di Alice. Alice, la prima implementazione del progetto A.L.I.C.E., è definito come un bot conversazionale e sembra che sia programmato specificamente per tentare di vincere il Loebner Prize, un piccolo premio per i migliori agenti in grado di passare una forma ridotta di Test di Turing. A. Comprensione nel proprio contesto Sul web non è presentato come specifico in nessun contesto e se le si pone la domanda dice di voler parlare di “film, filosofia o la tua personalità”. In nessuno di questi casi però sembra riuscire a seguire alcun discorso.
62
In generale, non è propositiva. Eliza riesce a fingere meglio in quanto incalza con le domande, piuttosto che lasciare aperto il campo all’utente. Dovendo nel nostro caso porre noi le domande, il risultato è che non riesce a seguire in modo adeguato alcun discorso. B. Utilità L’utilità del bot disponibile sul web è praticamente nulla, resta solo la curiosità di verificare cosa riesca a rispondere. In generale questo è un problema diffuso di qualunque applicativo basato su AIML: sembra che nessuno lo utilizzi per alcuno scopo ben definito, ma solamente per produrre bot generici. C. Apparenza Grafica Il software A.L.I.C.E. è costituito dal solo motore linguistico, mentre l’interfaccia è fornita da un servizio esterno, in questo caso Oddcast (che vedremo più avanti, §5.5.2). D. Espressività L’espressività è quella di Oddcast, ma non c’è alcun supporto da parte del software per il controllo delle emozioni, quindi è per lo più casuale. E. Tecnologia Per la realizzazione di questo bot è stato realizzato un linguaggio basato sullo standard XML, definito AIML (Artificial Intelligence Markup Language, piuttosto esagerato come acronimo) che essenzialmente è un motore di produzione di risposte Keyword Based. Esistono diverse implementazioni in vari linguaggi di programmazione (PHP, Python, Ruby, …), fra cui la più supportata è Program D, in Java.
63
6.5.2 ODDCAST Oddcast (oddcast.com) è una società
specializzata
nella
realizzazione e distribuzione di avatar parlanti (“talking avatar”). Il suo obbiettivo principale è quindi la parte di interfaccia. Il loro prodotto infatti è venduto come tale e solitamente non presenta una componente interattiva. La società possiede anche un sito parallelo chiamato SitePal, per la realizzazione gratuita di assistenti per la navigazione dei siti internet. E’ lo stesso servizio su cui si basano molti bot del progetto A.L.I.C.E. e più in generale molti motori sprovvisti di interfaccia. Nel caso di Oddcast il vero problema è trovare un prodotto che non sia una semplice faccia parlante ma sia supportata da un dialogo. A. Comprensione nel proprio contesto Come detto, Oddcast fornisce solamente avatar parlanti e nient’altro. In rete si trovano al più degli script non interattivi che vengono semplicemente recitati. I bot così realizzati iniziano a parlare appena caricata la pagina, dando l’impressione di volersi intromettere e togliendo all’utente il tempo di ambientarsi. Sono raramente associati con il contesto della pagina, quindi non vi è neppure una interazione passiva durante i movimenti del mouse dell’utente.
64
B. Utilità Nonostante la non-interattività, l’azienda afferma di riuscire a migliorare notevolmente l’efficacia di alcuni prodotti (pubblicità +29%, vendite +10%). Fra i loro case study c’è anche una applicazione di supporto per l’apprendimento. C. Apparenza Grafica L’interfaccia di Oddcast spazia da uno stile simile ad un cartone animato moderno ad uno più realistico creato probabilmente da foto di persone. L’aspetto è solitamente piacevole e si integra piuttosto bene nelle pagine in cui appare. Il movimento è più meccanico e rappresenta la parte meno curata dell’interfaccia. D. Espressività L’espressività è quasi assente. Seppure questi avatar parlino, sono molto piatti e non mostrano praticamente alcuna emozione. Nel caso in cui la voce utilizzata sia umana e non generata da un TTS, è soprattutto questa a dare la percezione di sfumature emotive. E. Tecnologia La tecnologia su cui si basano questi avatar è integralmente Flash, quindi si tratta di un utilizzo quasi strettamente orientato al web, dove riescono ad ottenere un’ottima integrazione con i siti.
65
6.5.3 METEOSAM Sam è un avatar di un sito spagnolo (meteosam.com) ed è dedicato alle previsioni del tempo. E’ presentato tramite un sito web completamente suo e si colloca all’interno di una pagina costruita in modo da rendere completa l’esperienza delle previsioni del tempo. Non solo, lo stesso avatar è utilizzato per le previsioni del tempo su cellulari con supporto video e alla televisione. A. Comprensione nel proprio contesto Sam non interagisce direttamente con l’utente. Le poche interazioni che ci sono (selezione della città) sono comunque introdotte da lui, dando l’impressione inconscia che ci sia comunque una forma di comunicazione. B. Utilità Sam svolge una attività molto limitata in modo adeguato. La sua attività copia in modo preciso e puntuale quella di un normale uomo dedicato alle previsioni del tempo. C. Apparenza Grafica L’apparenza grafica di Sam è estremamente curata e sembra evitare con precisione la Uncanny Valley. In particolar modo sono enfatizzati i tratti esteriori utili al suo lavoro: mani grandi e un viso con i tratti particolarmente accentuati. D. Espressività
66
La voce spagnola (castigliano) è molto enfatica e contribuisce nel dare una sensazione molto confortevole all’utente. I tratti del viso sono studiati apposta per esprimersi al meglio, anche se le previsioni del tempo non siano esattamente un campo ideale in cui le emozioni son rilevanti. La regia, accurata a staccare dal viso al resto del corpo, e l’uso del corpo a figura piena sono due notevoli vantaggi che mostrano una particolare cura nella comunicazione prossemica di Sam. Non solo: la versione su telefono rimane focalizzata sul viso, in modo da enfatizzare le sue espressioni. E. Tecnologia Come già citato Sam viene presentato su tre media differenti. Sul web in particolare fa uso di tecnologia Flash, che risulta essere una scelta sempre ottima per la sua notevole diffusione. Il modello 3D è fatto din 3DStudio Max con uno scheletro molto completo ed è stato animato tramite motion capture, in modo da renderlo più umano.
6.5.4 LINGUBOT Lingubot è la tecnologia sviluppata da Creative Virtual (creativevirtual.com) per realizzare agenti in grado di dialogare. L’utilizzo commerciale è soprattutto legato a ruoli informativi e di supporto ai clienti come alternative di telefono ed e-mail. Vi sono anche alcune soluzioni (per
67
la BBC, ad esempio) che sono state piccole storie interattive con scopo promozionale. Considereremo due bot, il primo è Quark, presente sul loro sito ufficiale. Il secondo è Ask Emma, sul sito British Telecom. A. Comprensione nel proprio contesto Il bot Quark è poco più di un navigatore: dopo alcune domande che ottenevano risposte casuali, si riesce a comprendere che apre le pagine corrispondenti sul sito se si faceva richiesta di quella precisa sezione. Non un gran risultato. L’installazione Ask Emma si presenta meglio per estetica e integrazione, sorridente, ma ha gli stessi limiti. Addirittura c’è un link per accedere ad una pagina che spiega come interagire in modo adeguato con lei, specificando che è preferibile “usare keyword”. Le domande per cui ha una risposta sembrano comunque complete ed esaurienti, a volte anche eccessivamente. Sembra inoltre che non sia in grado di seguire il discorso e di tenere i soggetti impliciti di cui si sta parlando. Infatti ogni richiesta deve possedere un soggetto, altrimenti non si viene compresi. B. Utilità L’utilità di Quark è pressoché nulla e potrebbe addirittura dare una cattiva impressione con il suo continuo rispondere alle domande in modo casuale. Emma invece è molto più cordiale ed è sicuramente uno strumento più efficace con cui realizzare un sistema di supporto. Dalla sua pagina si possono rivolgere domande direttamente a lei, effettuare ricerche e seguire link. In questo senso riesce a fornire una sorta di faccia più umana ad uno strumento di ricerca, che ha anche un certo grado di flessibilità. C. Apparenza Grafica
68
Quark è una serie di elementi animati che vengono sostituiti in relazione alla frase che viene pronunciata. Il movimento è molto limitato. Emma presenta un viso cordiale, ma è puramente una immagine senza alcuna funzionalità. Non si muove quasi. D. Espressività L’espressività di Quark è evidente e stereotipata, sorride e interagisce, seppure in modo molto meccanico e schematico. Emma invece è immobile e non ha alcun movimento seppure ogni tanto chiuda gli occhi. In generale, l’impressione fornita da entrambi è buona, anche se poco animata. E. Tecnologia Lingubot è fondamentalmente un motore a regole che risponde su una base di conoscenza prestabilita. Sembra non disporre di nessuno strumento per gestire l’interazione con l’avatar, come se risposte e interfaccia fossero due cose completamente separate.
6.5.5 H-CARE H-Care (h-care.it) è una azienda italiana che realizza assistenti digitali umani per fornire assistenza alla navigazione e informazioni. Il loro scopo è fornire un agente software in grado di apparire come un operatore umano, in grado di integrarsi in infrastrutture software esistenti e di
69
venire diffuso su più media (web, tv, telefono). L’unica applicazione pubblica usabile come riferimento è sul sito 187.it, si chiama Caren. A. Comprensione nel proprio contesto Caren non dialoga con l’utente ma descrive unicamente le varie voci del form, recitando una serie di frasi pre-registrate. Non può esserci molta ambiguità, visto che la descrizione è legata univocamente a elementi presenti sulla pagina. B. Utilità Il suo compito è svolto con precisione, anche se risulta comunque un’operazione piuttosto limitata. Riesce a fornire un supporto senza necessitare l’apertura di nuove pagine o la gestione di finestre che complicherebbero l’interfaccia. C. Apparenza Grafica L’aspetto estetico è piuttosto buono, sembra umana quanto basta ed è ben rifinita, ponendosi al limite della Uncanny Valley senza caderci. D. Espressività L’avatar non esprime alcuna variazione nel viso, le uniche parti mobili sono la bocca e gli occhi, che si aprono e si chiudono. Non viene comunicata alcuna emozione, visto che anche la voce è sintetizzata e quindi non ha le ricche inflessioni della voce umana. E. Tecnologia Per la parte di visualizzazione utilizza una interfaccia Flash, mentre la parte più solida sembra essere un motore di pubblicazione multimediale lato server. Le risposte sono gestite tramite un motore semplice, legato soprattutto agli eventi, sia del dialogo che della pagina.
70
6.5.6 FREEWALK FreeWalk
(ai.soc.i.kyoto-
u.ac.jp/freewalk)
è
una
piattaforma 3D all’interno della quale utenti e agenti interattivi si muovono, alla pari. Si tratta di un simulatore interattivo interazioni sociali.
di
E’ un progetto dell’università di Kyoto e quindi non ha al momento alcuna apertura verso il pubblico, ma presenta alcuni aspetti interessanti. In particolare modo gli agenti al suo interno sono regolati secondo gli studi delle interazioni sociali fra gli umani e quindi interagiscono utilizzando un comportamento molto simile a quello umano, pur essendo un ambiente simulato. A. Comprensione nel proprio contesto Pur non avendo possibilità di testare, sono state pubblicate alcune informazioni su questa piattaforma, in particolare modo sulla città virtuale di Kyoto. Gli agenti al suo interno sono studiati per fornire informazioni all’utente che si muove fra le strade. B. Utilità La principale utilità dello strumento è svolgere simulazioni per studi di natura sociale, per singoli, piccoli gruppi o ampi gruppi. Il concetto è che gli agenti sono legati naturalmente all’ambiente digitale in cui si trovano e quindi funzionano come intermediario fra il sistema digitale e la persona.
71
C. Apparenza Grafica La grafica non è eccezionale ma sufficiente per fare comprendere il luogo fisico di Kyoto in cui ci si trova. Le persone e gli agenti possiedono avatar completi che però sono privi di espressione, mancanza dovuta ad una figura che diventa troppo piccola sullo schermo per possedere questi dettagli. D. Espressività L’espressività è piuttosto bassa, problema che si evidenzia anche a causa della povera resa dei TTS che vengono utilizzati. La prossemica è eccellente grazie alla base di studi sociali su cui si basa il progetto. L’interazione è comunque mediata, perché l’utente non è direttamente interfacciato con l’agente ma passa attraverso il proprio avatar nel mondo 3D. E. Tecnologia Vi sono moltissime tecnologie differenti in questo ambito, dal motore 3D OpenGL dedicato al motore di gestione spaziale degli agenti al linguaggio per agenti interattivi, Q. In particolare modo quest’ultimo, sviluppato per gli agenti 2D, risulta molto efficace nel garantire una buona riusabilità del contenuto sviluppato per il sistema.
6.5.7 COLLOQUIS Colloquis (colloquis.com) è una società che realizza agenti interattivi ed è stata acquistata l’anno scorso da Microsoft utilizzando la sua tecnologia per bot da
72
interfacciare con Windows Live Messenger. In altri contesti Colloquis ha realizzato dei bot per fornire informazioni (Time Warner Cable, chiamato AskTWC) e per risolvere problemi tecnici (Comcast, chiamato AskComcast). A. Comprensione nel proprio contesto Provando i due agenti AskTWC e AskComcast, la sensazione è che le la capacità di rispondere in un particolare contesto sia piuttosto buona. In questo senso è anche positiva la presentazione e la predisposizione molto attiva dell’agente che suggerisce sempre l’ambito della domanda successiva. In questo modo è evidenziato in modo contestuale l’ambito in cui i bot sono in grado di rispondere e contemporaneamente sono propositivi nella soddisfazione delle domande dell’utente, visto che spesso il problema è quello di riuscire a fare la domanda giusta. B. Utilità L’utilità degli agenti è piuttosto buona, anche se entrambi sembrano più di supporto ad una navigazione piuttosto che degli strumenti di dialogo. Le risposte sono sempre molto meccaniche, organizzate in liste e formattate per essere un menu e forniscono suggerimenti su come fare proseguire la discussione (quindi, cosa gli si può chiedere) o su specifiche pagine del sito a cui si può accedere. C. Apparenza Grafica Non vi è alcuna apparenza grafica, neppure una immagine statica di riferimento. Anche i bot come si nota non hanno un nome umano (AskTWC, AskComcast). D. Espressività L’espressività è ovviamente assente e anche le risposte che spesso vengono fornite tendono a fare dimenticare che si sta svolgendo un dialogo.
73
E. Tecnologia La tecnologia si basa su un motore a regole realizzato internamente da Comcast, probabilmente su tecnologie Windows, che però apparentemente non viene usato al suo pieno potenziale, con risultati dal punto di vista del dialogo inferiori al più povero AIML, pur mantenendo una buona qualità dei contenuti.
6.5.8 VIRTUOZ VirtuOz (virtuoz.fr) è una società francese che realizza agenti intelligenti di supporto ad attività commerciali, di informazione e in generale per la gestione dei clienti. VirtuOz sembra che lavori soprattutto per aziende locali francesi e questo purtroppo limita la lingua dei suoi agenti a quest’unica localizzazione linguistica. Bea è l’agente testato, presente su un sito di e-commerce francese. A. Comprensione nel proprio contesto L’assistente sembra voler condurre un dialogo e lo fa in modo propositivo, inserendo anche collegamenti contestuali alla pagina su cui si trova, per favorire la navigazione. Alla domanda se parla inglese, Bea risponde negativamente ma correttamente, sia in francese che in inglese. B. Utilità
74
L’impressione generale è buona e sembra rispondere anche su frasi difficili,
dando
comunque
spunti
all’utente
per
proseguire,
eventualmente spingendolo a navigare internamente al sito. Ovviamente l’azienda dichiara che la presenza del suo agente è in grado di incrementare le vendite completate. C. Apparenza Grafica L’apparenza è generalmente piacevole. Fra i vari assistenti da loro realizzati vi sono quelli in 3D, vicini ad un cartone animato di ultima generazione e quelli filmati, come Bea, che utilizzano registrazioni di persone vere. D. Espressività L’espressività è predefinita e fa affidamento sul video che di volta in volta viene caricato. In questo senso Bea, essendo basata su filmati di persone umane è molto più efficace perché riesce a comunicare meglio. Nessun agente fra quelli visti interagisce utilizzando la voce. E. Tecnologia Il background tecnologico rispetto ad altri bot sembra più consistente, in quanto pare che l’azienda disponga di un motore a tre fasi, in grado di analizzare il testo in una struttura logica e quindi darlo in pasto ad un livello di elaborazione che cerca di capirne il senso ed eventualmente apprendere da esso. Questo motore sembra però attualmente tarato solamente sulla lingua francese. E’ un po’ carente sull’aspetto interattivo: il protocollo di comunicazione utilizzato è quasi solamente testuale e l’interfaccia è piuttosto statica, che non sfrutta le potenzialità offerte da Flash.
75
7 ARCHITETTURA DEL SISTEMA Avere ben chiari gli elementi teorici necessari alla realizzazione di un sistema complesso di questo tipo non è sufficiente. E’ necessaria anche una approfondita fase di progettazione del sistema nei suoi componenti software e hardware.
7.1 MODELLO DI SVILUPPO SOFTWARE Seppure non strettamente inerente con l’architettura, è bene precisare che il modello di sviluppo software sotteso e consigliato è quello definito Agile nell’ingegneria del software. Questo non condiziona o vincola esplicitamente l’architettura generica che verrà qui definita, ma determina alcuni aspetti collaterali e motiva alcune scelte: ad esempio la modularità accentuata di questa struttura e la sua enfasi su un protocollo flessibile comune nasce dalle stesse idee alla base delle metodologie Agili. Il modello di sviluppo a cascata traeva la sua origine nell’architettura tradizionale, ove esistono metodologie consolidate e forti vincoli fisici. Utilizzando questo approccio anche nell’informatica significa seguire una serie di fasi completamente separate in una sequenza lineare, senza alcun recesso: requisiti, design, implementazione, verifica, mantenimento.
76
In una realtà senza costrizioni come quella del mondo software questo modello non solo è inadeguato, ma addirittura controproducente e porta allo sviluppo di realtà anche funzionanti ma di breve durata e di complessa manutenzione. La open culture, la cultura hacker e più nello specifico l’open source portano invece avanti un approccio più consono alla natura stessa del software, una natura intrinsecamente evolutiva e caotica. Fra i punti importanti della metodologia agile (Agile Alliance, 2001), quelli più inerenti alla progettazione, ci sono: • Attenzione continua ad eccellenza tecnica e buon design. • La struttura deve assecondare il cambiamento, non opporsi ad esso. • Ogni aspetto deve essere realizzato con semplicità, evitando pianificazioni a lungo termine che potrebbero cambiare in corso d’opera. • Cooperazione stretta e giornaliera fra tutte le persone implicate nel software, cliente incluso. • La conversazione faccia a faccia è il miglior modo di comunicare. • I cambiamenti sono sempre accettati in qualunque punto dello sviluppo. I linguaggi maggiormente in grado di assecondare questo tipo di sviluppo sono quelli a natura dinamica. Al contrario infatti di linguaggi come Java o .NET (CLR), che sono stati strutturati soprattutto sul modello a waterfall (cascata), abbiamo linguaggi come Python, Ruby, (JavaScript e ActionScript) fortemente dinamici e snelli.
ECMAScript
77
7.2 DESCRIZIONE MACROSCOPICA L’architettura da un punto di vista macroscopico è separabile in 3 distinti livelli, che riguardano tre corrispondenti aree concettuali fortemente interconnesse ed eventualmente tre team di lavoro distinti (per competenze tecniche differenti): 1. Livello di Interazione (client side) 2. Livello di Elaborazione (server side) 3. Livello di Integrazione (server side)
7.2.1 LIVELLO 1: INTERAZIONE Il livello di interazione è quello che riguarda tutta la parte visibile ed estetica. E’ assimilabile ai sensi esterni dell’assistente virtuale. Si tratta della superficie mostrata all’utente, che gestisce la sua interazione con il sistema sotto tutti i differenti canali che si è deciso di supportare. Le tecnologie in questo livello sono soprattutto legate alla visualizzazione ed alla parte di input ed output: visualizzazione 2D, 3D, audio e video. Questo livello gestisce anche l’interazione dell’assistente virtuale con il contesto visualizzato dall’utente in quel preciso momento.
78
Infatti chi lavora in questo ambito non è escluso che abbia abilità di modellazione o programmazione, o abilità legate alla regia. Inutile dirlo, è essenziale una forte base di conoscenza nell’interaction design.
7.2.2 LIVELLO 2: ELABORAZIONE Il livello di elaborazione è il cuore del sistema ed è quello che gestisce tutti i componenti critici. Per questo motivo è considerato l’assistente virtuale propriamente detto ed è assimilabile al cervello. Infatti, indipendentemente dall’interfaccia che si utilizza, è la struttura di questo livello che determina la conoscenza, il carattere e le capacità linguistiche ed interattive dell’assistente. Tutte queste dovranno essere sicuramente sfruttate anche dal livello di interazione, ma è evidente come le due parti siano scorporate, tanto che molte aziende fra quelle analizzate nel capitolo precedente sviluppavano solo l’una o l’altra cosa. Tecnologicamente si vanno a collocare in questo punto le componenti di Intelligenza Artificiale: NLP (understanding e generation), sistemi esperti, reti neurali. Le competenze richieste riguardano più l’ambito dell’Intelligenza Artificiale, della gestione della conoscenza e della linguistica applicata.
7.2.3 LIVELLO 3: INTEGRAZIONE Il livello di integrazione è un elemento molto importante per potenziare in modo efficace l’assistente virtuale in applicazioni reali. Infatti essendo fondamentale la capacità dell’assistente di interagire all’interno del suo ambito di conoscenze, l’integrazione con i sistemi ad esso collegati è fondamentale. Questo livello è assimilabile alle mani.
79
Secondo questa metafora, facendo un parallelo dell’assistente virtuale con un assistente vero, c’è una separazione fra la conoscenza della persona (livello 2) e, ad esempio, dei dati inerenti al suo lavoro che sono utili con quel particolare cliente (livello 3, questo). La persona fisica può infatti accedere ad un terminale e aprire la scheda del cliente con cui sta parlando, oppure può prenotare un biglietto aereo e svolgere una serie di funzionalità separate da quelle strettamente inerenti al dialogo. L’integrazione con altri sistemi non è quindi solamente una semplice fonte di conoscenza ma permette anche all’assistente di essere un mediatore fra più entità, sempre più ricco all’aumentare dei servizi a cui viene connesso.
7.3 ARCHITETTURA GENERALE L’architettura utilizzata è basata sul principio client-server. Questa scelta deriva dalla considerazione che il TCP/IP e i protocolli su di esso realizzati (HTTP) sono un ottimo sistema di comunicazione già disponibile e con vantaggi e svantaggi ben consolidati. Inoltre, l’utilizzo di questa architettura consente l’utilizzo di tutte le soluzioni e le infrastrutture di rete già sviluppate. Ulteriore vantaggio è dettato dall’ubiquità ormai affermata di internet, che rappresenta il principale vettore della comunicazione e del lavoro. La modularità è ottenuta scorporando i vari processi in una serie di server su più livelli che sono contattati in una sequenza durante l’elaborazione della risposta dell’assistente virtuale. Ciascun server può richiamare a sua volta altri servizi esterni dotati di interfaccia TCP/IP, ad esempio per accedere ad un database.
80
L’approccio iniziale su tre livelli distinti si espande quindi a mostrare una granularità maggiore. Ognuno dei componenti rappresentati nel diagramma sono unità logiche: ciascuna di queste può risiedere sullo stesso server fisico, ma anche su macchine distinte e, se necessario, può essere anche separato in un cluster sotto load balancing. Quello che si evidenzia immediatamente rispetto ai tre livelli precedenti è il server di routing posto al centro e la fitta rete di connessioni che lo circonda. Infatti l’architettura qui esposta è basata sul messaggio: fonda la
81
sua modularità su un protocollo di comunicazione molto ricco, che richiede un sistema centralizzato di gestione e instradamento. Lo stesso protocollo viene utilizzato su entrambi i lati del router ed è sufficientemente ricco da poter essere usato sia dai componenti strutturali (livello 2, elaborazione) sia da quelli specifici per una installazione (livello 3, integrazione). Le varie fasi dell’elaborazione che viene fatta dall’assistente virtuale corrispondono quindi a componenti distinti che vengono chiamati nella corretta sequenza dal router. Se si nota però il diagramma non mostra un percorso ben definito. Questo è motivato dal fatto che in una fase di elaborazione potrebbe essere necessaria una variazione e quindi il flusso di esecuzione viene variato dinamicamente per rispondere a questa esigenza. Il fulcro di questa architettura è quindi il messaggio.
7.4 IL PROTOCOLLO VAMP COME MEDIATORE Per poter realizzare una struttura modulare efficace è necessario implementare un solido protocollo in grado di veicolare in modo compatto ed esauriente tutti i dati necessari.
7.4.1 CONCEPT Per il funzionamento di un assistente virtuale il fulcro centrale è sono le informazioni legate alla comunicazione interattiva, non ristretta al solo testo. E’ importante notare che la risposta non è costituita solamente da una informazione di tipo lessicale ma contiene anche informazioni emotive ed
82
espressive,
esattamente
come
emotività
ed
espressività
sono
caratteristiche intrinseche e fondamentali della natura umana.
Il concetto alla base del protocollo VAMP è quello di un singolo messaggio che viene arricchito con informazioni extra-lessicali (emozioni, ambiente, contesto) e progettato per essere elaborato lungo differenti fasi successive, fino a trasformarsi nella risposta. Questa idea prende spunto da alcuni modelli sull’elaborazione del linguaggio parlato da parte del cervello, processo che avverrebbe in più fasi sequenziali fino a generare la risposta.
7.4.2 PROTOCOLLO VAMP 1.1 Il protocollo di comunicazione che è stato realizzato per questo scopo è stato realizzato per il virtual assistant K-Human™ di Kallideas ed è denominato VAMP (Virtual Assistant Modular Protocol), ora alla versione 1.1, rilasciata il 26 aprile 2007. Senza scendere troppo nel protocollo, per le quali rimando al documento delle specifiche, vediamo comunque i punti più importanti. Il protocollo VAMP si fonda sugli standard web affermati (RFC), è un protocollo di comunicazione per certi versi analogo a XML-RPC e SOAP. Si tratta infatti di un formato per lo scambio di messaggi tramite POST HTTP. La sintassi è simmetrica fra richiesta e risposta. Questo significa che non c’è differenza strutturale fra i due, ma viene unicamente determinato dal punto dell’elaborazione in cui il messaggio viene considerato.
83
Il formato di default per l’encoding dei caratteri è UTF-8. Altri encoding sono possibili (da standard XML) ma sono sconsigliati nel caso di VAMP. Se ve ne fosse la necessità è comunque consigliabile utilizzare un encoding che sia un subset di UTF-8. Il tag root del protocollo è
. Sarà utilizzata la sintassi XPath ogni qual volta sarà necessario segnalare uno specifico tag e la sua posizione.
7.4.3 CONTROLLO Il controllo della comunicazione viene fatto su alcuni /vamp/sessionID, /vamp/messageID e /vamp/userID.
tag:
Questi tag sono necessari per la gestione asincrona del canale di comunicazione con un singolo utente, visto che il protocollo HTTP è asincrono e chiude ad ogni contatto il canale. • <sessionID>
contiene
l’informazione
riguardante
all’attuale
dialogo, quindi differenti valori rappresentano differenti dialoghi. • <messageID> contiene l’identificativo del messaggio all’interno della comunicazione ed è costituito da una data formattata secondo lo standard Atom RFC 4287, a sua volta basato su ISO 8601 (1988), W3C Note Date and Time Formats (1998) e W3C REC XML Schema Part 2 (2004). • <userID> è abbastanza esplicativo: definisce l’identità – se conosciuta – dell’utente con cui si sta parlando. Visto che VAMP è un protocollo simmetrico, questo tag potrebbe essere anche riempito dall’assistente virtuale stesso, dopo aver effettuato qualche forma di autenticazione durante il dialogo. E’ anche presente un tag per fornire una informazione extra a riguardo del software che ha generato il messaggio in modo analogo alla chiave “user agent” dei browser web.
84
7.4.4 MESSAGGIO Il messaggio testuale rappresenta il segnale intorno al quale si fonda tutta la comunicazione. VAMP 1.1 infatti richiede l’esistenza di un campo di testo contenente la parte esplicita del messaggio alla quale sono associate informazioni metalinguistiche. Tale campo è il tag /vamp/message/text, che deve quindi essere sempre presente. Come si nota il tag è inserito in /vamp/message. Questo serve da contenitore per tutti i differenti canali comunicativi paralleli, legati al testo, che dovessero esserci. Tali tag non sono esplicitamente definiti dal protocollo, ma v’è una unica restrizione che riguarda il tipo di contenuto: è necessario che tutti gli elementi in <message> abbiano come contenuto la stessa informazione, eventualmente arricchita, /vamp/message/text.
riguardante
il
messaggio
veicolato
da
In questo modo un software posizionato al livello 2 (§6.2.2) può restituire un ampio ventaglio di informazioni che verranno selezionate al livello 1 secondo il tipo di interfaccia disponibile. Il messaggio testuale () può essere arricchito con dei demarcatori emotivi, inserendo un altro tag in /vamp/message (i.e. <emote>). Un’altra possibilità è quella di aggiungere encoding differenti in rapporto alle varie possibili implementazioni, aggiungendo quindi tag vocali (i.e. ) e ipertestuali (i.e. ).
85
7.4.5 METADATI: CONTESTO Una chiave piuttosto interessante fra i metadati – ovvero dati esterni alla comunicazione strettamente linguistica – è quella che specifica il contesto. Infatti /vamp/meta/context è il tag che definisce l’ambito nel quale viene condotta l’interazione con l’utente. Tale campo è lasciato piuttosto aperto perché in rapporto all’applicazione che si sta sviluppando può essere necessario utilizzarlo per informazioni anche molto differenti. Ad esempio, nel caso di una pagina web potrebbe essere utilizzato per l’URL attuale, mentre nel caso di un discorso via cellulare potrebbero essere le informazioni sul posizionamento spaziale. In altri casi ancora potrebbe essere in numero di stanza o l’attuale posizione in una coda.
7.4.6 METADATI: SCELTE MULTIPLE La presenza di un componente di NLP non è sempre ovvia: l’assistente virtuale potrebbe essere utilizzato su sistemi chiusi, che vincolano l’utente a scegliere di volta in volta tra una serie di risposte predefinite. In questo caso si utilizza quindi il contenitore /vamp/meta/choices, esplicitando ciascuna opzione /vamp/meta/choices. Questo
contenitore
viene
tramite
gestito
in
un
modo
secondo
analogo
contenitore
al
blocco
/vamp/message, con la differenza che vi sono due campi obbligatori invece che uno: e in /vamp/meta/choices/choice. L’identificativo è una informazione fondamentale per poter strutturare le risposte, in modo da non dover gestire eventuali ambiguità del campo .
86
Questo campo potrebbe anche veicolare informazioni invisibili all’utente ma utili per suggerire all’assistente virtuale predizioni su un possibile comportamento futuro.
7.4.7 METADATI: REAZIONI AD EVENTI Visto che la comunicazione può essere composta anche da elementi che non si legano strettamente al testo del messaggio, esiste un’altra struttura dati per gestire eventuali azioni in modo separato. Le azioni sono strutturate tramite coppie evemo-reazione, ove la reazione viene inserita da chiunque sia in grado di gestire l’azione che viene specificata. Il campo /vamp/meta/action può contenere solo due tag: event e reaction.
Ovviamente
si
possono
presentare
più
tag
action
simultaneamente, ognuno avrà la sua coppia di valori.
7.4.8 EMOZIONI Le emozioni sono gestite tramite un altro tag separato oltre a /vamp/message e /vamp/meta, ovvero /vamp/exml. Questo tag può contenere un singolo livello di campi dal nome non predefinito dalle specifiche, ognuno dei quali può contenere un valore da 0 a 100. Ad esempio il seguente schema XML sarebbe una possibile astrazione del modello emozionale elaborato da Plutchik, che come abbiamo visto è costituito da quattro elementi bipolari:
87
… <exml> <sadnessjoy>90 100 50 <surpriseexpect>20 Il grado di libertà fornito da questo schema dovrebbe essere una schematizzazione sufficiente per la comunicazione di uno stato emotivo sotto forma di dati grezzi ancora da elaborare. Il protocollo VAMP implementa questo campo in modo sufficientemente ampio da poter accomodare differenti modelli emozionali e contemporaneamente fornire uno standard abbastanza sintetico perché sia facilmente computabile. Quest’ultimo tag è interessante perché il suo contenuto potrebbe influenzare un componente successivo di generazione del parlato che modificherebbe la risposta per renderla conforme allo stato emotivo.
7.5 ARCHITETTURA Il protocollo VAMP funziona quindi come ponte fra tutti i componenti che sono presenti nell’architettura di riferimento. Abbiamo visto che l’architettura è fondata su tre livelli distinti: interazione, elaborazione ed integrazione. Il livello di interazione non lo descriveremo qui in dettaglio perché è fortemente legato al medium di riferimento e non può essere generalizzato meno di quanto sia stato già fatto.
88
Le funzionalità che tale livello dispone sono dettate dall’apparenza stessa di un assistente virtuale e dalle capacità interattive che deve avere, costrette all’interno del canale di comunicazione scelto. Scendiamo quindi ad analizzare l’architettura dei livelli di elaborazione ed integrazione, quella che definisce l’assistente virtuale vero e proprio. Il concept dell’architettura è lo stesso presente dietro alla realizzazione di VAMP: si tratta infatti di un sistema che trasforma il messaggio di entrata in quello in uscita tramite una serie di step intermedi di analisi ed elaborazione.
7.5.1 ROUTING Come abbiamo accennato questa architettura è basata sul messaggio ed il suo componente centrale è il modulo di routing. Esternamente questo componente costituisce l’interfaccia dell’assistente virtuale, quella alla quale i vari client manderanno le loro richieste per ricevere risposta. Internamente gestisce il percorso del messaggio all’interno dei vari componenti dell’assistente virtuale. Esiste pipeline di esecuzione predefinita, un percorso attraverso cui il messaggio VAMP passa. In una installazione standard è il seguente: 1. client: input 2. Understanding engine (NLP) 3. 4. 5. 6.
Troubleshooting engine (AI) Emotions engine (AI) Language Generation engine (NLP) Events engine
7. client: output
89
E’ interessante notare come già questo livello sia a sua volta modulare: infatti dato che la comunicazione interna avviene anch’essa tramite VAMP over HTTP, in modo standardizzato, ciascun componente è a sua volta un server, separato e distinto. E’ quindi possibile aggiungere o sostituire componenti senza alcuna variazione sulla piattaforma. In questo modo ad esempio si può utilizzare un particolare sistema esperto meglio calzato per un particolare scopo, o passare da un componente NLP ad un altro, magari più idoneo per gestire una differente lingua. Un altro vantaggio interessante di questo approccio è costituito dalla possibilità di variare il flusso durante il procedere stesso del messaggio: infatti un componente potrebbe decidere di passare subito il controllo ad una fase più avanzata, in modo da velocizzare l’elaborazione. Oppure, potrebbe decidere di ripetere un particolare passo dopo aver eseguito modifiche sostanziali al messaggio. L’utilizzo di HTTP come sistema di comunicazione inserisce un leggero overhead sulla comunicazione, del tutto ininfluente, ma garantisce anche la possibilità di scalare il sistema su più server distinti. Ad esempio se vi fosse un componente particolarmente intensivo come calcoli, è possibile inserire un singolo load balancer dietro al sistema di routing. La scalabilità del sistema è quindi notevole, sia globalmente, mettendo tutto l’assistente virtuale dietro load balancer, che localmente, aumentando i server dedicati ad un singolo scopo. Il componente di routing è evidentemente quello più importante in assoluto dal punto di vista dell’architettura, data la sua centralità.
90
7.5.2 UNDERSTANDING ENGINE Questa fase rientra nel nome Natural Language Processing ma non è necessaria l’esistenza di un motore di NLP vero e proprio. Infatti spesso è sufficiente un componente molto più semplice, eventualmente basato su keyword, che sia in grado di effettuare una semplice selezione. Ad esempio questo è il caso di assistenti virtuali con risposte predefinite da cui scegliere, oppure quando si utilizza un media telefonico: in questo caso l’elaborazione viene fatta a priori e all’assistente arriva già una forma normalizzata. Generalizzando lo scopo di questa fase è filtrare e trasformare un messaggio in una forma normalizzata comprensibile al sistema, eventualmente utilizzando tecniche di NLP. In questo modo le fasi successive potranno elaborare il messaggio in modo efficace. La forma normalizzata a questo livello può essere di svariati tipi, solitamente legata al tipo di elaborazione che verrà condotta nelle fasi successive. In particolar modo se successivamente ci sarà un sistema esperto o un motore a regole, verrà fornita una risposta che sia formattata come una query logica. Nel caso di sistemi estremamente semplici ci saranno invece una serie di identificativi numerici per identificare la risposta successiva da dare, fornita in modo automatico. Sistemi estremamente complessi invece potrebbero fare uso di una sintassi più complessa e vicino al formato linguistico, quindi quello che verrà restituito è la struttura grammaticale della frase.
91
7.5.3 TROUBLESHOOTING ENGINE Questo componente è una componente AI dedicata alla risoluzione dei problemi. Si tratta quindi della parte razionale dell’assistente virtuale, quella che pesa i dati ricevuti ed elabora la risposta successiva. Spesso si utilizza per questo scopo un sistema esperto in grado di rispondere nel contesto applicativo per cui l’assistente è stato realizzato. L’elaborazione a questo livello è spesso solamente logica e fornisce una risposta in base a vari livelli di probabilità. E’ possibile che siano presenti più motori di questo tipo all’interno di un assistente virtuale, ciascuno dedicato ad un preciso ambito di conoscenza. In questo caso sarà necessaria una fase preventiva di comprensione in grado di instradare il messaggio al componente corretto.
7.5.4 EMOTIONS ENGINE La valutazione emozionale viene fatta in una delle ultime fasi. Questo componente elabora i dati che arrivano dalle elaborazioni precedenti e a sua volta arricchisce il messaggio VAMP con dei dati emotivi. I dati che arrivano al motore emozionale sono di due tipi: 1. Lo stato dell’utente elaborato dalla fase di Understanding (i.e. “ho un problema che mi sta facendo impazzire”, agitato e teso). 2. La variazione emotiva che è presente nel tipo di risposta selezionata per l’utente (i.e. “tranquillo, descrivimi il tuo problema”, calmante). Il motore emozionale elabora quindi quale sia la risposta emotiva dell’assistente, aggiungendo questi due input al proprio stato interno e valutando quindi quale sia l’intonazione migliore per la voce e quale sia l’espressione da mostrare.
92
Questo componente viene ovviamente limitato con un filtro, in quanto non tutte le applicazioni richiedono il complesso spettro di output che un modello emozionale è in grado di restituire. Non sarebbe infatti molto efficace un assistente che si arrabbiasse in seguito ad un cliente troppo invadente, o che sembrasse troppo felice in una situazione problematica. Al contrario, una fidanzata virtuale è meglio che abbia un ventaglio di emozioni ampio e ricco, potendosi giustamente offendere o arrabbiare in certe situazioni. Il filtro serve quindi a normalizzare la risposta emotiva in modo che l’assistente svolga sempre il suo lavoro nel modo migliore possibile.
7.5.5 LANGUAGE GENERATION ENGINE Questo componente è estremamente complicato da realizzarsi. La possibilità che sia in grado, di generare risposte flessibili ed arbitrarie in base all’input elaborato è ancora fuori portata per la maggior parte dei sistemi esistenti. Questa fase è quindi meno automatica ed è basata su una conoscenza pregressa dell’insieme di risposte che verrà elaborata dai componenti precedenti. Si utilizzano infatti una serie di frasi predefinite che vengono utilizzate o composte per costruire la risposta da fornire all’utente. Questo sistema è poco flessibile in quanto deve essere variato ogni volta che cambia l’assistente virtuale o si fa una nuova installazione, ma dato l’attuale stato tecnologico ha due grossi vantaggi: 1. E’ semplice da realizzarsi. 2. Permette di avere risposte molto umane, in quanto comunque si tratta di testi scritti da qualcuno.
93
7.6 ARCHITETTURA ESTESA Al di fuori della pipeline di esecuzione principale dell’architettura esistono comunque altri elementi importanti per il suo funzionamento, che svolgono ruoli spesso critici per l’efficacia di un assistente virtuale.
7.6.1 INTEGRAZIONE Questo è il terzo livello (§6.2.3), che come è ora chiaro non faccia parte strettamente dell’architettura software dell’assistente virtuale ma costituisce il ponte software verso tutti gli altri sistemi informatici con i quali si integra. L’integrazione può avvenire su due livelli distinti: 1. Integrazione a livello di flusso In questo caso è necessaria la presenza di un elemento software di integrazione che traduca il messaggio VAMP verso un formato compatibile con il sistema di riferimento e che poi effettui il processo inverso per immettere l’informazione così elaborata nella pipeline. Nell’integrazione a livello di flusso si inseriranno quindi dei server che sono in grado di comprendere la struttura dell’assistente virtuale e quindi di effettuare delle trasformazioni direttamente sul messaggio (eventualmente, anche su un solo campo). 2. Integrazione a livello componente Questo serve nel caso in cui uno dei componenti della pipeline (HTTP over VAMP) debba fare richiesta di dati esterni. In questo caso non è necessaria alcuna conversione in formato VAMP e più semplicemente sarà da realizzare un ponte basato sull’interfaccia software del sistema che si vuole connettere all’assistente virtuale. Nell’integrazione a livello componente si inseriranno tutti quei servizi esterni come ad esempio banche dati e processi che non sono stati realizzati per accoppiarsi con un assistente virtuale.
94
Questo tipo di asimmetria garantisce che l’architettura si integri perfettamente con qualunque tipo di infrastruttura hardware e software già esistente.
7.6.2 USER PROFILING Questo componente è molto particolare perché è integrato sia con l’architettura dell’assistente virtuale, sia con i sistemi esterni. Si tratta di un server separato dalla pipeline ma che viene contattato potenzialmente da tutte le fasi di elaborazione che necessitano informazioni sull’utente. Le informazioni dell’utente sono distinguibili in due categorie: 1. Informazioni contestuali all’assistente Questo tipo di informazioni sono nate all’interno del dialogo con l’assistente virtuale e possiamo dire che fanno parte del rapporto esistente fra utente ed assistente. Servono sia per tracciare l’evolversi della discussione corrente, sia per gestire qualunque discussione futura con lo stesso utente. 2. Informazioni della base dati Se l’assistente fa parte di un sistema più complesso è plausibile che esistano già delle basi dati del cliente che sta attualmente parlando. E’ quindi possibile integrarsi con tali informazioni in modo che l’agente possa fornire informazioni precise su qualunque dato che riguardi l’utente. E’ estremamente plausibile infatti che questo avvenga, soprattutto in certi contesti informativi. In ambito bancario gli utenti si aspettano che un assistente virtuale risponda a informazioni generiche sullo stato del proprio conto: è una aspettativa ovvia. E’ evidente che questo genere di base dati non è realizzabile in assenza di un sistema di identificazione dell’utente e quindi non può funzionare la
95
parte di memorizzazione dello storico nel caso in cui sia necessario l’anonimato.
7.6.3 AUDIO/VIDEO E’ estremamente probabile che un assistente virtuale sia presentato nella sua forma multimediale, con sia audio che video. Questo tipo di servizio è dipendente dal client che si sta utilizzando e quindi non fa parte della pipeline principale di esecuzione. Il ruolo di questo server è quello di fornire i contenuti multimediali necessari all’assistente virtuale. Questo software prende quindi il flusso VAMP in entrata e a partire da questo realizza: • Audio: la frase che verrà pronunciata dall’assistente, con le corrette inflessioni emotive. • Video: l’apparenza dell’assistente virtuale. In questo caso non è detto che si tratti di un video effettivo, ma potrebbe essere anche un flusso dati di animazione (standard MPEG4). Questi flussi separati verranno poi aggregati e gestiti dal client per dare una impressione fluida ed uniforme.
96
8 CASE STUDY Il presente case study si basa su un software proprietario di Kallideas, che implementa tutte le funzionalità descritte per un assistente virtuale emozionale. Il software è stato installato nella rete interna di Gabetti, orientato a fornire un primo livello di gestione dell’assistenza tecnica.
8.1 KALLIDEAS K-HUMANS™ Kallideas è una società italiana con una sede anche negli USA. Focalizza la propria crescita intorno al laboratorio dedicato alla realizzazione di assistenti virtuali emozionali. Il prodotto in questione sono i virtual assistant K-Humans realizzati su una piattaforma estensibile basata sui principi esposti in questa tesi. Tale piattaforma è estremamente modulare e studiata per coprire tutto il processo produttivo di un assistente virtuale, dall’interfaccia fino al motore e all’integrazione con le basi dati del cliente. Al contrario della concorrenza Kallideas sta puntando molto sull’aspetto di interazione e introduce quindi strumenti adatti al controllo puntuale delle emozioni sull’assistente.
97
L’architettura client/server degli assistenti virtuali K-Humans si può riassumere in quattro punti: 1. Client Vi sono differenti tipologie di client, fra cui quello web, quello mobile e quello video. Ognuno di questi si integra con la piattaforma utilizzando le peculiarità del media su cui operano per ottenere il massimo risultato nell’interazione con il cliente. 2. BlackBox (server) Questo è l’elemento chiave che gestisce la parte di comprensione del linguaggio e elaborazione delle risposte, oltre che l’integrazione con gli altri sistemi eventualmente richiesti per il funzionamento (il database utenti, la knowledge base, etc). In altri termini, si tratta dell’assistente virtuale vero e proprio. Il BlackBox si preoccupa di gestire tutti i vari componenti, incluso il server di generazione audio/video. Il software del server è completamente multipiattaforma. 3. Audio/Video (server) E’ un server separato che viene contattato dalla BackBox e svolge la funzionalità di generazione dell’audio (TTS) ed eventualmente dei video corrispondenti. Questo server può essere di qualunque genere, talvolta è necessario creare un piccolo wrapper per rendere compatibili i protocolli. 4. Integratori La Black Box si integra con svariati sistemi, che plausibilmente saranno su server esterni dedicati.
8.2 GABETTI Gabetti Agency SpA è una rete di agenzie distribuite sul territorio italiano, attiva da anni nel mercato immobiliare come intermediatrice.
98
Attualmente la rete di vendita è composta da più di 800 agenzie sia dirette che in franchising e 14 sedi, con contatti internazionali. La sua rete informatica quindi garantisce la connettività e lo scambio dati fra le varie agenzie.
8.2.1 PROBLEMA Gabetti dispone di un servizio di assistenza tecnica che risponde alle chiamate interne riguardanti problemi con il computer, la rete o in generale il loro sistema informatico di gestione dei dati. Qualunque servizio di assistenza tecnica informatica, formalmente o informalmente, si trova sempre a dover porre una serie di domande standard per tentare di capire dove sia localizzato il problema ed eventualmente giungere ad una soluzione nel caso rientri in uno dei casi contemplati. In questo contesto ci sono ad esempio serie di domande di questo tipo: – Non mi funziona il computer… – Ha controllato che non sia semplicemente spento? – Sì – Ed è spento? Sembrano banalità, ma sono il primo livello di domande utile a discriminare il problema. Partendo da questi interrogativi generici si riesce ad arrivare ad una effettiva risoluzione del problema. Si pensi che addirittura in una piccola percentuale di casi queste stesse domande, apparentemente ovvie, sono risolutive. E’ evidente che il tempo impiegato a rivolgere questo genere di domande sia quasi sprecato, perché le persone dovrebbero dedicarsi a risolvere il problema.
99
8.2.2 SOLUZIONE Un assistente virtuale può sostituirsi con efficacia in questa prima serie di domande, risparmiando lavoro al servizio di assistenza che si trova così con più tempo libero da dedicare ad attività più qualificate. L’assistente virtuale è dotato di un sistema esperto basato sui dati storici ricavati dall’assistenza tecnica e integrato con l’infrastruttura informatica dell’azienda. L’assistente è accoppiato con un sistema interno di ticketing, che archivia le conversazioni e indirizza i vari ticket ancora aperti al personale responsabile della sua gestione, che può già muoversi efficacemente per risolvere il problema, avendo a disposizione i dati necessari. In questo modo si possono accettare un numero potenzialmente illimitato di telefonate distinte e migliorare la qualità di lavoro dell’ufficio interessato, senza alcun impatto lato utente. Si è deciso di supportare il dialogo sia tramite linea telefonica (come tradizionalmente veniva svolta l’assistenza) sia tramite una apposita pagina online. In entrambi i casi risponderà Gabi, l’assistente virtuale sviluppata appositamente per Gabetti.
8.2.3 ARCHITETTURA WEB Via web sono necessari: 1. Client Web: è un componente per il web, lato client, in JavaScript che seleziona l’interfaccia migliore in rapporto al browser utilizzato e ai plugin installati, in modo da avere sempre una resa ottimale. Fra i vari
100
plugin utilizzabili c’è, oltre al diffusissimo Flash Player anche un Player 3D sviluppato internamente e un Player Audio nel caso non vi fossero altre alternative. In ogni caso, il K-Player può comunque interagire in modalità testuale. La compatibilità verificata è qualunque browser successivo a Internet Explorer 5.5. 2. Server Web: la pagina di accesso contenente il K-Player è accessibile dalla rete intranet aziendale e da tutte le agenzie. Il server è un IIS 3. Server BlackBox: il server contenente l’intelligenza di Gabi. E’ posizionato esternamente all’intranet aziendale per motivi di sicurezza (DMZ). Il protocollo utilizzato è VAMP 1.1 sia in entrata che in uscita. 4. Server TTS: una volta che la BlackBox elabora la risposta contatta il server TTS (Text To Speech) che genera il file audio corrispondente. 5. Server di Autenticazione: questo server viene contattato dalla componente web per ricevere i dati di autenticazione dell’utente che sta cercando di accedere al servizio. La comunicazione è gestita in modo crittografato durante la connessione al server IIS, utilizzando l’algoritmo 3DES. 6. Server di Ticketing: questo è il server che riceve tutte le segnalazioni di ticket aperte dall’assistente virtuale. Il contatto avviene via e-mail (SMTP). Il server in questione è OTRS (Open Ticket Request System), un software open source multipiattaforma. L’utente utilizzando un browser si interfaccia al server web, inserendo i propri dati per loggarsi nella intranet aziendale. L’interazione con l’assistente virtuale viene fatta tramite il client K-Player in modalità 3D che contatta la BlackBox inviando i dati di autenticazione dell’utente. Gabi rivolge una serie di domande all’utente in modo da cercare di capire la causa del problema. Una volta risolto, o giunta alla comprensione di quale possa essere l’ambito del problema, invia una mail al server di ticketing contenente la
101
traccia di tutta la discussione e alcune flag che segnalano che tipo di problema sia.
8.2.4 ARCHITETTURA TELEFONIA Via telefono sono necessari: 1. Server BlackBox: il server contenente l’intelligenza di Gabi. E’ posizionato anch’essa esternamente all’intranet aziendale per motivi di sicurezza (DMZ). La componente Gabi telefonica è separata sia per motivi di prestazione, sia perché le risposte via telefono sono leggermente differenti, ad esempio non si parte con il presupposto che si abbia un computer funzionante, cosa che evidentemente accade via web. Il protocollo utilizzato in entrata è HTTP usando una chiamata GET e in uscita VXML via HTTP (VXML è il protocollo per la telefonia). 2. Server IVR: il server IVR (Interactive Voice Response) è quello competente di interfacciarsi con gli apparati telefonici. La piattaforma utilizzata è quella di Reitek e gira su RedHat Linux. 3. Server ASR: il server di Automatic Speech Recognition, ovvero di riconoscimento del parlato è fornito in questo caso da OSR di Nuance, che gira su Microsoft Windows 2003 Server. 4. Server di Ticketing: questo server è lo stesso utilizzato anche dalla parte web.
8.2.5 GABI Il componente di intelligenza che si è scelto di utilizzare è un motore a regole sviluppato internamente, capace di svolgere troubleshooting e semplici funzionalità di NLP.
102
Internamente utilizza 12.246 regole per effettuare le operazioni di analisi testuale, elaborazione delle probabili risposte e formulazione della risposta, all’interno di cinque macroaree. I contesti a cui risponde sono: • Problemi hardware basilari del pc: tratta i computer e i vari elementi hardware ad esso connessi, quindi problemi riguardanti il computer, il monitor, la tastiera, il mouse ed eventuali altri strumenti informatici (i.e. “la tastiera non scrive più”). • Problemi di rete: tratta l’ambito dei problemi di connettività ad internet ed alla rete interna, oppure problemi di autenticazione (i.e. “non riesco ad accedere al server”). • Problemi software: tratta problemi nell’utilizzo delle applicazioni (Word, Excel, Outlook, AS400, Replay) o nella loro configurazione (i.e. “manca Flash”). Spesso da questo ambito si ricade in altri
103
contesti, come ad esempio hardware o rete, perché gli utenti si riferiscono spesso ai programmi per problemi che poi sono riguardanti l’infrastruttura (i.e. “non funziona la posta” che si rivela essere un problema di connettività). • Informazioni su procedure interne: tratta eventuali procedure per la sostituzione della cancelleria, contatti interni e vari suggerimenti su come è meglio procedere. • Informazioni utili: tratta eventuali informazioni addizionali, come indirizzi internet, link a documenti e simili. A partire da questi contesti piuttosto generali i ticket sono aperti secondo specifiche categorie, che gestiscono delle code di priorità per organizzare gli interventi dello staff tecnico: funzionari, PC, posta elettronica, badge, Replay, Kioski, pacchetto Office, portale Gnews, LearnX, AS400. Come si nota questi sono molto più specifici e riguardano molti software e applicazioni interne.
8.2.6 ESEMPI DI DIALOGO Per avere una idea di come viene condotta una discussione, vediamo alcuni esempi di dialoghi realmente avvenuti. Sono stati sostituiti solamente i dati sensibili con altri di fantasia per evitare violazioni della privacy. 2007-10-16 13:10:52 User: Il pc denominato GBMilano3 è stato sostituito con il pc denominato GBMilano3 però ora non accetta nè l'una nè l'atra password Gabi: Controlla di inserire la password correttamente. Ti ricordo di fare attenzione alle maiuscole, minuscole e di controllare di non avere attivato il blocco maiuscole. Riscontri ancora il problema?
104
User: Sì c'è ancora il problema Gabi: Ok, ho appena aperto e passato un ticket al centro IT contenente la nostra conversazione. Verrai ricontattato dai nostri tecnici. Questo è un dialogo abbastanza normale, che riesce a scremare eventuali problemi di digitazione lato utente, in modo che tale possibilità sia già esclusa quando il tecnico prenderà in mano il ticket. 2007-10-17 17:02:51 User: ciao gabi Gabi: Buongiorno a te. Dimmi pure. User: la mia stampante non funziona Gabi: Ti stai per caso riferendo alla stampante collegata all'AS400? User: no Gabi: Hai controllato che la stampante del pc non sia spenta? User: si Gabi: Per caso sulla stampante c’è qualche spia accesa oltre quella di accensione? User: no Gabi: Prova a controllare il cavo di collegamento: dietro la stampante c’è un cavo piatto abbastanza spesso che finisce dietro al pc. E’ collegato correttamente? User: si Gabi: Ok, ho appena aperto e passato un ticket al centro IT con la nostra conversazione. Sarai ricontattato da un nostro tecnico In questo caso l’utente non è molto esplicativo, né propenso a parlare. Nonostante questo, si presenta salutando Gabi per nome, cosa che evidenzia il tipo di percezione che l’utente ha dell’assistente virtuale. Viene trattata come un umano, pur sapendo che non lo è.
105
2007-10-25 09:36:00 User: come recupero l'username e la password della casella di posta? Gabi: Ti riferisci alla mail: [email protected]? User: no [email protected] Gabi: Allora scrivimi a quale indirizzo ti riferisci, così faccio una segnalazione al centro IT. User: [email protected] Gabi: Ok! Ho appena segnalato al centro IT di farti riavere le credenziali di accesso alla posta elettronica. Sarai ricontattato al più presto. Arrivederci! Questo dialogo è utile per fare risparmiare tempo all’assistenza tecnica: i dati da controllare sono infatti resi disponibili nel ticket ed è quindi sufficiente un semplice controllo. E’ interessante anche il fatto che Gabi proponga la mail che è associata all’utente con cui sta parlando (prima risposta), in quanto è quella a cui di solito l’utente fa riferimento nelle segnalazioni. 2007-10-29 12:40:13 User: problemi con il programma commerciale Gabi: Ok, sto per aprirti un ticket al centro IT. Descrivimi ulteriormente il problema in modo che chi leggerà il ticket capirà a fondo la tua problematica. User: ci sono difficoltà nell'aprire il programma della pubblicità Gabi: Ok, ho appena mandato il ticket al centro IT. Sono contenta di esserti stata di aiuto. Questo è uno degli argomenti fra quelli noti, ma che non sono stati forniti all’interno della base di conoscenza di Gabi. Viene comunque aperto un ticket, e viene chiesto all’utente di descrivere il problema in dettaglio. Il
106
risultato non è sempre utile per l’assistenza tecnica, ma è comunque una prima scrematura.
8.2.7 RISULTATI Il ruolo di Gabi come assistenza tecnica ci permette di avere una metrica piuttosto rilevante per misurare la sua efficacia. La piattaforma di ticketing infatti consente di estrarre delle numeriche piuttosto precise e univoche sui ticket chiusi (successo), aperti e se questi sono stati inoltrati correttamente. La semplice analisi dei ticket aperti e chiusi però sarebbe piuttosto parziale e poco significativa. Si sono utilizzate le seguenti metriche: • Ticket totali gestiti: il conteggio del numero di contatti che Gabi ha avuto per richieste di risoluzione problemi nel periodo indicato, indipendentemente dal loro risultato. • Ticket gestiti con successo: un ticket viene considerato gestito con successo nel momento in cui viene instradato al servizio di assistenza tecnica corretto, riportando tutta la conversazione in modo che siano già escluse tutte le possibilità contemplate dalle domande standard. • Ticket gestiti con successo e chiusi: se un ticket, oltre ad essere instradato con successo, ha anche risolto correttamente il problema dell’utente (i.e. l’utente alla fine della discussione ha risposto affermativamente a problema risolto), questo è salvato come “chiuso” e quindi non richiede nessun supporto aggiuntivo. Per come è stato realizzato il sistema di regole dell’assistente virtuale, non dovrebbero essere possibili errori in questa situazione. • Ticket gestiti in modo errato: i ticket gestiti in modo errato sono quelli che dipendono da incomprensioni. Vengono categorizzati come errati i ticket aperti ma instradati in modo errato, chiusi a causa di una incomprensione oppure apertura di un ticket quando
107
non avrebbe dovuto. In ogni caso riportano l’intera discussione con l’utente, ma alla fine Gabi non è stata in grado di capire quale fosse l’ambito del problema. Inoltre, per evitare di avere dati sporchi, sono stati eliminati tutti i ticket di prova e quelli aperti da persone che conoscevano il funzionamento del sistema in modo preciso, perché avrebbero falsato i risultati. Si doveva anche considerare che essendo un sistema appena introdotto, era anche possibile che vi fossero dei ticket rilevati anche per conversazioni puramente ludiche, quindi senza una reale necessità. In questo caso i ticket sono stati comunque instradati con successo, anche se spesso come categoria “sconosciuta” (“unknown”) poiché le domande non si riferivano ad un problema. Questo tipo di metrica dovrebbe essere piuttosto significativa per valutare l’effettiva efficacia di Gabi come filtro per l’assistenza tecnica. I dati provengono direttamente da Gabetti, senza alcun filtro preventivo. Primo periodo, dal 1 settembre a, 21 settembre: • Ticket totali gestiti: 123 • Ticket gestiti con successo: 78,1% (96) • Ticket gestiti con successo e chiusi: 4,1% (5) • Ticket gestiti in modo errato: 21,9% (27) Successivamente però ci è stato segnalato dal cliente che alcune occasionali tipologie di ticket fra quelli gestiti in modo errato in realtà sono da considerare un successo, perché si trattano di operazioni che richiedono obbligatoriamente l’intervento umano (i.e. cambio password, cambio cartuccia stampante) e che quindi Gabi non avrebbe potuto gestire altrimenti.
108
La quantità era limitata, ma comunque si tratta di una modifica ai criteri utilizzati che è bene sottolineare. Secondo periodo, metrica modificata, dal 24 ottobre al 10 ottobre: • Ticket totali gestiti: 211 • Ticket gestiti con successo: 86,7% (183) • Ticket gestiti con successo e chiusi: 16,1% (34) • Ticket gestiti in modo errato: 13,3% (28) Tenendo conto della metrica leggermente variata possiamo fare una media fra i due periodi, in modo da avere il quadro generale. Complessivamente quindi: • Ticket totali gestiti: 334 • Ticket gestiti con successo: 83,5% (279) • Ticket gestiti con successo e chiusi: 11,7% (39) • Ticket gestiti in modo errato: 16,5% (55)
8.2.8 CONCLUSIONI L’utilizzo in questo specifico ambito, con un corpo di conoscenze ben preciso e strutturato, ha portato a risultati notevoli. Infatti, il lavoro che viene risparmiato al dipartimento tecnico è piuttosto rilevante: l’11,7% di ticket gestiti con successo significano potenzialmente più di 4 ore uomo alla settimana risparmiate. Non solo: l’83,5% dei ticket è stato instradato correttamente. Questo significa che vi sono già una serie di domande con risposta che saranno disponibili ai tecnici per poter proseguire con la risoluzione del problema.
109
Rappresenta un altro grosso risparmio di tempo, anche questo quantificabile intorno alle 4/5 ore uomo considerando una ipotetica durata media di 1 minuto a telefonata. Il 16,5% di ticket gestiti in modo errato sono equiparabili alla situazione precedente, quindi richiedono una nuova richiesta al centro di assistenza, questa volta con un operatore umano. Analisi interne in Gabetti hanno confermato positivamente le mie stime. Una osservazione comparativa su due periodi prima e dopo l’installazione dell’assistente virtuale, a parità degli altri parametri, ha portato al risparmio di 44 ore/uomo ogni mese. Anche se le persone che hanno testato il sistema non hanno riscontrato problemi, sarebbe necessario un futuro studio di usabilità dettagliato in modo da avere dei valori precisi anche sulla percezione che gli utenti hanno avuto utilizzando l’assistente virtuale. In parte questo è un fattore che traspare anche dai dati numerici sui ticket: un buon livello di successi unitamente a ticket instradati bene rappresenta un successo dettato anche dall’approccio che ha Gabi nei confronti degli utenti.
8.3 SVILUPPI FUTURI Vi sono due percorsi di sviluppo separati per il framework degli assistenti virtuali K-Humans™: 1. l’evoluzione dei singoli componenti. 2. l’evoluzione della piattaforma in sé. Il primo punto è abbastanza ovvio per una piattaforma modulare che implementa tecnologie esterne: vi sono svariati componenti e ciascuno di questi può essere migliorato sia dal punto di vista teorico che tecnico.
110
Questo è ancora più vero nel caso degli assistenti virtuali: semplicemente con un avanzamento tecnologico negli aspetti di text to speech (TTS) o di automatic speech recognition (ASR) si otterrà un notevole miglioramento sia nella percezione dell’utente sia nella capacità del software di capire cosa è stato detto. Un altro componente che ha ancora ampi margini di miglioramento è quello legato al ragionamento. Da un lato è vero che gli attuali strumenti sono già sufficienti per un buon livello di efficacia, dall’altro lato questi strumenti sono ben lontani dall’essere in grado di sostenere un dialogo: l’efficacia attuale deriva dalle capacità lessicali e semantiche di chi ha programmato la logica e dalla sua abilità di formulare correttamente le frasi dell’assistente. Un importante ambito di ricerca – senza arrivare alla complessità di una ipotetica intelligenza artificiale – è quindi quello del rendere le varie parti di ragionamento e grammatica efficacemente riutilizzabili. Ad oggi infatti una base di conoscenza realizzata per un assistente virtuale è solo limitatamente riutilizzabile in un secondo assistente che lavori nello stesso campo, anche solo a causa delle diversità dei contesti di applicazione (i.e. cambia l’azienda). A livello di piattaforma l’attuale architettura non sta presentando limiti evidenti, anzi in molti casi viene sotto utilizzata in quanto le richieste dei clienti sono più limitate rispetto al suo pieno potenziale. Una interessante evoluzione, già in via di progettazione, è relativa alla realizzazione di un ulteriore livello di astrazione della conoscenza dell’assistente virtuale nei riguardi dell’utente. Tale livello sarà in grado di rendere disponibili i dati provenienti da svariate fonti separate integrandole in una interfaccia software uniforme.
111
Le principali fonti dati saranno da un lato la conoscenza stessa che l’assistente accumulerà nel corso dei dialoghi e dall’altro le basi dati aziendali nelle quali ogni utente è solitamente presente. Questo è comunque un ambito molto aperto e tuttora in rapida trasformazione: è difficile stimare le necessità future anche a breve termine in quanto l’adozione dello strumento potrebbe trasformare il panorama odierno, soprattutto nell’ambito del customer care.
112
9 RIFERIMENTI Agile Alliance (2001) Agile Manifesto — http://agilemanifesto.org (al 2007-10-15) — http://www.agilealliance.org (al 2007-10-15) Chomsky N. (1970) Remarks on nominalization — Jacobs
R.
e
Rosenbaum
P.
(editori)
Reading
in
English
Transformational Grammar, pp.184-221 Chomsky N. (1994) Bare Phrase Structure — MIT Occasional Papers in Linguistics, 5 Damasio R. A. (1994) L’errore di Cartesio — Adelphi (9a ed. 2007) ISBN 88-459-1181-0 Darwin C. (1872) The Expression of the Emotions in Man and Animals — Project Gutemberg http://www.gutenberg.org/etext/1227 (al 2007-10-20) Ekman P. (1999a) Facial Expressions — John Wiley & Sons (1999) Handbook of Cognition and Emotion — http://www.paulekman.com/downloadablearticles.html (al 2007-10-20) Ekman P. (1999b) Basic Emotions — John Wiley & Sons (1999) Handbook of Cognition and Emotion — http://www.paulekman.com/downloadablearticles.html (al 2007-10-20) Ekman P., Friesen W. V., Ellsworth P. (1972) Emotion in the human face: Guidelines for research and an integration of findings — New York Pergamon Press Ekman P., Friesen W. V., Hager J. C. (2002) Facial Action Coding System (FACS) — A Human Face (2002) ISBN 0-931835-01-1
113
— http://www.face-and-emotion.com/dataface/facs/manual/TOC.html
(al
2007-10-21)
Forgy C. (1974) A network match routine for production systems — Working Paper Gateway Psychiatric (2005) Mood and Emotion — http://www.gatewaypsychiatric.com/Patient%20Resources/Mood%20 Disorders%20Info/Mood%20and%20Emotion.htm (al 2007-10-20) Gladwell M. (2002) The Naked Face — The New Yorker (2002) Annal of Psychology — http://www.gladwell.com/2002/2002_08_05_a_face.htm (al 2007-10-21) Jackendoff R. (1977) X-bar-Syntax: A Study of Phrase Structure — MIT Press (1977) Linguistic Inquiry Monograph 2. Cambridge, MA. Jurafsky D., Martin J. H. (2007) Speech and Language Processing, 2nd Edition Draft — http://www.cs.colorado.edu/~martin/slp2.html (al 2007-10-17) — Prentice-Hall (1a ed. 2000) ISBN 0-13-095069-6 Koda T., Maes P. (1996) Agent with Faces: The Effects of Personification of Agents — Proceedings of HCI'96, London, UK, August 20-23. — http://agents.media.mit.edu/publications.html (al 2007-11-13) Lashkari Y., Metral M., Maes P. (1994) Collaborative Interface Agents — Proceedings of the Twelfth National Conference on Artificial Intelligence (1994) vol.1. — http://agents.media.mit.edu/publications/aaai-ymp/aaai.html
(al 2007-11-
14)
McCarthy J., Minsky M. L., Rochester N., Shannon C. E. (1955) A Proposal for the Dartmouth Summer Research Project on Artificial Intelligence — http://www-formal.stanford.edu/jmc/history/dartmouth/dartmouth.html (al 2007-10-15)
Mori M. (1970) Bukini no tani – The Uncanny Valley — Energy (1970), trad. MacDorman K. F. e Minato T.
114
— http://www.androidscience.com/theuncannyvalley/proceedings2005/u ncannyvalley.html (al 2007-10-21) Norman D. A., Ortony A., Russell D. M. (2003) Affect and machine design: Lessons for the development of autonomous machines — IBM Systems Journal (2003), n.1, vol.42 — http://www.research.ibm.com/journal/sj/421/norman.pdf (al 2007-10-21) Norman D. (2004) Emotional Design — Apogeo (1a ed. 2004) ISBN 88-503-2235-6 Picard R. (1998) Affective Computing — The MIT Press Plutchik R. (1980) A General Psychoevolutionary Theory of Emotion — Emotion: Theory, research and experience: vol.1, Theories of emotion, 3-33 Proctor R. W., Vu K. L. (2005) Handbook of Human Factors in Web Design — Lawrence Erlbaum Associates (2005) ISBN 0-8058-4612-3 Russel S, Norvig P. (1995) Artificial Intelligence: A Modern Approach — Prentice Hall (1995) SigCHI (2007) Curricula for Human-Computer Interaction — http://sigchi.org/cdg/cdg2.html#2_1 (al 2007-10-15) Sloman A. (1994) Explorations in Design Space — Proc ECAI94, 11th European Conference on Artificial Intelligence Edited by A.G.Cohn, John Wiley (1994) pp 578-582 — http://www.cs.bham.ac.uk/research/projects/cogaff/81-95.html#27 (2007-10-15)
— http://www.cs.bham.ac.uk/~axs/misc/aims-of-ai.txt (2007-10-15) Van Mulken S, Andrè E., Müller J. (1999) An empirical study on the trustworthiness of lifelike interface agents — Bullinger & Zieger (1999) Human-computer interactions (Proceedings of HCI-Inernational 1999) — http://mm-werkstatt.informatik.uniaugsburg.de/files/publications/45/hcii99vMAM.pdf (al 2007-10-21)
115
Wikipedia, Knowledge Navigator — http://en.wikipedia.org/wiki/Knowledge_Navigator (al 2007-10-14) — http://www.youtube.com/watch?v=drhgAfLFG7M (Professor, 1987) — http://www.mprove.de/uni/asi/futureshock.html (Future Shock, 1988)
116