Sistema Esperto per l'analisi Di Una ConversazionE

53
Università degli studi di Bari “Aldo Moro” Laurea Magistrale in Informatica Intelligenza Artificiale Agenti per la comunicazione SEDUCE (Sistema Esperto per l’analisi Di Una ConversazionE) Docenti: Prof. Floriana Esposito Prof. Stefano Ferilli Prof. De Carolis Nunzio Gianfelice Matr. 585229

description

Progetto universitario di "Intelligenza Artificiale" e "Agenti per la comunicazione" svolto presso il Dipartimento di Informatica di Bari durante il corso del mio percorso universitario Magistrale.

Transcript of Sistema Esperto per l'analisi Di Una ConversazionE

Page 1: Sistema Esperto per l'analisi Di Una ConversazionE

Università degli studi di Bari “Aldo Moro”

Laurea Magistrale in Informatica

Intelligenza Artificiale

Agenti per la comunicazione

SEDUCE

(Sistema Esperto per l’analisi Di Una ConversazionE)

Docenti:

Prof. Floriana Esposito

Prof. Stefano Ferilli

Prof. De Carolis

Nunzio Gianfelice

Matr. 585229

Page 2: Sistema Esperto per l'analisi Di Una ConversazionE

Indice Obiettivo

1) Comunicazione

1.1 Un modello formale di comunicazione

1.2 I cinque assiomi della comunicazione

1.3 Comunicazione non verbale

1.4 I vari sistemi di comunicazione umana

1.4.1 Sistema paralinguistico

1.4.2 Sistema cinestesico

1.4.3 Prossemica

1.4.4 Aptica

1.5 Fattori di influenza esterna

1.5.1 Contesto fisico

1.5.2 Contesto relazionale

2) Analisi di tutti i fattori

2.1 Cosa si può capire dalla “VOCE”?

2.2 Cosa si può capire dalla “POSTURA”?

2.3 Cosa si può capire dalla “MIMICA FACCIALE”?

2.4 Cosa si può capire dai “GESTI”?

2.5 Cosa ci indicano determinate “CUE WORD”?

2.6 Cosa si può capire dal “CONTESTO RELAZIONALE”?

2.7 Cosa si può capire dal “CONTESTO FISICO”?

3)Concettualizzazione

3.1 Concettualizzazione

3.2 Concettualizzazione dei predicati

3.3 Concettualizzazione delle regole

3.4 Fatti nella base di conoscenza

3.5 Regole nella base di conoscenza

4)Sviluppo

4.1 Scelta stategia di ragionamento

4.2 Meta – interprete forward

4.3 Interfaccia grafica Java

5)Utilizzo e sperimentazione

5.1 Esperimento

6)Considerazioni e sviluppi futuri

Page 3: Sistema Esperto per l'analisi Di Una ConversazionE

Obiettivo

L’obiettivo che si pone questo progetto consiste nell’estrarre informazioni rilevanti

dall’osservazione di una conversazione tra due o più individui. L’estrazione sarà fatta basandosi

su tutti i processi comunicativi che si attivano volontariamente e involontariamente quando

ognuno di noi comunica con un’altra persona. Oltre alla comunicazione sarà presa in

considerazione l’analisi del contesto in cui si svolge la comunicazione e fattori indiretti che

influenzano in qualche maniera la stessa come ad esempio l’abbigliamento.

I dati che saranno ricavati dall’osservazione di queste conversazioni saranno dati in input ad un

sistema esperto che riuscirà a dedurre informazioni rilevanti sui partecipanti alla conversazione,

sul contesto nella quale si svolge e sul messaggio che si vuole trasmettere.

Il progetto non si pone l’obiettivo di avere una vastissima collezione d’informazioni classificate

in input da processare, ma la definizione di una struttura di regole che permetta attraverso più

passi d’inferenza di ricavare dettagli utili per la classificazione di una conversazione o

comunicazione tra due individui. Per questo verrà fatta un’ampia analisi e descrizione di tutti i

processi che si attivano durante uno scambio d’informazione e con una metodologia di sviluppo

per raffinamenti successivi (step-wise refinement; naturalmente si terrà conto che si tratta di un

S.E.) si creerà uno schema da implementare che rispecchi in maniera più concreta possibile la

circostanza reale.

Page 4: Sistema Esperto per l'analisi Di Una ConversazionE

1) Comunicazione

La comunicazione (dal latino cum = con, e munire = legare, costruire e dal

latino communico = mettere in comune, far partecipe) non è soltanto un processo di

trasmissione d’informazioni (secondo il modello di Shannon-Weaver). In italiano, il termine

"comunicazione" ha il significato semantico di "far conoscere", "rendere noto". La

comunicazione è un processo costituito da un soggetto che ha intenzione di far sì che il

ricevente riesca a percepire ciò che si vuole trasmettere.

Fig. 1 – Modello che descrive il flusso di un’informazione

Il concetto di comunicazione comporta la presenza di un’interazione tra soggetti diversi: si tratta

in altri termini di un’attività che presuppone un certo grado di cooperazione. Ogni processo

comunicativo avviene in entrambe le direzioni.

Nel processo comunicativo che vede coinvolti gli esseri umani, ci troviamo così di fronte a due

polarità: da un lato la comunicazione come atto di pura cooperazione, in cui due o più individui

"costruiscono insieme" una realtà e una verità condivisa; dall'altro la pura e semplice

trasmissione, unidirezionale, senza possibilità di replica, nelle varianti dell'imbonimento

televisivo o dei rapporti di caserma. Nel mezzo, naturalmente, vi sono le mille diverse occasioni

comunicative che tutti viviamo ogni giorno, in famiglia, a scuola, in ufficio, in città.

Page 5: Sistema Esperto per l'analisi Di Una ConversazionE

Fig. 2 – Il sistema comunicativo umano – Sociologia della comunicazione, p. 48

1.1) Un modello formale di comunicazione

Generalmente si distinguono diversi elementi che concorrono a realizzare un singolo atto

comunicativo.

� Emittente: è la persona che avvia la comunicazione attraverso un messaggio.

� Ricevente: accoglie il messaggio, lo decifra, lo interpreta e lo comprende.

� Codice: parola parlata o scritta, immagine, tono impiegata per "formare" il messaggio.

� Canale: il mezzo di propagazione fisica del codice (onde sonore o elettromagnetiche,

scrittura, bit elettronici).

� Contesto: l'”ambiente" significativo all'interno del quale si situa l'atto comunicativo.

� Referente: l'oggetto della comunicazione, cui si riferisce il messaggio.

1.2) I cinque assiomi della comunicazione

Page 6: Sistema Esperto per l'analisi Di Una ConversazionE

Gli assiomi della comunicazione furono definiti da Paul Watzlawick e altri studiosi della Scuola

di Palo Alto (California), allo scopo di identificare alcune proprietà della comunicazione, e

utilizzarle per diagnosticare alcune patologie.

Né furono individuati cinque: l'impossibilità di non comunicare; i livelli comunicativi di

contenuto e relazione; la punteggiatura della sequenza di eventi; la comunicazione numerica e

analogica; l'interazione complementare e simmetrica.

Il primo assioma dice che è impossibile non comunicare: qualsiasi interazione umana è una

forma di comunicazione. Qualunque atteggiamento assunto da un individuo, diventa

immediatamente portatore di significato per gli altri.

Il secondo stabilisce un rapporto tra il contenuto e la relazione che c’è fra i comunicanti:

secondo gli studiosi di Palo Alto il contenuto classifica la relazione. Ogni comunicazione

comporta un aspetto di ‘meta comunicazione’ che determina la relazione tra i comunicanti. Ad

esempio, la mamma che ordina al bambino di andare a fare il bagno esprime, oltre al contenuto

(la volontà che il bambino si lavi), anche la relazione che intercorre tra chi comunica e chi è

oggetto della comunicazione, nel caso particolare quella di superiore/subordinato.

Il terzo assioma evidenzia la connessione tra la punteggiatura della sequenza di comunicazione

e la relazione che intercorre tra i comunicanti: il modo di interpretare la comunicazione è in

funzione della relazione tra i comunicanti. Poiché la comunicazione è un continuo alternarsi di

flussi comunicativi da una direzione all'altra e le variazioni di direzione del flusso

comunicativo sono scandite dalla punteggiatura, il modo di leggerla sarà determinato dal tipo di

relazione che lega i comunicanti.

Il quarto assioma attribuisce agli esseri umani la capacità di comunicare sia analogicamente

sia digitalmente. Quando gli esseri umani comunicano per immagini, ad esempio disegnando,

la comunicazione è analogica. La comunicazione analogica si basa sulla somiglianza tra gli

strumenti di supporto e le grandezze rappresentate: mantiene quindi un rapporto di analogia con

i fenomeni e gli oggetti che designa e trasmette. Esempi di mezzi di comunicazione analogici

sono: il termometro a mercurio, l'orologio a lancette. Quando si comunica usando le parole, la

comunicazione segue il modulo digitale. Questo perché le parole sono segni arbitrari che

permettono una manipolazione secondo le regole della sintassi logica che li organizza. La

comunicazione digitale si basa sull'uso di segnali discreti per rappresentare in forma numerica i

fenomeni e gli oggetti che intende designare. Esempi di mezzi di comunicazione digitali sono:

il faX, il compact disc, l'orologio a cristalli liquidi (in cui l'indicazione dell'ora e delle sue

frazioni è visualizzata con scatti di cifre).

Page 7: Sistema Esperto per l'analisi Di Una ConversazionE

Il quinto assioma afferma che tutti gli scambi comunicativi si fondano o sull'uguaglianza o

sulla differenza e quindi possono essere simmetrici o complementari. Si dicono complementari

gli scambi comunicativi in cui i comunicanti non sono sullo stesso piano (mamma/bambino,

dipendente/datore di lavoro). Sono simmetrici gli scambi in cui gli interlocutori si considerano

sullo stesso piano: è questo il caso di comunicazioni tra pari grado (marito/moglie, compagni di

classe, fratelli, amici).

1.3) Comunicazione non verbale

La comunicazione non verbale è quella parte della comunicazione che comprende tutti gli

aspetti di uno scambio comunicativo che non riguardano il livello puramente semantico del

messaggio, ossia il significato letterale delle parole che compongono il messaggio stesso, ma

che riguardano il linguaggio del corpo, ossia la comunicazione non parlata tra persone.

Secondo i linguisti più del 90% della nostra comunicazione giornaliera è, infatti, non-verbale. È

quindi un contributo enorme al linguaggio verbale e, poiché la comunicazione è strettamente

ambivalente, possiamo facilmente comprendere quanto sia più grande il rischio di non capire

quando si è al telefono piuttosto che quando si parla a faccia a faccia.

Uno studio condotto nel 1972 da Albert Mehrabian ("Non-verbal communication") ha mostrato

che ciò che viene percepito in un messaggio vocale può essere così suddiviso:

� Movimenti del corpo (soprattutto espressioni facciali) 55%

� Aspetto vocale (Volume, tono, ritmo) 38%

� Aspetto verbale (parole) 7%

L’efficacia di un messaggio dipende quindi solamente in minima parte dal significato letterale

di ciò che viene detto, e il modo in cui questo messaggio viene percepito è influenzato

pesantemente dai fattori di comunicazione non verbale.

Nell'ambito delle scienze della comunicazione la comunicazione non verbale viene suddivisa in

quattro componenti:

� Sistema paralinguistico

� Sistema cinestesico

� Prossemica

� Aptica

Page 8: Sistema Esperto per l'analisi Di Una ConversazionE

1.4) I vari sistemi di comunicazione umana

c

1.4.1) Sistema paralinguistico - Voce

Detto anche Sistema vocale non verbale, indica l'insieme dei suoni emessi nella comunicazione

verbale, indipendentemente dal significato delle parole. Le caratteristiche della voce, che

