Sunteți pe pagina 1din 4

Agente conversacional: Es un agente o ente que es diseñado para mejorar la comunicación entre

humanos y máquinas, y a estas dotarlas de relativa capacidad para “comprender” ciertos


componentes del lenguaje como frases y palabras.

*Domótica: Automatizar los servicios en una vivienda mediante sistemas tecnológicos.

Programación AIML

NO USAR ACENTOS NI CARACTERES EXTRAÑOS EN EL CÓDIGO

SÍMBOLOS COMO ! Ó ? Ó ESPACIO NO CUENTAN COMO CARACTERES A LA HORA DE


INTRODUCIR PALABRAS EN EL DIÁLOGO DEL HUMANO EN CMD

Wildcards(comodines)

# captura 0 o más palabras de la entrada Mayor prioridad


_ captura 1 o más palabras de la entrada

^ captura 0 o más palabras de la entrada cualesquiera que sean Menor prioridad


* captura 1 o más palabras de la entrada cualesquiera que sean

SIGNOS DE INTERROGACIÓN NO CUENTAN COMO PALABRAS

Para que especificar que una determinada categoría tenga mayor prioridad se utiliza el marcador $

Para seleccionar el contenido de un comodín (este almacena lo que el usuario introduzca como si
fuera una variable) se usa <star/>, si en una categoría existirea más de un comodín y se quiere
seleccionar el contenido de uno en específico se usa <star index=”x”/>, x sería el número de
comodín (1, 2, 3, 4, …). Si existieran múltiples comodines y se aplica <star/> sin especificación por
default se devolvería el contenido del primer comodín.

Tipos de variables en AIML

Existen tres tipos:

 Propiedades del bot: Es información propia del bot, puede porporcionarla si se desea. Se
deben definir por separado en el fichero properties.txt, que está en la carpeta
mybots/config

Para usar estas propiedades en el template se usa <bot name=”x”/>, donde x es el nombre
de la propiedad

 Variables globales o predicados: Son variables cuyo valor puede ser consultado o cambiado
fuera de una regla (category), PERO PARA HACERLES LO QUE SE REQUIERA ES DENTRO DE
UN TEMPLATE.

Para definir una variable global se utiliza <set name=”x”>VALOR A ESTABLECER</set>, y para
usarla en el template <get name=”x”/>. X sería el nombre de la variable global. Si se pide
información de una variable que no se ha definido aún el sistema devuelve unknown.
 Variables locales: Lo mismo que una global sólo que dentro de un template.

Para definir una variable local se usa <set var=”x”> VALOR A ESTABLECER </set>, y para usar
su valor sería <get var=”x”/>. X sería el nombre de esta. Estas sólo se pueden invocar en una
única category (regla).

El tag think: Al usar variable normalmente el robot mostrará en pantalla el proceso de asignación
de valores a ellas. Así por ejemplo responderá algo así: Morado (salto de línea) El morado es un
color que no me gusta. Para evitar este “eco” visual se utiliza el tag think, gracias a esto nuestra
asignación de una variable quedaría: <think> <set var=”x”>VALOR A ASIGNAR</set> </think>.

Reducción simbólica

Sirve para enlazar cierto pattern (por ejemplo “hey”, que es alternativo a decir “hola”) con otro
pattern anteriormente ya definido (“hola”), y de esta manera el template para responder sea el
mismo.

Se escribe dentro del template del pattern alternativo lo siguiente:


<srai>PATTERN A ENLAZAR</srai>

Set

Es una herramienta (<set>) que junto con un fichero .txt puede agrupar diversas entradas en una
única regla, se hace un archivo txt en la carpeta sets del bot, y en el se introduce una simple lista
vertical con todos los valores que queramos captar. Luego en el pattern se pone <set>NOMBRE DEL
ARCHIVO TXT</set> y el bot verificara si alguna entrada coincide, para responder. Hay que poner
otra regla que sirva como un “default” por si ningún valor introducido coincide. Set tiene mayor
precedencia que * y ^. Set ayuda a abarcar un amplio rango de entradas.

