Programmi che chiacchierano I Chatbots: un approccio riduzionista

Slides:



Advertisements
Presentazioni simili
DEDICATO AGLI AMMINISTRATORI DI SISTEMA
Advertisements

Intelligenza artificiale
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità G1 Dati strutturati.
Sommario Nelle lezioni precedenti abbiamo introdotto tutti gli elementi che formano un particolare tipo di linguaggio logico, denominato linguaggio predicativo.
Presentazioni internazionali Campobasso 13 e 14 ottobre 2003.
A cura della prof. Maria Concetta Puglisi
L’Informatica dal Problema alla Soluzione
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Le parti del discorso logico e informatico
Il grande geometra Ilaria Cozzucoli.
Università degli Studi di Cagliari
Dr. Nicola Corazzari Dr.ssa Claudia Casali Dr.ssa Erica Romei
Presentazione superiori
ALLA SCOPERTA DELLE FORME DEGLI OGGETTI
Introduzione agli stream e alle classi
La costruzione e lo sviluppo delle competenze a scuola
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
CORSO DI INFORMATICA LAUREA TRIENNALE-COMUNICAZIONE & DAMS
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Statistica sociale Modulo A
Corso di PHP.
Importanza DTD La DTD (Document Type Definition) consente di dichiarare in maniera univoca la struttura di markup mediante la definizione dello schema.
( qualche riflessione )
MAPPIAMOCI! ATTIVITA’ SULLE MAPPE CONCETTUALI “F. Rasetti” a.s
Restituzione questionario
Materiali didattici (D7)
Cultura scritta sui muri
A cura di Veronica Navarra
_ ___ _ ______ _ _ _________.
Facoltà di Lettere e Filosofia Corso di Laurea in Scienze della Comunicazione LIBER Progettazione di un programma per la ricerca bibliotecaria ispirato.
Esecuzione dei programmi Prolog Liste ed operatori aritmetici
Algoritmi e Strutture Dati
La scala musicale 1.
Il primo passo: I basilari del Prolog
Parrocchia S. Maria Assunta Moricone - Rm. Secondo incontro di formazione per gli animatori.
Un approccio soft per i primi tre anni della primaria
Presenta presenta. presenta presenta Vivere il Vangelo.
SUISM – a.a. 2007/08DIDATTICA GENERALE MARIO CASTOLDIINSEGNAMENTO RECIPROCO ANALISI DELLESPERIENZA CHE COSA CARATTERIZZA IL METODO DELLINSEGNANTE? QUAL.
Basi di conoscenza: cenni di logica Fabio Massimo Zanzotto.
Linguaggi e Modelli per i Dati e la Conoscenza Fabio Massimo Zanzotto.
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
Alla fine degli anni quaranta nasceva il mito del cervello elettronico, e tutte le attività connesse allutilizzo del computer venivano indicate tramite.
Programma di Informatica Classi Prime
‘LA SCUOLA CHE VORREI’ Un progetto di ricerca dell’
ASP – Active Server Pages Introduzione Pagine Web Statiche & Dinamiche(ASP)
Definire operatori Strutture dati Fabio Massimo Zanzotto (slides di Andrea Turbati)
Il linguaggio musicale
Buona sera a tutti! Stasera apprendiamo come far esplodere i numeri nelle nostre squadre applicando il nostro Sistema di lavoro!
Lezione 3 Struttura lessicale del linguaggio
CORSO Di WEB DESIGN prof. Leonardo Moriello
LAB-SCI/Dipartimento I.C. Centro storico Pestalozzi Primo Incontro 15 Gennaio 2014.
“ La costruzione intersoggettiva della conoscenza: una ricerca”
Intelligenza Artificiale 1 Gestione della conoscenza lezione 19 Prof. M.T. PAZIENZA a.a
Il curricolo ?... Spunti di riflessione.
Informatica 3 V anno.
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
Come impostare il curricolo
INTRODUZIONE. Javascript è un linguaggio di scrittura che permette di aggiungere veri e propri programmi alle tue pagine web.
1 Informatica Generale Alessandra Di Pierro Ricevimento: Giovedì ore presso Dipartimento di Informatica, Via Buonarroti,
Problemi, algoritmi e programmazione
Siedi vicino. Siedi il più vicino possibile all'insegnante. Assicurati di vedere bene la lavagna, il muro o lo schermo di proiezione (se vengono presentati.
Le immagini (e non solo) sono state da:
Forma normale delle equazioni di 2° grado Definizione. Un'equazione di secondo grado è in forma normale se si presenta nella forma Dove sono numeri.
“ Pseudocodice ” Un programma per computer lavorerà su in insieme di “ variabili ” contenenti i dati del problema, soluzioni intermedie, soluzioni finali.
L’APPRENDIMENTO DELLA LETTO-SCRITTURA ALLA SCUOLA DELL’INFANZIA
Oggi è il quattordici maggio LO SCOPO: Date la prova e cominciamo il ripasso per l’esame finale. FATE ADESSO: Studiate per cinque minuti.
Statistica sociale Modulo A A.A Prof.ssa Barbara Baldazzi Dottore Mario Mastrangelo Facoltà di Lettere e Filosofia Università di Tor Vergata.
MBS ITALY (Moresco Business Solutions Italy) 2016.
Istituto Tecnico Industriale "G. Marconi" Via Milano n Pontedera (PI) Tel Fax Caponi.
Albiemotions (sito web) Risatissime 1 Passiamo i primi dodici mesi della vita dei nostri bambini ad insegnargli a camminare e parlare... i successivi.
Transcript della presentazione:

Programmi che chiacchierano I Chatbots: un approccio riduzionista Fabio Massimo Zanzotto

Un semplice dialogo (circostanziato) A: Buongiorno sono Fabio. B: Salve Fabio, cosa vuoi sapere? A: Quando comincia il corso? B: Il corso comincerà quando cominciano i corsi del secondo semestre. A: Chi lo insegna? B: Il Prof. Fabio Massimo Zanzotto. Puoi vedere la sua pagina web e farti quattro risate. A: Quando finisce il corso? B: Il corso finirà quando finisco i corsi del secondo semestre. A: Chi sono io? B: Tu sei fabio

Obiettivi Imitare il comportamento umano nel parlare: Imitare la capacità di immagazinamento informazioni Imitare abilità linguistica Se essere umano il nostro obbiettivo, esistono modelli dell’essere umano? Modello “scientifico” del comportamentismo Essere umano = sistema osservabile Modello principale: dato stimolo S l’essere vivente è un sistema f che fornisce risposte R dipendenti dallo stimolo S: R=f(S)

Approccio ad Aree Funzionali Syntax Processing Lexical Acquisition Ontology Learning Semantic World Model Discourse Planner Good Grief!

Approccio Comportamentista Assunto base: Essere umano è una scatola nera (black box) Good Grief!

Un programma chiacchierone Assunto Base: percorriamo la via più breve dallo stimolo alla risposta Good Grief! Stimolo

Un programma chiacchierone Manteniamo il percorso semplice: Realizziamo la funzione f R=f(S) dove R è la risposta S è lo stimolo Domanda: Quanto dobbiamo complicare il linguaggio di descrizione di S e di R affinché si possa ottenere un risultato credibile?

Ricapitoliamo Vogliamo vedere quanto lontano riusciamo ad andare con approccio comportamentista: Minima struttura interna che lega lo stimolo alla risposta Quindi vogliamo scrivere una funzione f(S)=R, ovvero coppie: (S1,R1) (S2,R2) … (Sn,Rn)

Come deve essere il linguaggio? Ipotesi di lavoro (programma del chatbot) Dato uno stimolo (attuale) S, cercare lo stimolo (potenziale) Si attivabile Emettere Ri Caratteristiche: Deve permettere di riconoscere gli stimoli S Deve permettere di attivare le giuste risposte R

Linguaggio : prima ipotesi Il linguaggio potrebbe essere il linguaggio naturale Ad es.: (S1,R1)=(Buongiorno,Buongiorno) Dunque, se arriva S=Buongiorno, le operazioni sono: Se S=S1 allora emetti R1 Quindi essendo: Buongiorno=Buongiorno emette: Buongiorno