comprendono il flusso verbale, il volume e il ritmo, possono rivelare sentimenti ed emozioni

quali l’ansia, la paura, l’ira, il dolore e la gioia.

Il sistema paralinguistico è caratterizzato da diversi aspetti:

Tono

Il tono viene influenzato da fattori fisiologici (età, costituzione fisica), e dal contesto: una

persona di elevato livello sociale che si trova a parlare con una di livello sociale più basso

tenderà ad avere un tono di voce più grave.

Frequenza

Anche in questo caso l'aspetto sociale ha una forte influenza: una persona che si trova a parlare

con un superiore tenderà ad avere una frequenza di voce più bassa rispetto al normale.

Ritmo

Il ritmo dato ad un discorso conferisce maggiore o minore autorevolezza alle parole

pronunciate: parlare ad un ritmo lento, inserendo delle pause tra una frase e l'altra, dà un tono di

solennità a ciò che si dice; al contrario parlare ad un ritmo elevato attribuisce poca importanza

alle parole pronunciate.

Silenzio

Anche il silenzio rappresenta una forma di comunicazione nel sistema paralinguistico, e le sue

caratteristiche possono essere fortemente ambivalenti: il silenzio tra due innamorati ha

ovviamente un significato molto diverso rispetto al silenzio tra due persone che si ignorano. Ma

anche in questo caso gli aspetti sociali e gerarchici hanno una parte fondamentale: un professore

che parla alla classe o un ufficiale che si rivolge alle truppe parleranno nel generale silenzio,

considerato una forma di rispetto per il ruolo ricoperto dalla persona che parla.

1.4.2) Sistema cinestesico – Sguardo/Espressività facciale/Gesti/Postura

Il sistema cinestesico comprende tutti gli atti comunicativi espressi dai movimenti del corpo.

Page 9: Sistema Esperto per l'analisi Di Una ConversazionE

In primo luogo vanno considerati i movimenti oculari: il contatto visivo tra due persone ha una

pluralità di significati, dal comunicare interesse al gesto di sfida. L'aspetto sociale ed il contesto

influenzano anche quest’ aspetto: una persona, in una situazione di disagio, tenderà più

facilmente del solito ad abbassare lo sguardo.

Altra componente del sistema cinestesico è la mimica facciale. Riguardo a questo aspetto va

considerato che non tutto ciò che viene comunicato tramite le espressioni del volto è sotto il

nostro controllo (ad esempio l'arrossire o l'impallidire).

Altro elemento fondamentale del sistema cinestesico sono i gesti, in primo luogo quelli

compiuti con le mani. La gestualità manuale può essere una utile sottolineatura delle parole, e

quindi rafforzarne il significato, ma anche fornire una chiave di lettura difforme dal significato

del messaggio espresso verbalmente.

Vi sono diversi tipi di gesti divisi in quattro tipi di gesti:

- Deittico: viene utilizzato per indicare un oggetto ad una persona con l’indice e con la mano

aperta;

- Iconico: viene utilizzato per raffigurare nell’aria la forma o i movimenti tipici di un

oggetto, un animale o una persona;

- Simbolico: viene utilizzato in una certa cultura per dare un significato facilmente

traducibile in frasi o parole ;

- Batonico: viene utilizzato per scandire ed enfatizzare il parlato.

Altro elemento del sistema cinestesico è la postura. Anche in questo caso gli elementi sociali e

di contesto hanno grande importanza, talvolta identificando con precisione la posizione corretta

da mantenere in una data circostanza (i militari sull’attenti di fronte ad un superiore), talvolta in

maniera meno codificata ma comunque necessaria (una postura corretta e dignitosa di un alunno

in classe di fronte al professore). L’interlocutore può essere in piedi, seduto, le gambe o le

braccia incrociate, avere una o tutte e due le mani in tasca, dietro la schiena, essere piegato in

avanti. Tutto ciò che mettiamo davanti a noi costituisce una barriera e una difesa: le braccia

conserte e/o le gambe accavallate, una borsa, un mazzo di fiori, lo schienale della sedia se ci

mettiamo seduti a cavalcioni.

1.4.3) Prossemica – Vicinanza/Lontananza

L’aspetto prossemico della comunicazione analizza i messaggi inviati con l’occupazione dello

spazio.

Page 10: Sistema Esperto per l'analisi Di Una ConversazionE

Il modo nel quale le persone tendono a disporsi in una determinata situazione, apparentemente

casuale, è in realtà codificato da regole ben precise. Ognuno di noi tende a suddividere lo spazio

che ci circonda in quattro zone principali:

� Zona intima (da 0 a 50 centimetri)

� Zona personale (da 50 cm ad 1 metro)

� Zona sociale (da 1 m a 3 o 4 m)

� Zona pubblica (oltre i 4 m)

La zona intima è, come facilmente intuibile, quella con accesso più ristretto: di norma vengono

accettati senza disagio al suo interno solo alcuni familiari stretti e il partner. Un ingresso di altre

persone esterne a questo ristretto nucleo di “ammessi” all’interno della zona intima viene

percepita come una invasione che provoca un disagio, variabile a seconda del soggetto. Come

conferma di questo basti pensare alla situazione di imbarazzo che si prova quando siamo

costretti ad ammettere nella nostra zona intima soggetti estranei, ad esempio in ascensore o

sull’autobus; la conseguenza di questa situazione è un tentativo di mostrare l’involontarietà

della nostra “invasione”, quindi si tende ad irrigidirsi e a non incrociare lo sguardo con le altre

persone.

La zona personale è meno ristretta: vi sono ammessi familiari meno stretti, amici, colleghi. In

questa zona si possono svolgere comunicazioni informali, il volume della voce può essere

mantenuto basso e la distanza è comunque sufficientemente limitata da consentire di cogliere

nel dettaglio espressioni e movimenti degli interlocutori.

La zona sociale è quell’area in cui svolgiamo tutte le attività che prevedono interazione con

persone sconosciute o poco conosciute. A questa distanza (come detto da 1 a 3 o 4 metri) è

possibile cogliere interamente o quasi la figura dell’interlocutore, cosa che ci permette di

controllarlo per capire meglio le sue intenzioni. È anche la zona nella quale si svolgono gli

incontri di tipo formale, ad esempio un incontro di affari.

La zona pubblica è quella delle occasioni ufficiali: un comizio, una conferenza, una lezione

universitaria. In questo caso la distanza tra chi parla e chi ascolta è relativamente elevata e

generalmente codificata. È caratterizzata da una forte asimmetria tra i partecipanti alla

comunicazione: generalmente una sola persona parla, mentre tutte le altre ascoltano.

1.4.4) Aptica

L’aptica è costituita dai messaggi comunicativi espressi tramite contatto fisico. Anche in questo

caso si passa da forme comunicative codificate (la stretta di mano, il bacio sulle guance come

saluto ad amici e parenti), ad altre di natura più spontanea (un abbraccio, una pacca sulla spalla).

Page 11: Sistema Esperto per l'analisi Di Una ConversazionE

L’aptica è un campo nel quale le differenze culturali rivestono un ruolo cruciale: ad esempio la

quantità di contatto fisico presente nei rapporti interpersonali fra le persone di cultura sud-

europea verrebbe considerata come una violenta forma di invadenza dai popoli nord-europei.

1.5) Fattori di influenza esterna

Considerati i vari fattori di comunicazione di una conversazione in maniera diretta, si possono

analizzare fattori di influenza esterna che non condizionano la comunicazione ma possono

aiutare a capire e disambiguare sul significato della stessa osservata da un punto di vista esterno.

Tra questi fattori, troviamo sicuramente :

- Il contesto fisico inteso come luogo in cui avviene la conversazione;

- Il contesto relazionale inteso come relazione che intercorre tra i due.

1.5.1) Contesto fisico

Il contesto fisico in cui si svolge l’interazione tra due persone può essere fondamentale per

comprendere alcune caratteristiche della comunicazione che sta avvenendo. Per esempio se

consideriamo due giovani ragazzi in un parco sicuramente possiamo ipotizzare che il loro sia un

incontro informale. Viceversa se ci troviamo in un luogo accademico magari in un ufficio di un

Professore, la possibilità che si stia svolgendo una conversazione informale si abbassa ed è

molto più probabile che la conversazione sia di tipo formale. Naturalmente oltre il luogo inteso

proprio come localizzazione dello stesso, bisogna tenere conto anche dell’ “arredamento” dello

stesso. Ci si potrebbe trovare nell’atrio dell’Università e quindi essendoci un arredamento di

panchine, piante, alberi e fontane la conversazione potrebbe essere formale come informale.

Fig. 3 – Freddo o sulle difensive?

Un altro esempio che indica l’importanza del contesto potrebbe essere rappresentato(Fig.3) da

un persona che in una fredda giornata invernale se ne sta seduto in attesa dell’autobus con le

braccia e le gambe strettamente incrociate e il mento chino. Questa postura vuole indicare che il

soggetto ha freddo più che dimostrare un atteggiamento difensivo. Se però fosse seduto a un

Page 12: Sistema Esperto per l'analisi Di Una ConversazionE

tavolo davanti a voi mentre cercate di proporgli un’idea, o di vendergli un prodotto o un

servizio, significherà quasi di sicuro che non aprrezza o rifiuta l’ offerta.

1.5.2) Contesto relazionale

Il contesto relazionale serve soprattutto a definire il rapporto di potere che intercorre tra i

soggetti coinvolti nella comunicazione. Questo contesto è desumibile da fattori quali il sesso dei

due, l’età e l’abbigliamento che usano. Riprendendo l’esempio di prima si potrebbe capire nell’

osservare due ragazzi al parco, uno di sesso maschile e uno di sesso femminile con più o meno

la stessa età che tra di loro ed entrambi con un abbigliamento sportivo che c’è una relazione di

amicizia o intima. Invece se consideriamo due soggetti di sesso opposto ma di età molto

differenti e vestiti in maniera elegante si potrà escludere la relazione intima e pensare ad una

relazione di parentela oppure di ambito lavorativo.

2) Analisi di tutti i fattori

Potendo analizzare tutti i fattori sopra elencati riusciremmo ad ottenere molteplici informazioni

dalla semplice osservazioni di una conversazione tra due persone. Si potrebbe ipotizzare

l’esistenza di una rete di sensori (uno per ogni fattore descritto) che estraggono determinate

informazioni dall’osservazione della comunicazione e passano i dati raccolti ad un sistema

esperto che gli analizza e con processi di inferenza riesce a dedurre informazioni che non sono

direttamente ottenibili dall’osservazione dei singoli dati raccolti. Uno schema riassuntivo dei

vari fattori presi in analisi in questo documento è dato dall’ immagine seguente. (Fig. 4)

Page 13: Sistema Esperto per l'analisi Di Una ConversazionE

Fig. 4 – Fattori analizzati e possibili deduzioni ottenibili

Considerando ogni categoria del precedente schema che fornisce un input rilevante al sistema

esperto che si andrà a progettare, possiamo elencare le caratteristiche che verranno prese in

esame e possiamo elencarle per categoria.

2.1) Cosa si può capire dalla “VOCE”? [4][9]

Attraverso un analizzatore di voce si potrebbero distinguere le caratteristiche di Tonalità,

Intensità, Ritmo, Pause, Velocità e di conseguenza avere in input le seguenti informazioni.

Tonalità bassa � Accettazione di sè , Estroversione

Tonalità alta � Introversione, Insicurezza

Intensità (volume) alta � Dominanza

Intensità (volume) bassa � Ansia

Ritmo veloce � Ansia

Pause poche e brevi � Estroversione

Pause lunghe � Introversione

Aumento della Tonalità, Ritmo irregolare � Emozione di paura

Tono basso, Pause lunghe, Ritmo lento � Emozione di tristezza

Tonalità acuta della voce, Intensità crescente, Ritmo accelerato � Emozione di gioia

