You are on page 1of 116

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 emozioni che caratterizzano le
interazioni umane.

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 che siano attualmente utilizzabili anche
commercialmente.

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’auto-
apprendimento. 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 vero-
condizionale (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 pre-
calcolata, 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
oggetto
membro di un amico fiducia collabora mutuo supporto
gruppo
minaccia pericolo paura fuggi sicurezza

evento inatteso cos’è? sorpresa stop prendere tempo

perdita di un abbandono tristezza piangi riottenere le


oggetto risorse perse
oggetto veleno disgusto vomita elimina veleno
inassimilabile
ostacolo nemico rabbia attacca distruggere
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 di
interazioni sociali.
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, ECMAScript
(JavaScript e ActionScript) fortemente dinamici e snelli.

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 è <vamp>. 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 tag:
/vamp/sessionID, /vamp/messageID e /vamp/userID.
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 <generator> 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 <text> è 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, riguardante il messaggio veicolato da
/vamp/message/text.
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 (<text>) 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.
<vxml>) e ipertestuali (i.e. <html>).

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 tramite un secondo contenitore
/vamp/meta/choices.

Questo contenitore viene gestito in modo analogo al blocco


/vamp/message, con la differenza che vi sono due campi obbligatori
invece che uno: <id> e <text> 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
<text>.

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
<vamp>

<exml>
<sadnessjoy>90</sadnessjoy>
<disgusttrust>100</disgusttrust>
<angerfear>50</angerfear>
<surpriseexpect>20</surpriseexpect>
</exml>
</vamp>

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. Troubleshooting engine (AI)
4. Emotions engine (AI)
5. Language Generation engine (NLP)
6. 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: tuamail@gabetti.it?
User: no xyz@gabetti.it
Gabi: Allora scrivimi a quale indirizzo ti riferisci, così faccio una
segnalazione al centro IT.
User: xyz@gabetti.it
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.uni-
augsburg.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

You might also like