Map

Sirve para asociar a una entrada del usuario con una respuesta especifica. Se debe definir un txt en
la carpeta maps del bot, y justo como los atributos del bot se introduce elemento1:elemento2 (esto
enlaza a dos elementos). Cuando la entrada sea el elemento1, en el template se tecleara <map
name=”nombre del txt definido en la carpeta maps del bot”>ELEMENTO1 INTRODUCIDO
(star)</map> y esto hará que el bot responda con el elemento2 asociado al elemento1, dando la
impresión de que conoce una respuesta determinada. Map no tiene mayor precedencia que * y ^.
Permite responder algo más especifico acerca de ese conjunto de entradas del set.

Tag that

Permite que determinada entrada este relacionada a un template anterior, por ejemplo si escribo
un si aleatorio el bot respondería una cosa aleatoria, pero si primero respondi con un template a
una determinada entrada y esto provocó que el usuario introduzca un si (este si no es aleatorio si
no que es una respuesta a algo anteriormente mencionado), el bot responderá algo relacionado con
la platica anterior. (sirve para dar contexto), se sitúa entre pattern y template.

Tag Topic
Simplemente activa o desactiva reglas al gusto. Primero debe existir una regla que active que se
hablará acerca de un topic en especial (para activar, en el template de este regla de pone un <set
name=”topic”>TOPIC A ACTIVAR</set>). Posterior a esta regla deben existir las reglas que se acaban
de invocar, estas deberán estar rodeadas por <topic name=”TOPIC A ACTIVAR”>REGLAS
INVOCADAS</topic>. Básicamente esto es todo ahora las reglas que el bot tendrá a su disposición
serán las invocadas, para salir de este topic debe de existir una regla que configure el topic a su
default que es unknown así: <set name=”topic”>unknown</set> (esto en su respectivo template).

Tag random

Simplemente agrega la funcionalidad de escoger un elemento aleatoriamente. Se pone


<random></random> y dentro de estos bloques se ponen list ítems de donde se barajeará para
escoger a uno <li>elemento</li>, <li>elemento</li>, <li>elemento</li>. Sirve para que ante una
entrada se responda de forma distinta cada vez.

Tag condition (switch case)

Implementa la función de un switch case, su sintaxis solo varia dependiendo si la variable en


cuestión es local o global, para local (recordemos que para darle un valor es en el template) se
escribe esto dentro del template <condition var=”NOMBRE DE LA VARIABLE”></condition>, dentro
de este bloque se ponen list ítems con un atributo value: <li value=”valor1”>ACCION1</li>, <li
value=”valor2”>ACCION2</li>, etc. Para el caso default iría solo <li>ACCIONDEFAULT</li>.

<loop/>

Permite hacer ciclos, debe estar dentro de un list ítem que no tenga atributo value, mientras que
debe haber otro li que tenga un value en especifico para parar el loop, a su vez estos li deben estar
dentro de un bloque condition que tenga como atributo variable a la que va a estar cambiando de
valor(i++). Esta variable que estará cambiando debe haber sido inicializada previamente. Para
especificar un atributo name, value, etc, que no puede ir de la forma <li
value”DEESTAFORMA”>ACCION</li>, pues entonces dicho atributo se especifica de la siguiente
manera.<li><value>por ejemplo <star/></value>ACCION</li>.

Tag learn

Permite que el usuario mediante sus entradas cree reglas nuevas para que el bot “aprenda” del
usuario. Su usa un bloque <learn></learn> (dentro del template de la regla) y dentro de el se define
una nueva categoría como normalmente se hace. Lo único a recalcar es que si en el pattern de la
regla principal existen comodines y se quiere aprender de ellos, en la categoría interna del bloque
learn, se deben ligar a esos comodines con <eval><star/></eval> y no como normalmente se hace
<star/>.
Tag <that> una especie de condicional if -else

S-ar putea să vă placă și