Linguaggio : prima ipotesi Ci basta? Prendiamo la prima interazione: A: Buongiorno sono Fabio. B: Salve Fabio, cosa vuoi sapere? E’ sufficiente il linguaggio di prima ipotesi? SI e NO

Linguaggio : prima ipotesi Cominciamo a scrivere le regole: (Buongiorno sono Fabio., Salve Fabio, cosa vuoi sapere?) (Buongiorno sono Giovanni., Salve Giovanni, cosa vuoi sapere?) (Buongiorno sono Giandomenico., Salve Giandomenico, cosa vuoi sapere?) Noioso! Cosa gradiremmo? (Buongiorno sono <X>., Salve <X>, cosa vuoi sapere?) Concetto di variabile!!! = * - star

I desiderata per il linguaggio Riconoscere uguaglianza tra stringhe Concetto di variabile (semplice) Riconoscere una porzione di testo per poterla presentare nella risposta L’uguaglianza diventa unificazione

Linguaggio: seconda ipotesi Ci basta? Utente antipatico: A: Salve sono Fabio. B: Salve Fabio, cosa vuoi sapere? Altro utente sciolto: A: Ciao sono Fabio. Utente non educato: A: Sono Fabio.

Linguaggio: seconda ipotesi Potremmo: (Buongiorno sono <X>., Salve <X>, cosa vuoi sapere?) (Salve sono <X>., Salve <X>, cosa vuoi sapere?) (Ciao sono <X>., Salve <X>, cosa vuoi sapere?) (Sono <X>., Salve <X>, cosa vuoi sapere?) Osservazione: A tutte le interazioni precedenti, vorremmo che si rispondesse allo stesso modo indipendentemente dalla forma di saluto Come possiamo fare?

I desiderata per il linguaggio Riconoscere uguaglianza tra stringhe Concetto di variabile (semplice) Riconoscere una porzione di testo per poterla presentare nella risposta Dato uno stimolo vorremmo attivare un altro coppia stimolo-risposta lanciando un nuovo stimolo

Linguaggio: terza ipotesi Potremmo fare: (Buongiorno sono <X>., RISTIMOLA(Sono <X>.)) (Salve sono <X>., RISTIMOLA(Sono <X>.)) (Ciao sono <X>., RISTIMOLA(Sono <X>.)) (Sono <X>., Salve <X>, cosa vuoi sapere?) Stimolo Secondario: Salve sono Maria. X=Maria Stimolo Primario: Sono Maria Risposta: Salve Maria, cosa vuoi sapere?

Linguaggio: terza ipotesi Ci basta? Utente antipatico: A: Salve sono Fabio. B: Salve Fabio, cosa vuoi sapere? A: Quanto dura il corso? B: Il corso è di 5 Crediti. Vuoi sapere quanto dura temporalmente? A: Si, dimmi. B: Il corso è di dura 40 ore.

Soluzione col modello attuale (si *, il corso dura 40 ore) (si, il corso dura 40 ore) (no, ciao!)

Linguaggio: terza ipotesi Ci basta? Utente antipatico: A: Salve sono Fabio. B: Salve Fabio, cosa vuoi sapere? A: Quanto dura il corso? B: Il corso è di 5 Crediti. Vuoi sapere quanto dura temporalmente? A: Si, dimmi. B: Il corso è di dura 40 ore. Per risolvere il problema, appare sufficiente ricordare l’interazione di B precedente

I desiderata per il linguaggio Riconoscere uguaglianza tra stringhe Concetto di variabile (semplice) Riconoscere una porzione di testo per poterla presentare nella risposta Dato uno stimolo vorremmo attivare un altro coppia stimolo-risposta lanciando un nuovo stimolo Memorizzare la “nostra interazione” precedente a quella attuale

Linguaggio: quarta ipotesi Potremmo fare: (Si <x>, INTERAZIONE_PREC(Il corso è di 5 Crediti. Vuoi sapere quanto dura temporalmente)? , Il corso dura 40 ore)

Linguaggio: quarta ipotesi Ricapitoliamo: Siamo partiti da: Scrivere (Si,Ri): coppie stimolo-risposta Abbiamo introdotto: Ristimolazione: (Si,RISTIMOLA(Sj)) Memoria di un passo precedente: (Si, INTERAZIONE_PREC(Rk)?,Rj)