Page 14: Sistema Esperto per l'analisi Di Una ConversazionE

Diminuzione della Velocità, Tono basso, Intensità piena � Emozione di disprezzo

2.2) Cosa si può capire dalla “POSTURA”? [8][9]

Analizzando una conversazione da un punto esterno ad essa si può notare la postura dei due

interlocutori e suddividerla principalmente quattro zone. Ognuna delle quali va a delineare il

rapporto che intercorre tra i due soggetti.

Distanza tra i soggetti :

0cm – 50cm � zona intima, familiari stretti, amici stretti, partner

50cm – 1 m �zona personale, familiari, amici, colleghi, si svolgono interazioni

informali

1m – 3 m � zona sociale, persone sconosciute o poco conosciute, incontri informali

Posizione delle gambe, braccia, ecc :

Eretto sull’attenti � posizione formale, atteggiamento neutro, superiorità di chi si ha di

fronte

Eretto a gambe divaricate(prettamente maschile) � dominazione, intenzione di non

andarsene

Eretto con il piede in avanti � indica la persona più interessante o la direzione in cui si

vuole andare

Eretto con i pollici nei pantaloni � Se dello stesso sesso aggressività reciproca,

altrimenti imposizione e interesse sessuale

Eretto a gambe incrociate � sulla difensiva, poca familiarità, chiusura

Seduto incrocio delle caviglie � trattiene un sentimento negativo, paura o incertezza

Seduto intreccio gambe(dorso piede appoggiato gamba opposta – solo femminile) �

riservata e schiva

Seduto con gamba sul bracciolo � atteggiamento informale, indifferente e distaccato

Seduto a cavalcioni di una sedia � controllare ma precauzionarsi allo stesso momento

Page 15: Sistema Esperto per l'analisi Di Una ConversazionE

Seduto e mani dietro la testa � calmo, sicuro di sé, superiorità rispetto all’altro

Palmi aperti � verità, onestà, lealtà, subordinazione

Palmi verso l’altro � non minaccioso

Palmi verso il basso � autorità

Gambe divaricate � atteggiamento aperto o dominante

Gambe chiuse � atteggiamento di chiusura o incertezza

2.3) Cosa si può capire dalla “MIMICA FACCIALE”? [1][2][6]

Questa categoria è a sua volta suddivisa in due sottocategorie. Infatti ci dovranno essere più

analizzatori per quanto riguarda il viso. Uno analizzerà lo sguardo e un altro i movimenti

facciali.

Per quanto riguarda lo sguardo avremo quattro tipologie di sguardo.

Sguardo di traverso � Interesse romantico.

Sguardo prolungato (durante un discorso) � Interesse per il discorso

Sguardo da “duro” (occhi socchiusi e pupille contratte) � Atteggiamento aggressivo e/o

minaccioso

Sguardo sfuggente � Ingannevole o non interessato

Per quanto riguarda le espressioni facciali terremo conto sopratutto del sorriso.

Sorriso forzato (non coinvolge tutta la faccia, ma solo la bocca) � finzione di gioia

Sorriso a labbra strette � vuole apparire cortese

Sorriso aperto (mostra dell’arcata dentale superiore) � Genuino e sincero, voglia di una

migliore conoscenza

2.4) Cosa si può capire dai “GESTI”? [1][8][9]

Page 16: Sistema Esperto per l'analisi Di Una ConversazionE

La branchia dei gesti è una categoria praticamente infinita. I gesti che il nostro corpo produce

sono quantificati dagli esperti in più di 10.000. Ecco perché è quasi impossibile controllare ogni

minimo movimento del nostro corpo quando si è all’interno di una conversazione, generando

cosi un canale di comunicazione involontario e molto espressivo. Per questo progetto

prenderemo in esame solo alcuni dei gesti che è possibile effettuare. Tra questi dobbiamo

suddividere i gesti effettuati con la testa o dalla testa da quelli effettuati con il corpo.

Partiamo dai primi : gesti che riguardano la testa.

Attorcigliare i capelli � Segno di nervosismo

Toccarsi i capelli con due mani (donna vs uomo)� Insicurezza nel suo aspetto fisico

Toccarsi i capelli con una mano (donna vs uomo)� Interesse romantico

Testa diritta � serietà, autorevolezza

Testa inclinata � atteggiamento amichevole e ricettivo

Scuotere la testa � disaccordo

Annuire lentamente � concorde, vuole continuare ad ascoltare

Annuire velocemente � concorde, vuole prendere la parola

Grattarsi le orecchie � mancanza di fiducia

Toccarsi il naso � nascondere qualcosa

Dilatare le narici � arrabbiato – esasperato

Arricciare il naso � disgusto

Stropicciare l’occhio � nascondere qualcosa, mentire

I gesti del nostro corpo.

Togliersi peli “immaginari” di dosso � Opinione segreta che non vuole rivelare

Mani sui fianchi e gomiti verso l’esterno � sicurezza, aggressività, predominanza

Grattarsi il collo � Incertezza, dubbio

Battito di ciglia prolungato � noia, non voler ascoltare

Indici delle mani che si uniscono � parla di una connessione, legame

Applauso � esprimere apprezzamento

Page 17: Sistema Esperto per l'analisi Di Una ConversazionE

Alzare le spalle rispetto al collo � Perplesso, incerto

Mano alta con palmo aperto verso l’interlocutore � Scusa, è colpa mia

2.5) Cosa ci indicano determinate “CUE WORDS”? (positivi /

negativi) [4]

Il linguaggio umano è composto da migliaia di parole ed in ogni discorso di media

durata ne usiamo circa alcune centinaia. Ma quante di queste incidono veramente sul

contenuto della frase? In realtà la maggior parte delle parole serve a dare un senso

grammaticalmente compiuto alla frase, ma sono solo poche quelle che contengono

davvero significato. Un esempio potrebbe essere un sms scritto di fretta in questa

maniera “arrivato. Posteggiato all’angolo” che equivale ad un sms scritto in questo

modo : “ Ehi guarda che sono arrivato e ho posteggiato vicino all’angolo di casa tua, ti

aspetto qui!”. Quattro parole in confronto di diciassette per esprimere lo stesso concetto.

Perchè della seconda frase le parole che davvero captiamo sono solamente quelle

contenute anche nella prima frase; il resto sembra un contorno irrilevante.

Anche in questo caso simuliamo di avere un dispositivo che riesca a distinguere e

classificare le varie parole che vengono pronunciate in una conversazione

classificandole o in :

Vezzeggiativi (cas -uccia, caval -uccio)� segnale di affetto positivo (enfasi o affetto)

Dispregiativi (cagnol –accio, avocat –uccio)� segnale di affetto negativo (rabbia o

disprezzo)

oppure distinguendo all’interno delle frasi parole contenute in uno di questi quattro

macro insiemi che useremo come insiemi di partenza per l’indicazione che ci proviene

dalle “cue words”

( Evviva, bene, bravo, viva, urrà, mi da gioia, mi porta allegria, che felicità, che

contentezza, che piacere, che godimento, che dolcezza, che soddisfazione, che delizia )

� felicità, positività

Page 18: Sistema Esperto per l'analisi Di Una ConversazionE

( mi vergogno, provo vergogna, mi imbarazzo, ho timore, ho soggezione ) � vergogna,

disagio

( tristemente, triste, malinconico, infelice, scontento, scoraggiato, angosciato, disperato,

addolorato, amareggiato, abbattuto, demoralizzato, depresso, a terra, umore nero, di

cattivo umore, deluso, dispiaciuto ) � giù di morale, negatività

( arrabbiato, adirato, infuriato, furioso, furibondo, irritato, imbestialito, incavolato,

mannaggia, maledizione ) � nervosismo , collera

2.6) Cosa si può capire dal “CONTESTO RELAZIONALE”?

Osservando da una certa distanza due persone che conversano tra di loro sicuramente ognuno di

noi associa involontariamente e in maniera automatica un’ “etichetta” alla relazione che potrà

intercorrere tra i due. Per esempio se osserviamo due ragazzi all’ incirca coetanei, intorno ai

diciotto anni, che camminano per strada vestiti in maniera casual potremmo sicuramente

affermare che tra di loro intercorre un rapporto di amicizia. Questa nostra deduzione si basa

sopratutto su due fattori: età e abbigliamento.

Età più o meno simili � colleghi, amici, patner

Età visibilmente differenti � la persona più anziana ha un potere di predominanza nel rispetto

della persona più giovane

Abbigliamento casual - casual � rapporto familiare o amichevole

Abbigliamento elegante – elegante � rapporto formale, colleghi di lavoro

Abbigliamento elegante – casual � incontro occasionale non previsto

2.7) Cosa si può capire dal “CONTESTO FISICO”?

Page 19: Sistema Esperto per l'analisi Di Una ConversazionE

Un fattore discriminatorio molto importante da tenere in considerazione è certamente il luogo in

cui si svolge la conversazione. Se per esempio il luogo è un ufficio di lavoro difficilmente

potremo parlare di rapporto informale. Per analizzare il luogo simuliamo l’uso del Gps che ci

segnali il posto in cui ci troviamo distinguendo i maggiori punti di conversazione:

ufficio pubblico, ufficio privato, benzinaio � formale

hotel, centro commerciale, centro di ristorazione � formale / non formale

appartamento privato, libreria, palestra, parco, pub, parrucchiere/centro estetico, stadio, centro

benessere � non formale

3) Concettualizzazione

Nella fase precedente si è riusciti a suddividere tutti i fattori di interesse che riguardano questo

progetto in “classi” di appartenenza, raggruppando i fattori stessi in base al modo in cui

vengono osservati. Inoltre è stato creato un elenco molto dettagliato delle caratteristiche

considerate e di cosa esse comportano rendendo cosi più agevole la fase di concettualizzazione e

sviluppo.

3.1) Concettualizzazione

Il processo per esprimere la conoscenza descritta precedentemente attraverso la logica viene

chiamato concettualizzazione. Attraverso la concettualizzazione si descrive il mondo nel settore

d’interesse evidenziando solo gli “oggetti” e le “caratteristiche” che si ritengano possano avere

una qualche utilità per gli scopi che ci prefiggiamo. Per questo verranno elencati i vari predicati

utilizzati in questo progetto, le costanti presenti e le funzioni che esprimono le relazioni tra i

diversi oggetti.

Inizialmente dobbiamo considerare che una conversazione è formata da due persone. Questo

concetto che di per se sarebbe inutile racchiudere in un predicato assume importanza quando lo

si scompone in sesso e età. Andando avanti con lo sviluppo dell’applicativo ci si è resi conto

che si necessitava del concetto di ‘soggetto’ che servirà in questa prima versione a disambiguare

su alcune regole e che risulterà sicuramente utile per le versioni future dell’applicazione.

Page 20: Sistema Esperto per l'analisi Di Una ConversazionE

3.2) Concettualizzazione dei predicati (concetti da rappresentare)

Per questo i primi tre predicati che si vogliono elencare serviranno proprio ad indicare il sesso

delle persone che parteciperanno alla conversazione e le persone stesse. In più sono stati creati

due concetti che servono ad avere un’indicazione sulla differenza di età se alta o bassa.

Naturalmente entrambe le informazioni saranno immesse nel sistema esperto attraverso

l’interfaccia java che si andrà ad implementare. Non sarà quindi compito del sistema esperto

andare a calcolare se le età sono simili oppure no.

soggetto(X),maschio(X), femmina(X),

eta_simili(X, Y), eta_differenti(X,Y),

Per quanto riguarda invece i predicati riguardanti la “voce” di un individuo, dopo attente

valutazioni si è deciso di rappresentarne solo alcuni elementi presenti nell’analisi precedente che

vanno a dare inidicazioni sulle caratteristiche ottenute dall’osservatore o dal sensore di

riferimento. Per esempio “tonalita_bassa(marco)” , starà ad indicare che marco usa una tonalità

