<?xml version="1.0" encoding="utf 8"?> <aiml version="1.0"> <! I COMMENTI AL CODICE SI SCRIVONO RACCHIUSI TRA I SEGNI CHE SI VEDONO QUI (in rosso) > <! ricordate che: il tag AIML definisce l'inizio e la fine di un documento AIML il tag CATEGORY definisce l'unità di conoscenza nella knowledge base del chatbot il tag PATTERN definisce il pattern (parola o frase) che deve combaciare con quello che l'utente scrive al chatbot il tag TEMPLATE definisce la risposta del chatbot ad un determinato input (speciicato da PATTERN) il tag * (che può essere messo più volte in un pattern) indica 'qualsiasi cosa" > <! USO DI SRAI per risolvere i conflitti di sinonimi (o l'occorrenza di errori) > <! uso di SRAI per sinonimi. Questa è la categoria principale a cui tutte le seguenti faranno riferimento > <pattern>che ne pensi di *</pattern> non so di cosa parli, purtroppo... puoi specificare meglio? <pattern>conosci * </pattern> <pattern>sai qualcosa di * </pattern> <pattern>parliamo di * </pattern>
<! altro esempio SRAI > <! uso di SRAI per errori. Questa è la categoria principale a cui tutte le seguenti faranno riferimento > <pattern>ciao *</pattern> <random> <! ci metto anche il random > <li> ciao! </li> <li> che bello! Qualcuno con cui parlare! </li> <li> eccomi! </li> <li> ciao bro'! Come butta? </li> <li> bella zio! </li> <li> Come stai <get name="nomeutente"/>? </li> <! se gli ho chiesto il nome e l'ho immagazzinato vedere nella parte successiva del listato nella variabile nomeutente, allora aggiunge il nome al saluto > </random> <pattern>caio* </pattern> <pattern>cciao </pattern> <pattern>buogiorno </pattern>
<! USO DI SET (per impostare il valore di una variabile in AIML) e di GET (per recuperare il valore immagazzinato precedentemente in una variabile > <pattern>mi chiamo *</pattern> Ciao <set name = "nomeutente"> <star/>! </set> <pattern>buonanotte</pattern> Alla prossima <get name="nomeutente"/> Grazie per la chiacchierata! <! uso di THAT per fornire risposte contestualizzate. THAT collega una successiva risposta ad un pattern precedente > <pattern>che tempo fa da te?</pattern> vuoi davvero parlare del tempo? <pattern>si</pattern> <that>vuoi davvero parlare del tempo?</that> Ok, parliamo del tempo. <pattern>no</pattern> <that>vuoi davvero parlare del tempo?</that> Ok! Ma trovo l'argomento interessante. Sei sicuro di non volerne parlare?
<! uso del tag TOPIC. E' usato in AIML per registrare un contesto in modo che successivamente vi si possa pare riferimento. Solitamente è usato nelle conversazioni con risposta secca (SI/NO) > <! per avere più libertà, uso l'asterisco per generalizzare la richiesta di conversazione inerente un dato argomento, ma avrei potuto scrivere 'parliamo di cibo' > <pattern>* cibo?</pattern> SI <set name = "topic">cibo</set> <topic name = "cibo"> <pattern> * </pattern> <! tanto per ricordarvelo, qui potrei inserire random > amo la buona tavola in generale </topic> <! THINK serve per registrare una variabile senza darne conto all'utente (cioè senza usarla immediatamente dopo, come dovrei fare se usassi un set e un get. Facciamo un esempio con le presentazioni > <! innanzitutto facciamo le presentazioni > <pattern>come ti chiami?</pattern> Mi chiamo Phil. E tu? <pattern>mi chiamo *</pattern> Ciao!<think><set name = "nomemio"> <star/></set></think> <pattern>alla prossima</pattern> Ciao <get name = "nomemio"/> Ci sentiamo presto!
<! come inserire una CONDIZIONE > <pattern> sono * </pattern> <think><set name = "umore"> <star/></set></think> <condition name = "umore" value = "felice"> Sono felice che tu sia felice! </condition> <condition name = "umore" value = "triste"> Mi dispiace che tu sia triste! </condition> </aiml>