Linguaggio: quarta ipotesi Ci basta? Utente antipatico: A: Buongiorno sono Fabio. B: Salve Fabio, cosa vuoi sapere? A: Quando comincia il corso? B: Il corso comincerà quando cominciano i corsi del secondo semestre. A: Chi sono io? B: Tu sei fabio Servono delle variabili, ad es. interlocutore.

Linguaggio: quinta ipotesi Potremmo fare: (Sono <x>, MEMORIZZA(INTERLOCUTORE=<x>), Salve <x>, cosa desideri?) (Chi sono io?, Tu sei RECUPERA_VALORE(INTERLOCUTORE)) Abbiamo introdotto il concetto di variabile: ha un nome, ad es. INTERLOCUTORE ha un valore, ad es. Fabio Può essere riempita: MEMORIZZA(variabile=valore) Può essere letta: RECUPERA_VALORE(variabile)

Variabili in azione Chi sono io? Tu sei pino Interlocutore pino (Sono <x>, MEMORIZZA(INTERLOCUTORE=<x>), Salve <x>, cosa desideri?) (Chi sono io?, Tu sei RECUPERA_VALORE(INTERLOCUTORE)) Chi sono io? Tu sei pino Interlocutore pino

Linguaggio: quinta ipotesi Ricapitoliamo: Siamo partiti da: Scrivere (Si,Ri): coppie stimolo-risposta Abbiamo introdotto: Ristimolazione: (Si,RISTIMOLA(Sj)) Memoria di un passo precedente: (Si, INTERAZIONE_PREC(Rk)?,Rj) Memoria di variabili: (Si, MEMORIZZA(Vk=valk),Rj) (Si, RECUPERA_VALORE(Vk) Rj)

Un programma chiacchierone Assunto Base: percorriamo la via più breve dallo stimolo alla risposta Good Grief! Stimolo

Un programma chiacchierone Assunto Base: percorriamo la via più breve dallo stimolo alla risposta Stiamo complicando il nostro modello!!!! IP=interazione precedente Vi=variabile IP V1 Vk … Good Grief! Stimolo

Linguaggio: quinta ipotesi Ci basta? Utente antipatico: A: Buongiorno sono Fabio. B: Salve Fabio, cosa vuoi sapere? A: Quando comincia il corso? B: Il corso comincerà quando cominciano i corsi del secondo semestre. A: Quando finisce? B: Il corso finirà quando finisco i corsi del secondo semestre. A: Chi lo insegna? B: Il Prof. Fabio Massimo Zanzotto. Puoi vedere la sua pagina web e farti quattro risate. A: Chi sono io? B: Tu sei fabio

(quando finisce?, IP(Il corso comincerà quando cominciano i corsi del secondo semestre.)?, Il corso finirà quando finisco i corsi del secondo semestre.) (Chi lo insegna?, Il Prof. Fabio Massimo Zanzotto. Puoi vedere la sua pagina web e farti quattro risate.) IP(Il corso finirà quando finisco i corsi del secondo semestre.)?,

