AIML e teoria dei chatbot – Terza parte
TAG <think>
Supponiamo di volere fare delle azioni di configurazione in AIML ma non vogliamo che il sistema dia feedback all’utente. In tal caso possiamo usare il tag <think> che consentirà al bot di eseguire delle operazioni in “background”. Facciamo un esempio per capire meglio il concetto.
<category> <pattern>MI CHIAMO *</pattern> <template>Che bel nome! <set name="nome"><star/></set> </template> </category>
Nell’esempio precedente all’input
utente : mi chiamo Domenico
il bot risponderà
bot: Che bel nome! Domenico
e verrà settata la variabile name=”nome”
ma se usassimo il tag <think> il risultato sarebbe leggermente diverso.
<category> <pattern>MI CHIAMO *</pattern> <template>Che bel nome! <think><set name="nome"><star/></set></think> </template> </category>
in questo secondo esempio quando l’utente scriverà
utente : mi chiamo Domenico
il bot risponderà
bot: Che bel nome!
e verrà settata la variabile name=”nome”
In definitiva possiamo usare sempre il tag <think> all’interno del template per rendere le operazioni di configurazione AIML silenti all’utente.
TAG <random> : risposta causale
E’ possibile configurare il bot affinché ad uno stesso stimolo possa rispondere casualmente e fornire pertanto risposte diverse. Per ottenere questo risultato si può usare l’elemento random, all’interno del quale i vari responsi sono contenuti in elementi <li>:
<category> <pattern>ARRIVEDERCI</pattern> <template> <random> <li>A presto.</li> <li>Salve.</li> <li>Arrivederci.</li> </random> </template> </category>
TAG <that> : risposta correlata
Come probabilmente , avrete già notato i tag AIML fino ad ora analizzati ci consentono di scrivere delle regole atomiche che non tengono in considerazione della storia del dialogo. Questo limite viene in parte superato con l’uso dei tag <that> e <topic>. Il tag <that> consente al bot di selezionare una regola e di fornire una riposta in base a quella precedente mentre con il tag <topic> è possibile attivare un sottoinsieme di regole incorporate all’interno del contesto/topic configurato dinamicamente. Proviamo a capire questi due tag con degli esempi.
<category> <pattern>ripeti quello che hai detto</pattern> <template>certo ho detto : <that/></template> </category>
Con l’esempio precedente posso usare il <that/> vuoto come variabile per recuperare l’ultima risposta del bot, ma una categoria può, però, essere condizionata dalla risposta precedente. Vediamo come sia possibile nell’esempio seguente:
<category> <pattern>COSA INTENDI</pattern> <that>SAI QUALCOSA CHE DOVREI SAPERE</that> <template>Intendo che mi hai nascosto qualcosa!</template> </category>
In questo caso si ipotizza che il sistema di dialogo sia arrivato a un punto in cui ha dato, come esito, una frase come: «Sai qualcosa che dovrei sapere?». Quindi, l’interlocutore esterno ha risposto con: «Cosa intendi?». A questo punto, il sistema di dialogo trova la corrispondenza con il modello «COSA INTENDI», ma subordinatamente al fatto che il contesto, ovvero il responso precedente, sia quello che è stato effettivamente, allora dà l’esito che si vede nell’esempio. Quindi, qui, l’elemento that contenuto in category serve a definire uno stimolo subordinato a un responso precedente.
<<AIML e teoria dei chatbot – Seconda parte
AIML e teoria dei chatbot – Quarta parte >>
Sono amante della tecnologia e delle tante sfumature del mondo IT, ho partecipato, sin dai primi anni di università ad importanti progetti in ambito Internet proseguendo, negli anni, allo startup, sviluppo e direzione di diverse aziende; Nei primi anni di carriera ho lavorato come consulente nel mondo dell’IT italiano, partecipando attivamente a progetti nazionali ed internazionali per realtà quali Ericsson, Telecom, Tin.it, Accenture, Tiscali, CNR. Dal 2010 mi occupo di startup mediante una delle mie società techintouch S.r.l che grazie alla collaborazione con la Digital Magics SpA, di cui sono Partner la Campania, mi occupo di supportare ed accelerare aziende del territorio .
Attualmente ricopro le cariche di :
– CTO MareGroup
– CTO Innoida
– Co-CEO in Techintouch s.r.l.
– Board member in StepFund GP SA
Manager ed imprenditore dal 2000 sono stato,
CEO e founder di Eclettica S.r.l. , Società specializzata in sviluppo software e System Integration
Partner per la Campania di Digital Magics S.p.A.
CTO e co-founder di Nexsoft S.p.A, società specializzata nella Consulenza di Servizi in ambito Informatico e sviluppo di soluzioni di System Integration, CTO della ITsys S.r.l. Società specializzata nella gestione di sistemi IT per la quale ho partecipato attivamente alla fase di startup.
Sognatore da sempre, curioso di novità ed alla ricerca di “nuovi mondi da esplorare“.
Comments