bassa nel modo di esprimersi.

tonalita_bassa(X), tonalita_alta(X), volume_alto(X), volume_basso(X),

ritmo_veloce(X), ritmo_lento(X), pause_brevi(X), pause_lunghe(X)

I concetti che forniscono informazioni sulla postura, si dividono in concetti riguardanti la

distanza tra gli interlocutori e concetti riguardanti la postura intesa come posizione. Per esempio

“distanza_50_1(giovanni, pippo)” indica che giovanni e pippo stanno interagendo ad una

distanza che varia tra i 50 cm e un metro. Anche in questo caso il nome che è stato dato ai

predicati è molto esplicativo e il significato che ognuno assume è spiegato nell’analisi fatta al

capitolo precedente.

distanza_0_50 (X, Y), distanza_50_1 (X, Y), distanza_1_3 (X, Y)

eretto_attenti(X), eretto_gambe_divaricate(X),

eretto_piede_inavanti(X), eretto_pollici_pantaloni(X),

eretto_gambe_incrociate(X), seduto_incrocio_caviglie(X),

seduto_intreccio_gambe(X), seduto_gamba_bracciolo(X),

seduto_cavalcioni_sedia(X), seduto_mani_dietrotesta(X)

palmi_aperti(X), palmi_vs_laltro(X), palmi_verso_basso(X)

gambe_divaricate(X), gambe_chiuse(X)

Page 21: Sistema Esperto per l'analisi Di Una ConversazionE

La mimica facciale si compone di pochi concetti ma molto significativi. Verranno rappresentati

i 3 sguardi principali descritti precedentemente e i 3 sorrisi più indicativi. Naturalmente lo

sguardo avrà un mittente e un destinatario; per questo il predicato fa uso di due variabili. Per

esempio “sguardo_traverso(giovanni, pippo)” indicherà che Giovanni ha lo sguardo di traverso

a Pippo.

sguardo_traverso(X,Y), sguardo_prolungato(X,Y), sguardo_sfuggente(X)

sorriso_forzato(X), sorriso_labbra_strette(X),sorriso_aperto(X)

I gesti rappresentano sicuramente la parte più ampia di questo progetto, ma nonostante ciò si è

voluto ridurre la loro analisi e di conseguenza la loro rappresentazione solo a quei gesti che sono

indicativi di uno stato d’animo oppure di un messaggio nascosto trasmesso.

attorcigliare_capelli(X), toccarsi_capelli_2mani(X),

toccarsi_capelli_1mano(X), testa_diritta(X), testa_inclinata(X),

scuotere_testa(X), annuire_lentamente(X), annuire_velocemente(X),

grattarsi_orecchie(X), toccarsi_naso(X), dilatare_narici(X),

arricciare_naso(X), stropicciare_occhio(X)

togliersi_peli_didosso(X), mani_fianchi_gomiti_esterno(X),

grattarsi_collo(X), battito_ciglia_prolungato(X),

indici_mani_siuniscono(X), applauso(X), alzare_spalle_collo(X),

mano_alta_palmo_verso_interlocutore(X)

L’uso di cue words è una branca ancora in via di definizione. Questi concetti che andremo ad

elencare come anche la fase di analisi si basano molto sulle linee guida estrapolate dall’ articolo

pubblicato dalla Dott. Isabella Poggi [4]. I primi due stanno ad indicare che una persona ha

usato nelle sue frasi vezzeggiativi o dispregiativi. Gli altri invece si rifanno all’uso di parole

positive, negative, di vergogna oppure di nervosismo da parte di un soggetto ‘X’. Per ogni

‘significato’ di quest’ultimi quattro concetti sono stati prodotti dei gruppi di parole in fase di

analisi, che verranno usati per asserire questi predicati dandoli in input al sistema esperto.

Questo compito di riconoscimento verrà svolto dal programma che si trova dall’altra parte del

middleware java. Gli elenchi per esteso sono riportati nel secondo capitolo di questo progetto.

uso_vezzeggiativi(X), uso_dispregiativi(X), parole_positive(X),

parole_vergogna(X), parole_negative(X), parole_nervosismo(X)

Anche se in maniera non ufficiale durante l’analisi ci si è imbattuti in delle letture che parlavano

di quanto il contesto relazionale e il contesto fisico siano fattori discriminatori per

l’assegnazione di etichette sociali a due persone che stanno conversando tra di loro. Per questo

si è deciso di prendere comunque in considerazione le informazioni ottenute cosi da non

Page 22: Sistema Esperto per l'analisi Di Una ConversazionE

escludere i due ambiti. Per quanto riguarda il contesto relazionale, oltre all’ età, già analizzata in

precedenza si considera l’abbigliamento che dovrà essere casual o elegante per fornire qualche

aiuto nella deduzione. In più si elencano solo i luoghi che sono o del tutto formali o del tutto

informali. Gli ibridi per questione di praticità non verranno considerati in questo progetto.

abbigliamento_casual(X), abbigliamento_elegante(X)

ufficio_pubblico, ufficio_privato, benzinaio, hotel,

centro_commerciale, centro_ristorazione, appartamento_privato,

libreria, palestra, parco, pub, centro_estetico, stadio

3.3) Concettualizzazione delle regole (funzioni e relazioni sui

concetti)

Regole per verificare se una conversazione è cooperativa/competitiva.

Si sono definite delle regole per determinare che un individuo “X” sia cooperativo o

competitivo (concetti intermedi) e con che livello (in base alla percentuale di incisione calcolata

da Albert Mehrabian). Si noti che queste regole sono composte da una sintassi composta da

cooperativa_xx e competitivo_xx. Il numero che è compreso nel nome dei due predicati sta ad

indicare con che percentuale l’individuo è predisposto alla cooperatività oppure con che

percentuale è predisposto ad essere competitivo. Per questo, questi predicati non sono

mutualmente esclusivi tra di loro; anzi il verificarsi di due dei seguenti predicati porta ad avere

la definizione in uno dei livelli (poco, abb. , molto) definiti più avanti con delle altre regole.

cooperativa_38(X) :- tonalita_bassa(X),pause_brevi (X)

cooperativa_55(X) :- palmi_aperti(X), gambe_divaricate(X)

cooperativa_55(X) :- palmi_vs_laltro(X)

competitivo_38(X) :- volume_alto(X)

competitivo_55(X) :- eretto_pollici_pantaloni(X), maschio(X), maschio

(Y)

competitivo_55(X) :- seduto_cavalcioni_sedia(X)

competitivo_55(X) :- seduto_intreccio_gambe(X), femmina (X)

Page 23: Sistema Esperto per l'analisi Di Una ConversazionE

e poi sei regole generali per definire il livello di cooperatività o competività tra gli individui. Per

questo si è voluto definire degli stati per il tipo di cooperatività o competitività che possono

variare tra poco, abbastanza, molto .

conv_poco_cooperativa(X,Y) :- cooperativa_38(X), cooperativa_38(Y)

conv_abbastanza_cooperativa(X,Y) :- cooperativa_55(X),

cooperativa_38(Y)

conv_molto_cooperativa(X,Y):-

cooperativa_55(X),cooperativa_55(Y),conv_poco_cooperativa(X,Y)

conv_poco_competitiva(X,Y) :- competitivo_38(X), competitivo_38(Y)

conv_abbastanza_competitiva(X,Y) :- competitivo_55(X),

competitivo_38(Y)

conv_molto_competitiva(X,Y) :- competitivo_55(X), competitivo_55(Y)

Il ruolo di potere che intercorre tra due persone in una conversazione, è dato principalmente da

uno stato di “Insicurezza” da parte di un soggetto e dalla voglia di “Dominazione” dell’altro

soggetto. Per questo si sono create queste regole che asseriscono che un soggetto ‘X’ sia

insicuro oppure sia dominante.

insicurezza (X) :- tonalita_alta(X)

insicurezza(X) :- volume_basso(X)

insicurezza (X) :- eretto_attenti(X)

insicurezza(X) :- seduto_incrocio_caviglie(X)

insicurezza(X) :- gambe_chiuse(X)

insicurezza(X) :- grattarsi_collo(X)

insicurezza(X) :- alzare_spalle_collo(X)

dominanza(X) :- volume_alto(X)

dominanza(X) :- eretto_gambe_divaricate(X)

dominanza(X) :- seduto_cavalcioni_sedia(X)

dominanza(X) :- seduto_mani_dietrotesta(X)

dominanza(X) :- gambe_divaricate(X)

dominanza(X) :- palmi_verso_basso(X)

dominanza(X) :- mani_fianchi_gomiti_esterno(X)

Page 24: Sistema Esperto per l'analisi Di Una ConversazionE

Se in una conversazione tra due individui ‘X’ e ‘Y’ si asserisce per il primo uno stato di

“Insicurezza” e per il secondo uno stato di “Dominanza” si viene a creare una relazione di

“Sottomissione” che fa scattare la seguente regola. In caso si creino due situazioni di

sottomissione in cui entrambi gli individui cercano di sottomettere l’altro allora scatta la regola

“entrambi_dominanti”.

sottomesso (X, Y) :- insicurezza(X), dominanza(Y)

entrambi_dominanti(X, Y) :- sottomesso(X,Y), sottomesso(Y,X)

Pensando anche ad un evoluzione del progetto si è voluto dividire questo ambito tra: regole che

rappresentano la formalità/informalità in termini di distanza tra i soggetti; regole che usano

come fattore discriminatorio il luogo; e regole generali (al momento solo due ma in futuro

potranno essere ampliate) che definiscono la formalità e informalità di una persona nel modo di

comportarsi.

informale_dis(X,Y) :- distanza_0_50 (X, Y)

informale_dis(X,Y) :- distanza_50_1 (X,Y)

formale_dis(X,Y) :- distanza_1_3(X,Y)

formale_luo (X,Y) :- ufficio_pubblico

formale_luo (X,Y) :- ufficio_privato

formale_luo (X,Y) :- benzinaio

informale_luo(X,Y) :- appartamento_privato

informale_luo(X,Y) :- libreria

informale_luo(X,Y) :- palestra

informale_luo(X,Y) :- parco

informale_luo(X,Y) :- pub

informale_luo(X,Y) :- centro_estetico

informale_luo(X,Y) :- stadio

formale (X) :- eretto_attenti(X)

informale (X) :- seduto_gamba_bracciolo (X)

Una volta assodato che un soggetto sia formale/informale si possono anche qui definire dei

livelli di formalità/informalità suddivisi in poco , abbastanza e molto. Questi livelli saranno

determinati dai vari predicati che saranno dedotti attraverso le regole precedenti.

Page 25: Sistema Esperto per l'analisi Di Una ConversazionE

conv_poco_formale(X,Y) :- formale_luo(X,Y), informale_dis(X,Y)

conv_poco_formale(X,Y) :- formale_luo(X,Y), informale (_)

conv_abb_formale(X,Y) :- formale_luo(X,Y), formale(_)

conv_abb_formale(X,Y) :- altro_luogo, formale(_), formale_dis(X,Y)

conv_molto_formale(X,Y) :- formale_luo(X,Y), formale_dis(X,Y)

conv_molto_formale(X,Y) :- formale_luo(X,Y), formale(X), formale(Y)

conv_poco_informale(X,Y) :- informale_luo(X,Y), formale_dis(X,Y)

conv_poco_informale(X,Y) :- informale_luo(X,Y), formale(X)

conv_abb_informale(X,Y) :- informale_luo(X,Y), informale (_)

conv_abb_informale(X,Y) :- altro_luogo, informale (_),

informale_dis(X,Y)

conv_molto_informale(X,Y) :- informale_luo(X,Y), informale_dis(X,Y)

conv_molto_informale(X,Y) :- informale_luo(X,Y), informale(X),

informale(Y)

Di seguito vengono elencate tutte le regole che governano la parte dei messaggi non verbali

