AIML - Guía rápida
AIML significa Artificial Intelligence Markup Language. AIML fue desarrollado por la comunidad de software libre Alicebot y el Dr. Richard S. Wallace durante 1995-2000. AIML se utiliza para crear o personalizar Alicebot, que es una aplicación de caja de chat basada en el software gratuito ALICE (Entidad informática de Internet lingüística artificial).
Etiquetas AIML
A continuación se muestran las etiquetas importantes que se utilizan comúnmente en los documentos AIML.
S.No. | Etiqueta / descripción AIML |
---|---|
1 | <aiml> Define el principio y el final de un documento AIML. |
2 | <category> Define el unit of knowledge en la base de conocimientos de Alicebot. |
3 | <pattern> Define el patrón para que coincida con lo que un usuario puede ingresar a un Alicebot. |
4 | <template> Define la respuesta de un Alicebot a la entrada del usuario. |
Analizaremos cada una de estas etiquetas en el capítulo de etiquetas básicas de AIML .
A continuación se muestran algunas de las otras etiquetas aiml más utilizadas. Discutiremos cada etiqueta en detalle en los próximos capítulos.
S.No. | Etiqueta / descripción AIML |
---|---|
1 | <star> Se usa para coincidir con el comodín * carácter (s) en la etiqueta <patrón>. |
2 | <srai> Etiqueta multipropósito, utilizada para llamar / emparejar las otras categorías. |
3 | <random> Usado <random> para obtener respuestas aleatorias. |
4 | <li> Se usa para representar múltiples respuestas. |
5 | <set> Se utiliza para establecer un valor en una variable AIML. |
6 | <get> Se usa para obtener el valor almacenado en una variable AIML. |
7 | <that> Se usa en AIML para responder según el contexto. |
8 | <topic> Se usa en AIML para almacenar un contexto para que la conversación posterior se pueda realizar en función de ese contexto. |
9 | <think> Se usa en AIML para almacenar una variable sin notificar al usuario. |
10 | <condition> Similar a las declaraciones de cambio en el lenguaje de programación. Ayuda a ALICE a responder a las entradas coincidentes. |
Vocabulario AIML
El vocabulario AIML utiliza palabras, espacios y dos caracteres especiales. * y _como comodines. El intérprete de AIML da preferencia al patrón que tiene_ que el patrón que tiene *. Las etiquetas AIML son compatibles con XML y los patrones no distinguen entre mayúsculas y minúsculas.
Ejemplo
<aiml version = "1.0.1" encoding = "UTF-8"?>
<category>
<pattern> HELLO ALICE </pattern>
<template>
Hello User!
</template>
</category>
</aiml>
A continuación se presentan los puntos importantes a considerar:
<aiml> etiqueta significa el inicio del documento AIML.
<category> etiqueta define la unidad de conocimiento.
<pattern> La etiqueta define el patrón que el usuario va a escribir.
<template> define la respuesta al usuario si el usuario escribe Hello Alice.
Resultado
User: Hello Alice
Bot: Hello User
Este tutorial lo guiará sobre cómo preparar un entorno de desarrollo para comenzar su trabajo con AIML para crear software de chat automático. El programa AB es una implementación de referencia de AIML 2.0 desarrollada y mantenida por ALICE AI Foundation. Este tutorial también le enseñará cómo configurar JDK, antes de configurar la biblioteca Program AB -
Paso 1: configurar el kit de desarrollo de Java (JDK)
Puede descargar la última versión del SDK del sitio Java de Oracle: Descargas de Java SE . Encontrará instrucciones para instalar JDK en archivos descargados, siga las instrucciones dadas para instalar y configurar la instalación. Finalmente, configure las variables de entorno PATH y JAVA_HOME para hacer referencia al directorio que contiene java y javac, normalmente java_install_dir / bin y java_install_dir respectivamente.
Si está ejecutando Windows e instaló el JDK en C: \ jdk1.7.0_75, tendría que poner la siguiente línea en su archivo C: \ autoexec.bat.
set PATH = C:\jdk1.7.0_75\bin;%PATH%
set JAVA_HOME = C:\jdk1.7.0_75
Alternativamente, en Windows NT / 2000 / XP, también puede hacer clic con el botón derecho en Mi PC, seleccionar Propiedades, luego Avanzado, luego Variables de entorno. Luego, actualizaría el valor PATH y presionaría el botón OK.
En Unix (Solaris, Linux, etc.), si el SDK está instalado en /usr/local/jdk1.7.0_75 y usa el shell C, pondría lo siguiente en su archivo .cshrc.
setenv PATH /usr/local/jdk1.7.0_75/bin:$PATH
setenv JAVA_HOME /usr/local/jdk1.7.0_75
Alternativamente, si usa un entorno de desarrollo integrado (IDE) como Borland JBuilder, Eclipse, IntelliJ IDEA o Sun ONE Studio, compile y ejecute un programa simple para confirmar que el IDE sabe dónde instaló Java; de lo contrario, realice la configuración adecuada como se indica en el documento. del IDE.
Paso 2: configurar el programa AB
Ahora, si todo está bien, puede proceder a configurar su Programa AB. Los siguientes son los sencillos pasos para descargar e instalar la biblioteca en su máquina.
Elija si desea instalar AIML en Windows o Unix y luego continúe con el siguiente paso para descargar el archivo .zip
Descargue la última versión de los binarios del Programa AB de https://code.google.com/p/program-ab/utilizando su enlace program-ab-0.0.4.3.zip .
En el momento de escribir este tutorial, descargué program-ab-0.0.4.3.zip en mi máquina con Windows y cuando descomprima el archivo descargado, le dará la estructura de directorio dentro de C: \ ab de la siguiente manera.
S.No. | Directorio y descripción |
---|---|
1 | c:/ab/bots Almacena bots AIML |
2 | c:/ab/lib Almacena bibliotecas de Java |
3 | c:/ab/out Directorio de archivos de clase Java |
4 | c:/ab/run.bat archivo por lotes para ejecutar el programa AB |
Una vez que haya terminado con este último paso, estará listo para continuar con su primer ejemplo de AIML que verá en el siguiente capítulo.
Comencemos a crear el primer bot que simplemente saludará a un usuario con Hello User! cuando un usuario escribe Hello Alice.
Crear la estructura del proyecto
Como en la configuración del entorno AIML , hemos extraído el contenido de program-ab enC > ab con la siguiente estructura de directorios.
S.No. | Directorio y descripción |
---|---|
1 | c:/ab/bots Almacena bots AIML |
2 | c:/ab/lib Almacena bibliotecas de Java |
3 | c:/ab/out Directorio de archivos de clase Java |
4 | c:/ab/run.bat archivo por lotes para ejecutar el programa AB |
Ahora, crea una prueba de directorio dentro C > ab > bots y cree los siguientes directorios en él.
S.No. | Directorio y descripción |
---|---|
1 | c:/ab/bots/test/aiml Almacena archivos AIML |
2 | c:/ab/bots/test/aimlif Almacena archivos AIMLIF |
3 | c:/ab/bots/test/config Almacena archivos de configuración |
4 | c:/ab/bots/test/sets Almacena conjuntos AIML |
5 | c:/ab/bots/test/maps Almacena mapas AIML |
Crear archivos fuente
Crea test.aiml dentro C > ab > bots > test > aiml y test.aiml.csv dentro C > ab > bots > test > aimlif directorios.
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
Ejecutar el programa
Abra el símbolo del sistema. IrC > ab > y escriba el siguiente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verificar el resultado
Verá el siguiente resultado:
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:
Tipo Hello Alice y vea el resultado y luego escriba cualquier otra cosa para ver el resultado modificado.
Human: hello alice
Robot: Hello User
Human: bye
Robot: I have no answer for that.
Human:
En este tutorial, discutiremos las etiquetas básicas de AIML.
<aiml> - define el principio y el final de un documento AIML.
<category> - define el unit of knowledge en la base de conocimientos de Alicebot.
<pattern> - define el patrón para que coincida con lo que un usuario puede ingresar a un Alicebot.
<template> - define la respuesta de un Alicebot a la entrada del usuario.
Los siguientes archivos AIML se han utilizado aquí como referencia.
<?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>
<aiml> etiqueta
La etiqueta <aiml> marca el inicio y el final de un documento AIML. Contiene información de versión y codificación bajo los atributos de versión y codificación. El atributo de versión almacena la versión AIML utilizada por la base de conocimientos de ALICE chatterbot, KB. Por ejemplo, hemos utilizado la versión 1.0.1. Este atributo es opcional.
Los atributos de codificación proporcionan los juegos de caracteres que se utilizarán en el documento. Por ejemplo, usamos UTF-8. Como requisito obligatorio, la etiqueta <aiml> debe contener al menos una etiqueta <category>. Podemos crear varios archivos AIML donde cada archivo AIML contiene una sola etiqueta <aiml>. El propósito de cada archivo AIML es agregar al menos una unidad de conocimiento única llamada categoría a ALICE chatterbot KB.
<aiml version = "1.0.1" encoding = "UTF-8"?>
...
</aiml>
etiqueta <category>
La etiqueta <category> es la unidad de conocimiento fundamental de un bot de ALICE. Cada categoría contiene:
Entrada del usuario en forma de oración que puede ser una afirmación, pregunta, exclamación, etc. La entrada del usuario puede contener caracteres comodín como * y _.
Respuesta a la entrada del usuario que presentará Alicebot.
Contexto opcional.
UNA <category> la etiqueta debe tener <pattern> y <template> etiqueta. <pattern> representa la entrada del usuario y la plantilla representa la respuesta del bot.
<category>
<pattern> HELLO ALICE </pattern>
<template>
Hello User
</template>
</category>
Aquí, si el usuario entra Hello Alice entonces el bot responderá como Hello User.
etiqueta <patrón>
La etiqueta <pattern> representa la entrada de un usuario. Debe ser la primera etiqueta dentro de la etiqueta <category>. La etiqueta <pattern> puede contener comodines para que coincida con más de una oración como entrada del usuario. Por ejemplo, en nuestro ejemplo, <patrón> contiene HELLO ALICE.
AIML no distingue entre mayúsculas y minúsculas. Si un usuario ingresa Hello Alice, hello alice, HELLO ALICE, etc., todas las entradas son válidas y el bot las comparará con HELLO ALICE.
<category>
<pattern> HELLO ALICE </pattern>
<template>
Hello User
</template>
</category>
Aquí, la plantilla es "Hola usuario" y representa la respuesta de un robot a la entrada del usuario.
etiqueta <template>
La etiqueta <template> representa la respuesta del bot al usuario. Debe ser la segunda etiqueta dentro de la etiqueta <category>. Esta etiqueta <template> puede guardar datos, llamar a otro programa, dar respuestas condicionales o delegar en otras categorías.
<category>
<pattern> HELLO ALICE </pattern>
<template>
Hello User
</template>
</category>
Aquí, la plantilla es "Hola usuario" y representa la respuesta de un robot a la entrada del usuario.
<star> La etiqueta se usa para coincidir con el comodín * carácter (s) en la etiqueta <patrón>.
Sintaxis
<star index = "n"/>
n significa la posición de * dentro de la entrada del usuario en la etiqueta <patrón>.
Considere el siguiente ejemplo:
<category>
<pattern> A * is a *. </pattern>
<template>
When a <star index = "1"/> is not a <star index = "2"/>?
</template>
</category>
Si el usuario ingresa "Un mango es una fruta". entonces el bot responderá como "¿Cuándo un mango no es una fruta?"
Ejemplo
Crea star.aiml dentro C > ab > bots > test > aiml y star.aiml.csv dentro C > ab > bots > test > aimlif directorios.
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
Ejecutar el programa
Abra el símbolo del sistema. IrC > ab > y escriba el siguiente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verificar el resultado
Verá la siguiente salida:
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" /> se usa a menudo como <star />
<srai>La etiqueta es una etiqueta multipropósito. Esta etiqueta permite que AIML defina los diferentes objetivos para la misma plantilla.
Sintaxis
<srai> pattern </srai>
A continuación se muestran los términos de uso común asociados con srai -
Reducción simbólica
Divide y conquistaras
Resolución de sinónimos
Detección de palabras clave
Reducción simbólica
La técnica de reducción simbólica se utiliza para simplificar patrones. Ayuda a reducir patrones gramaticales complejos con patrones simples.
Por ejemplo, considere la siguiente conversación.
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.
Ahora What if las preguntas se plantean como
Human: DO YOU KNOW WHO Albert Einstein IS?
Human: DO YOU KNOW WHO Isaac Newton IS?
Aquí, <srai> la etiqueta funciona. Puede tomar el patrón del usuario como plantilla.
Paso 1: crea categorías
<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>
Paso 2: Cree una categoría genérica usando la etiqueta <srai>
<category>
<pattern>DO YOU KNOW WHO * IS?</pattern>
<template>
<srai>WHO IS <star/></srai>
</template>
</category>
Ejemplo
Crea srai.aiml dentro C > ab > bots > test > aiml y srai.aiml.csv dentro C > ab > bots > test > aimlif directorios.
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
Ejecutar el programa
Abra el símbolo del sistema. IrC > ab > y escriba el siguiente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verificar el resultado
Verá la siguiente salida:
Human: Do you know who Albert Einstein is
Robot: Albert Einstein was a German physicist.
Divide y conquistaras
Dividir y conquistar se utiliza para reutilizar sub-frases al hacer una respuesta completa. Ayuda a reducir la definición de múltiples categorías.
Por ejemplo, considere seguir la conversación.
Human: Bye
Robot: GoodBye!
Human: Bye Alice!
Robot: GoodBye!
Ahora aquí se espera que el robot responda GoodBye! Siempre que un usuario dice Bye al comienzo de la oración.
Pongamos la etiqueta <srai> a trabajar aquí.
Paso 1: crear una categoría
<category>
<pattern>BYE</pattern>
<template>Good Bye!</template>
</category>
Paso 2: Cree una categoría genérica usando la etiqueta <srai>
<category>
<pattern>BYE *</pattern>
<template>
<srai>BYE</srai>
</template>
</category>
Ejemplo
Actualizar srai.aiml dentro C > ab > bots > test > aiml y srai.aiml.csv dentro C > ab > bots > test > aimlif directorios.
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
Ejecutar el programa
Abra el símbolo del sistema. IrC > ab > y escriba el siguiente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verificar el resultado
Verá la siguiente salida:
Human: Bye
Robot: GoodBye!
Human: Bye Alice!
Robot: GoodBye!
Resolución de sinónimos
Los sinónimos son palabras con significados similares. Un bot debería responder de la misma manera para palabras similares.
Por ejemplo, considere la siguiente conversación.
Human: Factory
Robot: Development Center!
Human: Industry
Robot: Development Center!
Ahora aquí se espera que el robot responda Development Center! cada vez que un usuario dice Factory o Industry.
Pongamos <srai> etiqueta para trabajar aquí.
Paso 1: crear una categoría
<category>
<pattern>FACTORY</pattern>
<template>Development Center!</template>
</category>
Paso 2: Cree una categoría genérica usando la etiqueta <srai>
<category>
<pattern>INDUSTRY</pattern>
<template>
<srai>FACTORY</srai>
</template>
</category>
Ejemplo
Actualizar srai.aiml dentro C > ab > bots > test > aiml y srai.aiml.csv dentro C > ab > bots > test > aimlif directorios.
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
Ejecutar el programa
Abra el símbolo del sistema. IrC > ab > y escriba el siguiente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verificar el resultado
Verá la siguiente salida:
Human: Factory
Robot: Development Center!
Human: Industry
Robot: Development Center!
Detección de palabras clave
Utilizando srai, podemos devolver una respuesta simple cuando el usuario escribe una palabra clave específica, por ejemplo, Escuela, sin importar dónde esté presente "escuela" en la oración.
Por ejemplo, considere la siguiente conversación.
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.
Aquí, se espera que el robot responda un mensaje estándar 'School is an important institution in a child's life.' siempre que un usuario tiene school en la oración.
Pongamos <srai>etiqueta para trabajar aquí. Usaremos comodines aquí.
Paso 1: crear una categoría
<category>
<pattern>SCHOOL</pattern>
<template>School is an important institution in a child's life.</template>
</category>
Paso 2: crea categorías genéricas usando la etiqueta <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>
Ejemplo
Actualizar srai.aiml dentro C > ab > bots > test > aiml y srai.aiml.csv dentro C > ab > bots > test > aimlif directorios.
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
Ejecutar el programa
Abra el símbolo del sistema. IrC > ab > y escriba el siguiente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verificar el resultado
Verá la siguiente salida:
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>La etiqueta se usa para obtener respuestas aleatorias. Esta etiqueta permite que AIML responda de manera diferente para la misma entrada. La etiqueta <random> se utiliza junto con las etiquetas <li>. <li> Las etiquetas contienen diferentes respuestas que se enviarán al usuario de forma aleatoria.
Sintaxis
<random>
<li> pattern1 </li>
<li> pattern2 </li>
...
<li> patternN </li>
</random>
Por ejemplo, considere la siguiente conversación.
Human: Hi
Robot: Hello!
Human: Hi
Robot: Hi! Nice to meet you!
Ejemplo
Crear random.aiml dentro C > ab > bots > test > aiml y random.aiml.csv dentro C > ab > bots > test > aimlif directorios.
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
Ejecutar el programa
Abra el símbolo del sistema. IrC > ab > y escriba el siguiente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verificar el resultado
Verá la siguiente salida:
Human: Hi
Robot: Hi! Nice to meet you!
Human: Hi
Robot: Hello!
Aquí, la respuesta puede variar considerando respuestas aleatorias.
<set> y <get>Las etiquetas se utilizan para trabajar con variables en AIML. Las variables pueden ser variables predefinidas o variables creadas por el programador.
Sintaxis
La etiqueta <set> se usa para establecer el valor en una variable.
<set name = "variable-name"> variable-value </set>
La etiqueta <get> se usa para obtener valor de una variable.
<get name = "variable-name"></get>
Por ejemplo, considere la siguiente conversación.
Human: I am Mahesh
Robot: Hello Mahesh!
Human: Good Night
Robot: Good Night Mahesh! Thanks for the conversation!
Ejemplo
Crea setget.aiml dentro C > ab > bots > test > aiml y setget.aiml.csv dentro C > ab > bots > test > aimlif directorios.
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
Ejecutar el programa
Abra el símbolo del sistema. IrC > ab > y escriba el siguiente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verificar el resultado
Verá la siguiente salida:
Human: I am Mahesh
Robot: Hello Mahesh!
Human: Good Night
Robot: Good Night Mahesh! Thanks for the conversation!
<that> La etiqueta se usa en AIML para responder según el contexto.
Sintaxis
<that> template </that>
Por ejemplo, considere la siguiente conversación.
Human: Hi Alice! What about movies?
Robot: Do you like comedy movies?
Human: No
Robot: Ok! But I like comedy movies.
Ejemplo
Crea eso.aiml dentro C > ab > bots > test > aiml y eso.aiml.csv dentro C > ab > bots > test > aimlif directorios.
eso.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
Ejecutar el programa
Abra el símbolo del sistema. IrC > ab > y escriba el siguiente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verificar el resultado
Verá la siguiente salida:
Human: What about movies?
Robot: Do you like comedy movies?
Human: No
Robot: Ok! But I like comedy movies.
<topic>La etiqueta se usa en AIML para almacenar un contexto para que la conversación posterior se pueda realizar en función de ese contexto. Generalmente,<topic> la etiqueta se utiliza en Yes/No type conversation. Ayuda a AIML a buscar categorías escritas dentro del contexto del tema.
Sintaxis
Definir un tema usando la etiqueta <set>
<template>
<set name = "topic"> topic-name </set>
</template>
Defina la categoría usando la etiqueta <topic>
<topic name = "topic-name">
<category>
...
</category>
</topic>
Por ejemplo, considere la siguiente conversación.
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.
Aquí el bot responde tomando "película" como tema.
Ejemplo
Crear topic.aiml dentro C > ab > bots > test > aiml y topic.aiml.csv dentro C > ab > bots > test > aimlif directorios.
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
Ejecutar el programa
Abra el símbolo del sistema. IrC > ab > y escriba el siguiente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verificar el resultado
Verá la siguiente salida:
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> La etiqueta se usa en AIML para almacenar una variable sin notificar al usuario.
Sintaxis
Almacene un valor usando la etiqueta <think>
<think>
<set name = "variable-name"> variable-value </set>
</think>
Por ejemplo, considere la siguiente conversación.
Human: My name is Mahesh
Robot: Hello!
Human: Byeee
Robot: Hi Mahesh Thanks for the conversation!
Ejemplo
Crea think.aiml dentro C > ab > bots > test > aiml y think.aiml.csv dentro C > ab > bots > test > aimlif directorios.
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
Ejecutar el programa
Abra el símbolo del sistema. IrC > ab > y escriba el siguiente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verificar el resultado
Verá la siguiente salida:
Human: My name is Mahesh
Robot: Hello!
Human: Byeee
Robot: Hi Mahesh Thanks for the conversation!
<condition>La etiqueta es similar a las declaraciones de cambio en el lenguaje de programación. Ayuda a ALICE a responder a la entrada correspondiente.
Sintaxis
<condition name = "variable-name" value = "variable-value"/>
Por ejemplo, considere la siguiente conversación.
Human: How are you feeling today
Robot: I am happy!
Aquí hemos almacenado happy como el estado de ALICE y así responde como "¡Soy feliz!".
Ejemplo
Crear condition.aiml dentro C > ab > bots > test > aiml y condition.aiml.csv dentro C > ab > bots > test > aimlif directorios.
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
Ejecutar el programa
Abra el símbolo del sistema. IrC > ab > y escriba el siguiente comando:
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Verificar el resultado
Verá la siguiente salida:
Human: How are you feeling today
Robot: I am happy!