Agentes de chat/AIML

De Wikilibros, la colección de libros de texto de contenido libre.

AIML es una extensión del XML (Extensible Markup Language). El XML fue diseñado para describir datos, no para mostrarlos como el html. El XML se concentra en lo que los datos son. La mayoría de procesos para comprender y responder realizados por Howie están descritos utilizando un grupo específico de etiquetas de XML denominado AIML. En Python, lo único realmente programado es la interpretación de ese código y el control de algunas funciones básicas como guardar registro de las conversaciones o acceder a servidores de chat. En el XML el diseñador define las etiquetas propias que usará en su proyecto, escribiéndolas como así lo desee, lo importante es que el programa que lea el código XML sepa cómo se interpreta cada una de las etiquetas.

  • He aquí un ejemplo:
<mensaje>
<de>Luis</de>
<para>Offray</para>
<cuerpo>¡No olvide revisar el Wiki del proyecto!</cuerpo>
</mensaje>
  • Un programa que interpretara este código, debería hacerlo de la siguiente manera:
MENSAJE
De: Luis
Para: Offray
¡No olvide revisar el Wiki del proyecto!

Aunque realmente la forma en que se mostraría depende de cómo el programador desee que sean interpretadas las etiquetas.

El código AIML de Howie[editar]

En Howie, declarar nuevos conocimientos por el medio de diálogo es bastante simple, basta con escribir alguna afirmación y luego decir: "Remember that.". Si todo sale bien, Howie debería responder: "Don't worry, I will remember it.". Sim embargo, esta forma de enseñarle al programa nuevo conocimiento no permite entrelazar algunas sentencias con otras, de manera que deberás modificar el código AIML.

  • Una muestra del código de Howie es:


<category>
<pattern>NO</pattern>
<template>
<random>
<li>OK.</li>
<li>I understand.</li>
<li>I see.</li>
<li>Why so negative?</li>
<li>Is that all you have to say?</li>
<li>"<that/>"?  Not?</li>
</random>
</template>
</category>

Donde <pattern> define lo que se la ha de decir a Howie para que responda lo que está en <li>. La etiqueta <random> sirve para que las respuestas listadas a continuación se seleccionen de manera aleatoria antes de ser enviadas. Pero estas etiquetas no fueron creadas por los primeros desarrolladores de Howie (¡o quién sabe!), sino que hacen parte del código estándar AIML, por lo cual un interpretador de AIML escrito en Python, como el que utiliza Howie, podría leer cualquier código XML que utilice las etiquetas del AIML. Una buena manera de agregar categories, o sea conocimientos a Howie, o de hecho, a cualquier chatbot que use AIML, es utilizando el Program N, una sencilla aplicación OpenSource diseñada para interactuar con chatbots, puedes encontrarla en la página de Daxtron Labs.