trasmessi e dell’interesse dei soggetti in una conversazione. Si è voluto unire queste due branche

per la loro forte connessione e allo stesso tempo indipendenza nel dare informazioni utili. Tutti i

predicati descritti di seguito sono formati da un nome esplicativo che ne fa capire subito il

signficato.

intenzione_non_andarsene(X) :- eretto_gambe_divaricate(X), maschio(X)

persona_interessante_avanti(X) :- eretto_piede_inavanti(X)

interesse_sessuale(X,Y) :- eretto_pollici_pantaloni(X), maschio(X),

femmina(Y)

sulla_difensiva (X) :- eretto_gambe_incrociate(X)

nervosismo(X) :- attorcigliare_capelli(X)

insicura_aspetto_fisico(X,Y) :- femmina(X),

toccarsi_capelli_2mani(X),maschio(Y)

interesse_romantico(X,Y) :- femmina(X), toccarsi_capelli_1mano(X),

maschio(Y)

disaccordo(X) :- scuotere_testa(X)

Page 26: Sistema Esperto per l'analisi Di Una ConversazionE

concorde_vuole_parlare(X) :- annuire_velocemente(X)

concorde_vuole_ascoltare(X) :- annuire_lentamente(X)

mancanza_fiducia(X) :- grattarsi_orecchie(X)

nascondere_qualcosa(X) :- toccarsi_naso(X)

nascondere_qualcosa(X) :- stropicciare_occhio(X)

opnione_segreta(X) :- togliersi_peli_didosso(X)

non_voler_ascoltare(X) :- battito_ciglia_prolungato(X)

apprezzamento(X) :- applauso(X)

arrabbiato(X) :- dilatare_narici(X)

disgusto(X) :- arricciare_naso(X)

scusarsi(X) :- mano_alta_palmo_verso_interlocutore(X)

interesse_romantico(X,Y) :- sguardo_traverso (X, Y)

non_interessato(X) :- sguardo_sfuggente(X)

interesse_discorso(X,Y) :- sguardo_prolungato(X,Y)

vuole_apparire_cortese(X) :- sorriso_labbra_strette(X)

finge_gioia(X) :- sorriso_forzato(X)

sincero (X) :- sorriso_aperto(X)

In ultimo ci sono le regole per la definizione della relazione che intercorre tra i due soggetti

osservati e lo stato d’animo che coinvolge gli stessi. Anche in questo caso si sono definiti degli

stati per quanto riguarda la relazione che intercorre tra i soggetti ed essi sono :

Familiare/Amichevole, Amichevole, Sconosciuto. La definizione dei concetti intermedi è

formata da dei predicati seguiti dalla tipologia di fattore da cui derivano. Per esempio

‘familiare_dist’ significa che hanno un rapporto familiare se calcolato in base alla distanza.

Naturalmente questi sono solo concetti intermedi che andranno a far attivare o meno concetti

finali quali ‘familiare(X,Y), amichevole(X,Y) e sconosciuti(X,Y)’.

familiare_dist (X,Y):- distanza_0_50 (X, Y)

amichevole_dist (X,Y) :- distanza_50_1 (X,Y)

sconosciuti_dist (X,Y) :- distanza_1_3 (X,Y)

amichevole_eta (X,Y) :- eta_simili(X,Y)

familiare_abbigliamento(X,Y):- abbigliamento_casual(X),

abbigliamento_casual(Y)

Page 27: Sistema Esperto per l'analisi Di Una ConversazionE

amichevole_abbigliamento(X,Y) :- abbigliamento_elegante(X),

abbigliamento_elegante(Y)

sconosciuti_abbigliamento(X,Y) :- abbigliamento_elegante(X),

abbigliamento_casual(Y)

familiare(X,Y) :- familiare_55(X,Y), familiare_10(X,Y)

amichevole(X,Y) :-amichevole_55(X,Y), amichevole_10(X,Y)

amichevole(X,Y) :- familiare_55(X,Y), amichevole_10(X,Y)

amichevole(X,Y) :- amichevole_55(X,Y), familiare_10(X,Y)

sconosciuti(X,Y) :- sconosciuti_55(X,Y), amichevole_10(X,Y)

sconosciuti(X,Y) :- sconosciuti_55(X,Y), sconosciuti_10(X,Y)

enfasi_positiva (X) :- uso_vezzeggiativi(X)

enfasi_negativa (X) :- uso_dispregiativi (X)

positività (X) :- parole_positive(X)

disagio(X) :- parole_vergona(X)

negatività(X) :- parole_negative(X)

collera(X) :- parole_nervosismo(X)

3.4) Fatti nella base di conoscenza

Nella fase di concettualizzazioni sono stati individuati ed esplicitati tutti i “concetti chiave” che

permettono di descrivere e disambiguare ciascun rappresentazione del contesto dall’altra. Questi

concetti però devono essere rappresentati in modo da poter essere utilizzati dal motore

inferenziale che si è sviluppato.

Perciò ogni fatto asserito o comunque gestito dal sistema esperto in questione sarà rappresentato

secondo la sintassi:

fatto(predicato da asserire).

Page 28: Sistema Esperto per l'analisi Di Una ConversazionE

dove predicato da asserire verrà sostituito con il predicato che si vorrà asserire e quindi

aggiungere alla base di conoscenza del sistema esperto.

Per esemplificare il concetto precedentemente descritto riporto un esempio con un predicato

sopra elencati. Se l’osservatore che inserisce i dati nel sistema esperto osserva che Giovanni ha

la tonalità di voce bassa lo comunicherà all’interfaccia grafica che attraverso la regola che

gestisce le asserzioni (“asseriscifact”) andrà ad eseguire la query

“assert(fatto(tonalita_bassa(giovanni)))”.

Per fare ciò si è andato a definire un nuovo predicato “asseriscifact” il cui funzionamento è

esplicitato nel paragrafo riguardante il motore inferenziale.

3.5) Regole nella base di conoscenza

Per quanto riguarda le regole che inferiscono conoscenza dai fatti, anche loro sono state

rappresentate seguendo una struttura sintattica rigida che ha permesso poi alle regole di

inferenza di utilizzare le stese. La sintassi con cui si è voluto rappresentare le regole è la

seguente :

regola([LHS]) :- [RHS].

dove la parte LHS rappresenta la parte sinistra della regola e RHS la parte destra da verificare.

Si è voluto aggiungere il tag regola poichè si è ritenuto utile distinguere sintatticamente le

regole dai fatti che in linguaggio Prolog (liguaggio usato per lo sviluppo del sistema esperto)

corrispondono a regole senza parte destra.

tonalita_bassa(giovanni). �� tonalita_bassa(giovanni):- TRUE.

Questa scelta verrà compresa meglio nel prossimo capitolo dove verrà spiegato la progettazione

e lo sviluppo del meta-interprete prolog. In più si può notare che sia la parte destra, sia la parte

sinistra (escluso il tag regola) sono racchiusi tra parentesi quadre. Le parentesi quadre nel

linguaggio prolog sono sinonimo di liste, che si è scelto di usare per poter avere una maggiore

manegevolezza delle regole e dei fatti durante l’implementazione del motore inferenziale.

Volendo fare un esempio contestuale all’esempio precedente una regola del sistema esperto

sulla tonalità bassa di una determinata persona è :

regola([fatto(cooperativa_38(X))]) :- [fatto(tonalita_bassa(X))),(fatto(pause_brevi(X))].

Page 29: Sistema Esperto per l'analisi Di Una ConversazionE

dove X è una variabile che rappresenta il nome del soggetto in questione.

4) Sviluppo

Questo progetto mira a creare un sistema esperto che riesca, date varie informazioni in input su

una conversazione, a dedurre informazioni nascoste in maniera implicita nello scambio

comunicazionale che sta avvenendo. Questo fa in modo che il sistema ragioni su questi dati a

prescindere dalla loro provenienza.

In questo progetto, come già detto precedentemente, i dati non proveranno dai vari sensori reali

ma essi verranno simulati attraverso un’ interfaccia grafica che permetterà ad un osservatore di

svolgere il lavoro dei vari sensori e quindi di catturare dati e immetterli nel sistema esperto.

Questa scelta è dovuta al fatto che non si dispone di molti dei sensori che servono alla

rilevazione dei dati di input; piuttosto mira a creare uno strato di separazione (un middleware)

tra il sistema esperto e l’ acquisizione dei dati di input. Infatti in futuro si potrà agevolmente

sostituire l’ interfaccia grafica con dati che provengono direttamente dai sensori predisposti. I

sensori invieranno i dati ad un middleware JAVA che dopo averli standardizzati e raffinati li

darà in pasto al motore inferenziale ottenendo lo stesso risultato che si consegue attraverso l’

uso dell’ interfaccia grafica. Di seguito troviamo lo schema di funzionamento del sistema,

astratto in maniera tale che si capiscano tutti i meccanismi coinvolti.

Page 30: Sistema Esperto per l'analisi Di Una ConversazionE

Fig.5 - Schema funzionale del sistema

4.1) Scelta strategia di ragionamento

Un sistema esperto è un sistema in grado di risolvere problemi in un dominio limitato, ma con

prestazioni simili a quelle di un esperto umano del dominio stesso. Da un lato, quindi, ci si

limita a considerare domini limitati e particolari classi di problemi, dall’altro ci si pone come

obbiettivo il raggiungimento di prestazioni comparabili con quelle di un esperto. Un sistema

esperto può essere caratterizzato dalle seguenti proprietà :

- Rappresentazione esplicita della conoscenza. La conoscenza sul dominio è rappresentata

in modo esplicito all’interno del sistema e non codificata in algoritmi di risoluzione o in

funzioni euristiche;

- Meccanismi di ragionamento. Tali meccanismi devono essere definiti in modo preciso,

tendendo conto del particoare tipo di problema che si vuole risolvere.

Si può affermare con certezza che ogni sistema esperto necessita di una specializzazione del

ragionamento per il proprio dominio. Uno dei modi più frequenti per rappresentare la base di

conoscenza e il ragionamento dei sistemi esperti è quello dei sistemi a regolo di produzione.

Un sistema a regole di produzione è costituito da tre componenti fondamentali:

- Base di conoscenza a regole (in cui sono contenute le regole di produzione;

- Memoria di lavoro (memoria a breve termine, in cui sono contenuti i dati e le

conclusioni raggiunte dal sistema);

- Motore inferenziale ( che sceglie quale regola di produzione è applicabile sul contenuto

della memoria di lavoro).

La strategia con cui le regole vengono applicate dipende dai dati del particolare problema da

risolvere; in particolare, ci sono due alternative fondamentali nel definire la stategia di controllo

per l’uso delle regole:

- Forward : detto anche controllo guidato dai dati (data-driven), in questo caso sono i

dati che controllano il sistema e le regole che vengono attivate;

- Backward: detto anche controllo guidato dal goal (goal-driven), in questo caso la

memoria di lavoro contiene l’obiettivo che si vuole raggiungere e il processo di

ragionamento corrisponde alla dimostrazione dell’obiettivo.

Questo progetto è sviluppato nel liguaggio Prolog (PROgrammation en LOGique) un linguaggio

di programmazione che adotta il paradigma di programmazione logica. Vi è una notevole

Page 31: Sistema Esperto per l'analisi Di Una ConversazionE

similitudine tra i sistemi a regole di produzione e il Prolog. Infatti può essere visto come un

stistema a regole di produzione in cui:

- Le clausole Prolog corrispondono alle regole di produzione;

- Le asserzioni Prolog corrispondono ai fatti;

- Il database Prolog corrisponde alla memoria di lavoro e alla base di conoscenza;

- L’interprete Prolog corrisponde al motore inferenziale (basato su una strategia

backward).

La strategia di ragionamento che si è scelto di implementare considerato il dominio applicativo

del sistema esperto che si è andato a produrre è la strategia Forward. Questa scelta è dovuta al

fatto che il sistema esperto non andrà a rispondere a quesiti di tipo “solve(GOAL) ?” , ma dati

una serie di “fatti” in ingresso dall’osservatore che utilizzerà l’applicativo dovrà dedurre

informazioni aggiuntive sulla situazione che si sta osservando. Questo è un tipico approcio

data-driven.

4.2) Meta - interprete forward

