AIML - Etiqueta <srai>
<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.