Agentes de chat/Cyn: Cyc y Program N

Como ya se ha explicado previamente, Program N es una aplicación para interactuar con chatbots y Cyc es el motor de inferencia cuyo hijo, OpenCyc, usaremos en este proyecto. Cyn no es otra cosa que la unión entre esos dos programas, con el fin de modificar con OpenCyc por medio de AIML. En pocas palabras: Modificar la base de conocimientos utilizando lenguaje natural y no formal.

Cómo hacer que Cyn funcione editar

Primero que todo, hay que correr el servidor de OpenCyc como se explica más arriba. Al ejecutar Cyn vemos que hay un menú llamado AIML, al seleccionarlo encontramos una opción llamada Learn... Sirve para cargar información de archivos AIML a la memoria de Cyn. Sleccionaremos el archivo AIML/AAA/filelist.txt y esperaremos a que la información se cargue. Al parecer algunos de los archivos contienen información suministrada en AIML acerca del acceso a OpenCyc por parte de Cyn y cuando la carga termina y activamos el Chat, listo, estamos hablando con el motor de inferencia de OpenCyc por medio de lenguaje natural (inglés).

Cyn en Linux editar

Ya que Cyn es una aplicación desarrollada para la plataforma Microsoft Windows, hay que ejecutarla con el emulador Wine de Linux. Bastará con haber descomprimido los archivos correctamente en algún directorio de la partición de Linux para que funcione. Escribe wine nombredelarchivo en la terminal de comandos y si es la primera vez que ejecutas Wine, tendrás que configurarlo, recuerda mirar cada una de las opciones, especialmente las que sirven para ubicar los directorios del sistema Windows.

El único problema es que, al parecer, es imposible para Wine emular el msagent que utilizó el programador de Cyn para darle interactividad al programa. Al no funcionar el msagent, el chatbot nos responde con un error de aspecto un tanto desagradable. Por ende, la única solución posible que veo es modificar el código de Cyn, aprovechando que es OpenSource, y quitar el msagent...

Cómo añadir nuevo conocimiento a la base de datos editar

El asunto es bastante sencillo, ya que estamos usando lenguaje natural gracias a Cyn, lo adecuado para crear nuevas constantes es escribiendo Make La Constante Lo Que Sea.

  • Un buen ejemplo sería el siguiente:
Make Simon a Dog
  • Donde Cyn debería responder:
200 #$Simon
200 T

...y listo, ya has creado una nueva constante utilizando lenguaje natural.

AIML y OpenCyc editar

Para acceder a OpenCyc desde afuera, la forma más simple es utilizando la API (Application Program Interface) de CycL, que define una serie de funciones y módulos que permiten una conexión entre OpenCyc y aplicaciones externas escritas en C, Python, Lisp, etc, por medio del protocolo TCP/IP. Algunas de las funciones más básicas incluidas en este set son:

  • (fi-complete "cadena")
devuelve una lista de símbolos que se relacionen con "cadena"
  • (cyc-find-or-create cycsymbol)
devuelve el símbolo si lo encuentra, si no entonces lo crea
  • (cyc-assert '(cycformula) #$MicrotheoryMt)
agrega (cycformula) a los hechos especificados en MicrotheoryMt
  • (cyc-unassert '(cycformula) #$MicrotheoryMt)
elimina (cycformula) de los hechos especificados en MycrotheoryMt
  • (cyc-ask '(fórmula) #$MicrotheoryMt)
pide a Cyc que encuentre las respuestas a la fórmula en una Microteoría específica.
Nota que Cyc utilizará sus habilidades inferenciales para hallar las respuestas.

Las microteorías son pequeños racimos de datos desprendidos de otros y asociados entre sí