Il toolkit scelto per lo sviluppo del sistema esperto è l’ambiente SWI-Prolog. La scelta è stata

vincolata dal fatto che quest’ambiente si adatta bene con la libreria jpl, che permette un’

interazione con il linguaggio Java cosi da permettere l’integrazione del sistema esperto con

qualunque altro sistema. In questo progetto è stato fondamentale l’integrazione con Java per la

parte di sviluppo dell’interfaccia grafica che è stata interamente sviluppata in linguaggio Java

con ambiente NetBeans. In futuro l’integrazione con Java potrà permettere di sostituire man

mano l’input manuale dei dati con degli input provenienti direttamente da sistemi automatizzati.

La regola con cui far partire l’iterazione che applica le regole che ‘matchano’ sui dati che si

sono asseriti è la regola interpreta cosi strutturata:

interpreta(HEAD):-

clause(regola(HEAD),BODY),

verifica(BODY),

Page 32: Sistema Esperto per l'analisi Di Una ConversazionE

asserisci(HEAD),

deduzione(HEAD,BODY).

Iniziamo a descrivere la regola dalla sua ‘testa’. Si è scelto di inserire la variabile HEAD, poichè

il prolog in questa maniera ci restituirà tutte le possibili soluzioni per quella variabile che

vengano soddisfatte dalle clausole presenti nella parte del ‘corpo’. In caso non si fossero avuti

parametri la regola avrebbe interpretato non più tutti i risultati ma solamente il primo che

soddisfacesse la stessa, non realizzando l’effetto desiderato.

Cosi facendo la regola interpreta viene considerata per tutte le (regola(HEAD),BODY) presenti

nella base di conoscenza. Queste regole vengono considerate attraverso la condizione

clause(regola(HEAD),BODY).

Il predicato ‘clause’ in prolog estrae dalla memoria tutti i predicati aventi una determinata testa.

L’ unico vincono di questo predicato è che la testa non può essere interamente una variabile. Per

questo motivo si è scelto di definire le regole secondo la struttura

regola([LHS]) :- [RHS].

cosi da poter usare il predicato ‘clause’ specificando solamente il path “regola”. In questo modo

si può evitare di coinvolgere i fatti che non verranno considerati da questa prima condizione per

una mancanza di match sulla parte sinistra delle regole. La seconda possibilità di implementare

una strategia di forward poteva essere la definizione di un operatore ‘==>’ e la definizione delle

regole nel formato “ regola ID : [condizione1,condizione2,..] ==> [azione1,azione2,..] “ e di un

meta interprete che gestisse queste regole come nel forward puro.

Si è scelto di implementare la prima strategia per mantenere una linea di ‘ibridità’ tra il forward

e il backward, dato che le regole sono rappresentate comunque nel formato classico del prolog

(che implementa il backward) ma vengono trattate come forward da questo motore inferenziale

che si è andato a costruire. Questo da possibilità a futuri scenari in cui vengano implementate

entrambe le strategie usando la stessa struttura che si è andata a definire per fatti e regole.

La condizione

verifica(BODY)

Page 33: Sistema Esperto per l'analisi Di Una ConversazionE

verifica che i predicati presenti nella parte destra della regola siano veri e in caso positivo passa

alla condizione successiva

asserisci(HEAD)

la quale provvederà ad inserire la HEAD nella memoria a breve termine. Ricordiamoci che la

HEAD in questione sarà una lista con la seguente sintassi “[fatto(predicato da asserire)]”. Una

volta asserito il fatto in questione andiamo a tracciare la deduzione avvenuta richiamando il

predicato

deduzione(HEAD,BODY)

il quale permette di tenere traccia della deduzione avvenuta, cosi da poter essere riutilizzato

nella fase di spiegazione del perchè.

In pratica la regola rappresentata attravero la sintassi “regola([HEAD]) :- [BODY]” può essere

vista come un ragionamento forward equivalente a

SE (BODY) ALLORA (HEAD) oppure più simbolicamente BODY ==> HEAD.

Il predicato “verifica(BODY)” è un predicato che permette di verificare che il BODY di una

regola sia vero o falso. Naturalmente bisogna tener presente che il BODY sarà una lista di fatti e

per questo motivo questo predicato è stato definito in maniera ricorsiva cosi da poter analizzare

ogni singolo elemento della lista.

verifica([A|B]):- call(A), verifica(B).

La rappresentazione della lista nel formato [A|B] permette di splittare la lista in due parti: la

variabile A prenderà il valore del primo elemento della lista; la variabile B sarà a sua volta una

lista contenente tutti gli elementi meno il primo (cioè la lista originaria tagliata della testa).

Il predicato di meta-livello predefinto del prolog “call(A)” richiede all’interprete la

dimostrazione di A. Se la valutazione del goal A da parte dell’interprete prolog è positiva il

predicato in questione assume il valore vero, altrimenti fallisce. La ricorsione continua

attraverso la condizione “verifica(B)” , che richiama la stessa regola ma passandogli la lista

privata della propria testa che è stata già analizzata dal predicato call(A). La ricorsione finisce

Page 34: Sistema Esperto per l'analisi Di Una ConversazionE

quando la lista rimanente (B) è una lista vuota. A sto punto “verifica(B)” cercherà se esiste un

“verifica([])” tra le parti sinistre delle regole e in caso negativo fallirà. Per questo, per

concludere la ricorsione in maniera positiva in caso si siano verificati tutti i fatti e la lista sia

diventata vuota si è aggiunto il predicato (senza corpo)

verifica([]).

che permette di far diventare vera anche l’ultima condizione della ricorsione cosi da rendere il

predicato iniziale “verifica(BODY)” TRUE.

Per il predicato “asserisci(HEAD)” si è fatto lo stesso ragionamento appena descritto. Anche

HEAD è una lista e i fatti contenuti al suo interno vanno asseriti singolarmente. Per questo la

soluzione ricorsiva è stata adottata anche in questo caso.

asserisci([A|B]):- asserisci(B), not(A), asserta(A).

asserisci([]).

Unica differenza con il predicato verifica è che il predicato asserisci si accerta di non avere già

quel fatto che sta per asserire nella memoria di lavoro evitando quindi di duplicare le

informazioni. Quindi prima di asserire il fatto e iniziare la ricorsione con la lista decapitata c’è

la condizione “not(A)” che restituisce vero se A non è presente nella memoria, falso altrimenti.

Anche la posizione in cui è posizionato il “not(A)” è strategica. Infatti facendo l’ipotesi di avere

3 elementi all’interno della lista da asserire e che l’elemento centrale sia già presente nella

memoria di lavoro,se il “not(A)” fosse stata la prima condizione si sarebbe avuto l’effetto di

poter asserire solamente il primo fatto della lista, perchè il secondo not(A) sarebbe fallito e non

avrebbe avanzato la ricorsione andando a considerare il terzo elemento. Invece in questa

maniera la ricorsione è il primo elemento che viene richiamato, cosi da dare a tutti la possibilità

di essere immessi nella memoria di lavoro. Poi attraverso la strategia di backtracking ogni

asserzione sarebbe stata valutata al suo livello e in caso positivo aggiunta in memoria altrimenti

scartata.

Collegato a questo predicato ne è stato definito un altro per asserire fatti singoli. Il predicato è

“asseriscifact(A)” ed è utile sopratutto per i richiami da interfaccia grafica in cui un osservatore

inserisce i fatti che osserva nella base di conoscenza. E’ stato necessario definirlo sopratutto

perchè il precedente “asserisci([A|B])” era compatibile con il tipo lista, cosa che qui era inutile

creare dato che l’immissione nella memoria avviene un fatto per volta.

Page 35: Sistema Esperto per l'analisi Di Una ConversazionE

Un altro predicato creato è

deduzione(HEAD,BODY)

che serve a memorizzare tutte le regole utilizzate fino a quel momento, cosi da poter

implementare la funzionalità di spiegazione di come sono stati dedotti alcuni fatti nella base di

conoscenza. Questo semplice predicato in realtà non fa altro che asserire un nuovo

(sintatticamente parlando) tipo di fatto con la seguente sintassi

dimostrato([ lista fatti dedotti][lista fatti da cui è partita la deduzione])

cosi da avere in memoria la regola applicata per dedurre quel fatto. Questo predicato viene

richiamato attraverso l’interfaccia grafica quando si usa la funzionalità di spiegazione.

E’ stato sviluppato un metodo di spiegazione anche per l’uso del sistema non da interfaccia

grafica, dove viene richiamato il predicato “spiega(GOAL)” che attraverso dei passi di

ricorsione spiega tutto l’albero che è stato percorso per asserire quel GOAL. Associato a questo

naturalmente è stato creato anche un predicato di stampa, per stampare le liste di fatti contenuti

nei vari “dimostrato” e avere anche un format testuale per la facile lettura della spiegazione.

spiega(GOAL)

:-

dimostrato(GOAL,REGOLE),!, stampa(GOAL), write('dedotto'), write('dai fatti:') , stampa(REGOLE),nl,spiegare(REGOLE).

spiegare([R1|L]):- spiega([R1]), spiegare(L).

spiegare([]):- write(' asserito dall osservatore').

stampa([R1|L]) :- write(R1),write(' '), stampa(L).

stampa([]).

Per creare anche una tipologia di spiegazione che spiegasse il goal ottenuto non solo sotto forma

di regole e predicati da cui è stato dedotto ma anche in maniera descrittiva, si sono creati dei

nuovi predicati che hanno la funzione di esplicitare il concetto racchiuso nel predicato. Questa

esigenza è venuta fuori dopo un paio di test con gli utenti che si sono effettuati per testare

l’usabilità del sistema. I concetti di spiegazione hanno la seguente forma e ne è stato definito

uno per ogni concetto che sia intermedio o finale. Non sono stati definiti i concetti iniziali dato

che essendo inseriti dall’utente attaverso interfaccia grafica hanno già una facile comprensione.

Page 36: Sistema Esperto per l'analisi Di Una ConversazionE

La sintassi del predicato di spiegazione è

spiegazione(fatto(...(..)),’ descrizione informale del concetto’).

e questo predicato viene richiamato direttamente dall’interfaccia grafica attraverso una

Query (spiegata nel paragrafo successivo) che ne permette la visualizzazione nella GUI

costruita. L’elenco dei fatti di spiegazione è il seguente:

spiegazione(fatto(cooperativa_38(_)),'il livello di cooperatività da parte del soggetto è al 38 percento. _ Questa percentuale(bassa) è data dalla tipologia dei fatti da cui è stato dedotto.').

spiegazione(fatto(cooperativa_55(_)),'il livello di cooperatività da parte del soggetto è al 55 percento. _ Questa percentuale(medio alta) è data dalla tipologia dei fatti da cui è stato dedotto.').

spiegazione(fatto(competitivo_38(_)),'il livello di competitività da parte del soggetto è al 38 percento. _ Questa percentuale(bassa) è data dalla tipologia dei fatti da cui è stato dedotto.').

spiegazione(fatto(competitiva_55(_)),'il livello di competitività da parte del soggetto è al 55 percento. _ Questa percentuale(medio alta) è data dalla tipologia dei fatti da cui è stato dedotto.').

spiegazione(fatto(conv_poco_cooperativa(_,_)),'la conversazione tra i due soggetti è poco cooperativa. _ Questo lo si capisce dal fatto che i due soggetti a loro volta danno solo segnali di bassa cooperatività.').

