AIML - Guida rapida
AIML sta per Artificial Intelligence Markup Language. AIML è stato sviluppato dalla comunità del software libero Alicebot e dal Dr. Richard S. Wallace durante il periodo 1995-2000. AIML viene utilizzato per creare o personalizzare Alicebot, un'applicazione di chat-box basata sul software gratuito ALICE (Artificial Linguistic Internet Computer Entity).
Tag AIML
Di seguito sono riportati i tag importanti comunemente utilizzati nei documenti AIML.
S.No. | Tag / descrizione AIML |
---|---|
1 | <aiml> Definisce l'inizio e la fine di un documento AIML. |
2 | <category> Definisce il unit of knowledge nella knowledge base di Alicebot. |
3 | <pattern> Definisce il modello in modo che corrisponda a ciò che un utente può inserire in un Alicebot. |
4 | <template> Definisce la risposta di un Alicebot all'input dell'utente. |
Discuteremo ciascuno di questi tag nel capitolo Tag di base di AIML .
Di seguito sono riportati alcuni degli altri tag aiml ampiamente utilizzati. Discuteremo ogni tag in dettaglio nei prossimi capitoli.
S.No. | Tag / descrizione AIML |
---|---|
1 | <star> Utilizzato per abbinare i caratteri jolly * carattere / i nel tag <pattern>. |
2 | <srai> Tag multiuso, utilizzato per chiamare / abbinare le altre categorie. |
3 | <random> Usato <random> per ottenere risposte casuali. |
4 | <li> Utilizzato per rappresentare più risposte. |
5 | <set> Utilizzato per impostare il valore in una variabile AIML. |
6 | <get> Utilizzato per ottenere il valore memorizzato in una variabile AIML. |
7 | <that> Utilizzato in AIML per rispondere in base al contesto. |
8 | <topic> Utilizzato in AIML per memorizzare un contesto in modo che la conversazione successiva possa essere eseguita in base a quel contesto. |
9 | <think> Utilizzato in AIML per memorizzare una variabile senza avvisare l'utente. |
10 | <condition> Simile alle istruzioni switch nel linguaggio di programmazione. Aiuta ALICE a rispondere all'input corrispondente. |
Vocabolario AIML
Il vocabolario AIML utilizza parole, spazio e due caratteri speciali * e _come caratteri jolly. L'interprete AIML dà la preferenza al modello che ha_ rispetto al modello che ha *. I tag AIML sono conformi a XML e i modelli non fanno distinzione tra maiuscole e minuscole.
Esempio
<aiml version = "1.0.1" encoding = "UTF-8"?>
<category>
<pattern> HELLO ALICE </pattern>
<template>
Hello User!
</template>
</category>
</aiml>
Di seguito sono riportati i punti importanti da considerare:
<aiml> tag indica l'inizio del documento AIML.
<category> tag definisce l'unità di conoscenza.
<pattern> tag definisce il pattern che l'utente sta per digitare.
<template> tag definisce la risposta all'utente se l'utente digita Hello Alice.
Risultato
User: Hello Alice
Bot: Hello User
Questo tutorial ti guiderà su come preparare un ambiente di sviluppo per iniziare a lavorare con AIML per creare software di chat automatica. Il programma AB è un'implementazione di riferimento di AIML 2.0 sviluppato e mantenuto da ALICE AI Foundation. Questo tutorial ti insegnerà anche come configurare JDK, prima di configurare la libreria Program AB -
Passaggio 1: configurazione del Java Development Kit (JDK)
È possibile scaricare l'ultima versione di SDK dal sito Java di Oracle - Download di Java SE . Troverai le istruzioni per l'installazione di JDK nei file scaricati, segui le istruzioni fornite per installare e configurare il setup. Infine impostare le variabili di ambiente PATH e JAVA_HOME in modo che facciano riferimento alla directory che contiene java e javac, tipicamente java_install_dir / bin e java_install_dir rispettivamente.
Se stai usando Windows e hai installato JDK in C: \ jdk1.7.0_75, dovresti inserire la seguente riga nel tuo file C: \ autoexec.bat.
set PATH = C:\jdk1.7.0_75\bin;%PATH%
set JAVA_HOME = C:\jdk1.7.0_75
In alternativa, su Windows NT / 2000 / XP, puoi anche fare clic con il pulsante destro del mouse su Risorse del computer, selezionare Proprietà, quindi Avanzate, quindi Variabili d'ambiente. Quindi, aggiornerete il valore PATH e premerete il pulsante OK.
Su Unix (Solaris, Linux, ecc.), Se l'SDK è installato in /usr/local/jdk1.7.0_75 e si utilizza la shell C, inserire quanto segue nel file .cshrc.
setenv PATH /usr/local/jdk1.7.0_75/bin:$PATH
setenv JAVA_HOME /usr/local/jdk1.7.0_75
In alternativa, se utilizzi un IDE (Integrated Development Environment) come Borland JBuilder, Eclipse, IntelliJ IDEA o Sun ONE Studio, compila ed esegui un semplice programma per confermare che l'IDE sa dove hai installato Java, altrimenti esegui la corretta configurazione come indicato nel documento dell'IDE.
Passaggio 2: impostare il programma AB
Ora, se tutto va bene, puoi procedere alla configurazione del tuo programma AB. Di seguito sono riportati i semplici passaggi per scaricare e installare la libreria sul tuo computer.
Scegli se installare AIML su Windows o Unix, quindi procedi al passaggio successivo per scaricare il file .zip
Scarica l'ultima versione dei binari del programma AB da https://code.google.com/p/program-ab/usando il suo link program-ab-0.0.4.3.zip .
Al momento della stesura di questo tutorial, ho scaricato program-ab-0.0.4.3.zip sulla mia macchina Windows e quando decomprimi il file scaricato ti darà la struttura della directory all'interno di C: \ ab come segue.
S.No. | Directory e descrizione |
---|---|
1 | c:/ab/bots Memorizza i bot AIML |
2 | c:/ab/lib Memorizza le librerie Java |
3 | c:/ab/out Directory del file di classe Java |
4 | c:/ab/run.bat file batch per l'esecuzione del programma AB |
Una volta terminato questo ultimo passaggio, sei pronto per procedere con il tuo primo esempio AIML che vedrai nel prossimo capitolo.
Cominciamo a creare il primo bot che saluterà semplicemente un utente con Hello User! quando un utente digita Hello Alice.
Crea la struttura del progetto
Come in AIML Environment Setup , abbiamo estratto il contenuto di program-ab inC > ab con la seguente struttura di directory.
S.No. | Directory e descrizione |
---|---|
1 | c:/ab/bots Memorizza i bot AIML |
2 | c:/ab/lib Memorizza le librerie Java |
3 | c:/ab/out Directory del file di classe Java |
4 | c:/ab/run.bat file batch per l'esecuzione del programma AB |
Ora, crea un test di directory all'interno C > ab > bots e creare le seguenti directory in esso.
S.No. | Directory e descrizione |
---|---|
1 | c:/ab/bots/test/aiml Memorizza i file AIML |
2 | c:/ab/bots/test/aimlif Memorizza i file AIMLIF |
3 | c:/ab/bots/test/config Memorizza i file di configurazione |
4 | c:/ab/bots/test/sets Memorizza i set AIML |
5 | c:/ab/bots/test/maps Memorizza mappe AIML |
Crea file di origine
Crea test.aiml all'interno C > ab > bots > test > aiml e test.aiml.csv all'interno C > ab > bots > test > aimlif directory.
test.aiml
<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version="1.0.1" encoding = "UTF-8"?>
<category>
<pattern> HELLO ALICE </pattern>
<template>
Hello User
</template>
</category>
</aiml>
test.aiml.csv
0,HELLO ALICE,*,*,Hello User,test.aiml
Esegui il programma
Apri il prompt dei comandi. Vai aC > ab > e digita il seguente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verifica il risultato
Vedrai il seguente output:
Working Directory = C:\ab
Program AB 0.0.4.2 beta -- AI Foundation Reference AIML 2.0 implementation
bot = test
action = chat
trace = false
trace mode = false
Name = test Path = C:\ab/bots/test
C:\ab
C:\ab/bots
C:\ab/bots/test
C:\ab/bots/test/aiml
C:\ab/bots/test/aimlif
C:\ab/bots/test/config
C:\ab/bots/test/logs
C:\ab/bots/test/sets
C:\ab/bots/test/maps
Preprocessor: 0 norms 0 persons 0 person2
Get Properties: C:\ab/bots/test/config/properties.txt
addAIMLSets: C:\ab/bots/test/sets does not exist.
addCategories: C:\ab/bots/test/aiml does not exist.
AIML modified Tue Apr 07 22:24:29 IST 2015 AIMLIF modified Tue Apr 07 22:26:53 I
ST 2015
No deleted.aiml.csv file found
No deleted.aiml.csv file found
Loading AIML files from C:\ab/bots/test/aimlif
Reading Learnf file
Loaded 1 categories in 0.009 sec
--> Bot test 1 completed 0 deleted 0 unfinished
(1[6])--HELLO-->(1[5])--ALICE-->(1[4])--<THAT>-->(1[3])--*-->(1[2])--<TOPIC>-->(
1[1])--*-->(0[null,null]) Hello User...
7 nodes 6 singletons 1 leaves 0 shortcuts 0 n-ary 6 branches 0.85714287 average
branching
Human:
genere Hello Alice e vedere il risultato e quindi digitare qualsiasi altra cosa per vedere il risultato modificato.
Human: hello alice
Robot: Hello User
Human: bye
Robot: I have no answer for that.
Human:
In questo tutorial, discuteremo i tag di base di AIML.
<aiml> - definisce l'inizio e la fine di un documento AIML.
<category> - definisce il unit of knowledge nella knowledge base di Alicebot.
<pattern> - definisce il modello in modo che corrisponda a ciò che un utente può inserire in un Alicebot.
<template> - definisce la risposta di un Alicebot all'input dell'utente.
I seguenti file AIML sono stati usati qui come riferimento.
<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
<category>
<pattern> HELLO ALICE </pattern>
<template>
Hello User
</template>
</category>
</aiml>
tag <aiml>
Il tag <aiml> contrassegna l'inizio e la fine di un documento AIML. Contiene informazioni sulla versione e sulla codifica negli attributi di versione e codifica. l'attributo version memorizza la versione AIML utilizzata dalla Knowledge Base di ALICE chatterbot, KB. Ad esempio, abbiamo utilizzato la versione 1.0.1. Questo attributo è facoltativo.
Gli attributi di codifica forniscono i set di caratteri da utilizzare nel documento. Ad esempio, abbiamo utilizzato UTF-8. Come requisito obbligatorio, il tag <aiml> deve contenere almeno un tag <category>. Possiamo creare più file AIML in cui ogni file AIML contiene un singolo tag <aiml>. Lo scopo di ogni file AIML è aggiungere almeno una singola unità di conoscenza chiamata categoria a ALICE chatterbot KB.
<aiml version = "1.0.1" encoding = "UTF-8"?>
...
</aiml>
tag <category>
Il tag <category> è l'unità di conoscenza fondamentale di un ALICE Bot. Ogni categoria contiene:
Input dell'utente sotto forma di una frase che può essere un'asserzione, una domanda, un punto esclamativo ecc. L'input dell'utente può contenere caratteri jolly come * e _.
Risposta all'input dell'utente che deve essere presentato da Alicebot.
Contesto opzionale.
UN <category> tag deve avere <pattern> e <template> etichetta. <pattern> rappresenta l'input dell'utente e il modello rappresenta la risposta del bot.
<category>
<pattern> HELLO ALICE </pattern>
<template>
Hello User
</template>
</category>
Qui, se l'utente entra Hello Alice quindi il bot risponderà come Hello User.
tag <pattern>
Il tag <pattern> rappresenta l'input di un utente. Dovrebbe essere il primo tag all'interno del tag <category>. Il tag <pattern> può contenere caratteri jolly per abbinare più di una frase come input dell'utente. Ad esempio, nel nostro esempio, <pattern> contiene HELLO ALICE.
AIML non fa distinzione tra maiuscole e minuscole. Se un utente inserisce Hello Alice, ciao alice, HELLO ALICE ecc., Tutti gli input sono validi e il bot li abbinerà a HELLO ALICE.
<category>
<pattern> HELLO ALICE </pattern>
<template>
Hello User
</template>
</category>
Qui, il modello è "Hello User" e rappresenta la risposta di un robot all'input dell'utente.
tag <template>
Il tag <template> rappresenta la risposta del bot all'utente. Dovrebbe essere il secondo tag all'interno del tag <category>. Questo tag <template> può salvare dati, chiamare un altro programma, fornire risposte condizionali o delegare ad altre categorie.
<category>
<pattern> HELLO ALICE </pattern>
<template>
Hello User
</template>
</category>
In questo caso, il modello è "Hello User" e rappresenta la risposta di un robot all'input dell'utente.
<star> Il tag viene utilizzato per abbinare i caratteri jolly * carattere / i nel tag <pattern>.
Sintassi
<star index = "n"/>
n indica la posizione di * all'interno dell'input dell'utente nel tag <pattern>.
Considera il seguente esempio:
<category>
<pattern> A * is a *. </pattern>
<template>
When a <star index = "1"/> is not a <star index = "2"/>?
</template>
</category>
Se l'utente inserisce "Un mango è un frutto". allora bot risponderà come "Quando un mango non è un frutto?"
Esempio
Crea star.aiml all'interno C > ab > bots > test > aiml e star.aiml.csv all'interno C > ab > bots > test > aimlif directory.
star.aiml
<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
<category>
<pattern>I LIKE *</pattern>
<template>
I too like <star/>.
</template>
</category>
<category>
<pattern>A * IS A *</pattern>
<template>
How <star index = "1"/> can not be a <star index = "2"/>?
</template>
</category>
</aiml>
star.aiml.csv
0,I LIKE *,*,*,I too like <star/>.,star.aiml
0,A * IS A *,*,*,How <star index = "1"/> can not be a <star index = "2"/>?,star.aiml
Esegui il programma
Apri il prompt dei comandi. Vai aC > ab > e digita il seguente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verifica il risultato
Vedrai il seguente output:
Human: I like mango
Robot: I too like mango.
Human: A mango is a fruit
Robot: How mango can not be a fruit?
<star index = "1" /> è spesso usato come <star />
<srai>Il tag è un tag multiuso. Questo tag consente ad AIML di definire i diversi target per lo stesso modello.
Sintassi
<srai> pattern </srai>
Di seguito sono riportati i termini comunemente usati associati a srai -
Riduzione simbolica
Dividere e conquistare
Risoluzione dei sinonimi
Rilevamento delle parole chiave
Riduzione simbolica
La tecnica di riduzione simbolica viene utilizzata per semplificare i modelli. Aiuta a ridurre schemi grammaticali complessi con schemi semplici.
Ad esempio, considera la seguente conversazione.
Human: Who was Albert Einstein?
Robot: Albert Einstein was a German physicist.
Human: Who was Isaac Newton?
Robot: Isaac Newton was a English physicist and mathematician.
Adesso What if le domande vengono sollevate come
Human: DO YOU KNOW WHO Albert Einstein IS?
Human: DO YOU KNOW WHO Isaac Newton IS?
Qui, <srai> tag funziona. Può prendere il modello dell'utente come modello.
Passaggio 1: crea categorie
<category>
<pattern>WHO IS ALBERT EINSTEIN?</pattern>
<template>Albert Einstein was a German physicist.</template>
</category>
<category>
<pattern> WHO IS Isaac NEWTON? </pattern>
<template>Isaac Newton was a English physicist and mathematician.</template>
</category>
Passaggio 2: crea una categoria generica utilizzando il tag <srai>
<category>
<pattern>DO YOU KNOW WHO * IS?</pattern>
<template>
<srai>WHO IS <star/></srai>
</template>
</category>
Esempio
Crea srai.aiml all'interno C > ab > bots > test > aiml e srai.aiml.csv all'interno C > ab > bots > test > aimlif directory.
srai.aiml
<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
<category>
<pattern> WHO IS ALBERT EINSTEIN </pattern>
<template>Albert Einstein was a German physicist.</template>
</category>
<category>
<pattern> WHO IS Isaac NEWTON </pattern>
<template>Isaac Newton was a English physicist and mathematician.</template>
</category>
<category>
<pattern>DO YOU KNOW WHO * IS</pattern>
<template>
<srai>WHO IS <star/></srai>
</template>
</category>
</aiml>
star.aiml.csv
0,WHO IS ALBERT EINSTEIN,*,*,Albert Einstein was a German physicist.,srai.aiml
0,WHO IS Isaac NEWTON,*,*,Isaac Newton was a English physicist and mathematician.,srai.aiml
0,DO YOU KNOW WHO * IS,*,*,<srai>WHO IS <star/></srai>,srai.aiml
Esegui il programma
Apri il prompt dei comandi. Vai aC > ab > e digita il seguente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verifica il risultato
Vedrai il seguente output:
Human: Do you know who Albert Einstein is
Robot: Albert Einstein was a German physicist.
Dividere e conquistare
Divide and Conquer viene utilizzato per riutilizzare le frasi secondarie per fornire una risposta completa. Aiuta a ridurre la definizione di più categorie.
Ad esempio, considera la seguente conversazione.
Human: Bye
Robot: GoodBye!
Human: Bye Alice!
Robot: GoodBye!
Ora qui il robot dovrebbe rispondere GoodBye! Ogni volta che un utente dice Bye all'inizio della frase.
Mettiamo il tag <srai> per funzionare qui.
Passaggio 1: crea una categoria
<category>
<pattern>BYE</pattern>
<template>Good Bye!</template>
</category>
Passaggio 2: crea una categoria generica utilizzando il tag <srai>
<category>
<pattern>BYE *</pattern>
<template>
<srai>BYE</srai>
</template>
</category>
Esempio
Aggiorna srai.aiml all'interno C > ab > bots > test > aiml e srai.aiml.csv all'interno C > ab > bots > test > aimlif directory.
srai.aiml
<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
<category>
<pattern> WHO IS ALBERT EINSTEIN </pattern>
<template>Albert Einstein was a German physicist.</template>
</category>
<category>
<pattern> WHO IS Isaac NEWTON </pattern>
<template>Isaac Newton was a English physicist and mathematician.</template>
</category>
<category>
<pattern>DO YOU KNOW WHO * IS</pattern>
<template>
<srai>WHO IS <star/></srai>
</template>
</category>
<category>
<pattern>BYE</pattern>
<template>Good Bye!</template>
</category>
<category>
<pattern>BYE *</pattern>
<template>
<srai>BYE</srai>
</template>
</category>
</aiml>
star.aiml.csv
0,WHO IS ALBERT EINSTEIN,*,*,Albert Einstein was a German physicist.,srai.aiml
0,WHO IS Isaac NEWTON,*,*,Isaac Newton was a English physicist and mathematician.,srai.aiml
0,DO YOU KNOW WHO * IS,*,*,<srai>WHO IS <star/></srai>,srai.aiml
0,BYE,*,*,Good Bye!,srai.aiml
0,BYE *,*,*,<srai>BYE</srai>,srai.aiml
Esegui il programma
Apri il prompt dei comandi. Vai aC > ab > e digita il seguente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verifica il risultato
Vedrai il seguente output:
Human: Bye
Robot: GoodBye!
Human: Bye Alice!
Robot: GoodBye!
Risoluzione dei sinonimi
I sinonimi sono parole con significati simili. Un bot dovrebbe rispondere allo stesso modo per parole simili.
Ad esempio, considera la seguente conversazione.
Human: Factory
Robot: Development Center!
Human: Industry
Robot: Development Center!
Ora qui il robot dovrebbe rispondere Development Center! ogni volta che un utente dice Factory o Industry.
Mettiamo <srai> tag per lavorare qui.
Passaggio 1: crea una categoria
<category>
<pattern>FACTORY</pattern>
<template>Development Center!</template>
</category>
Passaggio 2: crea una categoria generica utilizzando il tag <srai>
<category>
<pattern>INDUSTRY</pattern>
<template>
<srai>FACTORY</srai>
</template>
</category>
Esempio
Aggiorna srai.aiml all'interno C > ab > bots > test > aiml e srai.aiml.csv all'interno C > ab > bots > test > aimlif directory.
srai.aiml
<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
<category>
<pattern> WHO IS ALBERT EINSTEIN </pattern>
<template>Albert Einstein was a German physicist.</template>
</category>
<category>
<pattern> WHO IS Isaac NEWTON </pattern>
<template>Isaac Newton was a English physicist and mathematician.</template>
</category>
<category>
<pattern>DO YOU KNOW WHO * IS</pattern>
<template>
<srai>WHO IS <star/></srai>
</template>
</category>
<category>
<pattern>BYE</pattern>
<template>Good Bye!</template>
</category>
<category>
<pattern>BYE *</pattern>
<template>
<srai>BYE</srai>
</template>
</category>
<category>
<pattern>FACTORY</pattern>
<template>Development Center!</template>
</category>
<category>
<pattern>INDUSTRY</pattern>
<template>
<srai>FACTORY</srai>
</template>
</category>
</aiml>
star.aiml.csv
0,WHO IS ALBERT EINSTEIN,*,*,Albert Einstein was a German physicist.,srai.aiml
0,WHO IS Isaac NEWTON,*,*,Isaac Newton was a English physicist and mathematician.,srai.aiml
0,DO YOU KNOW WHO * IS,*,*,<srai>WHO IS <star/></srai>,srai.aiml
0,BYE,*,*,Good Bye!,srai.aiml
0,BYE *,*,*,<srai>BYE</srai>,srai.aiml
0,FACTORY,*,*,Development Center!,srai.aiml
0,INDUSTRY,*,*,<srai>FACTORY</srai>,srai.aiml
Esegui il programma
Apri il prompt dei comandi. Vai aC > ab > e digita il seguente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verifica il risultato
Vedrai il seguente output:
Human: Factory
Robot: Development Center!
Human: Industry
Robot: Development Center!
Rilevamento di parole chiave
Utilizzando srai, possiamo restituire una semplice risposta quando l'utente digita una parola chiave specifica, ad esempio Scuola, indipendentemente da dove "scuola" sia presente nella frase.
Ad esempio, considera la seguente conversazione.
Human: I love going to school daily.
Robot: School is an important institution in a child's life.
Human: I like my school.
Robot: School is an important institution in a child's life.
Qui, il robot dovrebbe rispondere a un messaggio standard 'School is an important institution in a child's life.' ogni volta che un utente ha school nella frase.
Mettiamo <srai>tag per lavorare qui. Useremo i caratteri jolly qui.
Passaggio 1: crea una categoria
<category>
<pattern>SCHOOL</pattern>
<template>School is an important institution in a child's life.</template>
</category>
Passaggio 2: crea categorie generiche utilizzando il tag <srai>
<category>
<pattern>_ SCHOOL</pattern>
<template>
<srai>SCHOOL</srai>
</template>
</category>
<category>
<pattern>_ SCHOOL</pattern>
<template>
<srai>SCHOOL</srai>
</template>
</category>
<category>
<pattern>SCHOOL *</pattern>
<template>
<srai>SCHOOL</srai>
</template>
</category>
<category>
<pattern>_ SCHOOL *</pattern>
<template>
<srai>SCHOOL</srai>
</template>
</category>
Esempio
Aggiorna srai.aiml all'interno C > ab > bots > test > aiml e srai.aiml.csv all'interno C > ab > bots > test > aimlif directory.
srai.aiml
<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
<category>
<pattern> WHO IS ALBERT EINSTEIN </pattern>
<template>Albert Einstein was a German physicist.</template>
</category>
<category>
<pattern> WHO IS Isaac NEWTON </pattern>
<template>Isaac Newton was a English physicist and mathematician.</template>
</category>
<category>
<pattern>DO YOU KNOW WHO * IS</pattern>
<template>
<srai>WHO IS <star/></srai>
</template>
</category>
<category>
<pattern>BYE</pattern>
<template>Good Bye!</template>
</category>
<category>
<pattern>BYE *</pattern>
<template>
<srai>BYE</srai>
</template>
</category>
<category>
<pattern>FACTORY</pattern>
<template>Development Center!</template>
</category>
<category>
<pattern>INDUSTRY</pattern>
<template>
<srai>FACTORY</srai>
</template>
</category>
<category>
<pattern>SCHOOL</pattern>
<template>School is an important institution in a child's life.</template>
</category>
<category>
<pattern>_ SCHOOL</pattern>
<template>
<srai>SCHOOL</srai>
</template>
</category>
<category>
<pattern>_ SCHOOL</pattern>
<template>
<srai>SCHOOL</srai>
</template>
</category>
<category>
<pattern>SCHOOL *</pattern>
<template>
<srai>SCHOOL</srai>
</template>
</category>
<category>
<pattern>_ SCHOOL *</pattern>
<template>
<srai>SCHOOL</srai>
</template>
</category>
</aiml>
star.aiml.csv
0,WHO IS ALBERT EINSTEIN,*,*,Albert Einstein was a German physicist.,srai.aiml
0,WHO IS Isaac NEWTON,*,*,Isaac Newton was a English physicist and mathematician.,srai.aiml
0,DO YOU KNOW WHO * IS,*,*,<srai>WHO IS <star/></srai>,srai.aiml
0,BYE,*,*,Good Bye!,srai.aiml
0,BYE *,*,*,<srai>BYE</srai>,srai.aiml
0,FACTORY,*,*,Development Center!,srai.aiml
0,INDUSTRY,*,*,<srai>FACTORY</srai>,srai.aiml
0,SCHOOL,*,*,School is an important institution in a child's life.,srai.aiml
0,_ SCHOOL,*,*,<srai>SCHOOL</srai>,srai.aiml
0,SCHOOL *,*,*,<srai>SCHOOL</srai>,srai.aiml
0,_ SCHOOL *,*,*,<srai>SCHOOL</srai>,srai.aiml
Esegui il programma
Apri il prompt dei comandi. Vai aC > ab > e digita il seguente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verifica il risultato
Vedrai il seguente output:
Human: I love going to school daily.
Robot: School is an important institution in a child's life.
Human: I like my school.
Robot: School is an important institution in a child's life.
<random>Il tag viene utilizzato per ottenere risposte casuali. Questo tag consente ad AIML di rispondere in modo diverso per lo stesso input. Il tag <random> viene utilizzato insieme ai tag <li>. I tag <li> riportano risposte diverse che devono essere fornite all'utente su base casuale.
Sintassi
<random>
<li> pattern1 </li>
<li> pattern2 </li>
...
<li> patternN </li>
</random>
Ad esempio, considera la seguente conversazione.
Human: Hi
Robot: Hello!
Human: Hi
Robot: Hi! Nice to meet you!
Esempio
Crea random.aiml all'interno C > ab > bots > test > aiml e random.aiml.csv all'interno C > ab > bots > test > aimlif directory.
random.aiml
<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding ="UTF-8"?>
<category>
<pattern>HI</pattern>
<template>
<random>
<li> Hello! </li>
<li> Hi! Nice to meet you! </li>
</random>
</template>
<category>
</aiml>
random.aiml.csv
0,HI,*,*, <random><li> Hello! </li><li> Hi! Nice to meet you! </li></random>,random.aiml
Esegui il programma
Apri il prompt dei comandi. Vai aC > ab > e digita il seguente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verifica il risultato
Vedrai il seguente output:
Human: Hi
Robot: Hi! Nice to meet you!
Human: Hi
Robot: Hello!
Qui, la risposta può variare considerando risposte casuali.
<set> e <get>i tag vengono utilizzati per lavorare con le variabili in AIML. Le variabili possono essere variabili predefinite o variabili create dal programmatore.
Sintassi
Il tag <set> viene utilizzato per impostare il valore in una variabile.
<set name = "variable-name"> variable-value </set>
Il tag <get> viene utilizzato per ottenere valore da una variabile.
<get name = "variable-name"></get>
Ad esempio, considera la seguente conversazione.
Human: I am Mahesh
Robot: Hello Mahesh!
Human: Good Night
Robot: Good Night Mahesh! Thanks for the conversation!
Esempio
Crea setget.aiml all'interno C > ab > bots > test > aiml e setget.aiml.csv all'interno C > ab > bots > test > aimlif directory.
setget.aiml
<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
<category>
<pattern>I am *</pattern>
<template>
Hello <set name = "username"> <star/>! </set>
</template>
</category>
<category>
<pattern>Good Night</pattern>
<template>
Hi <get name = "username"/> Thanks for the conversation!
</template>
</category>
</aiml>
setget.aiml.csv
0,I am *,*,*, Hello <set name = "username"> <star/>! </set>,setget.aiml
0,Good Night,*,*, Hi <get name = "username"/> Thanks for the conversation!,setget.aiml
Esegui il programma
Apri il prompt dei comandi. Vai aC > ab > e digita il seguente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verifica il risultato
Vedrai il seguente output:
Human: I am Mahesh
Robot: Hello Mahesh!
Human: Good Night
Robot: Good Night Mahesh! Thanks for the conversation!
<that> Il tag viene utilizzato in AIML per rispondere in base al contesto.
Sintassi
<that> template </that>
Ad esempio, considera la seguente conversazione.
Human: Hi Alice! What about movies?
Robot: Do you like comedy movies?
Human: No
Robot: Ok! But I like comedy movies.
Esempio
Crealo dentro C > ab > bots > test > aiml e that.aiml.csv all'interno C > ab > bots > test > aimlif directory.
that.aiml
<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
<category>
<pattern>WHAT ABOUT MOVIES</pattern>
<template>Do you like comedy movies</template>
</category>
<category>
<pattern>YES</pattern>
<that>Do you like comedy movies</that>
<template>Nice, I like comedy movies too.</template>
</category>
<category>
<pattern>NO</pattern>
<that>Do you like comedy movies</that>
<template>Ok! But I like comedy movies.</template>
</category>
</aiml>
that.aiml.csv
0,WHAT ABOUT MOVIES,*,*,Do you like comedy movies,that.aiml
0,YES,Do you like comedy movies,*,Nice! I like comedy movies too.,that.aiml
0,NO,Do you like comedy movies,*,Ok! But I like comedy movies.,that.aiml
Esegui il programma
Apri il prompt dei comandi. Vai aC > ab > e digita il seguente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verifica il risultato
Vedrai il seguente output:
Human: What about movies?
Robot: Do you like comedy movies?
Human: No
Robot: Ok! But I like comedy movies.
<topic>Il tag viene utilizzato in AIML per memorizzare un contesto in modo che la conversazione successiva possa essere eseguita in base a quel contesto. Generalmente,<topic> tag è utilizzato in Yes/No type conversation. Aiuta AIML a cercare le categorie scritte nel contesto dell'argomento.
Sintassi
Definisci un argomento utilizzando il tag <set>
<template>
<set name = "topic"> topic-name </set>
</template>
Definisci la categoria utilizzando il tag <topic>
<topic name = "topic-name">
<category>
...
</category>
</topic>
Ad esempio, considera la seguente conversazione.
Human: let discuss movies
Robot: Yes movies
Human: Comedy movies are nice to watch
Robot: Watching good movie refreshes our minds.
Human: I like watching comedy
Robot: I too like watching comedy.
Qui il bot risponde prendendo "film" come argomento.
Esempio
Crea topic.aiml all'interno C > ab > bots > test > aiml e topic.aiml.csv all'interno C > ab > bots > test > aimlif directory.
topic.aiml
<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
<category>
<pattern>LET DISCUSS MOVIES</pattern>
<template>Yes <set name = "topic">movies</set></template>
</category>
<topic name = "movies">
<category>
<pattern> * </pattern>
<template>Watching good movie refreshes our minds.</template>
</category>
<category>
<pattern> I LIKE WATCHING COMEDY! </pattern>
<template>I like comedy movies too.</template>
</category>
</topic>
</aiml>
that.aiml.csv
0,LET DISCUSS MOVIES,*,*,Yes <set name = "topic">movies</set>,topic.aiml
0,*,*,movies,Watching good movie refreshes our minds.,topic.aiml
0,I LIKE WATCHING COMEDY!,*,movies,I like comedy movies too.,topic.aiml
Esegui il programma
Apri il prompt dei comandi. Vai aC > ab > e digita il seguente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verifica il risultato
Vedrai il seguente output:
Human: let discuss movies
Robot: Yes movies
Human: Comedy movies are nice to watch
Robot: Watching good movie refreshes our minds.
Human: I like watching comedy
Robot: I too like watching comedy.
<think> Il tag viene utilizzato in AIML per memorizzare una variabile senza avvisare l'utente.
Sintassi
Memorizza un valore utilizzando il tag <think>
<think>
<set name = "variable-name"> variable-value </set>
</think>
Ad esempio, considera la seguente conversazione.
Human: My name is Mahesh
Robot: Hello!
Human: Byeee
Robot: Hi Mahesh Thanks for the conversation!
Esempio
Crea think.aiml all'interno C > ab > bots > test > aiml e think.aiml.csv all'interno C > ab > bots > test > aimlif directory.
think.aiml
<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
<category>
<pattern>My name is *</pattern>
<template>
Hello!<think><set name = "username"> <star/></set></think>
</template>
</category>
<category>
<pattern>Byeee</pattern>
<template>
Hi <get name = "username"/> Thanks for the conversation!
</template>
</category>
</aiml>
think.aiml.csv
0,My name is *,*,*, Hello! <think><set name = "username"> <star/></set></think>,think.aiml
0,Byeee,*,*, Hi <get name = "username"/> Thanks for the conversation!,think.aiml
Esegui il programma
Apri il prompt dei comandi. Vai aC > ab > e digita il seguente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verifica il risultato
Vedrai il seguente output:
Human: My name is Mahesh
Robot: Hello!
Human: Byeee
Robot: Hi Mahesh Thanks for the conversation!
<condition>Il tag è simile alle istruzioni switch nel linguaggio di programmazione. Aiuta ALICE a rispondere all'input corrispondente.
Sintassi
<condition name = "variable-name" value = "variable-value"/>
Ad esempio, considera la seguente conversazione.
Human: How are you feeling today
Robot: I am happy!
Qui abbiamo archiviato happy come lo stato di ALICE ed è così che risponde come "Sono felice!".
Esempio
Crea condition.aiml all'interno C > ab > bots > test > aiml e condition.aiml.csv all'interno C > ab > bots > test > aimlif directory.
condition.aiml
<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
<category>
<pattern> HOW ARE YOU FEELING TODAY </pattern>
<template>
<think><set name = "state"> happy</set></think>
<condition name = "state" value = "happy">
I am happy!
</condition>
<condition name = "state" value = "sad">
I am sad!
</condition>
</template>
</category>
</aiml>
condition.aiml.csv
0,HOW ARE YOU FEELING TODAY,*,*,
<think>
<set name = "state"> happy</set>
</think>
<condition name = "state" value = "happy">I am happy!</condition>
<condition name = "state" value = "sad">I am sad!</condition>,condition.aiml
Esegui il programma
Apri il prompt dei comandi. Vai aC > ab > e digita il seguente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verifica il risultato
Vedrai il seguente output:
Human: How are you feeling today
Robot: I am happy!