(Quando comincia il corso?, MEMORIZZA(ARGOMENTO=corso), Il corso comincerà quando cominciano i corsi del secondo semestre) (Quando comincia, (ARGOMENTO=corso)?, (quando finisce?, Il corso finirà quando finisco i corsi del secondo semestre.) (quando finisce il corso?,

(Quando comincia il corso?, MEMORIZZA(ARGOMENTO=corso), Il corso comincerà quando cominciano i corsi del secondo semestre) (quando finisce?, (ARGOMENTO=corso)?, Il corso finirà quando finisco i corsi del secondo semestre.)

(Quando comincia il corso (Quando comincia il corso?, MEMORIZZA(ARGOMENTO=corso), Il corso comincerà quando cominciano i corsi del secondo semestre) (Quando finisce il corso?, Il corso finirà quando finisco i corsi del secondo semestre.) (quando finisce?, (ARGOMENTO=corso)?, (quando comincia?,

(<x> il corso?, MEMORIZZA(ARGOMENTO=corso), RISTIMOLA(<x>)) (quando finisce?, (ARGOMENTO=corso)?, Il corso finirà quando finisco i corsi del secondo semestre.) (quando comincia?, Il corso comincerà quando cominciano i corsi del secondo semestre)

Linguaggio: sesta ipotesi Potremmo fare: Utilizzare la nozione di ARGOMENTO Quando si entra in un certo ARGOMENTO, le domande sono relative allo stesso. (Quando comincia il corso?, MEMORIZZA(ARGOMENTO=CORSO), Il corso comincerà quando cominciano i corsi del secondo semestre.) SE_SIAMO_IN_ARGOMENTO=CORSO { (Quando finisce?, Il corso finirà quando finisco i corsi del secondo semestre.) (Chi lo insegna?, Il Prof. Fabio Massimo Zanzotto. Puoi vedere la sua pagina web e farti quattro risate.) }

Linguaggio: sesta ipotesi Ricapitoliamo: Siamo partiti da: Scrivere (Si,Ri): coppie stimolo-risposta Abbiamo introdotto: Ristimolazione: (Si,RISTIMOLA(Sj)) Memoria di un passo precedente: (Si, INTERAZIONE_PREC(Rk)?,Rj) Memoria di variabili: (Si, MEMORIZZA(Vk=valk),Rj) (Si, RECUPERA_VALORE(Vk) Rj) Memoria di argomento: MEMORIZZA(ARGOMENTO=A) SE_SIAMO_IN_ARGOMENTO=A {(S1,R1)…(Sn,Rn)}

Interessante aspetto del sesto linguaggio Possiamo scrivere: (<X> il corso?, MEMORIZZA(ARGOMENTO=CORSO), RISTIMOLA(<X>)) SE_SIAMO_IN_ARGOMENTO=CORSO { (Quando inizia?, Il corso inizia quando iniziano i corsi del secondo semestre.) (Quando finisce?, Il corso finirà quando finisco i corsi del secondo semestre.) (Chi lo insegna?, Il Prof. Fabio Massimo Zanzotto. Puoi vedere la sua pagina web e farti quattro risate.) }

Linguaggio: sesta ipotesi Dubbio: Utente antipatico: A: Buongiorno sono Fabio. B: Salve Fabio, cosa vuoi sapere? A: Quando comincia il corso? B: Il corso comincerà quando cominciano i corsi del secondo semestre. A: Chi lo insegna? B: Il Prof. Fabio Massimo Zanzotto. Puoi vedere la sua pagina web e farti quattro risate. A: Quando finisce? B: Il corso finirà quando finisco i corsi del secondo semestre. A: Chi sono io? B: Tu sei fabio

Linguaggio: sesta ipotesi Dubbio: Utente antipatico: A: Buongiorno sono Fabio. B: Salve Fabio, cosa vuoi sapere? A: Quando comincia il corso? B: Il corso comincerà quando cominciano i corsi del secondo semestre. A: Chi lo insegna? B: Il Prof. Fabio Massimo Zanzotto. Puoi vedere la sua pagina web e farti quattro risate. A: Dove lo trovo? B: Nello studio al piano –1 dell’edificio B A: Chi sono io? B: Tu sei fabio

Linguaggio: sesta ipotesi NON VI PREOCCUPATE CI RIMARRA’ IL DUBBIO!!!!

AIML e i Chatbot Technology Box

Piano di lavoro Osservare i desiderata del nostro sesto linguaggio Vedere come si realizzano attraverso il linguaggio Artificial Intelligence Mark-up Language (AIML) Presentare un interprete di stimoli-risposte scritti in AIML: programd Fare dei piccoli esercizi

Piccolissimo richiamo ML Cos’è un mark-up language? Un linguaggio che permette di dare un ruolo ad una porzione di testo Prendiamo un linguaggio semplice tipo XML o HTML: <RUOLO>TESTO</RUOLO> In questo linguaggio, così si indica che il testo TESTO ha il ruolo RUOLO Esempio in HTML: <B>pluto</B>  pluto

Piccolissimo richiamo ML OSSERVAZIONE: Il ruolo è una parentesi tipata intorno ad un testo Consequenza: Le parentesi tipate debbono essere aperte e chiuse Le parentesi tipate non si possono incrociare <B>gennaro <I>pluto </B> paperino</I> E’ VIETATO!!!!! <b></b> === <b/>

Piccolissimo richiamo ML OSSERVAZIONE: Avendo la possibilità di definire i tipi (ad esempio B per grassetto), possiamo memorizzare qualsiasi tipo di informazione Un linguaggio di Mark-up in cui si possono definire i tipi è XML Useremo (hanno usato) XML per definire il nostro linguaggio per i chatbot detto AIML

Riguardiamo il nostro linguaggio Siamo partiti da: Scrivere (Si,Ri): coppie stimolo-risposta Abbiamo introdotto: Variabile base che lega stimolo con risposta <X> Ristimolazione: (Si,RISTIMOLA(Sj)) Memoria di un passo precedente: (Si, INTERAZIONE_PREC(Rk)?,Rj) Memoria di variabili: (Si, MEMORIZZA(Vk=valk),Rj) (Si, RECUPERA_VALORE(Vk) Rj) Memoria di argomento: MEMORIZZA(ARGOMENTO=A) SE_SIAMO_IN_ARGOMENTO=A {(S1,R1)…(Sn,Rn)}

Elemento Base: Stimolo-Risposta (Si,Ri): coppie stimolo-risposta In AIML è detto categoria Stimolo è detto pattern Risposta è detta template Si scrive: <category> <pattern> Si </pattern> <template>Ri</template> </category> N.B. nello stimolo non si devono usare simboli di interpunzione (ed alcuni altri caratteri) i caratteri debbono essere tutti maiuscoli

(Buongiorno,Buongiorno) Esercizio 1 Codificate: (Buongiorno,Buongiorno) <category> <pattern>BUONGIORNO</pattern> <template>Buongiorno!</template> </category> B?u!o.n!g!iorno!!!!!!!! BUONGIORNO

Variabile Base: Stimolo-Risposta <X> variabile usabile solo in stimolo-risposta In AIML è detto star Si scrive: * nello stimolo <star/> nella risposta

(Buongiorno sono <X>., Salve <X>, cosa vuoi sapere?) Esercizio 2 Codificate: (Buongiorno sono <X>., Salve <X>, cosa vuoi sapere?) <category> <pattern> BUONGIORNO SONO *</pattern> <template>Salve <star/>, cosa vuoi sapere?</template> </category>

Ristimolazione (Si,RISTIMOLA(Sj)) In AIML è detto srai: symbolic reduction Si scrive: <category> <pattern> Si </pattern> <template><srai>Sj</srai></template> </category>

Esercizio 3 Codificate: (Sono <X>., RISTIMOLA(Buongiorno Sono <X>.)) (Salve sono <X>., RISTIMOLA(Buongiorno Sono <X>.)) (Ciao sono <X>., RISTIMOLA(Buongiorno Sono <X>.)) (Buongiorno sono <X>., Salve <X>, cosa vuoi sapere?) <category> <pattern> BUONGIORNO SONO *</pattern> <template><srai>SONO <star/></srai></template> </category> <pattern> SALVE SONO *</pattern> <pattern> CIAO SONO *</pattern>

Memoria di un passo precedente (Si, INTERAZIONE_PREC(Rk)?,Rj) In AIML è detto that Si scrive: <category> <pattern> Si </pattern> <that> Rk </that> <template>Ri</template> </category>

Esercizio 4 Codificate: <category> (Si <x>, INTERAZIONE_PREC(Il corso è di 5 Crediti. Vuoi sapere quanto dura temporalmente)? , Il corso dura 40 ore) <category> <pattern>SI *</pattern> <template> Il corso dura 40 ore </template> <that>Il corso è di 5 Crediti. Vuoi sapere quanto dura temporalmente</that> </category>

Esercizio 4.1 Codificare: (Quanto dura il corso?, Il corso è di 5 Crediti. Vuoi sapere quanto dura temporalmente?)

(Si, MEMORIZZA(Vk=valk),Rj) (Si, RECUPERA_VALORE(Vk) Rj) Memoria di variabili (Si, MEMORIZZA(Vk=valk),Rj) (Si, RECUPERA_VALORE(Vk) Rj) In AIML è si usa: set per memorizzare get per recuperare Entrambi vanno scritte nel template Si scrive: <set name=“Vk”> valk </set> <get name=“Vk”/> <set name=“interlocutore”>pippo </set> <get name=“interlocutore”/>

Esercizio 5 Codificate: <category> </category> (Sono <x>, MEMORIZZA(INTERLOCUTORE=<x>), Salve <x>, cosa desideri?) (Chi sono io?, Tu sei RECUPERA_VALORE(INTERLOCUTORE)) <category> <pattern>SONO *</pattern> <template>Salve, <star/> cosa desideri? <set name=“INTERLOCUTORE”> <star/> </set> </template> </category> <pattern>CHI SONO IO</pattern> <template>Tu sei <get name=“INTERLOCUTORE”/></template>

Memoria di argomento In AIML è si usa: Si scrive: MEMORIZZA(ARGOMENTO=A) SE_SIAMO_IN_ARGOMENTO=A {(S1,R1)…(Sn,Rn)} In AIML è si usa: la variabile topic per memorizzare argomento una parentesi tipata per indicare l’insieme degli stimoli-risposta di un topic Si scrive: <set name=“topic”> A</set> <topic name=“A”> (S1,R1) … (Sn,Rn) (stimoli-risposta del topic) </topic>

Esercizio 6 Codificate: } (<X> il corso?, MEMORIZZA(ARGOMENTO=CORSO), RISTIMOLA(<X>)) SE_SIAMO_IN_ARGOMENTO=CORSO { (Quando inizia?, Il corso inizia quando iniziano i corsi del secondo semestre.) (Quando finisce?, Il corso finirà quando finisco i corsi del secondo semestre.) (Chi lo insegna?, Il Prof. Fabio Massimo Zanzotto. Puoi vedere la sua pagina web e farti quattro risate.) }

Quando comincia il corso? <category> <pattern>* IL CORSO</pattern> <template> <think><set name=“topic”>insegnamento</set></think><srai><star/></srai> </template> </category> Quando comincia il corso?

<topic name=“insegnamento”> <category> <pattern>QUANDO INIZIA</pattern> <template>Il corso inizia il giorno in cui inizia. </template> </category> <pattern>QUANDO FINISCE</pattern> <template>Il corso finisce il giorno in cui finisce. </template> </topic>

Altri operatori Il caso: Risposta casuale in un insieme di risposte In AIML si scrive: <random> <item> R1</ item > … < item > Rn-1 </template> <template> Rn </template> </random>

Altri operatori Il pensare: Non palesare quello che si stà facendo in un template In AIML si scrive: <template> R <think> pensiero </think>….</template>

Ricapitoliamo AIML Scrivere (Si,Ri): coppie stimolo-risposta <category><pattern>…</pattern><template>…</template></category> Variabile base che lega stimolo con risposta <X> in stimolo: * in risposta: <star/> Ristimolazione: (Si,RISTIMOLA(Sj)) <srai>…</srai> Memoria di un passo precedente:(Si, INTERAZIONE_PREC(Rk)?,Rj) <that>…</that> Memoria di variabili: <set name=“xxx”> yyy </set> <get name=“xxx”/> Memoria di argomento: <set name=“topic”> yyy </set> <topic name=“xxx”> … </topic> Altri operatori: <random> <think>

Presentare un figlio di Eliza programd: Come si lancia Come si caricano le basi di stimolo-risposta Come si termina

Costruiamo il tutor elettronico del corso Un esercizio Costruiamo il tutor elettronico del corso Procedimento Individuiamo le macroaree di interesse Costruiamo dei topic per le macroaree Analizziamo le domande nelle macroaree

Individuiamo le macroaree Introduzione/presentazione studente Corso Luogo Orari Professore Chi è? Dove trovarlo Esame Piano di studi (posso inserirlo) E’ interessante/non è interessante

Organizzare un dialogo Atti del discorso: una classificazione superficiale Automa degli stati del discorso Trattamento della ricchezza espressiva Un esempio con esercizi

Atti del discorso (Speech Acts) Alcune classi di speech acts Opening: The first interaction allows to open the dialogue, this is the welcome phase where the dialogue agent presents yourself and asks to the user to do the same thing. Info-Request: A question by the speaker, it is used to ask information, as questioning about an artwork particular or a question used to change topic. Answer: The act to aswer a question. Closing : Farewells.

Automa degli stati del discorso

Trattamento della ricchezza espressiva Riconoscimento nello stimolo delle varie forme e risposta centralizzata Forme: Buongiorno, Salve, Ciao Classe: CLASSE_SALUTO Emissione di forme diverse in risposta Classe: RICHIESTA_NOME Forme: Come ti chiami?, Presentiamoci! Tu sei?, Chi sei?, Qual è il tuo nome?

Trattamento della ricchezza espressiva Riconoscimento nello stimolo delle varie forme e risposta centralizzata Forme: Buongiorno, Salve, Ciao Classe: CLASSE_PRESENTAZIONE Mezzo usabile nel modello stimolo-risposta: (Buongiorno,RISTIMOLA(CLASSE_PRESENTAZIONE)) (Salve,RISTIMOLA(CLASSE_PRESENTAZIONE)) (Ciao,RISTIMOLA(CLASSE_PRESENTAZIONE))

Trattamento della ricchezza espressiva Emissione di forme diverse in risposta Classe: CLASSE_SALUTO Forme: Buongiorno, Salve, Ciao (CLASSE_SALUTO, RISPOSTA_CASUALE(Buongiorno, Salve, Ciao))

Trattamento della ricchezza espressiva Emissione di forme diverse in risposta (RICHIESTA_NOME RISPOSTA_CASUALE(Come ti chiami?, Presentiamoci! Tu sei?, Chi sei?, Qual è il tuo nome?)) (CLASSE_PRESENTAZIONE, RISTIMOLA(CLASSE_SALUTO) RISTIMOLA(RICHIESTA_NOME))

Ricapitolando (Buongiorno,RISTIMOLA(CLASSE_PRESENTAZIONE)) (Salve,RISTIMOLA(CLASSE_PRESENTAZIONE)) (Ciao,RISTIMOLA(CLASSE_PRESENTAZIONE)) (CLASSE_SALUTO, RISPOSTA_CASUALE(Buongiorno, Salve, Ciao)) (RICHIESTA_NOME RISPOSTA_CASUALE(Come ti chiami?, Presentiamoci! Tu sei?, Chi sei?, Qual è il tuo nome?)) (CLASSE_PRESENTAZIONE, RISTIMOLA(CLASSE_SALUTO) RISTIMOLA(RICHIESTA_NOME))

Esercizio Realizzare in AIML il seguente automa di discorso Presentazione reciproca Domanda su autore quadro

Sending Travel sendingSource TravelSource SemdingGoal TravelGoal SendingTheme TravelTicket

Limiti dell’approccio comportamentista

Il nostro modello IP=interazione precedente Vi=variabile … Good Grief! Vk … Good Grief! Stimolo

Proviamo… A costruire un macchina chiacchierona che gestisce tutti i corsi della facoltà: (Quando comincia il corso di letteratura?, Il corso inizia il RECUPERA_VALORE(INIZIO_CORSO_LETTERATURA)) (Quando finisce il corso di letteratura?, Il corso finisce il RECUPERA_VALORE(FINE_CORSO_LETTERATURA)) (Quando crediti ha il corso di letteratura?, Il corso è articolato su RECUPERA_VALORE(CFU_CORSO_LETTERATURA) crediti)

Proviamo… Variabili necessarie: Osservazioni: INIZIO_CORSO_LETTERATURA FINE_CORSO_LETTERATURA CFU_CORSO_LETTERATURA INIZIO_CORSO_AB_INF FINE_CORSO_AB_INF CFU_CORSO_AB_INF INIZIO_CORSO_LMDC FINE_CORSO_LMDC CFU_CORSO_LMDC … Osservazioni: Il numero di variabili cresce a dismisura I nomi delle variabili possono avere una struttura ripetitiva Abbiamo bisogno di un modello migliore per la RAPPRESENTAZIONE DELLA MEMORIA INTERNA