spiegazione(fatto(conv_abbastanza_cooperativa(_,_)),'la conversazione tra i due soggetti è abbastanza cooperativa. _ Questo lo si capisce dal fatto che uno dei due soggetti è più propenso alla cooperazione.').

spiegazione(fatto(conv_molto_cooperativa(_,_)),'la conversazione tra i due soggetti è molto cooperativa. _ Entrambi i soggetti presentano sintomi di buona cooperazione.').

spiegazione(fatto(conv_poco_competitiva(_,_)),'la conversazione tra i due soggetti sembra diventare competitiva. _ Questo lo si capisce dal fatto che i due soggetti a loro volta danno piccoli segnali si competitività.').

spiegazione(fatto(conv_abbastanza_competitiva(_,_)),'la conversazione tra i due soggetti è competitiva. _ Questo lo si capisce dal fatto che entrambi danno segnali di competitività.').

spiegazione(fatto(conv_molto_competitiva(_,_)),'la conversazione tra i due soggetti è molto competitiva. _ Entrambi i soggetti presentano sintomi di alta competitività.').

spiegazione(fatto(insicurezza(_)),'il soggetto si sente insicuro e/o non si trova a proprio agio nella conversazione. _ Comunicando segnali di insicurezza.').

spiegazione(fatto(dominanza(_)),'il soggetto comunica segnali di dominanza. _ La maggior parte delle volte sono intrinsechi nel modo naturale di comportarsi.').

Page 37: Sistema Esperto per l'analisi Di Una ConversazionE

spiegazione(fatto(sottomesso(_,_)),'il primo soggetto(in parentesi) è in una situazione di sottomissione da parte del secondo soggetto.').

spiegazione(fatto(entrambi_dominanti(_,_)),'entrambi cercano di porsi in una situazione di dominanza rispetto all altro.').

spiegazione(fatto(informale_dis(_,_)),'la distanza tra i soggetti è definita informale perchè si è nel raggio _ della zona personale o intima aperta di solito a familiari,amici o colleghi.').

spiegazione(fatto(formale_dis(_,_)),'la distanza tra i soggetti è definita formale perchè si è fuori dal raggio _ della zona personale. Di solito ci si tiene a questa distanza con gli sconosciuti _ o con chi si ha poca confidenza.').

spiegazione(fatto(formale_luo(_,_)),'il luogo in cui si svolge la conversazione è un luogo dove per lo _ più si svolgono interazioni di tipo formale.').

spiegazione(fatto(informale_luo(_,_)),'il luogo in cui si svolge la conversazione è un luogo dove per lo _ più si svolgono interazioni di tipo informale.').

spiegazione(fatto(formale(_)),'il soggetto è in una posizione che determina la sua rigidezza.').

spiegazione(fatto(informale(_)),'il soggetto è in una posizione che determina la sua disinvoltura.').

spiegazione(fatto(conv_poco_formale(_,_)),'la conversazione risulta caratterizzata da alcuni tratti di formalità.').

spiegazione(fatto(conv_abb_formale(_,_)),'la conversazione risulta caratterizzata da tratti di formalità.').

spiegazione(fatto(conv_molto_formale(_,_)),'la conversazione risulta caratterizzata da numerosi tratti di formalità.').

spiegazione(fatto(conv_poco_informale(_,_)),'la conversazione potrebbe essere informale.').

spiegazione(fatto(conv_abb_informale(_,_)),'la conversazione sembra essere informale.').

spiegazione(fatto(conv_molto_informale(_,_)),'la conversazione risulta essere informale.').

spiegazione(fatto(intenzione_non_andarsene(_)),'il soggetto in questione non ha intenzione di abbandonare la conversazione.').

spiegazione(fatto(persona_interessante_avanti(_)),'il soggetto ritiene che il suo interlocutore sia una persona interessante.').

spiegazione(fatto(interesse_sessuale(_,_)),'il soggetto maschile ha interesse sessuale verso il soggetto femminile.').

Page 38: Sistema Esperto per l'analisi Di Una ConversazionE

spiegazione(fatto(sulla_difensiva(_)),'il soggetto è sulla difensiva.').

spiegazione(fatto(nervosismo(_)),'il soggetto presenta segni di nervosismo.').

spiegazione(fatto(insicura_aspetto_fisico(_,_)),'il soggetto femminile manifesta insicurezza sul proprio aspetto fisico.').

spiegazione(fatto(interesse_romantico(_,_)),'il soggetto manifesta un certo interesse romantico per il suo interlocutore.').

spiegazione(fatto(disaccordo(_)),'il soggetto sembra non essere in accordo con il pensiero del suo interlocutore.').

spiegazione(fatto(concorde_vuole_parlare(_)),'il soggetto è concorde e intende esprimere la propria opinione.').

spiegazione(fatto(concorde_vuole_ascoltare(_)),'il soggetto è concorde e vuole continuare ad ascoltare.').

spiegazione(fatto(mancanza_fiducia(_)),'il soggetto non prova piena fiducia verso il suo interlocutore.').

spiegazione(fatto(nascondere_qualcosa(_)),'il soggetto ha qualcosa da nascondere.').

spiegazione(fatto(opinione_segreta(_)),'il soggetto ha un opinione segreta sulla conversazione.').

spiegazione(fatto(non_voler_ascoltare(_)),'il soggetto non è interessato alla conversazione.').

spiegazione(fatto(apprezzamento(_)),'il soggetto apprezza molto il suo interlocutore').

spiegazione(fatto(arrabbiato(_)),'il soggetto è alterato.').

spiegazione(fatto(disgusto(_)),'il soggetto non gradisce il contenuto della conversazione.').

spiegazione(fatto(scusarsi(_)),'il soggetto vuole scusarsi con il suo interlocutore.').

spiegazione(fatto(non_interessato(_)),'il soggetto non è interessato a continuare la conversazione.').

spiegazione(fatto(interesse_discorso(_,_)),'il soggetto è particolarmente interessato al dialogo.').

spiegazione(fatto(vuole_apparire_cortese(_)),'il soggetto vuole apparire cortese nei confronti del suo interlocutore.').

spiegazione(fatto(finge_gioia(_)),'il soggetto cerca di manifestare finta gioia.').

spiegazione(fatto(sincero(_)),'il soggetto risulta essere sincero.').

spiegazione(fatto(familiare_dist(_,_)),'tra i soggetti esiste una certa confidenza. _ Lo si capisce dalla poca distanza che li separa.').

spiegazione(fatto(amichevole_dist(_,_)),'i soggetti sono in un rapporto amichevole. _ Lo si può capire dalla distanza che li separa.').

spiegazione(fatto(sconosciuti_dist(_,_)),'i soggetti risultano avere un rapporto poco confidenziale. _ Lo si può capire dalla distanza che li separa.').

spiegazione(fatto(amichevole_eta(_,_)),'i soggetti sono a loro agio avendo età simili.').

Page 39: Sistema Esperto per l'analisi Di Una ConversazionE

spiegazione(fatto(familiare_abbigliamento(_,_)),'i soggetti sono in una situazione rilassata. _ Lo si può capire dall abbigliamento casual dei due.').

spiegazione(fatto(amichevole_abbigliamento(_,_)),'i soggetti potrebbero avere gli stessi interessi.').

spiegazione(fatto(sconosciuti_abbigliamento(_,_)),'i soggetti sembrano avere diversi interessi al momento della conversazione. _ Sono vestiti in maniera diversa.').

spiegazione(fatto(familiare(_,_)),'tra i soggetti esiste un rapporto di confidenza.').

spiegazione(fatto(amichevole(_,_)),'tra i soggetti esiste un rapporto amichevole.').

spiegazione(fatto(sconosciuti(_,_)),'tra i soggetti non esiste un rapporto di confidenza.').

spiegazione(fatto(enfasi_positiva(_)),'il soggetto è in uno stato di esaltazione.').

spiegazione(fatto(enfasi_negativa(_)),'il soggetto è in uno stato di abbattimento.').

spiegazione(fatto(positività(_)),'il soggetto è molto positivo.').

spiegazione(fatto(disagio(_)),'il soggetto non si trova a proprio agio.').

spiegazione(fatto(negatività(_)),'il soggetto è in uno stato di negatività.').

spiegazione(fatto(collera(_)),'il soggetto prova rancore.').

Cenni di backward

Volendo immaginare una funzionalità di backward per lo stesso sistema esperto

descritto in questo documento e considerato lo schema sintattico definito per l’utilizzo

di regole, fatti e predicati già utilizzati nel motore inferenziale con ragionamento in

forward si riporta di seguito un prototipo di motore inferenziale con ragionamento in

backward che si potrebbe integrare nel sistema in futuro.

Al momento il funzionamento di questo tipo di ragionamento essendo inutile per questo

sistema esperto è stato lasciato tra i commenti del file prolog in questione. Questo

piccolo meccanismo è basato sul riutilizzo delle regole soprastanti è sulla definizione

delle regole nel formato descritto nella documentazione allegata di cui si riporta la

sintassi "regola[HEAD] :- [BODY]".

Si può notare che avendo definito una sintassi molto generale, riutilizzabile e sopratutto

inspirata alla struttura delle regole per un motore backward, i predicati da definire per

Page 40: Sistema Esperto per l'analisi Di Una ConversazionE

far si che il sistema sia funzionante in maniera sia backward che forward sono i

seguenti.

solvebackward(HEAD) :- clause(regola(HEAD),BODY), verifica(BODY).

solvebackward(true).

Con questi pochi concetti si può attivare il meccanismo di backward per controllare se

un fatto sia vero o falso mantenendo inalterate i concetti prima definiti. La maggior

parte dei predicati precedentemente definiti sono potenzialmente riutilizzabili.

4.3) Interfaccia grafica java

Per rendere il sistema facile da usare dal punto di vista dell’osservatore che dovrà introdurre in

memoria molte caratteristiche raccolte guardando una conversazione, si è deciso di sviluppare

un’ interfaccia grafica in linguaggio Java che racchiudesse tutte le funzionalità del sistema. Per

fare ciò è stato usato l’ ambiente di sviluppo NetBeans [11] e in particolare il package

javax.swing utile per l’appunto alla creazione e al settaggio delle componenti grafiche (Frame,

Panel, Button, TextArea, ecc.).

Attraverso questo si è creata l’ interfaccia grafica voluta con una buona interazione con l’utente

cosi da permettere sia la rapida e continuativa introduzione di osservazioni nel sistema sia la

possibilità di osservare in maniera diretta i dati dedotti volta dopo volta, senza dover aspettare la

fine delle osservazioni per effettuare una query di avvio all’inferenza. Per collegare l’interfaccia

grafica al sistema prolog si è usata la libreria “jpl.jar” [12], libreria che consente di:

• alle applicazioni Prolog di sfruttare tutte le classi Java, le sue istanze e i suoi metodi;

• consentire alle applicazioni Java di manipolare tutte le libreri standard Prolog, i vari

predicati ed eseguire query sulla base di conoscenza.

Page 41: Sistema Esperto per l'analisi Di Una ConversazionE

Fig. 6 -Inclusione della libreria jpl.jar nel progetto Java SEDUCE

Dando un’ occhiata al codice prodotto si può notare che nel metodo main (metodo principale

che viene eseguito all’ avvio di un programma java) della classe Dialogo (classe principale del

progetto SEDUCE) vengono eseguite subito delle operazioni di “consult” che servono a caricare

in memoria sia il file “motore_forward.pl” che contiene il motore inferenziale del sistema sia il

file “kb.pl” che ha al suo interno la serie di regole di deduzione descritte nel capitolo di

concettualizzaione (paragrafo 3.3).

Fig.7 - Main della classe Dialogo.java

Page 42: Sistema Esperto per l'analisi Di Una ConversazionE

Ad ogni inserimento di un’ osservazione il sistema invece crea una Query (oggetto java che

serve per eseguire query nell’interprete prolog) che permettera l’esecuzione del predicato

“asseriscifact(..)” nell’interprete prolog. Successivamente dopo ogni inserimento di un

osservazione si va a richiamare la Query “interpreta(X)” cosi da poter avviare l’inferenza ed

avere i risultati man mano che si procede con l’inserimento. Da questa funzione attraverso il

metodo “nextElement().get(X)” recuperiamo tutti le risposte che il prolog andrà a fornire alla

query “interpreta(X)”.

Fig. 8 - Query di interazione tra Java e Prolog

L’interfaccia grafica è stata strutturata in maniera tale da avere quattro sezioni separate che

servono ad avere una maggiore manegevolezza nell’uso dell’applicativo.

Page 43: Sistema Esperto per l'analisi Di Una ConversazionE

Fig. 9 - Schermata generale interfaccia grafica

La prima sezione riguarda l’inserimento delle informazioni generali sui soggetti come nome,

sesso e anche la possibilità di inserire una foto dello stesso. In questa sezione si è ritenuto

opportuno anche inserire l’osservazione di due fatti che non sono associati ad un solo soggetto

ma ad entrambi e che quindi valeva la pena mettere in questa sezione generale; la distanza tra i

due soggetti e il luogo in cui sono gli stessi si asseriscono attraverso questa sezione

(contraddistinta da color turchese).

Fig.10 - Sezione riguardante informazioni sui soggetti

La seconda e terza sezione(colore giallo) sono simmetricamente uguali, ma con funzioni

indipendenti tra loro. Esse si riferiscono rispettivamente ai due soggetti in questione e permetto

sia l’inserimento dei fatti osservati che la visualizzazione di uno storico dei fatti asseriti. Essa è

Page 44: Sistema Esperto per l'analisi Di Una ConversazionE

composta da una serie di menu a tendina che si innestano tra loro fino a che non si selezione un

predicato e lo si asserisce.

Fig.11 - Sezione riguardante l’inserimento di ciò che si osserva

La quarta sezione è stata creata per la gestione degli output del sistema esperto. Infatti è formata

da due caselle di testo: nell’ area di testo superiore sono contenuti i fatti che il sistema ha

dedotto attravero le regole di inferenza; nell’area di testo inferiore si può avere una spiegazione

del perchè ha asserito quel fatto e di come il sistema ci è arrivato (regole utilizzate). Questa

spiegazione è facilmente ottenibile selezionando un fatto dalla lista delle deduzioni ottenute e

usando l’apposito pulsante “Chiedi spiegazioni”.

Page 45: Sistema Esperto per l'analisi Di Una ConversazionE

Fig. 12 - Sezione riguardante l’output del sistema esperto

5) Utilizzo e sperimentazione

Per eseguire l’applicativo in questione basta recarsi nella cartella dove è contenuto il file

SEDUCE.jar e da linea di comando avviare l’applicativo java attraverso la linea di comando

“java –jar SEDUCE.jar”. Perchè il tutto funzioni perfettamente bisogna avere i seguenti requisiti

installati sul sistema:

- JVM (Java Virtual Machine) in funzione - contenuta anche nella versione Java per

desktop[13];

- Interprete SWI-Prolog installato (il sistema è stato testato con la versione 6.2.2);

- i file “motore_forward.pl” e “kb.pl” devono essere nella stessa directory del file

SEDUCE.jar;

- avere all’interno della stessa directory una sotto-directory dal nome lib con all’interno la

libreria “jpl.jar”(libreria che si trova nella cartella ‘lib’ del swi-prolog);

- su windows aggiungere alla variabile d’ambiente di sistema ‘path’ la seguente stringa

“C:\Program Files\pl\lib\jpl.jar;”.

Page 46: Sistema Esperto per l'analisi Di Una ConversazionE

Una volta che ci siamo assicurati di avere questi seguenti requisiti possiamo lanciare il comando

attraverso linea di comando e la nostra applicazione si avvierà e in maniera nascosta anche il

nostro interprete prolog si avvierà.

Fig. 13 - Avvio da prompt dei comandi di Windows

Una volta avviato il sistema si avrà la seguente schermata che permetterà solamente di inserire

le informazioni sui soggetti; una volta fatto ciò compariranno le schermate che permetto

l’asserzione dei fatti osservati.

Fig. 14 - Screenshot inserimento dati utenti

Si noti che una volta selezionato il sesso, inserito il nome e cliccato sul pulsante “inserisci

informazioni” di ciascun soggetto non sarà più possibile modificare le stesse. Questo perchè

saranno asseriti dei fatti nella base di conoscenza in cui verranno utilizzati queste informazioni

Page 47: Sistema Esperto per l'analisi Di Una ConversazionE

come parametro di altri predicati e quindi creerebbe conflitti nel match dei fatti con le regole.

L’unica opzione che si può cambiare anche nell’esecuzione in corso del programma è la foto del

soggetto. Basterà cliccarci su per far apparire la schermata di scelta foto all’interno del proprio

pc.

Una volta inserite le informazioni base, compariranno tutte le opzioni per la selezione e

l’inserimento dei fatti osservati.

Fig. 15 - Screenshot inserimento osservazioni personali

Ci sarà un menu a tendina che permetterà di scegliere la tipologia di osservazione da inserire, e

poi un secondo menu a tendina che invece farà in modo di poter inserire un predicato all’interno

della base di conoscenza. Nel frattempo si formerà lo storico in basso, che terrà traccia dei fatti

inseriti fino ad un determinato momento.

In qualunque momento sarà possibile inserire anche le informazioni in comune tra i due

soggetti; la distanza tra i due e il luogo in cui si svolge la conversazione. Una volta asseriti

scompariranno i menu che permetto di effettuare tale scelta.

Page 48: Sistema Esperto per l'analisi Di Una ConversazionE

Fig. 16 - Screenshot inserimento informazioni in comune

In contemporanea con l’inserimento di dati sulla destra si avrà l’elenco delle deduzioni ottenute

che andranno pian piano a formarsi con l’asserzione da parte dell’osservatore di più

caratteristiche possibili. Selezionandone una e cliccando sul pulsante “Chiedi spiegazioni” è

possibile ottenere le spiegazioni in merito al fatto dedotto.

Fig. 17 - Screenshot gestione dell’output

Per testare il ragionamento del sistema piuttosto che effettuare un paio di esempi descritti che

permettevano di vedere le sue funzionalità, si è preferito scegliere la scena di un film cosi da

Page 49: Sistema Esperto per l'analisi Di Una ConversazionE

poter analizzare i movimenti e i gesti degli attori coinvolti sapendo come sarebbe finita la scena

del film.

5.1) Esperimento

Nell’ esperimento che si va a proporre si analizza un piccolo pezzettino di una scena di un

famoso film italiano “Benvenuti al sud”[14]. La scena in questione riguarda il direttore delle

poste italiane che cerca di avere un trasferimento fingendosi disabile e l’ispettore che effettua il

controllo di questa domanda di trasferimento.

Nella conversazione si possono notare alcuni particolari gesti che fanno capire che il direttore

delle poste si trova in disagio e sta mentendo. In questo screenshot infine si è riusciti a catturare

il frame del video che mostra come il direttore delle poste si stropicci il naso.

Fig. 18 – Benvenuti al sud – Direttore si stropiccia il naso (=> nascondere qualcosa)

Inserendo questo ed altri segnali all’interno del sistema esperto SEDUCE si può notare che il

sistema segnala che il personaggio sta nascondendo qualcosa. Avrà per caso scoperto la falsa

disabilità del nostro caro direttore? Andiamo a vedere il comportamento del sistema avendo

inserito la maggior parte dei fattori che sono emersi da questo piccolo spezzone di film.

Page 50: Sistema Esperto per l'analisi Di Una ConversazionE

Fig. 19 – SEDUCE per la scena del film “Benvenuti al sud”

Come si può notare semplicemente inserendo le informazioni di circostanza come la distanza tra

i soggetti e il luogo, il sistema è riuscito a dedurre che si tratta di una conversazione molto

formale. Andando avanti fino alla fine della scena si può vedere che il sistema sembra fornire

molte informazioni. Ecco lo screenshot del sistema alla fine della scena.

Fig. 20 – SEDUCE riesce a capire che qualcosa non va

Infatti si può notare come il sistema esperto riesca a dedurre tutte cose vere, tra cui anche

“fatto(nascondere_qualcosa(direttore_posta))”. Selezionandolo e facendo uso della funzione

“chiedi spiegazioni” esce scritto che ‘il soggetto ha qualcosa da nascondere’ (non è stato fatto

lo screenshot con questa funzionalità solamente per una questione di grandezza immagine).

Alla fine Bisio sembrerebbe riuscire a farla franca e infatti l’ispettore mostra sincerità quando

afferma che lo reputa una persona onesta e sincera e nel frattempo il battito prolungato di ciglia

Page 51: Sistema Esperto per l'analisi Di Una ConversazionE

da parte di Bisio fa dedurre al sistema esperto che non vuole ascoltare (come un rigetto verso

una palese bugia).

6)Considerazioni e sviluppi futuri

Il sistema sembra rispondere bene ai canoni per cui è stato proggettato. Riesce ad avere molte

deduzioni vere e come visto nell’esempio precedente a capire cose implicitamente nascoste

nella conversazione tra due individui. Sono sicuramente emerse due difficoltà nell’uso di

SEDUCE :

- la prima riguarda la limitata velocità con cui un osservatore riesce a cogliere i dettagli di

una conversazione e ad immetterli nel sistema;

- la seconda riguarda la capacità dell’osservatore di cogliere i dettagli della conversazione

che sta osservando.

Infatti è difficile osservare tutto e non perdersi piccoli dettagli come il battito di ciglia

prolungato, che si rivelano caratteristiche fondamentali affinchè il S.E. riesca a dedurre fatti

intrinsechi.

Come sviluppi futuri si potrebbe pensare ad un ampliamento dei fatti e delle regole considerate

cosi da permettere una più dettagliata analisi di una conversazione. Inoltre si potrebbe creare

una versione in cui si facciano domande all’osservatore invece di dare libera scelta

all’osservatore di asserire ciò che si vede. Le versioni potrebbero essere integrate come no.

Page 52: Sistema Esperto per l'analisi Di Una ConversazionE

Riferimenti

1) Isabella Poggi(2006) – Carocci

“Le parole del corpo. Introduzione alla comunicazione multimodale”

2) Ekman P., Friesen W.V. , Sonia Ancoli(1980) - UniversitY of California

“ Facial sign of emotional eXperience”

3) Paccagnella, “ Sociologia della comunicazione”, Il Mulino , Bologna, 2004

4) Isabella Poggi° ed Emanuela Magno Caldognetto* - °Dip. di Scienze dell’Educazione, Università Roma Tre - *ISTC Sezione di Padova ‘Fonetica e Dialettologia’

“ Il parlato emotivo. Aspetti cognitivi, linguistici e fonetici”

5) VinaY Bettadapura - College of Computing, Georgia Institute of TechnologY

6) “Face EXpression Recognition and AnalYsis: The State of the Art”

7) Maria Pia Capolongo - °Facoltà di Scienze Matematiche Fisiche e Naturali, Università degli Studi di Bari – Corso di Laurea Magistrale in Informatica

8) Tesi di Laurea: “Un sistema esperto per il riconoscimento della comunicazione non verbale: i gesti”.

9) Allan & Barbara Pease – Bur Rizzoli – “ Perchè mentiamo con gli occhi e ci vergogniamo con i piedi?”

10) Console , Lamma – UTET Libreria – “Programmazione logica e prolog “

11) http://netbeans.org/

Page 53: Sistema Esperto per l'analisi Di Una ConversazionE

12) http://www.swi-prolog.org/packages/jpl/java_api/javadoc/index.html

13) http://www.java.com/it/download/

14) http://it.wikipedia.org/wiki/Benvenuti_al_Sud