You are on page 1of 107

INSTITUTO TECNOLGICO

DE CD. MADERO
DEPARTAMENTO DE SISTEMAS Y COMPUTACIN

DISEO DE UN ASISTENTE VIRTUAL


CON DILOGO EMOCIONAL

TESIS
Para obtener el Titulo de

Ingeniero en Sistemas Computacionales

Presenta

Jess Raymundo Domnguez Martnez


Numero de Control

05070788
Director de Tesis

Dra. Mara Lucila Morales Rodrguez

CD. MADERO, TAMAULIPAS

MAYO 2011

Declaracin de Originalidad
Declaro y prometo que ste documento de tesis es producto de mi trabajo original y que no infringe
los derechos de terceros, tales como derechos de publicacin, derechos de autor, patentes y
similares.
Adems, declaro que en las citas textuales que he incluido (las cuales aparecen entre comillas) y en
los resmenes que he realizado de publicaciones ajenas, indico explcitamente los datos de los
autores y las publicaciones.
Adems, en caso de infraccin de los derechos de terceros derivados de ste documento de tesis,
acepto la responsabilidad de la infraccin y relevo de sta a mi director y codirectores de tesis, as
como al Instituto Tecnolgico de Cd. Madero y sus autoridades.

Mayo 2011, Cd. Madero, Tamps.

C. Jess Raymundo Domnguez Martnez

DEDICATORIAS
A mi madre por brindarme siempre el apoyo necesario, y dar todo para verme
triunfador, y darme la fuerza necesaria para querer salir adelante en esta vida, y as lograr
uno ms de mis objetivos, y a mis hermanos que los quiero mucho por su apoyo.
A mis amigos que me ensearon el significado de la amistad, y que siempre
estuvieron ah apoyndome en cada uno de los momentos que vivimos juntos y siempre me
extendieron su mano amiga, gracias por todos esos momentos que compartimos.

AGRADECIMIENTOS
A Dios, por guiarme da a da, por darme las fuerzas necesarias de seguir adelante y
ayudarme a culminar uno de mis objetivos planteados hace algunos aos.
A mis padres; Rosala y Jos. A mi hermana y hermano; Abigail y Miguel. A mi
abuelita; Rosala.
A mi Directora de Tesis la Dra. Mara Lucila Morales Rodrguez por el apoyo y los
consejos que me brind durante el desarrollo de ste proyecto, por tenerme paciencia, y
compartir su conocimiento. Gracias por su dedicacin y por su tiempo.
Mi ms sincero agradecimiento a los miembros del comit tutorial de sta tesis: Dr.
Juan Javier Gonzlez Barbosa, Dra. Laura Cruz Reyes, Rubn Basez Castro y la Dra. Ma.
Lucila Morales Rodrguez.
Agradezco al Instituto Tecnolgico de Ciudad Madero por las facilidades
proporcionadas para la realizacin de ste proyecto, as como a los profesores que
contribuyeron a mi formacin acadmica humana.
Gracias a mis amigos de la ingeniera por la amistad, compaerismo y apoyo
prestado. Por todos los momentos que pase con ellos, en especial a Victoria, Blanca Teresa,
Rosario, y muchos ms que saben que estn incluidos aqu, aunque no est su nombre
muchas gracias por todo.

RESUMEN
Este trabajo de investigacin se origina a partir de un proyecto realizado en la institucin
relacionado con un agente conversacional corpreo, ya que actualmente el uso de los Agentes
Conversacionales Animados ha ido creciendo. Estos suelen ser una herramienta utilizada en ciertas
funciones en las cuales pueden servir como guas, maestros, ayudantes, etc. La problemtica que
abordamos en ste documento, es la implementacin de un agente conversacional capaz de expresar
dilogos crebles en lenguaje natural, expresando en sus dilogos rasgos de personalidad, emociones
y su intensidad. Para la generacin de dilogos crebles, proponemos utilizar la extensin que se le
hizo al lenguaje AIML (Artificial Intelligence Markup Language), utilizando la nueva estructura
para los archivos de la base de conocimientos basados en AIML, mediante dilogos crebles, es
capaz de crear escenarios ms reales para que el aspirante disperse sus dudas con relacin a la
Maestra en Ciencias en Ciencias de la Computacin, manteniendo una conversacin simulada por
el agente conversacional. Para esto se present una metodologa para organizar y disear la
estructura de los dilogos de un Agente Conversacional Animado capaz de expresar emociones en
su dilogo. Resultando de ste trabajo un Asistente Virtual con Dilogo Emocional que proporciona
informacin sobre la Maestra en Ciencias en Ciencias de la Computacin del ITCM.

TABLA DE CONTENIDO
Captulo 1. Introduccin ................................................................................................................ 1
1.1 Antecedentes ........................................................................................................................ 1
1.1.1 Creacin de una base de conocimientos en AIML para un Agente Conversacional........... 1
1.1.2 Agente Conversacional que utiliza AIML para integrar procesos de personalidad. ........... 2
1.1.3 Metodologa para la simulacin de expresiones no verbales de una recepcionista virtual 2
1.2 Objetivos ............................................................................................................................... 3
1.2.1 Objetivo General............................................................................................................. 3
1.2.2 Objetivos especficos....................................................................................................... 3
1.3 Problemtica ......................................................................................................................... 3
1.4 Justificacin ........................................................................................................................... 3
1.5 Hiptesis................................................................................................................................ 4
1.6 Alcances y Limitaciones ......................................................................................................... 4
1.7 Estructura del documento ..................................................................................................... 4
Captulo 2. Concepcin de Agentes Conversacionales...................................................................... 6
2.1 Agente Conversacional .......................................................................................................... 6
2.1.1 Caractersticas de los Agentes Conversacionales ............................................................. 7
2.1.2 Aplicaciones.................................................................................................................... 7
2.1.3 Agentes Conversacionales Animados .............................................................................. 8
2.1.4 Humanos Virtuales Crebles ............................................................................................ 9
2.2 Asistentes Virtuales Crebles ................................................................................................ 10
2.2.1 Estado de Arte de los Asistentes Virtuales..................................................................... 11
2.2.2 reas de Aplicacin....................................................................................................... 13
2.2.2 Rol de los Asistentes Virtuales....................................................................................... 14
2.2.3. Implementaciones de Asistentes Virtuales ................................................................... 17

2.3 Base de Conocimientos de los Agentes Conversacionales .................................................... 18


Captulo 3. Anlisis de la comunicacin......................................................................................... 19
3.1 Interaccin cara-a-cara ........................................................................................................ 19
3.2. Anlisis de la conversacin.................................................................................................. 21
3.3. Anlisis del Discurso............................................................................................................ 22
3.4.1. Actos del habla............................................................................................................. 23
3.4.2. Sistemas de Dilogo ..................................................................................................... 24
Captulo 4. Programacin de dilogo en Agentes Conversacionales ............................................... 26
4.1 AIML.................................................................................................................................... 26
4.1.1 Caractersticas............................................................................................................... 27
4.1.2 Etiquetas....................................................................................................................... 27
4.1.3 Algoritmo de Coincidencia de Patrones ......................................................................... 35
4.2 Extensin Emocional AIML................................................................................................... 36
4.3 Python y PyAIML.................................................................................................................. 40
4.3.1 Caractersticas de PYAIML. ............................................................................................ 40
4.3.2 Caractersticas de Python .............................................................................................. 40
4.3.3 MySQLdb ...................................................................................................................... 42
Captulo 5. Diseo de un Asistente Virtual con Dilogo Emocional ................................................ 43
5.1 Arquitectura General ........................................................................................................... 43
5.2 Metodologa a seguir para organizar la estructura de los dilogos ....................................... 46
5.3 Anlisis de la Informacin para organizar la estructura de los dilogos................................. 51
5.4. Requerimientos del Sistema ............................................................................................... 53
Captulo 6. Caso Aplicativo: Asistente Virtual de la Maestra en Ciencias en Ciencias
Computacionales........................................................................................................................... 55
6.1 Caso de Aplicacin............................................................................................................... 55
6.2 Diseo del dilogo ............................................................................................................... 56

6.2.1 Aplicacin de la Metodologa ........................................................................................ 56


6.2.2 Definicin de la Estructura del dilogo .......................................................................... 58
6.2.3 Caracterizacin de locuciones ....................................................................................... 60
6.2.4 Reorganizacin de la base de conocimientos................................................................. 65
6.3 Desarrollo del Prototipo....................................................................................................... 66
Captulo 7. Experimentacin y Resultados ..................................................................................... 76
7.1 Descripcin de la Experimentacin ...................................................................................... 76
7.1.1. Resultados de seguir la metodologa respecto al cdigo AIML. ..................................... 76
7.1.2. Resultado de la conversacin con el asistente virtual. .................................................. 80
Captulo 8. Conclusiones y trabajos futuros ................................................................................. 81
8.1 Conclusiones........................................................................................................................ 81
8.2 Aportaciones ....................................................................................................................... 81
8.3 Trabajos Futuros.................................................................................................................. 81
Bibliografa.................................................................................................................................... 82
Anexos .......................................................................................................................................... 84
Anexo A: Creacin de Interfaz Grfica............................................................................................ 84
Anexo B: Integracin de la base de conocimientos a la interfaz grfica .......................................... 90
Anexo C: Creacin de ejecutable de la interfaz grfica ................................................................... 93

LISTA DE FIGURAS
Figura 1. Usos de los Asistentes Virtuales ...................................................................................... 14
Figura 2. Ejemplos de Asistentes Sociales ...................................................................................... 15
Figura 3. Ejemplos de Asistentes Educacionales............................................................................. 15
Figura 4. Ejemplos de Asistentes Orientados a Servicios ................................................................ 16
Figura 5. Ejemplos de Asistentes Virtuales(Lun, 2010a).................................................................. 16
Figura 6. Ann asistente virtual de la aseguradora Aetna................................................................. 17
Figura 7. Jenn asistente de Alaska Airlines ..................................................................................... 17
Figura 8. Alex asistente de Continental Airlines ............................................................................. 17
Figura 9. Amy ................................................................................................................................ 18
Figura 10. SGT STAR del Ejercito de los Estados Unidos.................................................................. 18
Figura 11. Spike experto virtual de la Universidad Gonzaga ........................................................... 18
Figura 12. Proceso de Comunicacin bsica................................................................................... 22
Figura 13. Jerarqua de Etiquetas en AIML ..................................................................................... 28
Figura 14. Estructura propuesta para los archivos AIML de la base de conocimientos.................... 38
Figura 15. Arquitectura del Asistente Virtual ................................................................................. 44
Figura 16. Modulo de Generacin de locucin del Asistente.......................................................... 45
Figura 19. Interaccin con el usuario. ............................................................................................ 56
Figura 20. Prototipo final............................................................................................................... 67
Figura 21. Importacin de libreras. ............................................................................................... 69
Figura 22. Acceso a la BD paginas .................................................................................................. 69
Figura 23. Creacin del objeto k, en este caso es como si fuera el cerebro del bot. ....................... 70
Figura 24. Cdigo generado por la herramienta VisualWx.............................................................. 70
Figura 25. Funcin pregunta. ......................................................................................................... 70
Figura 26. Objeto edit text............................................................................................................. 71

Figura 27. Definicin de la funcin pregunta.................................................................................. 71


Figura 28. Cdigo para obtener el id de la pagina a mostrar........................................................... 72
Figura 29. Botn Enviar. ................................................................................................................ 73
Figura 30. Cdigo del botn enviar. ............................................................................................... 73
Figura 31.- Std-startup.xml ............................................................................................................ 74
Figura 32. Carga de archivos aiml. ................................................................................................. 74
Figura 33. Interfaz grfica para simular un bot conversacional....................................................... 75
Figura 34. Interaccin con el bot, creado en VisualWx Python ....................................................... 75
Figura 37 . Elegir color de fondo del Frame.................................................................................... 85
Figura 38 . Escribir texto en una etiqueta (Static Text) ................................................................... 86
Figura 39 .Cambiar Fuente (Font) .................................................................................................. 86
Figura 40. Cambio de texto en la etiqueta. .................................................................................... 87
Figura 41. Insercin de Edit Text y Edit Text Multilnea. ................................................................. 87
Figura 42. Asignar nombre al botn............................................................................................... 88
Figura 43.objeto panel................................................................................................................... 88
Figura 44. Cdigo para hacer ejecutable ........................................................................................ 93
Figura 45. Lnea de comandos o smbolo del sistema..................................................................... 93
Figura 46. Directorio python25...................................................................................................... 94
Figura 47 .Python prueba.py py2exe (instrucciones que hacen el ejecutable) ................................ 94
Figura 48. Compresin de libreras. ............................................................................................... 95
Figura 49. Fin de la compilacin y compresin de libreras............................................................. 95
Figura 50. Carpetas dist y build...................................................................................................... 95
Figura 51. Directorio build. ............................................................................................................ 96
Figura 52. Directorio dist. .............................................................................................................. 96

LISTA DE TABLAS
Tabla 1. Bot en lnea...................................................................................................................... 12
Tabla 2. Caractersticas de Python ................................................................................................. 41
Tabla 3. Etapas de la construccin de la base de conocimientos .................................................... 51
Tabla 4. Registros de la BD paginas................................................................................................ 68

CAPTULO 1.
INTRODUCCIN
En la actualidad el uso de los Agentes Conversacionales Animados ha ido creciendo, ya que son una
herramienta muy til y fcil de usar para ciertas tareas. Estos pueden fungir como guas, maestros,
ayudantes, y pueden brindar ayuda en la bsqueda de informacin sobre un tema, hasta pueden
llegar a mantener una conversacin de cualquier tema en especfico. Los agentes son entidades
capaces de percibir su entorno, los cuales pueden procesar lo que perciben y tener una reaccin, es
decir una respuesta o actuar en su entorno de manera racional.
En esta tesis, se presenta una metodologa para organizar y disear la estructura de los dilogos de
un Agente Conversacional Animado capaz de expresar emociones en su dilogo. Resultado de ste
trabajo se disea e implementa un Asistente Virtual con Dilogo Emocional que proporciona
informacin sobre la Maestra en Ciencias en Ciencias de la Computacin del ITCM.

1.1 Antecedentes
Actualmente en la Maestra en Ciencias en Ciencias de la Computacin del ITCM se estn sentando
las bases para el desarrollo de una lnea de investigacin enfocada al desarrollo de Interaccin
Hombre-Mquina, usando Agentes Conversacionales Animados. Esto con la finalidad de construir
herramientas de simulacin para fines ludo-educativos y profesionales, que permitan ensear de una
manera ms eficaz.
Los Agentes Conversacionales, tienen la finalidad de interactuar con el usuario, para realizar tareas
de una forma muy natural, para lo cual, no basta con que su apariencia sea muy realista, sino que,
adems deben comportarse y comunicarse como lo hara un humano (Morales, 2007). A
continuacin, se mencionarn algunos trabajos realizados en el ITCM relacionados con esta tesis.

1.1.1 Creacin de una base de conocimientos en AIML para un Agente


Conversacional.
En este trabajo de residencias, se revis material acerca de la sintaxis y estructura del lenguaje
AIML, el cual permite definir una serie de patrones y respuestas, para as crear una base de
conocimientos, la cual contiene categoras ordenadas por contextos. Se cre una base conocimientos
1

para que el agente contestar preguntas acerca de la Maestra en Ciencias en Ciencias de la


Computacin, mostrndole al usuario una pgina Web con la informacin pertinente acerca de lo
que le pregunte el usuario. Adems se cre una BD para almacenar links de pginas con
informacin de las diferentes secciones de la pgina Web de la Maestra en Ciencias en Ciencias de
la Computacin para mostrarlas como informacin complementaria.
En este trabajo se program un prototipo de una interfaz grfica con una imagen de un personaje
virtual, con el fin de probar el funcionamiento de la base de conocimientos, la cual representa
emociones a travs del dilogo.

1.1.2 Agente Conversacional que utiliza AIML para integrar procesos de


personalidad.
En el trabajo de tesis de (Florencia, 2010), Agente Conversacional que utiliza AIML para integrar
procesos de personalidad,

se cre una propuesta de agente corpreo conversacional (ECA,

Embodied Conversational Agents) que implementa emociones en el proceso de gestin de dilogo


con un usuario. Este trabajo incorpor emociones en un ECA, extendiendo el lenguaje AIML,
incorporndole etiquetas que toman en cuenta la intensidad y los tipos de emociones universales.
Para incorporar las emociones se implement el modelo emocional de (Morales, 2007),
desarrollndose un Framework que permite la interrelacin de las bases de conocimientos de AIML
y el modelo comportamental de (Morales, 2007).

1.1.3 Metodologa para la simulacin de expresiones no verbales de una


recepcionista virtual
En el trabajo de (Coca & ngel, 2009), se busc formalizar las pautas para aumentar la credibilidad
de las expresiones de los personajes por medio de la implementacin de un autmata finito
determinista que permitira la seleccin de expresiones de interaccin social y emocional no
verbales asociadas al contexto.
Para este trabajo se realiz un estudio acerca del anlisis de la comunicacin, interaccin,
conversacin, expresin y discurso. Para lo cual, se analizaron videos para la comprensin de las
gesticulaciones.

1.2 Objetivos
1.2.1 Objetivo General
Definir una metodologa para organizar la estructura de los dilogos de un agente conversacional
que exprese emociones, y as disear un asistente virtual con dilogo emocional.

1.2.2 Objetivos especficos

Crear una arquitectura general para el desarrollo de Asistentes Virtuales con dilogo
emocional que puedan interactuar con el usuario a travs de una interfaz grfica.

Establecer las consideraciones que se deben tomar en cuenta para la organizacin de la


estructura de los dilogos utilizando la extensin emocional del Lenguaje AIML para
as disear un asistente virtual que exprese un comportamiento emocional en su dilogo.

Disear un personaje (asistente virtual) en iClone PRO.V4.1, que sea capaz de


representar emociones por medio de expresiones faciales.

Crear un prototipo de la arquitectura para disear el dilogo del asistente virtual en el


contexto de la Maestra en Ciencias en Ciencias de la Computacin del ITCM.

1.3 Problemtica
La problemtica en el desarrollo de asistentes virtuales con dilogo emocional radica en cmo
representar emociones por medio del dilogo, adems de sus expresiones faciales.
Para este problema, se pretende analizar las conversaciones, identificar patrones en los dilogos en
los que se puedan representar emociones, de acuerdo a la conversacin con el usuario. Se evaluarn
las conversaciones, de tal forma que se pueda estructurar la base de conocimiento del dilogo y
saber, que tipo de dilogos representan cierta emocin.

1.4 Justificacin
Para elaborar formas de interacciones por medio de una computadora, ms naturales y herramientas
de simulacin que permitan una instruccin eficaz, es necesario que el usuario del sistema est
sumergido en una situacin virtual similar a la realidad. Para ello, no es suficiente reunir imgenes y
sonidos realistas, es tambin importante que los personajes virtuales manifiesten comportamientos
emocionales y de interaccin social mediante expresiones no verbales (Coca & ngel, 2009),
(Morales, 2007). El disear un asistente virtual con dilogo emocional, a la semejanza del ser
3

humano como parte de las interfaces entre hombre-mquina dar un enfoque ms interesante a stas.
Adems, de poder mantener una conversacin en la cual se podr dar la informacin pertinente al
usuario. Para lo cual se establecer una metodologa estndar para la organizacin de la estructura
de los dilogos que representen emociones. Adems, se disear un asistente virtual, el cual podr
expresar facialmente emociones.

1.5 Hiptesis
En esta tesis se busca facilitar la representacin de emociones de un agente conversacional por
medio del dilogo. Existen una serie de problemticas para lograrlo, ya que una misma frase puede
ser expresada transmitiendo diferentes emociones, as como una emocin puede expresarse usando
diferentes frases. Basndose en dicha afirmacin, se quiere determinar si es posible disear una
metodologa para el diseo de las bases de conocimiento de AIML, considerando la expresin de
emociones de acuerdo al contexto y as facilitar el diseo de un asistente virtual capaz de expresar
dilogo emocional.

1.6 Alcances y Limitaciones


El alcance de este proyecto est limitado a definir una metodologa para la organizacin de la
estructura del dilogo emocional utilizando la extensin del lenguaje AIML desarrollada por
(Florencia, 2010).
El caso aplicativo de esta metodologa, ser un asistente virtual, que proporcione informacin sobre
la Maestra en Ciencias en Ciencias de la Computacin del ITCM.
El diseo del asistente virtual ser en el software ICLONE4 PRO, y la implementacin se crear con
Python, haciendo uso de una base de datos creada en MySQL, por lo que se requerir que est
instalado ste manejador de Base de Datos.

1.7 Estructura del documento


En esta seccin, se presenta la forma en que est organizada esta tesis:
Captulo 1. Introduccin, en este captulo se presenta de manera clara y precisa lo relacionado a la
tesis, para que el lector se interese en seguir leyendo sobre el tema.
Captulo 2. Concepcin de Agentes Conversacionales, en este captulo se presenta la teora para
entender conceptos relacionados con agentes conversacionales.
4

Captulo 3. Anlisis de la comunicacin, en este captulo se presenta teora para fundamentar los
actos involucrados en la comunicacin.
Captulo 4. Programacin de dilogo en Agentes Conversacionales, en este apartado se presenta la
literatura relacionada con la programacin de la base de conocimientos.
Captulo 5. Diseo de un Asistente Virtual con Dilogo Emocional, en este apartado se describe
como disear un asistente virtual.
Captulo 6. Caso Aplicativo: Asistente Virtual de la Maestra en Ciencias en Ciencias
Computacionales, en esta seccin se presenta el desarrollo del caso aplicativo en esta Maestra.
Captulo 7. Experimentacin y Resultados, en este captulo se presentan la experimentacin y los
resultados llevados a cabo.
Captulo 8. Conclusiones y Trabajos Futuros, se presenta la conclusin del trabajo, se mencionan
los posibles trabajos futuros que permiten darle seguimiento a este proyecto.

CAPTULO 2.
CONCEPCIN DE AGENTES
CONVERSACIONALES
En este captulo se presentan los conceptos relacionados con el proceso de construccin de agentes
conversacionales, su interaccin social, y sus dilogos que estn contenidos en la base de
conocimientos, adems de la tecnologa necesaria para llevar a cabo su desarrollo.

2.1 Agente Conversacional


Segn (Marcelo & P, 2007) hacen mencin que el trmino agente fue empleado por primera vez por
Minsky en su obra "The Society of Mind".
Segn (Nwana, 1996) dice que un Agente es aquel componente de software o hardware que es
capaz de actuar en forma precisa para llevar a cabo una tarea en beneficio de su usuario.
Los agentes de software son sistemas informticos que se puede encontrar en mltiples plataformas,
y que usando tcnicas de resolucin de problemas, ejecutan acciones de forma flexible y autnoma,
para alcanzar sus objetivos, lo cual los puede llevar a cambiar su entorno (Monroy, 2008).
Existen diferentes tipos de agentes, los agentes conversacionales son uno de ellos. El trmino
agente conversacional est compuesto por dos palabras agente y conversacional. La palabra
agente tiene su raz antes del siglo XV y significa: el que acta y del Latn agentem
(nominativo: Agens, el gnero: Agentis) (Lun, 2010). La palabra conversacional significa, que
tiene la caracterstica de una conversacin o del lenguaje coloquial empleado en ella
(wordreference, 2005).
Un agente conversacional es una entidad viviente artificial diseada para tener conversaciones con
seres humanos reales. Estas conversaciones se pueden expresar va texto, de forma oral o incluso
una conversacin no verbal. Los agentes conversacionales tambin son conocidos como chatbots
(Lun, 2010), pueden encontrarse en pantallas, mundos virtuales, pero tambin en el mundo real, a

travs de proyecciones (por ejemplo con proyeccin hologrfica) o fsicamente hablando y


respondiendo como marionetas, juguetes y robots (Lun, 2010b).
En esta tesis se definir una metodologa para organizar la estructura de los dilogos de un agente
conversacional que exprese emociones, y as disear un asistente virtual con dilogo emocional. Los
agentes conversacionales deben tener una base de conocimientos, mediante la cual podrn contestar
y hacer preguntas al usuario.

2.1.1 Caractersticas de los Agentes Conversacionales


Los agentes conversacionales tienen las siguientes caractersticas, las cuales hacen estos que se
distingan de los diferentes tipos de agentes:

Autonoma: Los agentes deben de tener la capacidad de respuesta de acuerdo a los


conocimientos que le permitan alcanzar el objetivo que tenga planteado.

Proactividad: Los agentes tienen la capacidad de tomar la iniciativa ya sea mediante


sugerencias o acciones que les ayude para alcanzar su objetivo.

Sociabilidad: esto quiere decir que un agente debe de tener:


o Comunicacin.
o Cooperacin.
o Negociacin.

Personalidad: Los agentes tienen un comportamiento dado al objetivo que buscan


(Monroy, 2008).

Expresan emociones y tener comportamiento no verbal (Kopp, 2009).

Modelar con agentes tiene ventajas en el sentido de que este paradigma es ms cercano a nuestra
manera de ver el mundo, porque muchas organizaciones se definen con un conjunto de roles y
relaciones entre ellos, an as, es necesario disponer de mtodos y herramientas para el desarrollo de
los sistemas basados en agente (Monroy, 2008).

2.1.2 Aplicaciones
Ahora en da, los agentes conversacionales son de mucha utilidad, tal que se pueden encontrar en
diversas reas, realizando funciones como:

Wizards, en aplicaciones de escritorio.

Asistentes, en sitios web de comercio electrnico, negocios y otros dominios.

Tutores, en Educacin, (por ejemplo. para aprender y practicar un idioma) (Kopp, 2009).

Herramienta de entretenimiento.

Herramienta de recuperacin de informacin.

2.1.3 Agentes Conversacionales Animados


Existen diferentes tipos de Agentes Conversacionales, uno de ellos son los ECAs (Embodied
Conversational Agents por sus siglas en ingls), en espaol se han conocidos como Agentes
Conversacionales Corpreos o Agentes Conversacionales Animados.
Estos Agentes son interfaces grficas con la capacidad de utilizar modos de comunicacin verbal y
no verbal para interactuar con usuarios en ambientes virtuales. Estos agentes algunas veces son slo
un rostro parlante animado, pueden desplegar expresiones faciales simples, pueden utilizar sntesis
de voz con algn tipo de sincronizacin labial, y algunas veces tienen sofisticadas representaciones
grficas en 3D con movimientos corporales y expresiones faciales complejos.
Segn (Cassell, Tim Bickmore, Campbell, Vilhjlmsson, & Yan, 2000) un ECA debe tener las
siguientes habilidades:

Reconocer y responder a entradas verbales y no verbales por parte del usuario.

Generar salidas verbales y no verbales.

Realizar funciones conversacionales (por ejemplo turno de la palabra, retroalimentacin,


etc.)

Dar seales que indiquen el estado de la conversacin as como contribuir con nuevas
proposiciones.

Para desarrollar un ECA con las habilidades antes descritas, se requieren varios componentes, que
en base a su funcin en el flujo de la informacin de la interaccin con los usuarios, se pueden
dividir en las siguientes categoras:

Fase de entrada. Los ECAs deben estar preparados para recibir diferentes tipos de
entrada de informacin por parte del usuario, incluyendo las modalidades verbales y no
verbales.

Fase de deliberacin. Es la parte central del ECA, la cual determina su comportamiento


en respuesta a las entradas y al contexto. Un ECA sin emociones ni expresiones faciales
no se ve creble, por lo tanto se debe incorporar emociones, personalidad, cultura y

modelos de rol social en un ECA para lograr credibilidad en la comunicacin con los
usuarios.

Fase de salida. Es necesario que el ECA posea un cuerpo expresivo, tanto en los canales
de comunicacin verbal como en los no verbales. En lugar de robots y personajes
animados, los ECAs son preferidos por los investigadores por su libertad de expresin.

En una serie de estudios, investigadores en el paradigma de computadoras como actores sociales


han demostrado la posibilidad de manipular las relaciones del usuario con la computadora utilizando
una amplia gama de comportamientos. Reeves & Nass demostraron que los usuarios prefieren ms a
las que los halagan. Morkes, Kernal & Nass demostraron que agentes computacionales que utilizan
el humor son clasificados como amables, competentes y cooperativas Moon demostr que una
computadora que utiliza estrategias de reciprocidad y profundidad en la conversacin con el usuario,
son clasificadas como ms afectivas y el usuario llega a comprar un producto de la computadora. En
un paradigma diferente, Mark y Becker estudiaron cmo las convenciones sociales pueden afectar
las relaciones interpersonales entre los usuarios que se encuentren reunidos en un ciberespacio.
stos son ejemplos de tcnicas de persuasin empleadas con la finalidad de cambiar las creencias,
sentimientos y pensamientos de los usuarios (Cassell & Timothy Bickmore, 2002).

2.1.4 Humanos Virtuales Crebles


Construir ECAs es una tarea multidisciplinaria, ya que rene problemas tradicionales de la
inteligencia artificial con las ciencias sociales. Los ECAs deben actuar y reaccionar en sus
ambientes simulados, basndose en las disciplinas de razonamiento automtico y planeacin. Para
mantener una conversacin, se debe explotar la gama de investigaciones realizadas sobre lenguaje
natural, reconocimiento de voz y comprensin del lenguaje natural para la generacin de sntesis del
habla, as como visualmente tener un cuerpo humano con movimientos reales, tal como los de un ser
humano real.
La representacin visual ms comn de los ECAs son los personajes humanoides virtuales que son
representaciones digitales en un ambiente virtual. La construccin de personajes virtuales crebles
requiere un enfoque multidisciplinario que tome en cuenta las cuestiones psicolgicas, sociolgicas
y filosficas. La consideracin de estos temas permite dotar a los humanos virtuales de un
comportamiento no verbal capaz de transmitir la personalidad y las emociones. Varios autores dicen
que el uso de humanos virtuales como herramientas para la interaccin puede enriquecer la
interaccin humano-computadora, por lo que hace ms agradable y aumenta la motivacin del
usuario (Gratch, et al., 2002).
9

Algunas de las caractersticas de los humanos virtuales son: utilizar sntesis de voz con algn tipo de
sincronizacin labial y tener sofisticadas representaciones grficas en 3D con movimientos
corporales y expresiones faciales complejos.
Hay varias ideas acerca de lo que les puede dar credibilidad a los personajes virtuales. Segn (Bates,
1994). Un personaje creble se define, como un personaje que puede proporcionar la ilusin de vida
y permite al pblico suspender su incredulidad. El grado de credibilidad de su ilusin se encuentra
en el acoplamiento y reproduccin de dos dimensiones principales: Antropomorfismo y el
comportamiento. La realizacin permite ms multimodalidad, por lo tanto haciendo la interaccin
ms natural y robusta.
De acuerdo a unos comentarios sobre la apariencia fsica y especialmente la falta de fluidez de las
animaciones de agentes, tambin pueden causar menor credibilidad. Por lo tanto la apariencia fsica
y los factores sociales tienen que tomarse en cuenta en forma conjunta para crear agentes ms
crebles capaces de mantener una interaccin con los usuarios.

2.2 Asistentes Virtuales Crebles


Un Asistente Virtual es una herramienta informtica, que bajo la apariencia de un personaje virtual,
es capaz de poner atencin a los visitantes de un determinado sitio web. Es, por lo tanto, una
herramienta fundamental para reducir los costes de atencin, mientras que se incrementa la calidad
de esta atencin. Los Asistentes Virtuales permiten responder, de forma automtica, las necesidades
de informacin de sus usuarios. De este modo podr tanto aportar en todo momento, la informacin
que estos precisan, como tambin encauzar la conversacin de la forma ms provechosa para su
organizacin o institucin (dTinf, S.L., 2008).
Los asistentes virtuales crebles son una mezcla de agentes autnomos y personajes por
computadora basados en las artes, como lo son la animacin, pelculas o literatura. Son una
extensin, tanto en la investigacin de agentes autnomos en la ciencia de la computacin y la idea
de los asistentes virtuales crebles de las historias tradicionales. Los asistentes virtuales crebles son
una versin de los agentes autnomos.
Aunque los agentes crebles estn basados en los personajes crebles, estos son diferentes en que
ambos son interactivos y basados en computadora. El hecho que son basados en computadora
significa que un autor no depende de un actor humano que le da muchas de las cualidades necesarias
de credibilidad al agente, por ejemplo, en una pelcula o en teatro. Para un agente creble su
personalidad debe ser creada completamente. Estos siempre son una abstraccin de la realidad,
10

conservando slo los elementos de realismo que contribuyen a transmitir la personalidad. Los
asistentes virtuales crebles son personajes interactivos, quienes parecen estar vivos, expresan
emociones y personalidad (Loyall, Bates, & Mitchell, 1997).
Segn (Loyall, Bates, & Mitchell, 1997) los requerimientos para los asistentes virtuales crebles son
que deben mostrar: personalidad, emociones, automotivacin, capacidad de adaptacin, relaciones
sociales, expresin de consistencia e ilusin de vida.

2.2.1 Estado de Arte de los Asistentes Virtuales


Eliza fue el primer agente conversacional desarrollado, poda seguir una conversacin sobre un
tema concreto. Era un chatbot que dominaba el tema de la psicologa, fue creado en 1980 por Joseph
Weizenbaum, con el objetivo de sustituir a un psiclogo real en sus conversaciones con los
pacientes. Eliza, sirvi de inspiracin para casi todos los chatbots actuales, ya que todos se basan
principalmente en la creacin de patrones que simulen el comportamiento humano. PARRY, otro
bot que tena como objetivo, simular a un paciente paranoico. A este bot se le evalu en sus
conversaciones con tres pacientes que realmente tenan dicha enfermedad y enfrentndolos a un
medico de verdad.
En 1995, el Dr. Richard Wallace escribi A.L.I.C.E., en su primera versin, uso SETL, un lenguaje
basado en lgica matemtica, pero se quedo en un experimento. A partir de este primer intento se
desarrollo el Program A que fue la primera versin de A.L.I.C.E., esta versin se desarrollo
usando AIML y Java. El siguiente paso de este bot fue el Program B en el que ya intervinieron
alrededor de 300 desarrolladores y donde se sustituy AIML evolucion a algo parecido a XML, y
fue con esta versin con la que se gan el Loebner Prize en 2000. A partir de aqu se crearon otras
dos versiones de A.L.I.C.E., el Program C (que se desarrollo usando C/C++) y el Program D
(basado en la tecnologa Java2). A partir de aqu se creo, en 2001 The A.L.I.C.E. AI Foundation
para distribuir, promocionar, desarrollar y mantenimiento de Alicebot y de la tecnologa AIML.
Otro trabajo a destacar lo encontramos en TinyMud, un entorno ideal para probar bots de charla ya
que consista en una especie de mundo virtual donde los usuarios hablaban sobre sus asuntos y
problemas. La prueba consista en que el bot se confundiera con los usuarios reales. El bot Julia es
una evolucin de un bot que se prob en este entorno con muy buenos resultados.
El proyecto Spence's Virtual Bar se trata de un IRC que simula un bar donde los clientes pueden
conversar y en el que hay una camarera. Erin, un bot cuyo tema de conversacin es el Rock &
Roll.

11

Otros bots que se han desarrollado son algunos como Theresa cuyo tema de conversacin es la
msica y la cultura griega, Mimic que aprende mientras hablas con l, Brian que gan el tercer
puesto en el Loebner Prize de 1998 y otros muchos.
La mayora de los bots estn diseados para hablar en ingls. A pesar de la supremaca de los
chatbots en idioma ingls, tambin cabe destacar algunos chatbots desarrollados para hablar en
espaol. Por ejemplo: Dr. Abuse que es uno de los mejores chatbots escritos en espaol en la
actualidad. Este bot toma la personalidad de un psiquiatra al que visitamos para que resuelva
nuestros problemas, pero es capaz de seguir casi cualquier tipo de conversacin. Sus conversaciones
tienen algunos toques de humor y los autores han conseguido dotarle de una personalidad definida.
Otro chatbot escrito en espaol es Zebal. La principal caracterstica de Zebal, es su gran capacidad
para interactuar con el exterior mediante una conexin al IRC lo que le permite aprender de
interlocutores humanos que no saben que estn hablando con un bot. Adems, Zebal se puede
conectar remotamente a bases de datos, lo que le aporta acceso a un gran diccionario de 30000
palabras o incluso puede recoger informacin de Internet. Por el contrario, Zebal no sigue
conversaciones tan bien como el resto de Bots.
Por ltimo cabe destacar que existen chatbots que conversan en otros idiomas, como ejemplo de
esto, tenemos a Eloisa que mantiene charlas en italiano. Muchos de estos Bot son de carcter
general, es decir que no estn especializados en ningn tema en particular, mientras que otros si lo
estn. En la Tabla 1 se muestra una relacin de algunos de los Bots que se encuentran en lnea, en la
cual se especifica la temtica que tratan, su idioma y su Url (Marcelo & P, 2007).
Nombre
Eliza
A.L.I.C.E.
Zebal
Julia
Erin
Mitbolel
Mimic
Brian
Dr. Abuse
Theresa
Eloisa
Alice-espX
Eva
Ins

Tema
Psicologa
General
General
General
Rock & Roll
General
General
General
Psicologa
Msica
General
Relaciones Afectivas

Empresa indisys
Ibanesto

Idioma
Ingles
Ingles
Espaol
Ingles
Ingles
Ingles
Ingles
Ingles
Espaol
Ingles
Italiano
Espaol
Espaol
Espaol

Url
http://www.manifestation.com/neurotoys/eliza.php3
http://www.alicebot.net
http://www.espasoft.net/fichas/zebal.shtm
http://www.lazytd.com/lti/julia/
http://www.extempo.com/webbar/index.html
http://www.romahi.com/yazann/Mitbolel/Mitbolel.html
http://www.thespoon.com/mimic/
http://www.strout.net/info/science/ai/brian/
http://www.ctv.es/USERS/jboronat/drabuse.html
http://www.oz.com/ov/agents/main_index.html
http://web.tin.it/eloisa/
http://aurora.esi.uem.es/ivinas
http://www.indisys.es/
http://asistentevirtual.ibanesto.com/ibanesto/ibanesto.jsp

Tabla 1. Bot en lnea


12

2.2.2 reas de Aplicacin


Las reas de aplicacin de los asistentes virtuales pueden ser: Industrial, Comercial, en la
Educacin, en la Medicina, etc. De las cuales, se pueden destacar dos reas de aplicacin, la
industrial y la comercial.
Por otro lado, tambin est siendo empleado en aplicaciones comerciales, sobre todo a nivel de
aplicaciones de red, tanto en Internet como en redes corporativas, entre las que podemos distinguir:

Gestin de informacin: Como ejemplo de la gestin de informacin el agente puede


filtrar correos, noticias o recopilar informacin que se encuentre en la red. Tambin
puede realizar tareas como almacenar, aprender, y manejar las preferencias del usuario,
as como sus modificaciones. Podra tambin ser una agenda personal, como si se
contara con una secretaria o asistente personal.

Comercio electrnico: En este caso la tecnologa se aplicara para crear el entorno


virtual en donde se llevaran a cabo transacciones como compras, ventas de algn
producto o hacer bsquedas de productos para comprobar la existencia o precios de estos
automticamente.

Monitorizacin: En esta aplicacin el agente da informacin al usuario acerca de lo que


sucede, si se actualiza informacin, elimina o se mueve. Tambin indican al usuario que
pgina o pginas han sido modificadas, y desde cuando sucedi.

Mediador de diferentes fuentes de informacin: En esta aplicacin aun se est


trabajando actualmente, para que los agentes operen entre diferentes fuentes de
informacin independientemente del sistema en que se haya creado.

Otra rea de inters son las aplicaciones mdicas, donde la idea es disponer de agentes que realicen
de forma autnoma tareas que pueden ser automatizadas en un hospital, como por ejemplo: la
monitorizacin de pacientes en cuidados intensivos, estos sistemas se encargaran de seguir el
tratamiento de un paciente controlando todos los aspectos relativos a la enfermedad que tenga el
mismo.
Tambin es posible encontrar aplicaciones dentro del rea del entretenimiento como pueden ser
juegos (la aplicacin de esta tecnologa en juegos permite disponer de juegos ms sofisticados, con
caractersticas inteligentes donde se pueden incorporar personajes virtuales que pueden funcionar de
forma casi autnoma) y el teatro interactivo y cine, donde se permite a un usuario interpretar el
papel de un personaje en una obra donde el resto de los personajes pueden ser virtuales (Botti,
2000).
13

Finanzas, banca y
seguros

Seguridad, industria y
logstica

AA, PP, Sanidad y


Turismo

Portales
Web
financieros
con
asistencia AVI como
gua
- Cajeros automticos.
Ayuda a personas con
problemas
de
accesibilidad.

- Sistemas de SV
(Speaker Verification)
o de huella de voz.
Funciones
de
autentificacin/
identificacin.

- Banca UMTS.
Consulta de saldos y
cuentas
mediante
asistente virtual en
mvil.

- Portales Web de
logstica del estado de
las entregas .Preguntas
tcnicas.

- Kioscos autoservicio
gua en aeropuertos,
estaciones, etc.
Paneles informativos
centros mdicos,
aeropuertos.
- Doctor virtual. Portal
Web de atencin
sanitaria, cita previa.

Telecomunicaciones
- Aplicaciones de
servicios telefnicos
3G.
- Campaas
publicitarias MMS en
mvil. Servicio
contestador.
- Informacin TDT.

Ocio, utilidades y enseanza


- Paneles informativos en comercios,
- Videojuegos de fidelizacin. Acercan a usuarios. No e-Generation a
Recomendador de productos.
Empresa.
- Portales Web de e-learning Profesor virtual.

Figura 1. Usos de los Asistentes Virtuales

2.2.2 Rol de los Asistentes Virtuales


De forma general los asistentes virtuales pueden ser de 3 tipos: asistentes virtuales sociales,
asistentes virtuales educacionales y asistentes virtuales orientados al servicio, los cuales se
describen a continuacin.
Asistentes Virtuales Sociales: Su propsito es conversar libremente acerca de algo con cualquier
usuario, as como lo hara con un amigo. Son usados en lnea para entretenimiento. Ver figura 2.
Asistentes Virtuales Educacionales: Su propsito es ayudar a aprender acerca de algo, como un
nuevo lenguaje, historia, geografa, etc. Son usados en las escuelas. Ver figura 3.
Asistentes Virtuales Orientados a Servicios: Estos generalmente son utilizados por empresas que
ofrecen servicios en lnea. Su propsito es ayudar a los clientes a encontrar el camino en el sitio
web, as como contestar preguntas acerca de sus productos y servicios. Ver figura 4 (Jenkins, 2010).

14

Figura 2. Ejemplos de Asistentes Sociales

Figura 3. Ejemplos de Asistentes Educacionales

15

Figura 4. Ejemplos de Asistentes Orientados a Servicios

Figura 5. Ejemplos de Asistentes Virtuales(Lun, 2010a)

El rol de los asistentes es muy importante, ya que puede un simple asistente que proporcione
informacin, aunque tambin podra realizar tareas ms complejas, si est programado para
realizarlas.
A continuacin una descripcin de algunos roles importantes:

Representacin virtual. Se comunican en lenguaje natural y suplen a los comerciales.

Como asistentes personales. Nos ayudan como lo hara un ayudante.

16

Negociador en mercados electrnicos. Localiza una subasta en Internet, aprende cmo


va la oferta y realiza una compra por nosotros.

Agente de bsqueda de informacin o rastreador. Rastrean en las redes de


ordenadores en busca de informacin solicitada. Son parametrizables por el usuario
aprenden de sus hbitos, rastrean la red e informan por correo electrnico de novedades
que consideran pueden ser de inters para el usuario.

Agente secreto o espa. Monitorizan una pgina Web identificada previamente por el
usuario e informan cuando se producen cambios en dicha pgina (Takeyas, 2005).

2.2.3. Implementaciones de Asistentes Virtuales


Ejemplos de algunas empresas que se dedican al desarrollo de asistentes virtuales, son: ATOS
ORIGIN, Response, Artificial Solutions Iberia, The Reuse Company, INBENTA, Intuit
MyProSeries, CAJA MADRID y Next IT. A continuacin se presentan algunos de los asistentes
virtuales realizados Next IT (Next IT Corporation, 2010):
Aetna compaa aseguradora de salud de los Estados Unidos lanz su asistente Ann a
principios del ao 2010. Lo que ha ocasionado una reduccin del 29% en las llamadas a
su servicio de asistencia tcnica de los clientes.
Figura 6. Ann asistente virtual de la aseguradora Aetna

Jenn, es un experto virtual del servicio a clientes de Alaska Airlines, que entr en
operacin desde febrero de 2008.
Figura 7. Jenn asistente de Alaska Airlines

Alex, la experta virtual de Continental Airlines inici en Julio de 2009. En su primer mes
respondi a ms de un milln de preguntas, y actualmente atiende a ms de 60.000
preguntas por da.
Figura 8. Alex asistente de Continental Airlines

17

Amy, la experta virtual para Comunicaciones Shaw, ayuda a mejorar la interaccin en su


sitio web el cual anteriormente fue percibido como torpe y con servicios difciles de
ubicar.
Figura 9. Amy

Lanzado en 2006, el SGT STAR ha aumentado la duracin de la sesin promedio y ha


respondido a ms de 4 millones de preguntas en el sitio web del Ejercito de los Estados
Unidos.
Figura 10. SGT STAR del Ejercito de los Estados Unidos

Con el fin de ayudar al alumnado, estudiantes, y proporcionar informacin relevante del


sitio web de la escuela, la Universidad Gonzaga colabor con Next IT y en 2004 puso
en marcha su experto virtual Spike.
Figura 11. Spike experto virtual de la Universidad Gonzaga

2.3 Base de Conocimientos de los Agentes Conversacionales


Para poder mantener un dilogo con coherencia es necesario que el agente cuente con una base de
conocimientos. Esta puede estar formada por una serie de archivos .aiml los cuales contienen una
gran cantidad de reglas que definen la respuesta del bot en base a la informacin de entrada.
Las bases de conocimientos deben manejar diferentes niveles de conocimiento, y tener una
estructura organizada por contextos, puede ser definida para un tema en particular o se puede hacer
general.
El diseo de una base de conocimiento que apoye la generacin de un dilogo requiere de realizar
anlisis de la comunicacin cara a cara que se realiza en el contexto que se desea simular.
En los siguientes captulos se presentan los fundamentos tericos necesarios para disear e
implementar una base de datos de conocimiento para un agente conversacional.

18

CAPTULO 3.
ANLISIS DE LA
COMUNICACIN
El anlisis de la comunicacin se basa en dos enfoques principales: El anlisis del discurso que tiene
por fundamento la teora de los actos del habla y el anlisis conversacional que se basa en la
Etnometodologa, que tiene como objetivo identificar las normas y principios que sustentan el
funcionamiento de las conversaciones y los diferentes tipos de intercambios que se producen en la
interaccin comunicativa (Morales, 2007). Este captulo permite comprender el backgroud de la
estructura detrs del diseo de la conversacin de un asistente virtual.

3.1 Interaccin cara-a-cara


La conversacin cara-a-cara involucra la expresin de comportamientos no-verbal y de lenguaje.
Los comportamientos durante la conversacin no solo funcionan en paralelo, sino interdependiente.
Una conversacin cara-a-cara es una actividad en la que las sincronizacin entre los participantes
parece ocurrir de manera natural. Esto se ve facilitado por el nmero de canales o modalidades que
tenemos a nuestra disposicin para transmitir informacin. Estos canales incluyen las palabras, la
entonacin de la voz, gestos, expresin facial, la postura, la orientacin y la mirada.
La coordinacin de los comportamientos conversacionales no verbales y verbales para humanos
virtuales requiere la reunin de los desafos interrelacionados. Como el habla, la entonacin, la
mirada y los movimientos de la cabeza, que le dan sentido en conjunto, los patrones de su coocurrencia en la conversacin, y que tipos de objetivos son alcanzados por los diferentes canales,
todos son igualmente importantes para comprender la construccin de humanos virtuales. Los
comportamientos no verbales y del habla no siempre manifiestan la misma informacin, sino lo que
ellos transmiten es siempre compatible virtualmente. En muchos casos, las diferentes modalidades
sirven para reforzar de una a otra gracias al significado de la redundancia. En otros casos, los
19

mensajes de los atributos de la pragmtica y la semntica se distribuyen a travs de las modalidades.


La compatibilidad de significado entre los gestos y el discurso destituye la interaccin de palabras y
grficos en las presentaciones multimodales.
Los comportamientos no verbales y verbales, las arquitecturas computacionales para humanos
virtuales deben controlar tanto las estructuras proposicional y de interaccin.
La construccin de un humano virtual que pueda participar eficazmente en una conversacin cara a
cara requiere una arquitectura de control con las siguientes caractersticas: E/S multimodal,
retroalimentacin en tiempo real, entendimiento y sntesis de la informacin de interaccin y
proposicional, as como tambin un modelo de funcin conversacional (Gratch, et al., 2002).
La tendencia en interaccin Hombre-Mquina (IHM) se enfoca en el uso de tcnicas que permiten
que el usuario se comunique, y as relacionarse, con las computadoras de manera ms natural. El
uso de lenguaje natural no basta, se necesitan aadir diversos aspectos emocionales, es decir,
interaccin emocional para que al tener una conversacin con el usuario se mejore la comunicacin.
Las emociones son parte de la interaccin social y de nuestra capacidad para tomar decisiones.
Con el fin de entender el papel del comportamiento emocional en una interaccin Mquina-Humano
es necesario entender los aspectos fundamentales de la emocin misma (Pedro Branco, 2003). La
teora cognitiva de la emocin es la ms adaptada en la computacin, en particular la teora de la
valoracin de la emocin.
De acuerdo con esta teora, los resultados de las respuestas emocionales a partir de una evaluacin
dinmica de las necesidades, creencias, objetivos, inquietudes, demandas ambientales que puedan
resultar, consciente o inconscientemente. Uno de los modelos ms implementados es el modelo
OCC que proporciona un esquema de clasificacin de etiquetas de emocin basadas en una reaccin
de valencia para eventos y objetos en los objetivos del agente, normas y actitudes.
La interaccin social, es el fenmeno bsico mediante el cual se establece la influencia social que
recibe todo individuo.
El dilogo es la forma ms simple de la interaccin humana en situaciones de cooperacin. Segn
(Morales, 2007) el dilogo puede verse como un juego, en el que cada participante juega disparos
con los actos del habla para lograr su objetivo. El dilogo es el resultado de las interacciones
(acciones y operaciones) para resolver subobjetivos. Los dilogos se suelen describir en tres fases:
la primera es el comienzo de la conversacin, la segunda fase es el intercambio de turnos para
hablar y la tercera finaliza la conversacin.2.5 Les

20

3.2. Anlisis de la conversacin


El anlisis de la conversacin se interesa por analizar la accin humana, entendida como un sistema
que permite que las personas acten en mltiples ocasiones de la vida cotidiana de forma regular,
utilizando mtodos que les permiten dar sentido a las estructuras sociales.
Se considera que el habla es un vehculo para la accin social y tambin uno de los principales
medios con que se construye y se mantiene mutuamente la organizacin social en la interaccin
entre las personas.
Segn (Goodwin & Duranti, AO), proponen cuatro dimensiones que abarcan los elementos no
lingsticos presentados en una conversacin:

La localizacin
Marco socioespacial (escena psicosocial)
Deixis (de persona, de tiempo, de lugar, textual y social).

El comportamiento no verbal
Oral (vocalizaciones, Kinesia, proxemia)
Escrito (soporte, formato, tipografa, lo icnico).

La lengua como contexto


o marcas de cohesin (relaciones. fnicas, conexin...)
o gneros discursivos
o (proto), tipos textual/es
o variedad/es lingstica/s
o intertextualidad.

El contexto extrasituacional aclara la estructura de las presuposiciones (conocimiento


previo) guiones (secuencias cognitivas) As pues, tanto lo lingstico como lo no
lingstico se articulan para crear el contexto particular en que se desarrolla un
intercambio comunicativo; contexto que se va negociando y que puede cambiar a lo
largo de una conversacin.

El anlisis de la conversacin nos permite darnos cuenta de cmo las formas, tanto lingsticas
como no lingsticas en la interaccin social crean y dan sentido a nuestras actividades cotidianas.
Teniendo como objetivo el poder entender cmo se construyen, se negocian y reproducen
determinados papeles sociales. A travs del anlisis conversacional y partiendo de las formas

21

lingsticas en uso, al analizar cmo se va modulando una conversacin con elementos no


lingsticos, se crea sentido y se descubren los signos sociales que emergen en una conversacin.

3.3. Anlisis del Discurso


Tanto el discurso hablado como el discurso escrito (texto), se consideran hoy en da como una
forma de interaccin contextualmente situada.
Si queremos entender en su totalidad los mensajes que nos transmiten, es necesario hacer un anlisis
de lo que nos dicen, es decir, tomar cada parte de esos mensajes y saber cul es su significado,
conocer que se obtiene de la unin de todo lo que una persona habl o escribi de cualquier tema;
de esa manera tendremos la certeza de conocer el trasfondo de lo que se est diciendo. Por otra
parte, si nos quedamos nicamente con la transmisin de informacin1, sin comprender a fondo lo
que se nos est comunicando, solamente obtendremos lo explcito del mensaje, (lo que escuchamos,
lo que leemos) dejando de lado lo implcito (lo que est entre lneas, lo que no se dice claramente)
del mensaje, por lo que nos quedamos con la mitad de la informacin (V)

Figura 12. Proceso de Comunicacin bsica

En un proceso de comunicacin bsico, un emisor transmite mensajes (actos del habla) por medio de
un canal, ya sea escrito, hablado, o por medio de smbolos (escritura) que son recibidos por un
interlocutor o receptor, quien descodifica los mensajes enviados, es decir los interpreta, los entiende
y los procesa para despus retroalimentar a quien transmite la informacin, esto se evidencia en la
figura 12.

22

3.4.1. Actos del habla


La teora de actos del habla es iniciada por John L. Austin en 1962 y desarrollada posteriormente
por John R. Searle en 1969. Por actos del habla se refieren a los momentos en los que los
enunciados se producen en el acto comunicativo, dentro de un contexto dado, es decir, los tipos de
enunciados que existen, identificndose 3 tipos de Actos: locutivos, ilocutivos y perlocutivos.
El acto locutivos es el que se realiza al decir aquello que se dice, el ilocutivo es la intencin o
finalidad que se tiene al decir algo, el acto perlocutivo es el efecto que se produce en el oyente por
haber dicho algo.
Austin fue el primer autor en presentar la idea del acto de habla como una unidad funcional en la
comunicacin. Austin, menciona que, cuando una persona dice o enuncia algo, lo dicho puede tener
dos significados: el significado literal, o locutivo, y el significado ilocutivo, para l, el decir es
actuar.
Searle, se bas en las ideas de Austin y analizando los actos ilocutivos, clasific los actos de habla
en cinco grupos:

Encomendativos (promesas o amenazas).Ej.: La recepcionista te llamar para hacer una


cita.

Declarativos (enunciados que se usan para declarar un cambio en el estado de las cosas).
Ej.: Le declaro el cirujano jefe del hospital.

Representativos (afirmaciones, reclamaciones e informes). Ej.: Sus niveles de


colesterol son altos.

Expresivos (disculpas, quejas y otras expresiones de sentimientos y actitudes hacia


algo). Ej.: No me gusta cmo me trat el Dr. Agnew.

Directivos (sugerencias, peticiones y mandados). Ej.: Tmbese encima de la cama


(directo); Por qu no se sienta encima de la cama? (Indirecto). (dicho no es lo que
creen que has dicho, Jacobson 2001)

La teora de los actos del habla permite caracterizar las locuciones que sern expresadas por un
agente conversacional como parte de un sistema de dilogo.

23

3.4.2. Sistemas de Dilogo


Los sistemas de dilogo, tambin conocidos como sistemas conversacionales, se han convertido hoy
en da en una herramienta esencial para el desarrollo de servicios de atencin al cliente, banca
telefnica o de venta de productos.
La tendencia actual de esta tecnologa est orientada a desarrollar sistemas para dominios de
aplicacin restringidos, los cuales permiten utilizar informacin acerca de las posibles palabras,
tipos de frases e intenciones de los usuarios. Los sistemas de dilogo desarrollados han sido
aplicados principalmente a tareas como las siguientes: informacin y reserva de viajes en avin o en
tren, informacin meteorolgica, control de terminales telefnicos, compra de productos, ayuda a la
comunicacin entre personas que hablan distintos idiomas, acceso al correo electrnico o mensajes
telefnicos, etc.
Algunos de los principales problemas que se deben resolver para lograr que estos sistemas sean ms
"amigables" y efectivos para los usuarios son los siguientes:
1. Reconocimiento robusto del habla.
2. Extraccin de la informacin semntica de las frases.
3. Gestin del dilogo. El xito de un sistema de dilogo depende mucho del cuidado que se tenga
con el diseo de la interaccin, considerar que esta permita cubrir las limitantes usuales de la
tecnologa del reconocimiento del habla. Supuestamente esta tecnologa no est garantizada por
completo, as que se necesita mejorar los mtodos empleados para prevenir, detectar, y recuperar los
errores que se puedan producir durante la interaccin.
Normalmente un gestor de dilogo cumple cuatro funciones principales:

Actualizar el contexto del dilogo

Proveer de contexto en el que basara las interpretaciones.

Coordinar el resto de los mdulos.

Decidir qu informacin dar al usuario y cuando hacerlo. Para que as de informacin


pertinente.

Por lo tanto, el gestor de dilogo puede consultar distintas fuentes de informacin, tales
como resultados del procesamiento del lenguaje natural, resultados de consultas a bases
de datos, conocimiento acerca del dominio de aplicacin, conocimiento acerca de los
usuarios y la historia del dilogo. La complejidad depender de la tarea y flexibilidad e
iniciativa del dilogo.
24

4. Generacin de respuestas y sntesis de voz. A fin de ser aceptados por los usuarios finales, los
sistemas de dilogo deben generar mensajes con un alto nivel de inteligencia y naturalidad, y as de
esta manera programar un dilogo entre humano-maquina, es decir un agente conversacional y el
usuario (Libro Blanco de las Tecnologias del Habla).

25

CAPTULO 4.
PROGRAMACIN DE
DILOGO EN AGENTES

CONVERSACIONALES
En este captulo se describe el lenguaje AIML para poder entender el funcionamiento de cada una
de las etiquetas que se utilizan en ste, y de esta forma programar la base de conocimientos del
asistente virtual la cual permitir dar respuestas al usuario, y as establecer un dilogo.

4.1 AIML
Para poder mantener un dilogo de texto coherente con el usuario en lenguaje natural, en el mdulo
de gestin del dilogo de sta investigacin, se har uso del lenguaje AIML.
AIML (Artificial Intelligence Markup Language, Lenguaje) es un lenguaje compatible con XML
que es fcil de aprender, y nos permite crear una base de conocimientos. Esta base de conocimiento
utiliza un conjunto de categoras con las cuales un agente conversacional podr dar respuesta a
preguntas, asocindoles patrones (personalizados o enfocadas a un tema en especfico).
AIML fue desarrollado por la comunidad de software libre durante el periodo 1995-2000. AIML
describe una clase de objetos de datos llamados objetos AIML. Los objetos AIML estn formados
por unidades llamadas categoras y temas. La unidad bsica de conocimiento en AIML son las
categoras indicadas con la etiqueta <category>. Cada categora se compone de una pregunta de
entrada, una respuesta de salida y un contexto opcional. La pregunta o estimulo se llama patrn y se
seala con la etiqueta <pattern>, el patrn debe de estar en maysculas y debe coincidir con lo que
un usuario pueda dar como entrada. . La respuesta se llama plantilla y est especificada por la
etiqueta <template> (Bush, 2001).

26

4.1.1 Caractersticas
A continuacin se presentan las caractersticas que tiene el lenguaje AIML, como lo es su
simplicidad y su flexibilidad, en particular este lenguaje tiene dos problemas que se presentan a
continuacin el primero de ellos es la rigidez, en la exactitud que tiene, es decir el usuario debe
ingresar exactamente la frase que se tiene previamente en la base de conocimientos. Solo permite el
uso de comodines * y _ en una parte de la frase y no soporta ninguna variante de estos, como podra
ser; cualquier palabra que tenga diez letras, solo si es un digito, solo si es un signo, etc. Tampoco
permite obtener el valor ingresado. Por ejemplo: en la palabra HOLA relaciona solamente una
palabra idntica de las frases (Hola), y HOLA * relaciona cualquier frase de dos o ms
palabras iniciando con Hola (Ej. Hola como estas?). El segundo problema que tiene AIML, es
que ningn intrprete cumple con todo lo que est en la especificacin. Segn AIML debera poder
ejecutar sentencias java script o invocar scripts de otro lenguaje como puede ser BASH, incluso
HTML. Sin embargo estas funcionalidades no estn implementadas. [por que no aiml]

4.1.2 Etiquetas
Esta seccin describe las etiquetas de AIML ms utilizadas en la composicin de un archivo .aiml
que forma parte de la base de conocimiento de un agente conversacional. En la figura 13 se muestra
la jerarqua de las etiquetas en AIML. Cada etiqueta que se abre tiene asociada una etiqueta que se
cierra por ejemplo <category> y </category>.
Son 4 las etiquetas bsicas que se utilizan en la construccin de, la etiqueta <aiml> se utiliza para
iniciar y termina un documento AIML. La etiqueta <category>, marca el inicio de una "unidad de
conocimiento" que contiene a una pregunta (patrn), sus respuestas

y un contexto opcional

(etiquetas that y topic). Los patrones se definen por la etiqueta <pattern>, las posibles respuestas al
patrn estn definidas por la etiqueta <template>. A continuacin se describen las etiquetas
ilustradas en la figura 13.

27

<aiml>
<category>
<pattern>
<that>

</that>

<template>
<srai>
<random>

</srai>
</random>

<template>
</pattern>
</category>
<topic>

. . . Categoras Relacionadas a un Tema. . .

</topic>

/aiml

Figura 13. Jerarqua de Etiquetas en AIML

Dependiendo de la configuracin de los <template> y <pattern>, se pueden considerar que hay 3


tipos de categoras: Atmicas, Default y Recursivas.
Las Categoras Atmicas son las que tienen patrones atmicos, por ejemplo; el patrn que no
contenga * o _, son las ms fciles y simples para aadir en AIML. Un ejemplo es el siguiente:
<category>
<pattern>QUE ES LA MAESTRIA</pattern>
<template>Es un programa de estudios que esta dedicado a la Investigacion. Se
profundiza en problemas que por su complejidad, requieren de encontrar soluciones ptimas,
mediante los nuevos mtodos de computacin inteligente (redes neuronales, mtodos
heursticos, algoritmos genticos, entre otros)</template>
</category>

Las Categoras default, son aquellas que en su patrn tiene un * o _. La ltima categora
default es la que tiene un <pattern>*<pattern>, la cual se relaciona con cualquier entrada.
Esas respuestas default son a menudo llamadas por que generalmente se componen de preguntas
diseadas dirigidas a enfocar al cliente de temas que conoce. Categoras predeterminadas muestran
28

que la escritura AIML es un arte y una ciencia. Las categoras default ms comunes tienen patrones
combinados con unas pocas palabras y un smbolo comodn (Ringate, Wallace, Taylon, Baer, &
Daniels, 2001).
Por ejemplo la categora QUE ES *?, es un claro ejemplo de una categora default.
<category>
<pattern>QUE ES *?</pattern>
<template>Es un programa de estudios que est dedicado a la Investigacin y Se
profundiza en problemas que por su complejidad, requieren de encontrar soluciones ptimas,
mediante los nuevos mtodos de computacin inteligente (redes neuronales, mtodos
heursticos, algoritmos genticos, etc.).</template>
</category>

Las Categoras Recursivas son aquellas que mapean entradas a otras entradas, ya sea para
simplificar el lenguaje o a identificar patrones de sinnimos. Muchas entradas de sinnimos tienen
la misma respuesta. Esto se logra con la etiqueta recursiva <srai> (Ringate, Wallace, Taylon, Baer,
& Daniels, 2001). Un ejemplo de esta categora podra ser un saludo como el siguiente BUEN
BUEN

DIA *,

DIA,

estas frases pueden tener varias formas de sinnimos en la forma de responder, como

los que siguen: Que tal, como te va, Hey, como estas, etc. Para mapear esas entradas a la misma
salida para HOLA se usan categoras como las siguientes:
<category>
<pattern>BUEN DIA</pattern>
<template>
<srai>HOLA</srai>
</template>
</category>
<category>
<pattern>BUEN DIA *</pattern>
<template><srai>HOLA</srai></template>
</category>

<category>
<pattern>HOLA</pattern>
<template>
<condition name="name">
<li value="">Hola. Cmo te llamas?</li>
<li value="">Que tal, como te va</li>
<li value="">Hey, Como te va</li>
<li>Hola <get name="name" />!</li>
</condition>
</template>
</category>

La simplificacin o reduccin de patrones de entrada complejos es otra aplicacin comn de


categoras recursivas. La pregunta Que es X podra ser preguntada de muchas formas diferentes:
29

"Sabes t que es X?", "Hblame sobre X", "Describe X", "Que puedes tu decirme sobre X?", y "X
es qu?" son algunos ejemplos. Usualmente se intenta almacenar conocimiento en la manera ms
concisa o comn. La funcin <srai> asigna a todas estas formas a la forma bsica:
<category>
<pattern>SABES QUE ES *</pattern>
<template><srai>QUE ES <star/></srai></template>
</category>

La etiqueta <star/> sustituye el valor relacionado con un *, antes la recursividad llama a la


etiqueta <srai>. Esta categora transforma Sabes que es un circulo? a Que es un circulo?, y
entonces encuentra la mejor relacin para la entrada transformada. Otra aplicacin muy comn de
las categoras recursiva es lo que podra denominarse "anlisis", excepto que AIML no analiza el
lenguaje natural. Un mejor trmino podra ser "particin", porque estas categoras AIML
descomponen la entrada en dos (o ms) partes, y luego se combinan las respuestas y nuevamente se
juntan. Si una frase comienza con "Hola..." no importa lo que viene despus de la palabra en primer
lugar, en el sentido de que el robot puede responder a "Hola" y lo que esta despus de "..." es
independiente.
Ejemplo Hola mi nombre es Carlos y Hola como estas son bastante diferentes, pero muestran
como la entrada puede ser partida en dos partes. A continuacin se muestran unos ejemplos que
sirven para ilustrar la idea que se plantea.
Lleva a cabo la particin de entrada respondiendo a "HOLA" con <srai> HOLA </ srai>, a cuanto
coincide con "*" con <sr/>. La respuesta es el resultado de las dos respuestas parciales anexas
juntas.

<category>
<pattern>HOLA *</pattern>
<template><srai>HOLA</srai> <sr/></template>
</category>
<category>
<pattern>HOLA</pattern>
<template>
<random>
<li>QUE ONDA</li>
<li>HEY COMO ESTAS</li>
<li>QUE TAL</li>
<li>QUE PASO</li>
<li>HEY</li>
</random>
</template>
</category>

30

Con el fin de especificar el estimulo o entrada del usuario, se hace uso de la etiqueta <pattern>.
El patrn es una expresin en un lenguaje formal que se compone de:

Palabras de lenguaje natural en MAYSCULAS.

El smbolo * el cual relaciona cualquier relacin de una o ms palabras.

El smbolo _ el cual es lo mismo que un * excepto que si viene despus de la Z en


orden lexicogrfico.

La etiqueta <name/>, es la que se sustituye a la hora de cargar el bot con el nombre del bot.
(Ringate, Wallace, Taylon, Baer, & Daniels, 2001).
Las expresiones de AIML en el lado del patrn(PSAE), que pueden aparecer en la etiqueta
<pattern>, <that>, o <topic>, y las expresiones de AIML en el lado de la plantilla(TSAE) que
pueden aparecer dentro de la etiqueta <template>. Note hay diferencias entre el patrn HOLA y
HOLA *. Como se puede observar en la seccin 4.1.2.1 se muestra la sintaxis de un patrn.
Etiquetas <topic></topic>
La etiqueta topic permite elegir las propias respuestas que tienen que ver con el tema actualmente
discutido. Es decir, cuando el programador decidi que un tema sea un topic, se pueden crear
categoras las cuales podran contener ciertas respuestas especficas sobre el topic.
Esto mantiene una conversacin de actualidad y an se tiene la habilidad para moverse de un tema a
otro. Esta etiqueta tambin permite tener patrones duplicados en diferentes contextos (temas)
permitiendo tener diferentes respuestas para el mismo patrn de entrada dependiendo del tema.
Por ejemplo, primordial el patrn * de los distintos temas. Hay la etiqueta <get_topic/> para
referirse al tema en tus declaraciones de salida (template).
Las etiquetas topic se colocan alrededor de una o ms categoras que serian asociadas con el topic
definido. El nombre del tema seria dado por una propiedad name en el inicio de la etiqueta.
Una vez que el tema es asignado, cuando el usuario teclea una frase para encontrar una respuesta,
las categoras definidas en las etiquetas <topic> se relacionan con el tema actual, si no hay una
relacin con la categora definida en el tema actual, entonces cualquiera de las categoras que no
estn definidas en las etiquetas topic son buscadas. Como se menciono anteriormente, podemos
crear categoras con frases o patrones idnticos <pattern> en diferentes temas, cada uno con
distintas repuestas que necesite el tema actual. Por ejemplo, si el bot fuera colocado en un sitio Web
y una persona hablara acerca de perros una entrada muy til podra ser desplegada.

31

<topic name="PERROS">
<category>
<pattern> * </pattern>
<template>
<random>
<li> Los perros son una de las mascotas mas populares para tener</li>
<li> Conoces un Chihuahua, no te gusta?</li>
<li> Que mas sabes sobre perros? </li>
<li> Tienes alguna otra pregunta acerca de los perros? </li>
</random>
</template>
</category>
.
.
.
</topic>

Normalmente habr muchas entradas en un tema, pero en este ejemplo, simplificamos las entradas
por default *. En este caso, si la persona dice algo que el bot no tiene una respuesta especifica
programada, podra aun responder inteligentemente en el tema actual. (Nota: Todo esto es
suponiendo que no son categoras que podra definir el tema actual PERROS). Aunque tambin
los temas pueden solamente tener un nombre, pueden contener los caracteres comodines * _
como un patrn. Asimismo, si bien la continuidad de los criterios del patrn, solamente un carcter
es permitido por nombre. Esto permitira temas como CUIDANDO PERROS o ASEANDO
PERROS puede ser tambin en el tema _PERROS. Al igual que los patrones, los temas mas
especficos ganaran preferencia sobre el tema comodn.
Esto significa que si el tema es actualmente ASEANDO PERROS y aun no hay una respuesta
programada para la entrada en la categora, entonces _PERROS sera verificada.
Etiquetas <that></that>
La etiqueta de AIML <that> se refiere a la respuesta anterior del bot. Hay dos formas de la etiqueta
<that>: una forma pareja <that></that> aparecen en una categora, y una forma atmica <that/>
siempre apareciendo en una plantilla de respuesta. A menudo podemos usar <that/> para encontrar
una oportunidad para crear una categora con <that></that>. Una de las respuestas para la entrada
QUE TAL es <that/> Genial, como te va.

32

A continuacin se presenta un ejemplo de cmo crear un that:


<category>
<pattern>QUE TAL</pattern>
<template>
<random>
<li>Genial, Como estas tu?</li>
</random>
</template>
</category>
<category>
<pattern>*</pattern>
<that>como estas tu</that>
<template>Ya sabes </template>
</category>

Este estilo de anlisis conversacional no presupone que sabemos cuando el usuario dira Que tal;
ms bien se observa que regresa a identificar casos donde apareci uno del siguiente Como estas
tu de las declaraciones del bot. Teniendo identificado el punto de la conversacin, el diseador del
bot crea una nueva categora.
Etiquetas <template></template>
Una Template es la respuesta o parte de la salida de una categora AIML. El caso ms simple se
compone de un sencillo texto sin marcar. AIML provee funciones de marcado para confeccionar las
respuestas para cada entrada individual y de usuario. La funcin de marcado <getname/> por
ejemplo inserta el nombre del cliente en la respuesta. El template puede llamar al patrn relacionado
recursivamente usando las etiquetas <sr> y <srai>. Muchos templates son reducciones simples
simblicas que una frase de mapa para formar a otro, por ejemplo Sabes que es X? transformamos
a Que es X con la categora:
<category>
<pattern>SABES QUE ES *</pattern>
<template><srai>QUE ES<star/> </srai></template>
</category>

La etiqueta template se supone que tambin puede contener otras etiquetas incrustadas de HTML y
XML.

33

En el siguiente fragmento de cdigo, se aprecia cmo se asigna un topic, en un template elegido por
el programador.
<category>
<pattern>MAESTRIA</pattern>
<template>
<think><set name="topic">Maestria</set></think>
<random>
<li>Recuerda que puedes formularme tus dudas acerca de la Maestra en
Ciencias
de la Computacin.</li>
<li>Mi funcin es ayudarte con tus dudas acerca de la Maestra en Ciencias
de la Computacin.</li>
<li>Si tienes alguna duda sobre la Maestra en Ciencias de la Computacin.,
aqu
estoy para ayudarte</li>
<li>Si estas interesado en la Maestra en Ciencias de la Computacin, puedes
preguntarme lo que quieras.</li>
<li>Estas interesado en la Maestra en Ciencias de la Computacin?</li>
<li>Como ya te he dicho, mi funcin es informarte sobre la Maestra en
Ciencias de la Computacin.</li>
</random>
</template>
</category>

Este cdigo permite ilustrar la forma en que se asigna un topic, dentro de un template. Cabe
mencionar que las categoras asociadas al topic pueden ser diferentes o iguales a las que se tiene en
la base de conocimientos aiml. Como se puede apreciar las categoras del topic asignado se
encierran entre la etiqueta topic y tambin tiene su etiqueta de cierre como cualquier otra.
<topic name="MAESTRIA">
<category>
<pattern>QUE ES?</pattern>
<template>Es
un
programa
Investigacin.</template>
</category>
<category>
<pattern>QUE ES</pattern>
<template>Es un programa
.</template>
</category>
</topic>

de

de

estudios

estudios

que

esta

que

est

dedicado

dedicado

la

la

Investigacin

Este lenguaje permite tener en una categora un solo patrn, aunque dato curioso puedes tener varias
respuestas, como salida.
Etiquetas <srai></srai> o <sr></sr>
Esta etiqueta tiene muchos acrnimos (Inteligencia Artificial de Reduccin Simblica,
Inteligencia Artificial de Recursividad Simple, Inteligencia Artificial de Estimulo-Respuesta).
La etiqueta <srai> siempre aparece en la respuesta, pero siempre trae como respuesta lo que se
encuentre en el patrn que se escribe entre esta. El bot busca en su base de conocimientos y
34

encuentra la mejor respuesta. La nica parte difcil es que la respuesta puede estar contenida dentro
de ms etiquetas <srai>. La mejor forma de entender la accin recursiva de la etiqueta <srai> de
AIML es con un ejemplo
Por ejemplo:
<category>
<pattern>HOLA</pattern>
<template><srai>SALUDOS</srai></template>
</category>

<category>
<pattern>SALUDOS</pattern>
<template>Que tal</template>
</category>

En este caso si el usuario dice HOLA, el asistente dar la respuesta que est contenida en el
template del patrn SALUDOS.

4.1.3 Algoritmo de Coincidencia de Patrones


AIML carga el contenido de los archivos AIML en una estructura de datos llamada Graphmaster.
Esta estructura se compone de una coleccin de nodos llamados Nodemappers. Esos Nodemappers
controlan las ramas de cada nodo. Las ramas son palabras simples o smbolos (comodines). El
nmero de hojas grafo es igual al nmero de categoras, y cada nodo hoja contiene una etiqueta
<template>. Los pasos del algoritmo de coincidencia de patrones son:

Verificar si el Nodemapper contiene el smbolo _, si es as, buscar en el subgrafo


correspondiente. Intentar todos los sufijos siguientes X para ver si uno coincide. Si no
se encuentra coincidencia, intentar;

Verificar si el Nodemapper contiene el smbolo X, si es as, buscar en el subgrafo


correspondiente, utilizando la cola de la entrada (el sufijo de la entrada con X
removido). Si no se encuentra coincidencia, intentar:

Verificar si el Nodemapper contiene el smbolo *, si es as, buscar en el subgrafo


correspondiente. Intentar todos los sufijos siguientes X para ver si uno coincide. Si no
se encuentra coincidencia, regresar al padre de ste nodo, y colocar X en el inicio de la
entrada.

Para terminar, si la entrada es nula (es decir, no hay ms palabras) y el Nodemapper


contiene la palabra <template>, indica que se ha encontrado una coincidencia. Detener la
bsqueda y regresar el nodo coincidente.

Si el Nodemapper contiene el smbolo * y es un nodo hoja, entonces el algoritmo


garantiza encontrar una coincidencia.
35

En cada nodo, el smbolo _ tiene prioridad primero, luego una palabra y posteriormente, el
smbolo *. Los patrones son ordenados de manera en que el smbolo _ se encuentre antes de
cualquier palabra y el smbolo * posterior a cualquier palabra. La coincidencia se realiza palabra
por palabra, no categora por categora. El algoritmo combina el patrn de entrada y las etiquetas
<that> y <topic> en un slo patrn: PATTERN <that> THAT <topic> TOPIC y trata los tokens
<that> y <topic> como palabras ordinarias. El algoritmo es una versin limitada de una bsqueda en
profundidad y est basado en los algoritmos backtracking.

4.2 Extensin Emocional AIML


En esta seccin se presenta la estructura de la extensin de AIML desarrollada por (Florencia, 2010)
que integra etiquetas que permiten caracterizar la expresin de rasgos de personalidad, emocin y su
intensidad en los actos del habla de una base de conocimientos AIML. En la figura 14 se presenta la
nueva estructura general de archivos los AIML que integran las nuevas etiquetas que permiten
expresar emociones en el dilogo.
Esta estructura considera el contexto y 3 atributos del modelo emocional de Morales [Morales,
2007] (personalidad, emocin y su intensidad) para filtrar los posibles dilogos emocionales
contenidos dentro de la etiqueta <template>.
El atributo contexto se agreg a la etiqueta <template>. En ste atributo se especifica el contexto del
tema conversacional asociado al patrn de entrada del usuario. Dentro de la etiqueta <template>, se
agreg la etiqueta <personalidad>, cuya finalidad es filtrar los dilogos emocionales de acuerdo a la
personalidad especificada, es decir, si la personalidad indicada es Personalidad 2, los dilogos
emocionales de Personalidad 1 no son considerados en el proceso de seleccin de dilogos de
AIML.
Para cada personalidad, se agregaron las etiquetas emocionales de <enojo>, <alegra>, <tristeza>,
<miedo>, <placer>, <angustia>, <sorpresa>, <resignacin> y <neutro>. Dependiendo de la emocin
actual determinada por el mdulo emocional, stas etiquetas emocionales son utilizadas para filtrar
los dilogos de respuesta al usuario, es decir, si la emocin actual fuera enojo, slo los dilogos
correspondientes a sta emocin seran considerados en el proceso de seleccin de dilogos de
AIML.
Asociada a cada etiqueta de la emocin se agrega la etiqueta <intensidad>, el uso de este atributo
permite asociar una Intensidad de la emocin al texto de respuesta proporcionado por la etiqueta
Template. La intensidad se define como un nmero que est en el rango de 0-9, el cual representara
36

qu tan fuerte es la emocin. Este atributo permite incorporar varios rangos de intensidad dentro de
cada una de las emociones.
Los rangos de intensidad emocional de las etiquetas emocionales, se basan en la escala de valores
que la intensidad puede tomar en el mdulo emocional. La escala de valores oscila de 0 < x < 9,
donde x es el valor de la intensidad actual.

37

Category
Patrn

Pattern

/Pattern

Template
Enojo

Alegria

Miedo

Tristeza

Sorpresa

Placer

Resignacin

Angustia

Neutro

Intensidad 0-3

Texto Respuesta

/Intensidad

Intensidad 3-6

Texto Respuesta

/Intensidad

Intensidad 6-10

Texto Respuesta

/Intensidad

Intensidad 0-3

Texto Respuesta

/Intensidad

Intensidad 3-6

Texto Respuesta

/Intensidad

Intensidad 6-10

Texto Respuesta

/Intensidad

Intensidad 0-3

Texto Respuesta

/Intensidad

Intensidad 3-6

Texto Respuesta

/Intensidad

Intensidad 6-10

Texto Respuesta

/Intensidad

Intensidad 0-3

Texto Respuesta

/Intensidad

Intensidad 3-6

Texto Respuesta

/Intensidad

Intensidad 6-10

Texto Respuesta

/Intensidad

Intensidad 0-3

Texto Respuesta

/Intensidad

Intensidad 3-6

Texto Respuesta

/Intensidad

Intensidad 6-10

Texto Respuesta

/Intensidad

Intensidad 0-3

Texto Respuesta

/Intensidad

Intensidad 3-6

Texto Respuesta

/Intensidad

Intensidad 6-10

Texto Respuesta

/Intensidad

Intensidad 0-3

Texto Respuesta

/Intensidad

Intensidad 3-6

Texto Respuesta

/Intensidad

Intensidad 6-10

Texto Respuesta

/Intensidad

/Enojo

/Alegria

/Miedo

/Tristeza

/Sorpresa

/Placer

/Resignacin

Intensidad 0-3

Texto Respuesta

/Intensidad

Intensidad 3-6

Texto Respuesta

/Intensidad

Intensidad 6-10

Texto Respuesta

/Intensidad

/Angustia

Intensidad 0-10 Texto Respuesta

/Intensidad

/ Neutro

/Template
/Category

Figura 14. Estructura propuesta para los archivos AIML de la base de conocimientos.

38

A continuacin se presenta un fragmento de cdigo que ilustra el uso de la estructura propuesta.


<category>
<pattern>PATRON DE USUARIO</pattern>
<template contexto = Contexto>
<personalidad valor = Personalidad 1>
<enojo>
<intensidad intensidadMin="0" intensidadMax="4">
Dilogo 1 de respuesta al usuario de Personalidad 1
</intensidad>
<intensidad intensidadMin="4" intensidadMax="6">
Dilogo 2 de respuesta al usuario de Personalidad 1
</intensidad>
<intensidad intensidadMin="6" intensidadMax="10">
Dilogo 3 de respuesta al usuario de Personalidad 1
</intensidad>
</enojo>
.
.
.
</personalidad>
<personalidad valor = Personalidad 2>
<enojo>
<intensidad intensidadMin="0" intensidadMax="4">
Dilogo 1 de respuesta al usuario de Personalidad 2
</intensidad>
<intensidad intensidadMin="4" intensidadMax="6">
Dilogo 2 de respuesta al usuario de Personalidad 2
</intensidad>
<intensidad intensidadMin="6" intensidadMax="10">
Dilogo 3 de respuesta al usuario de Personalidad 2
</intensidad>
</enojo>
.
.
.
</personalidad>
</template>
</category>

En base al cdigo de ejemplo anterior, la funcionalidad de las etiquetas <category> y <pattern> se


mantiene igual que en el AIML original.
La etiqueta <intensidad> tiene tres atributos asociados, Imagen, intensidadMin e intensidadMax. En
el atributo Imagen se puede especificar el nombre de un archivo de imagen, el cual es enviado a la
interfaz principal del Asistente Virtual al recuperar la respuesta asociada al patrn de entrada del
usuario. Esto da la posibilidad de presentar imgenes estticas del Asistente Virtual en el caso de no
contar con animaciones. Es recomendable que la imagen asociada al atributo Imagen, sea de
acuerdo a la emocin y a la intensidad a las que se quiere representar. En los atributos
intensidadMin e intensidadMax, se especifica el valor inicial y final de un rango de intensidad.

39

Entonces, el filtrado de los dilogos depende del valor de la etiqueta de la personalidad, de la


emocin actual y de la intensidad de la emocin actual.

4.3 Python y PyAIML


Python es el lenguaje de programacin orientado a objetos que se utilizar para implementar la
interfaz grfica del asistente virtual, el cual cuenta con una librera externa que sirve para interpretar
archivos aiml, que son los que se crean para la base de conocimientos. A continuacin se describe el
lenguaje.
Python es un lenguaje de Scripting independiente de plataforma y orientado a objetos, preparado
para realizar cualquier tipo de programa, desde aplicaciones Windows a servidores de red o incluso,
pginas Web. Es un lenguaje interpretado, lo que significa que no se necesita compilar el cdigo
fuente para poder ejecutarlo, lo que ofrece ventajas como la rapidez de desarrollo e inconvenientes
como una menor velocidad (lvarez, 2003).
En las siguientes secciones se presentan las caractersticas del lenguaje y de la librera PyAIML.

4.3.1 Caractersticas de PYAIML.


Esta librera es un complemento de clases escritas 100% en Python, las cuales permiten la
interpretacin de los archivos escritos en el lenguaje aiml. Es libre.

4.3.2 Caractersticas de Python


En los ltimos aos el lenguaje se ha hecho muy popular, gracias a varias razones como: 1) la
cantidad de libreras que contiene, tipos de datos y funciones del propio lenguaje, que ayudan a
realizar muchas tareas habituales sin necesidad de tener que programarlas desde cero, 2) la sencillez
y velocidad con la que se pueden crear programas, 3) la cantidad de plataformas en las que podemos
desarrollar, como Unix, Windows, OS/2, Mac, y otros, 4) adems, Python es gratuito, incluso para
propsitos empresariales.

A continuacin se describen sus caractersticas ms sobresalientes (lvarez, 2003):


40

Propsito general

Con l se pueden crear todo tipo de programas. No es un lenguaje


creado especficamente para la Web, aunque entre sus posibilidades s
se encuentra el desarrollo de pginas.

Multiplataforma

Hay versiones disponibles de

Python en

muchos sistemas

informticos distintos. Originalmente se desarroll para Unix, Aunque


cualquier sistema es compatible con el lenguaje siempre y cuando
exista un intrprete programado para l.
Interpretado

Quiere decir que no se debe compilar el cdigo antes de su ejecucin.


En realidad s que se realiza una compilacin, pero esta se realiza de
manera transparente para el programador. En ciertos casos, cuando se
ejecuta por primera vez un cdigo, se producen unos bytecodes que se
guardan en el sistema y que sirven para acelerar la compilacin
implcita que realiza el intrprete cada vez que se ejecuta el mismo
cdigo.

Interactivo

Python dispone de un intrprete por lnea de comandos en el que se


pueden introducir sentencias. Cada sentencia se ejecuta y produce un
resultado visible, que puede ayudarnos a entender mejor el lenguaje y
probar los resultados de la ejecucin de porciones de cdigo
rpidamente.

Orientado a
Objetos

La programacin orientada a objetos est soportada en Python y


ofrece en muchos casos una manera sencilla de crear programas con
componentes reutilizables.

Funciones y
libreras

Dispone de muchas funciones incorporadas en el propio lenguaje,


para el tratamiento de Strings, nmeros, archivos, etc. Adems,
existen muchas libreras que podemos importar en los programas para
tratar temas especficos como la programacin de ventanas o sistemas
en red o cosas tan interesantes como crear archivos comprimidos en
.zip.
Tabla 2. Caractersticas de Python

Python se puede programar en consola o de forma grfica. Para la modalidad grfica existen varios
IDEs como los siguientes: Boa Constructor, VisualWx, PyDev, OpenKomodo, Eric, PIDA, SPE,
WingIDE, PyScripter.
41

En este caso se utilizar el IDE VisualWx para Python. VisualWx pretende ser la ltima herramienta
RAD diseada para C++, Python, Perl, Ruby, lua y wxWidgets. Algunas de sus caractersticas se
mencionan a continuacin:

Diseador de varios frames.

Visualwx genera cdigo para C + +, Python, Perl, Ruby, lua

Su compilador es compatible (mingw32)

Editor de C++, Python, Perl, Ruby, Lua (editor Scintilla)

Soporta eventos de teclado, Mouse(VisualWx, 2010).

4.3.3 MySQLdb
Python permite la conexin y gestin de bases de datos (DBMS). Un DBMS es uno de los cuales es
una coleccin de numerosas rutinas de software interrelacionadas, cada una de las cuales es
responsable de alguna tarea especfica. Para su uso se necesita descargar la librera mysql-python.
MySQLdb es el Python DB API 2.0._mysql es una API de bajo nivel similar a la API MySQL C.
MySQLdb es una interfaz popular para un servidor de base de datos para Python. Los objetivos de
diseo son: Cumple con la versin 2.0 de la API de BD para Python, Threads o hilos de seguridad,
Hilos de manejo o hilos que no se bloquean mutuamente (Dustman, 2006) .

42

CAPTULO 5.
DISEO DE UN ASISTENTE
VIRTUAL CON DILOGO
EMOCIONAL
En el presente captulo se describir la arquitectura general para el diseo de un asistente virtual con
dilogo emocional, sus requerimientos, y la metodologa para organizar la estructura de los
dilogos. La estructura de la base conocimiento que el agente utiliza para construir el dilogo har
uso del lenguaje aiml, ya que para crear una base de conocimientos como ya se haba mencionado
con anterioridad, se puede utilizar el lenguaje AIML, y para crear la interfaz grfica se utiliz, el
lenguaje Python.

5.1 Arquitectura General


En esta seccin se presenta la arquitectura general del asistente virtual, la cual se puede apreciar en
la figura 15. El diseo de un asistente virtual requiere de contar con los mdulos de gestin del
dilogo, Modulo de generacin de locucin del asistente, los cuales cuentan con entradas y salidas.
El modulo de gestin del dilogo recibe informacin como entradas de la Base de Datos AIML,
Locucin del usuario (pregunta), Base de Datos MySQL. El modulo de generacin de locucin del
asistente recibe como entradas informacin del intrprete PyAIML, tambin recibe informacin de
la base de datos MySQL.
Estas son tres las etapas del proceso del dilogo:

Entrada o Pregunta. Es el estimulo o pregunta que se introduce por medio del teclado,
para que el Asistente Virtual, inicie con el proceso de conversacin.

43

Bsqueda: Es el proceso donde se busca un patrn relacionado con la entrada y as


producir una respuesta o salida.

Salida o respuesta. Es el proceso en el que se despliega en pantalla una respuesta al


usuario, que puede ser respuesta proveniente de la base de conocimientos del asistente
virtual, o ser la respuesta de una consulta a la base de datos.

En la figura 15, queda ilustrado que el mdulo de Generacin de locucin del asistente, recibe como
entrada una locucin por parte del usuario, es decir, una pregunta, o de la base de conocimientos en
AIML, o de la base de datos en MySQL, todo esto para gener una salida que ser mostrada como
una respuesta al usuario.
Es importante, destacar que lo relevante del Modulo de Generacin de locucin del Asistente, es
que este sirve para generar las respuestas del asistente, es decir, la gestin del dilogo.

Locucin del usuario

Gestin del Dilogo


Base de Datos AIML

Base de Datos MySQL

Modulo de Generacin
de locucin del Asistente

Locucin del asistente virtual


Interfaz
grfica

Figura 15. Arquitectura del Asistente Virtual

44

A continuacin se presenta nuestra propuesta de estructuracin del Modulo de Generacin de


locuciones del Asistente, el cual genera respuestas a partir de decisiones, las cuales sern explicadas
a continuacin.

Modulo de Generacin de locucin del Asistente


Locucin del
asistente virtual

Base de datos AIML


Interprete
PyAIML

Respuesta

Respuesta
==
Nmero

Respuesta

no

Locucin del usuario


si

Base de datos MySQL

Interfaz
Grfica

Bsqueda de link
(idpage) en BD
Link

Consulta del link


en Internet

usted recibir ms
Informacin en la pgina web

Figura 16. Modulo de Generacin de locucin del Asistente

Los componentes involucrados son: la base de conocimientos en AIML, la base de Datos en


MySQL, la interfaz grfica en Python.
La relacin que existe entre estos componentes es la siguiente, debido a que la interfaz grfica
creada en Python podra hacer uso de la base de conocimientos en AIML, as como tambin podra
utilizar la Base de Datos que se cre en MySQL, esto con el fin de dar como resultado una
respuesta, a una pregunta realizada con anterioridad, es decir, dar una respuesta por parte del
asistente virtual al usuario. Este sera un caso directo en la interaccin del asistente virtual con el
usuario.
Un tipo de interaccin indirecta es el siguiente caso, en el que un usuario interacta con el modulo
de generacin de locucin del asistente virtual sin saberlo, y el solo se percata que el asistente le
45

est respondiendo, as que, a continuacin se describir el proceso interno de la interaccin entre la


interfaz y las bases de conocimientos, por lo tanto, es vlido decir que el usuario da como entrada
una palabra o una frase, es decir una locucin, y lo que hace el interprete de AIML para Python,
llamado PyAIML, realice una bsqueda en la base de conocimientos, y as genere una respuesta y se
la presente al usuario, pero en el caso que el resultado ser igual a un numero (idpage), este har una
consulta internamente en una base de datos, el cual buscar un link relacionado a la entrada o
pregunta, y al encontrar el link relacionado con la respuesta, se abrir una pgina web, que de igual
forma se relaciona con la respuesta. As mismo, en la interfaz grfica se manda a imprimir un
mensaje como el siguiente: usted recibir ms informacin en la pgina web.
En caso contrario, es decir que la respuesta no sea igual a un numero, simplemente el asistente
virtual da como respuesta una que se encuentre alojada en la base de conocimientos, es decir, si
encuentra coincidencia alguna con la entrada del usuario. Y si no encuentra una respuesta adecuada
a lo que pregunto el usuario simplemente dar unas respuestas como las siguientes:
No entiendo
No tengo ni idea de lo que ests diciendo
No entend eso que has dicho
Me encuentro algo perdido en este contexto
Lo siento, pero no comprendo
Me parece que estoy perdido
Mi cerebro no tiene respuesta para eso
Esa frase se me escapa
No s que responder a eso
No entiendo lo que has dicho
Perdname pero necesito un conocimiento ms avanzado para responderte a eso

5.2 Metodologa a seguir para organizar la estructura de los


dilogos
En la escritura de bases de conocimiento para la arquitectura de un asistente virtual se requiere
analizar y estructurar el posible dilogo con el que se piensa trabajar. Y as llegar a crear estructuras
de dilogos concretas. En esta seccin se presenta la descripcin del proceso involucrado en la
organizacin de la estructura de los dilogos, desde el anlisis hasta la creacin.
Para crear la estructura de un dilogo sobre un tema en especfico, se deben crear unidades de
conocimiento con esta informacin, la cual se tendrn que almacenar como una base de
conocimientos.

46

La informacin podra provenir de anlisis de video filmaciones de las situaciones reales que se
desean simular. El trabajar con filmaciones permite facilitar el anlisis de la conversacin y del
discurso que permitirn generar una base de los Actos de Habla de la interaccin.
Adems de informacin sobre un tema en especifico, tambin se podran pensar temas relacionados
con los usuarios, como lo pueden ser la forma en que se expresa al saludar, es decir, saludos,
referentes a su persona como nombre, apariencia fsica, edad, estado de nimo, acerca de la familia,
gnero, profesin, nacionalidad, entre otras cosas relacionadas con el usuario. Estos ayudan a crear e
identificar contextos, y los roles de los interlocutores.
Nosotros tenemos la idea que la gestin del dilogo basada en AIML, y la estructura puede tratarse
como un diseo, con esto a partir de la teora de inteligencia artificial llamada CBR (Case-Based
Resasoning), se contextualiza, y en este caso el razonamiento basado en casos vendran siendo las
categoras de AIML. Esta tcnica encuentra el patrn que mejor encaja con cada entrada, y as la
categora enlaza la plantilla de respuesta directamente al patrn del estmulo, y regresa una salida
que satisfaga la entrada. A continuacin se describen algunas condiciones de esta tcnica.

Se estructura una tarea de forma clara; Es decir, que se tenga bien definido el tema o
funcionalidad.

Se introducen frases pre-establecidas por parte del programador o botmaster; Las frases
o preguntas que puede hacer el usuario solamente estarn obligadas a tratar sobre la
Maestra en Ciencias en Ciencias de la Computacin.

En cuanto a las preguntas, se tienen en mente algunas respuestas para las que ya han sido
preestablecidas, es decir se espera una determinada respuesta por parte del usuario; En
esta parte el sistema da una respuesta a una pregunta.

47

A continuacin se presentan las etapas de abstraccin con un diagrama, el cual posteriormente ser
descrito:

Inicio

Establecer
objetivo

Definir atributos de
conversacin

Recabar informacin relacionada


con el tema de conversacin.

Anlisis de la informacin
recabada

Desarrollar la base de
conocimientos

Fin

Figura 17. Diagrama de flujo de la metodologa


en forma general.

En el diagrama anterior se puede observar a grandes rasgos, los pasos que se deben seguir para crear
una base de conocimientos, en la figura 17, se presenta el flujo de una forma muy general, y ya en la
figura 18 se muestra el proceso ms detallado o especifico.
Al utilizar la figura 17, como gua se tiene ha aplicado la metodologa de la organizacin de la
estructura de dilogos. A continuacin se empezarn a describir cada una de las etapas del diagrama
especfico.
48

Establecer objetivo
En esta parte se pretende que se definan o establezcan claramente el objetivo y la funcin del
asistente virtual. Esto influenciar tanto la construccin de la Base de Conocimiento como el
diseo de la Interfaz Grfica que lo acompaar.

Definir atributos de la conversacin


En este proceso se quiere que se tengan definidos los atributos como lo pueden ser: las
emociones, rangos de intensidad y el tema de conversacin, y as asignrselos al asistente virtual.

Recabar informacin relacionada con el tema de conversacin.


Este es un proceso de recoleccin de la informacin necesaria para posteriormente crear los
dilogos de respuestas, etc. que se relacione con el tema de conversacin. Para que al momento
de querer utilizar la informacin sea coherente. Por ejemplo anlisis de la conversacin y del
discurso de video filmaciones.

Anlisis de la Informacin recabada.


Al usar la informacin recabada se pueden inferir contextos, crear categoras de acuerdo a la
informacin recopilada, y as determinar dilogos de respuestas, con los cuales se podrn escribir
frases o palabras de manera adecuada que expresen emociones, las cuales sern respuestas a
preguntas por parte del usuario.

Desarrollo de la base de conocimientos.


En este proceso se ve involucrada la programacin de categoras en el lenguaje aiml, los cuales se
utilizan para crear una base de conocimientos. La programacin de categoras, permite darle la
funcionalidad al cerebro del asistente virtual, presentando algunas preguntas para conocer al
usuario, y otras que estn diseadas para hablar sobre el tema de inters.
La estructura de la base de conocimientos del asistente virtual, debe estar construida de tal
manera que permita ingresar a modificarla, actualizarla y recuperar el conocimiento de la forma
ms sencilla posible.

49

En la siguiente imagen se ilustra el detalle de todos estos procesos:

Inicio
Determinar los dilogos
de respuestas
Establecer
objetivo

Establecer funcin

Definir las emociones y


rangos de intensidad

Escribir las frases o


palabras adecuadamente
expresando emociones

Desarrollar la base de
conocimientos

Definir el tema de
conversacin

Fin

Recabar informacin relacionada


con el tema de conversacin.

Determinar
Contextos.

Hacer categoras con la


informacin recopilada

Figura 18. Diagrama de flujo


para desarrollar una base de
conocimientos en forma
especfica.

50

5.3 Anlisis de la Informacin para organizar la estructura de los


dilogos
Las siguientes son las etapas a considerar para analizar la informacin que permita el diseo y
construccin de la Base de Conocimientos.
ETAPAS

DESCRIPCIN

Identificar cul es la finalidad de la interaccin y las posibles preguntas que se deben


responder.

Determinar quines sern los posibles usuarios del asistente virtual.

Identificar las relaciones entre el tema y el usuario, para generar los contextos.

Identificar el rol y tipo de actividad que el asistente virtual va a desarrollar.

5
6

Determinar los Dominios de Conocimientos, Tpicos de la Conversacin, Categoras,


Patrones de Preguntas y las Respuestas a dichos patrones tomando en cuenta los diversos
estados emocionales que se considerarn.
Integracin de la Base de Conocimientos del agente virtual
Tabla 3. Etapas de la construccin de la base de conocimientos

A continuacin se describen las actividades relacionadas con las etapas de anlisis que se deben
tomar en cuenta a la hora de hacer una base de conocimientos, y como se puede deducir un contexto.
ETAPA 1
Para crear una base de conocimientos, es necesario hacernos las siguientes preguntas y tener las
respuestas en mente. Considerando que se tiene un tema especifico, para el cual se presuponen las
preguntas y respuestas de las mismas. En esta etapa se piensa en Cul es la finalidad de la
interaccin y las posibles preguntas que se deben responder?, pues dado el caso, puede ser
resolver dudas, dar informacin adicional, entre otras cosas. As que procedemos a determinar los
diferentes dominios de conocimiento que el asistente debe tener, es decir, Cul es el tema
especifico que queremos tratar?

ETAPA 2
En la siguiente etapa, se determinan quines sern los posibles usuarios del asistente virtual?,
es decir quines son nuestro pblico objetivo: por ejemplo pueden ser los mismos Egresados de
51

Ingeniera en Sistemas Computacionales del ITCM, as como alumnos aspirantes a la Maestra en


Ciencias en Ciencias de la Computacin de otras escuelas, Maestros, y en general alumnos de la
Maestra en Ciencias en Ciencias de la Computacin.
ETAPA 3
En base a las respuestas de las preguntas anteriores se procede identificar las relaciones entre el
tema y el usuario, para generar los contextos. Por ejemplo, Maestros, Tesistas, Publicaciones, Plan
de estudios; pueden ser palabras clave que sirven para poder disear en una base de datos del
asistente virtual.
ETAPA 4
En sta etapa se tiene que pensar en el rol y tipo de actividad va a desarrollar el asistente, por
ejemplo si es solo conversacin, o si es solicitud de informacin. An as, siempre tenemos que
pensar en que se tiene que especificar al usuario cual es el objetivo principal del asistente, ya que se
puede dar el caso, que el usuario proporcione una entrada, para la cual el asistente virtual no
encuentre en la base de conocimientos, y as el usuario este enterado de esto.
ETAPA 5
Determinados los dominios de conocimientos que abarcara el asistente virtual, se identifican los
tpicos de la conversacin y sus categoras. Como componentes de las categoras se determinan o
recuperan de los anlisis de la conversacin los actos del habla que se convertirn en patrones de
preguntas y las respuestas a dichos patrones tomando en cuenta los diversos estados emocionales
que se considerarn.
Los patrones son las palabras clave que el asistente virtual consultar en su base de conocimientos
para brindar la informacin pertinente, estos patrones estn contenidos en las categoras que
contiene el archivo AIML.
Por ejemplo, se puede crear un archivo AIML titulado: Saludos.aiml, el cual puede contener los
actos del habla asociados a un contexto especfico como el inicio de una conversacin.
Proponemos que en relacin con el contexto se cree el nombre del archivo AIML. En ese archivo se
escribirn las categoras que contendrn patrones los cuales se relacionan con los saludos,
Ejemplos de palabras o frases relacionadas con saludos que pueden ser considerados como patrones
son: hola, que tal, como estas, buenas tardes, buenos das, que onda, etc.

A continuacin se muestra un ejemplo de una categora con un patrn para este contexto.
52

<category>
<pattern>BUEN DIA</pattern>
<template><srai>HOLA</srai></template>
</category>

ETAPA 6
Al finalizar la creacin de los archivos AIML que conforman los diferentes contextos que tendr la
base de conocimientos, se recomienda la creacin de un directorio en el que se puedan agrupar y as
facilitar el proceso de la carga e integracin de la base de conocimientos del agente virtual.
La integracin de la base de conocimientos se realiza a travs de un archivo std-startup.xml, el cual
carga en memoria todos los archivos .aiml, que el asistente podr utilizar para la bsqueda de
respuestas. Cada archivo .aiml, que se procesar se especifica con la etiqueta <learn>, indicando la
ruta absoluta del archivo.
Un ejemplo de la estructura de ste archivo es el siguiente:
<?xml version="1.0" encoding="utf-8"?>
<aiml version="1.0.1">
<category>
<pattern>LOAD AIML B</pattern>
<template>
<learn>standard/saludos.aiml</learn>
<learn>standard/mcc.aiml</learn>
<learn>standard/infoUsuario.aiml</learn>
</template>
</category>
</aiml>

5.4. Requerimientos del Sistema


A continuacin se describen los requerimientos tanto de hardware, como los de software del
sistema, Con el fin de que funcione correctamente la ejecucin de la interfaz grfica, adems se hace
mencin de algunas caractersticas como mnimas, pero si son indispensables:
Hardware

1 GB Memoria RAM o menos

Procesador Pentium(R) 4 CPU 2.40 GHz

Teclado

Monitor

53

Software

Interprete de AIML, para el lenguaje Python (PyAIML o Programa Y).

Python versin 2.5.

DBMS: MySQL.

Microsoft Windows XP Profesional Versin 2002, Service Pack 3

Tener la Base de Datos (pginas) instalada en el Servidor de BD, contar con el usuario
root y su contrasea root, ya que es la configuracin que tiene la interfaz.

La librera MSVCP71.dll, se busca, se copia y se pega en la carpeta dist, as ya no


marcar error, y debe funcionar perfectamente.

54

CAPTULO 6.
CASO APLICATIVO:
ASISTENTE VIRTUAL DE LA
MAESTRA EN CIENCIAS
EN CIENCIAS

COMPUTACIONALES
En esta tesis nos interesa la problemtica de desarrollar asistentes virtuales con la capacidad de
comunicar por medio de su dilogo, emociones. Los asistentes virtuales que se pueden encontrar en
diversas aplicaciones, no expresan emociones, se disean como un simple personaje virtual con
ciertos movimientos de cabeza, lo cual a lo largo contribuye a un rompimiento de la interaccin con
el usuario, o simplemente un efecto visual.
En este captulo se describe la aplicacin de nuestra arquitectura de diseo de un asistente virtual
con dilogo emocional, como caso aplicativo se desarrollar un asistente virtual que proporcione
informacin sobre la Maestra en Ciencias en Ciencias de la Computacin del Instituto Tecnolgico
de Ciudad Madero (ITCM).

6.1 Caso de Aplicacin


El caso de aplicacin de este asistente virtual en este caso ser utilizado para proporcionar
informacin acerca de la Maestra en Ciencias en Ciencias de la Computacin, y la funcin que
realizar el asistente virtual, es encontrar la respuesta adecuada en la base de conocimientos, y darle
55

al usuario una respuesta de acuerdo con su entrada, tambin es capaz de mostrar una pgina de
Internet en la que se encontrar informacin ms acertada a la pregunta que le haga al asistente el
usuario.
La aplicacin tambin podra ser desarrollada para un ambiente Web, y as montarlo en la pgina
principal de la Maestra en Ciencias en Ciencias de la Computacin.

6.2 Diseo del dilogo


En esta seccin se realizar el seguimiento de la metodologa para estructurar los dilogos y el
anlisis de los datos para el diseo de AIML, como resultado de esto se obtendr una interaccin
con el usuario como la que se ilustra en la figura 19.

Patrn a buscar
Pregunta
Base
De
Conocimientos Aiml
Respuesta
Respuesta Encontrada

Figura 19. Interaccin con el usuario.

El proceso inicia de la siguiente forma, el usuario realiza una pregunta, para la cual el asistente
virtual busca rpidamente un patrn relacionado en la base de conocimientos, al encontrar un patrn
relacionado al de entrada, es decir, a la pregunta, el asistente regresa una respuesta, en forma de
texto, y as sucesivamente.

6.2.1 Aplicacin de la Metodologa


Retomar cuales son las etapas de la metodologa y que se hizo / obtuvo para el ejemplo de la
aplicacin.
1.- Establecimiento del objetivo del asistente virtual
El objetivo de nuestro asistente virtual es brindar atencin y proporcionar informacin acerca de la
Maestra en Ciencias en Ciencias de la Computacin.

56

2.- Definicin de los atributos de la conversacin con un usuario


Las emociones que se pueden expresar al usuario son: miedo, tristeza, enojo, alegra, y un estado
neutro, las cuales tienen diferentes rangos de intensidad que estn predefinidos, por ejemplo se
pueden establecer en el rango de 0-10, los cuales se pueden predefinir por ejemplo manejar 3
rangos quedando: 0-3, 3-6, 6-10 estos son algunos de los rangos de intensidad.
En el tema de conversacin se define como: La Maestra en Ciencias en Ciencias de la
Computacin.

3.- La recopilacin de informacin relacionada con el tema de conversacin.


Para crear las respuestas se recopilo informacin acerca de la maestra, se obtuvo el plan de
estudios, donde habla de la lnea de investigacin a la que se enfoca la maestra, se mencionan las
ventajas, tambin menciona los nombres de los doctores, y los temas en particulares que trata la
lnea de investigacin, es decir los problemas a los que est enfocada a resolver la maestra.

4.- Anlisis de la Informacin recabada.


Se estudio el programa o plan de estudios de la Maestra en Ciencias en Ciencias de la
Computacin, y se determino que la informacin que se encontraba en ese texto servira, como
respuestas a muchas dudas que les surgen a los aspirantes a la carrera, para as poder solucionarlas,
y entonces darles la mejor informacin posible. Con esto despertar el inters por matricularse en
nuestra Maestra en Ciencias en Ciencias de la Computacin.
As, de esta forma podemos inferir contextos, para posteriormente crear categoras relacionadas con
esta informacin, y los contextos inferidos son hablar sobre la maestra, su definicin, su misin, su
visin, quienes son los profesores, que publicaciones tienen como universidad, la lnea de
investigacin.
5.- Desarrollo de la base de conocimientos.
En esta etapa se crean las categoras relacionadas con cada uno de los temas inferidos en la etapa
anterior, y por cada uno de los contextos, se crean sus categoras pertinentes, y de acuerdo a la teora
de AIML, se crean 4 categoras por cada uno de los patrones de entrada, cuando solo existe una
palabra clave, y cuando son ms de una palabra clave las que se estn introduciendo se crean 4
categoras para la primer palabra clave y 4 para la segunda palabra clave, esto con el fin de ubicar
la primer palabra clave en distintos lugares de la frase, de igual forma para la segunda palabra clave.
En la siguiente seccin se define la estructura de un dilogo.
57

6.2.2 Definicin de la Estructura del dilogo


En esta seccin se describirn los componentes que pertenecen a la etapa 4 de la metodologa que
servir para analizar la informacin para organizar la estructura de los dilogos. A continuacin se
van a presentar como se aplicaron los procesos las 6 etapas.
Como se vi en la seccin 5.3 las etapas que ayudan a identificar la finalidad de la interaccin,
algunas posibles preguntas que se deben responder, los usuarios que utilizarn el asistente virtual,
encontrar las relaciones entre el tema y el usuario, aadiendo el rol o actividad que se realizaba el
asistente virtual, entre otras.
ETAPA 1. Identificar cul es la finalidad de la interaccin y las posibles preguntas que se
deben responder.
En esta etapa se define el tema especfico del cual hablar preferentemente el asistente virtual con
un usuario, con el fin de que se genere el inters por incorporarse a la Maestra en Ciencias en
Ciencias de la Computacin por parte de los aspirantes.
Cul es el tema especifico que queremos tratar?
El tema en especfico ser sobre la Maestra en Ciencias en Ciencias de la Computacin.

ETAPA 2. Determinar quines sern los posibles usuarios del asistente virtual.
En la siguiente etapa, se determinamos quines sern los posibles usuarios del asistente
virtual?, es decir quines son nuestro pblico objetivo: por ejemplo pueden ser los mismos
Egresados de Ingeniera en Sistemas Computacionales del ITCM, as como alumnos aspirantes a la
Maestra en Ciencias en Ciencias de la Computacin de otras escuelas, Maestros, y en general
alumnos de la Maestra en Ciencias en Ciencias de la Computacin.

ETAPA 3. Identificar las relaciones entre el tema y el usuario, para generar los contextos.
En base a las respuestas de las preguntas anteriores se procede a identificar las relaciones entre el
tema y el usuario, para generar los contextos.
Materias, Maestros, Tesistas, Publicaciones, Plan de estudios; Estas palabras clave le sirven al
asistente virtual, para poder buscar en una base de datos en la que tiene almacenadas, las URL de las
diferentes secciones de la pgina principal de la Maestra en Ciencias en Ciencias de la
Computacin.
58

Tambin se pueden aadir relaciones que involucren la forma de conocer a una persona: los saludos,
su familia, su apariencia fsica, su edad, su nombre, su nacionalidad, su gnero, su profesin, su
estado de nimo, pronombres usados en el dilogo, formas de hacer preguntas, etc.
En la etapa que sigue, se tiene que pensar en el tipo de actividad que uno va a desarrollar en
conjunto con el asistente, si es solo conversacin, o si es solicitud de informacin, u otra cosa.
Ya que se identificaron las relaciones pensando en todo lo que el usuario podra preguntarle al
asistente virtual, se procede a crear los archivos .aiml para cada una de ellas. Encontrando los
posibles patrones que se relacionen con el tema o el usuario. Se consideran todas las posibles
preguntas que el usuario le puede hacer al Bot. Por ejemplo, en el archivo nombrado como
saludos.aiml, en relacin con el contexto se crea el nombre del archivo, es decir, en este archivo se
escribirn categoras que contendrn patrones los cuales se relacionan con los saludos, esto mismo
se puede hacer para otros contextos. Palabras o frases relacionadas con saludos: hola, que tal, como
estas, buenas tardes, buenos das, que onda, etc.
Los patrones, son las palabras clave que el asistente virtual consultar en su base de conocimientos
para brindar la informacin pertinente, estos patrones estn contenidos en las categoras que
contiene el archivo AIML, y se determinan haciendo conjugacin de verbos, palabras. A
continuacin se muestra un ejemplo de una categora con un patrn.
<category>
<pattern>BUEN DIA</pattern>
<template><srai>HOLA</srai></template>
</category>

En el ejemplo anterior se muestra como el patrn BUEN DIA, a lo cual se contestara con lo que
contiene el patrn HOLA en su template, ya que en este caso la plantilla es recursiva, para crear los
patrones se utilizan las etiquetas <pattern> </pattern>, y lo que contiene va en maysculas, con la
finalidad de que sea una posible coincidencia con la entrada del usuario, y as proporcione una
respuesta que se relacione con la entrada del usuario. Posteriormente, si ya se finaliz con la
59

creacin de los archivos que conforman la base de conocimientos, se procede a crea un directorio en
el que se puedan agrupar.
REUTILIZACIN DE LA BASE DE CONOCIMIENTOS.
La reutilizacin de una base de conocimientos
Esta etapa ser de ayuda, por si se llegara a presentar el caso en que se quiere modificar la base de
conocimientos para otro tema diferente, a continuacin se describen los pasos para saber que se
debe modificar en los diferentes archivos aiml de la base de conocimientos.
Teniendo en cuenta que los archivos cuentan con recursividad, los cambios que realizarn sern
precisamente en la parte recursiva de los programas, la cual es una forma reutilizar el cdigo ya
generado, que existe en el archivo mcc.aiml, donde esta almacenada la informacin de la Maestra
en Ciencias en Ciencias de la Computacin.
La recursividad est programada en el archivo infoUsuario.aiml. Si se quiere personalizar la base
de conocimientos para otro proyecto, o empresa, se le tienen que realizar 2 cambios bsicos.
En

el

archivo

infoUsuario.aiml,

dentro

de

la

categora

que

tiene

como

patrn

TEMAESPECIFICO, se sustituye en la recursin <srai>MAESTRA</srai> por otro tema


deseado.
Se sustituye el archivo mcc.aiml por uno personalizado con la informacin que uno desee.
Prcticamente realizando estos dos cambio en la base de conocimientos se puede personalizar
adecundola a las necesidades de cada quien.

6.2.3 Caracterizacin de locuciones


De acuerdo a la teora de los actos del habla, puede decir que la caracterizacin de locuciones, en
esta parte se describir como se cre cada uno de los archivos .aiml que darn origen a las
respuestas del asistente virtual. A continuacin se presenta la lista de archivos que conforman la
base de conocimientos, de los cuales solo se describirn los ms significativos:

saludos.aiml

infoMcc.aiml

familia.aiml

genero.aiml

infoUsuario.aiml

pronombres.aiml

nombres.aiml

astrologa.aiml

Mcc.aiml

60

Estos archivos que se presentan aqu arriba tienen como objetivo, crear un dilogo emocional, por
ende, una conversacin. Estos ficheros aiml servirn para darle la capacidad de mantener una
conversacin al asistente virtual con el usuario. De esta forma quedara organizado el conocimiento
del asistente virtual, posteriormente se explicar cada uno de los archivos ms significativos, que
conforman la base de conocimientos.
El primer archivo que se describir ser el de saludos.aiml, este es un archivo en el que se pensaron
las diferentes formas de emitir un saludo, ya sea de bienvenida, despedida, o de encuentros en las
diferentes partes de un da, maana, tarde, y noche, con expresiones simples como las siguientes:
buen da, buenas, buenas tardes, buenos das, buenas noches, hola, hi, hello, adis, gracias, etc.
A continuacin se muestra un pequeo ejemplo del contenido del archivo, que cuando encuentre un
patrn relacionado con buen da este tendr la respuesta que contiene el patrn HOLA, el cual
contiene las respuestas siguientes como las que se pueden apreciar. Al tener un gran nmero de
categoras se busca llegar a tener frases de respuesta por parte del asistente virtual.
<category>
<pattern>BUEN DIA</pattern>
<template>
<srai>HOLA</srai>
</template>
</category>
<category>
<pattern>BUEN DIA *</pattern>
<template><srai>HOLA</srai></template>
</category>
<category>
<pattern>HOLA</pattern>
<template>
<condition name="name">
<li value="">HOLA.Como te llamas?</li>
<li>HOLA <get name="name" />!</li>
</condition>
</template>
</category>

En el cdigo arriba presentado se puede comprobar lo que se dijo anteriormente, ya que se hace uso
de la recursividad, y a la vez se puede pensar en BUEN DIA, como un saludo, y por lo tanto
sinnimo de HOLA, tiene la misma intencin en el contexto.
El siguiente archivo a describir es el de sinRespuestas.aiml este contiene categoras con patrones
como un * el cual le da a entender al asistente virtual, que lo que escribi el usuario como entrada
y no se encuentre en la base de conocimientos, le dir lo siguiente, que no encuentra una respuesta a
la pregunta del usuario, y siendo as, mandara una respuesta la cual le haga saber al usuario que no
encontr respuesta alguna o que no entiende, este archivo tambin contiene categoras con patrones
que esperan informacin acerca de preguntas, gustos, capacidades y aficiones.
61

El cdigo que se presenta a continuacin, tiene la funcin de mandar una respuesta al usuario, aun
que no se encuentre coincidencia en toda la base de conocimientos.
<category>
<pattern>NOSE</pattern>
<template>
<think><set name="topic">interrogativas</set></think>
<random>
<li>Siento decirte que no lo s. </li>
<li>No tengo ni idea. </li>
<li>No lo s. </li>
<li>Yo que s. Mira que eres pesado, todo el da preguntando. No te enojes que es
broma.</li>
<li>Lo desconozco. </li>
<li>Pues no tengo ni la menor idea. </li>
<li>Si yo lo supiera te lo dijera</li>
</random>
</template>
</category>
<category>
<pattern>COMO *</pattern>
<template><srai>NOSE</srai></template>
</category>

<category>
<pattern>CUANDO *</pattern>
<template><srai>NOSE</srai></template>
</category>

Se podra dar el caso, en que se usen las palabras claves de las preguntas, es decir, como, cuando,
donde, tambin como ya se menciono tiene categoras que fueron programadas para el caso de que
no encontrara coincidencia alguna en toda la base de conocimientos, se devolvera una de las frases
que se tiene ah en el cdigo como plantilla.
El archivo infoUsuario.aiml tiene como finalidad responder a preguntas relacionadas con la
informacin del usuario. Se implemento con recursividad, en la cual se llega a una categora que
contiene un patrn final, en el cual se puede realizar varias preguntas, para obtener informacin del
usuario.

62

A continuacin se muestra una parte del cdigo:


<category><pattern>PREGUNTA</pattern>
<template>
<random>
<li><srai>PREGUNTA1</srai></li>
<li></li>
</random>
</template>
</category>
<category><pattern>PREGUNTA1</pattern>
<template>
<random>
<li><srai>NUEVOTEMA</srai></li>
</random>
<random>
<li><srai>PREGUNTAPERSONAL1</srai></li>
<li><srai>PREGUNTAPERSONAL2</srai></li>
<li><srai>PREGUNTAPERSONAL3</srai></li>
<li><srai>PREGUNTAPERSONAL4</srai></li>
<li><srai>PREGUNTAPERSONAL5</srai></li>
</random>
</template>
</category>
<category><pattern>PREGUNTAPERSONAL1</pattern>
<template>
<condition>
<li name="name" value="">Cmo te llamas?</li>
<li name="gender" value="">Eres hombre o mujer?</li>
<li name="age" value="">Cuntos aos tienes?</li>
<li name="job" value="">En que trabajas?</li>
<li name="country" value="">De que pais eres?</li>
<li name="zodiac" value="">Cual es tu signo del zodiaco?</li>
<li name="birthday" value="">Que da cumples aos?</li>
<li><srai>TEMAESPECIFICO</srai></li>
</condition>
</template>
</category>

En este fragmento de cdigo, se presentan algunas preguntas personales, las cuales estn dadas en la
recursividad en el patrn NUEVO TEMA, esta lleva a generar aleatoriamente preguntas personales
como por ejemplo: Cmo te llamas?, Eres hombre o Mujer?, Cuntos aos tienes?, En qu
trabajas?, etc.
En el archivo que lleva por nombre Mcc.aiml, estn contenidos patrones que tienen palabras clave
que se relacionan con la informacin de la Maestra en Ciencias en Ciencias de la Computacin.
Sin embargo en este archivo contiene suficiente informacin acerca de la Maestra, pero como las
respuestas estaban dentro de una etiqueta topic, es decir se creaban respuestas para un contexto
predefinido, en este caso la Maestra. Por lo tanto se tuvo que crear un archivo con las mismas
categoras, para que respondiera aunque no se le haya hablado al asistente sobre el contexto
Maestra y tal archivo es infoMcc.aiml los contiene como categoras independientes de lo anterior.

63

En el siguiente fragmento de cdigo, se recibe como entrada la palabra MAESTRIA, la cual es


asignada como topic, y al hacerse topic tiene sus propias categoras, teniendo en cuenta que tiene sus
propias categoras, puede responder a cualquier palabra que se d cmo entrada despus de la
palabra maestra, por ejemplo QUE ES?.
<category>
<pattern>MAESTRIA</pattern><template>
<think><set name="topic">Maestria</set></think>
<random>
<li>Recuerda que puedes formularme tus dudas acerca de la Maestra en Ciencias en
Ciencias de la Computacin.</li>
<li>Mi funcin es ayudarte con tus dudas acerca de la Maestra en Ciencias en
Ciencias de la Computacin.</li>
<li>Si tienes alguna duda sobre la Maestra en Ciencias en Ciencias de la
Computacin., aqu estoy para ayudarte</li>
<li>Si estas interesado en la Maestra en Ciencias en Ciencias de la Computacin,
puedes preguntarme lo que quieras.</li>
<li>Estas interesado en la Maestra en Ciencias de de la Computacin?</li>
<li>Como ya te he dicho, mi funcin es informarte sobre la Maestra en Ciencias en
Ciencias de la Computacin.</li>
</random>
</template></category>
<topic name="MAESTRIA">
<category>
<pattern>QUE ES?</pattern>
<template>Es un programa de estudios que est dedicado a la Investigacin. Se
profundiza en problemas que por su complejidad, requieren de encontrar soluciones ptimas,
mediante los nuevos mtodos de computacin inteligente (redes neuronales, mtodos
heursticos, algoritmos genticos, etc.)</template>
</category>
</topic>

En el archivo al que se le asigno el nombre de genero.aiml estn contenidas categoras las cuales
cuentan con patrones que preguntan al usuario si es hombre o mujer, al igual para el bot, es decir, el
usuario le pregunta al bot que genero es si es hombre o mujer, obviamente utilizando los sinnimos
respectivos.
En este cdigo se puede observar que la base de conocimientos espera como entrada SOY HOMBRE
o SOY MUJER para dar una respuesta condicionada al gnero del usuario, siempre y cuando ya lo
haya definido.
<category>
<pattern>SOY HOMBRE</pattern>
<template>
<condition name="gender" value="MUJER"> Pues pens que eras mujer.</condition>
<think><set name="gender">HOMBRE</set></think>Yo soy un hombre robot.
<srai>PREGUNTA</srai>
</template>
</category>
<category>
<pattern>SOY MUJER</pattern>
<template>
<condition name="gender" value="HOMBRE">Pues pens que eras hombre.</condition>
<think><set name="gender">MUJER</set></think>Yo tambien. <srai>PREGUNTA</srai>
</template>
</category>

64

6.2.4 Reorganizacin de la base de conocimientos


En este paso de reorganizacin de la base de conocimientos, se propone que los archivos de AIML
se cambien al nuevo formato quedando de la siguiente manera los cdigos ya modificados:
<?xml version="1.0" encoding="UTF-8"?>
<aiml version="1.0">
<category>
<pattern>HOLA</pattern>
<template contexto = "Saludo">
<personalidad valor = "P1">
<enojo>
<intensidad imagen = "C:\Python25\IMAGES\enojo.jpg" intensidadMin =
"0" intensidadMax = "10">
<random>
<li>Hola.</li>
<li>Buenas.</li>
</random>
</intensidad>
</enojo>
<miedo>
<intensidad imagen = "C:\Python25\IMAGES\miedo.jpg" intensidadMin =
"0" intensidadMax = "10">
<random>
<li>Hola.</li>
<li>Buenas.</li>
</random>
</intensidad>
</miedo>
<alegria>
<intensidad imagen = "C:\Python25\IMAGES\alegria.jpg" intensidadMin =
"0" intensidadMax = "10">
<random>
<li>Hola.</li>
<li>Buenas.</li>
</random>
</intensidad>
</alegria>
<tristeza>
<intensidad imagen = "C:\Python25\IMAGES\tristeza.jpg" intensidadMin
= "0" intensidadMax = "10">
<random>
<li>Hola.</li>
<li>Buenas.</li>
</random>
</intensidad>
</tristeza>
<neutro>
<intensidad imagen = "C:\Python25\IMAGES\neutro.jpg" intensidadMin =
"0" intensidadMax = "10">
<random>
<li>Hola.</li>
<li>Buenas.</li>
</random>
</intensidad>
</neutro>
</personalidad>
</template>
</category>
<category>
<pattern>* HOLA</pattern>
<template><srai>HOLA</srai></template>
</category>
<category>
<pattern>HOLA *</pattern>
<template><srai>HOLA</srai></template>

65

</category>
<category>
<pattern>* HOLA *</pattern>
<template><srai>HOLA</srai></template>
</category>
<category>
<pattern>HI</pattern>
<template><srai>HOLA</srai></template>
</category>
<category>
<pattern>* HI</pattern>
<template><srai>HOLA</srai></template>
</category>
<category>
<pattern>HI *</pattern>
<template><srai>HOLA</srai></template>
</category>
<category>
<pattern>* HI *</pattern>
<template><srai>HOLA</srai></template>
</category>

Como se puede observar, aiml sufri unos cambios en la sintaxis del cdigo, y por ende se hace un
poco ms complejo. De esta forma quedara reorganizada la base de conocimientos, adecuando cada
uno de los archivos anteriormente descritos en la seccin 6.2.3.

6.3 Desarrollo del Prototipo


Una vez definidos los archivos que integran la base de conocimientos del asistente, lo que procede
para construccin del prototipo es:

Construccin de interfaz

Integracin de base de conocimiento a la interfaz

En esta seccin se iniciara la construccin de la interfaz, y despus que ya est construida se le


integrara la base de conocimientos, para dotarla de conocimiento artificial, y as simule una
conversacin real.
En esta parte de la creacin de una aplicacin con interfaz grfica se describirn los pasos
necesarios para crearla en VisualWx Python, la cual va a utilizar la base de conocimientos creada en
AIML. Hay que asegurarse de que estn instaladas las libreras pywin32 y Wx python2.8-unicode,
para el funcionamiento del IDE, por cierto la ruta donde se encuentra Python debe estar en la
variable PATH, y si no se encuentra en ella simplemente agregamos la ruta del directorio de Python,
en este caso sera; C:\Python25, y se vuelve a guardar ya con la ruta en la variable de entorno, y as
funcionar bien.

66

A continuacin se prosigue a desarrollar la aplicacin con interfaz grfica utilizando en IDE


VisualWx Python. En esta ocasin se va a programar una aplicacin con interfaz grfica, que debe
quedar como se puede observar en la figura 20. Este ser el producto final. Para ver el proceso de
construccin ver el ANEXO A.

Figura 20. Prototipo final

Ahora sigue la parte fundamental de nuestro proyecto la codificacin de la interfaz. Para este
proyecto se cre una base de datos llamada pginas como se muestra a continuacin.

En la siguiente base de datos se almacenaron los links relacionados con la pgina principal de la
Maestra en Ciencias en Ciencias de la Computacin. Y contiene los links porque es una forma
sencilla de acceder a ellos de manera prctica a la hora de codificar.
La base de datos est compuesta de lo siguiente:
1 Tabla pages, 2 campos idpages y pagina.
Paginas
pages (idpages, pagina)
21 Registros con las pginas de la Maestra en Ciencias en Ciencias de la Computacin.

67

Idpages

Pagina

http://www.itcm.edu.mx/mccc06/

http://www.itcm.edu.mx/mccc06/anteMcc.php

http://www.itcm.edu.mx/mccc06/misionMcc.php

http://www.itcm.edu.mx/mccc06/equiposMcc.php

http://www.itcm.edu.mx/mccc06/logrosMcc.php

http://www.itcm.edu.mx/mccc06/ProgMccc07.html

http://www.itcm.edu.mx/mccc06/cursoMCCC.php

http://www.itcm.edu.mx/mccc06/infoMcc.php

http://www.itcm.edu.mx/mccc06/requiMcc.php

10

http://www.itcm.edu.mx/mccc06/material/material.php

11

http://www.itcm.edu.mx/mccc06/aceptados.php

12

http://www.itcm.edu.mx/mccc06/calendarioAspirantes.php

13

http://www.itcm.edu.mx/mccc06/planMcc.php

14

http://www.itcm.edu.mx/mccc06/perfilMcc.php

15

http://www.itcm.edu.mx/mccc06/criteriosEvaluacion.php

16

http://www.itcm.edu.mx/mccc06/calendarioPropuestas2007Nov.php

17

http://www.itcm.edu.mx/mccc06/lineasMcc.php

18

http://www.itcm.edu.mx/mccc06/inveMcc.php

19

http://www.itcm.edu.mx/mccc06/aluMcc.php

20

http://www.itcm.edu.mx/mccc06/publiMcc.php

21

http://www.itcm.edu.mx/mccc06/graduados.pdf

Tabla 4. Registros de la BD paginas.

68

CODIFICACION DE LA INTERFAZ GRFICA.


A continuacin se presenta el cdigo que se le agrego a la interfaz grfica para que funcionar
correctamente, de este modo se inici a detalle la programacin en Python.
Este cdigo se agrega al inicio del archivo frmChild, el cual ser nuestro frame, para colocar los
objetos de la interfaz grfica.
Ahora bien se inicia cargando las libreras necesarias para que Python pueda interpretar los archivos
aiml, acceder a la base de datos y utilizar subprocesos ver figura 21. Y as poder simular la
conversacin con el bot. Como se puede observar esta al inicio del archivo frmChild.

Figura 21. Importacin de libreras.

La primer librera que se carga es la Wx, ya que es la librera que utiliza la herramienta VisualWx,
para manejar los grficos, despus se procede a cargar de la librera AIML, y ya con esta librera,
podremos cargar archivos AIML, con los cuales podremos simular una conversacin con el bot, ya
que los posibles patrones que reconozca el bot estn escritos en los archivos .aiml, los cuales se
encuentran en una carpeta llamada standard, al mismo tiempo estos estn siendo cargados por el
archivo std-startup.xml y se utiliza el mtodo learn para enviarle como parmetro el nombre del
archivo y el mtodo respond para que inicie la carga de los archivos aiml.
Posteriormente se crea una conexin (lnea 10) a la base de datos llamada pginas, la cual contiene
lo siguiente ver figura 22:

Figura 22. Acceso a la BD paginas

Tambin se crea un cursor, el cual nos ubica en el inicio de la base de datos (lnea 11),
posteriormente se crea una consulta utilizando el cursor (lnea 12), despus se crea un filtro, en el
cual solo lo relacionado con la consulta quedara almacenado en el objeto res (lnea 13), y en seguida

69

se crean e inicializan las siguientes variables valor, listpages, listcampo cada una con sus respectivos
valores (lneas 14-16) como se muestra en la figura 22.

Figura 23. Creacin del objeto k, en este caso es como si fuera el cerebro del bot.

En la figura 23 se muestra la creacin del bot, cargando la base de conocimientos en su cerebro con
el mtodo learn (lnea 19) y permitiendo que el bot conteste con el mtodo respond (lnea 20) y
asignndole un nombre al bot (lnea 21).

Figura 24. Cdigo generado por la herramienta VisualWx

En la figura 24 se muestra que a partir de la lnea 22 hasta la 99 es cdigo que genera la herramienta
VisualWx.

Figura 25. Funcin pregunta.

La funcin pregunta solo se activa cuando el evento que tiene especificada la caja de texto, es decir
la edit text, que es cuando escribes algo sobre ella y es presionada la tecla Enter, solo as se
ejecutara la funcin pregunta. Y esta se escribe a la misma sangra que los dems mtodos que ya
vienen por default ver figura 25.
70

Figura 26. Objeto edit text.

En esta parte se cre el objeto donde se podrn teclear las preguntas ver figura 26.

Figura 27. Definicin de la funcin pregunta.

En la lnea 99 se define la funcin pregunta, en la lnea 102 y 103 se crean variables de tipo String,
en la lnea 104 se recupera el contenido de la caja de texto (edit text) que esta nombrado como tx4c,
en la variable pregunta la cual es de tipo String, y que cuenta con un mtodo llamado GetValue (),
que regresa una cadena de tipo String, en la lnea 105 se recupera la respuesta del bot en la variable
respuesta, envindole como parmetro la cadena de la pregunta, posteriormente en la lnea 106 se
realiza una conversin, la cadena de respuesta se convierte a Unicode que es un estndar de
codificacin, con el cual se pueden interpretar ciertos caracteres, un ejemplo seria el acento, la ,
entre otros. Y as tambin se le pasa como parmetro al mtodo Unicode la cadena que se
transformar y el cdigo que en que est representado el carcter o caracteres a convertir ver figura
27.

71

Figura 28. Cdigo para obtener el id de la pagina a mostrar.

Para visualizar el cdigo completo de la clase frmchild.py, que es el cdigo de nuestro inters, ver el
anexo A. En la seccin A2. Adems de la clase frmchild, estn tambin los cdigos de las clases
generadas automticamente por el IDE VisualWx.

Pseudocdigo.

Si resp== 01 o resp==02 o ..resp==21 entonces


Valor= resp //se le convierte a entero con el metodo int (resp) ya que es una String
Si valor >= 0 entonces
Crear un ciclo para recorrer desde 0 hasta 21(res)
Crear una consulta donde el idpages=valor
Si lo encuentra que lo liste
Crear una variable aux para asignar el contenido de la consulta
Lo anterior convertirlo a String
Crear dos Strings a partir de la aux pagina1 y pagina2
Crear otro ciclo para recorrer de 0 - 21 (listidpages)
Si listidpages[j]==valor
Si valor<10
Abrir pagina1
Si valor>9
Abrir pagina2
Imprimir lo que dice el usuario
Imprimir lo que dice el bot
Limpiar la caja de texto
Sino
Imprimir lo que dice el usuario
Imprimir lo que dice el bot
Limpiar la caja de texto

As mismo con el Pseudocdigo anterior se espera que la cadena de respuesta sea un nmero ya sea
01, 0221 ya que son los ID que tienen las pginas en la base de datos, y as poder realizar todo el
procedimiento, y si no simplemente imprime la respuesta, ver figura 28.

72

Para el botn Enviar tambin se le coloc el mismo cdigo solo que en su funcin llamada
bt6_VxXEvOnButtonClick (). Este cdigo se ejecutar cuando sea presionado el botn vase figura
29 y 30 en la que observa el objeto y su forma de programarlo.

Figura 29. Botn Enviar.

Figura 30. Cdigo del botn enviar.

Ahora se ver como est estructurado el archivo std-startup.xml. Este archivo contiene un patrn
llamado LOAD AIML B, y los archivos en los que posiblemente puede encontrar una respuesta
relacionada con el patrn de entrada.

73

Figura 31.- Std-startup.xml

Al ejecutar nuevamente nuestro proyecto, nos solicitara guardar cambios, se da clic en s y al


ejecutarse aparecern las siguientes dos ventanas, en las cuales se muestra como se cargan los
archivos .aiml y en la otra la ejecucin de la aplicacin.

Figura 32. Carga de archivos aiml.

74

Figura 33. Interfaz grfica para simular un bot conversacional.

Finalmente se ha concluido la aplicacin con interfaz grfica (bot conversacional) hecho en


VisualWx python.

Figura 34. Interaccin con el bot, creado en VisualWx Python

Posteriormente se cre un ejecutable de la aplicacin desarrollada con el siguiente cdigo que se


guardo en un archivo independiente que nombramos prueba.py.
Si se quiere ver a detalle favor de ir al ANEXO C.

75

CAPTULO 7.
EXPERIMENTACIN Y
RESULTADOS
7.1 Descripcin de la Experimentacin
En esta seccin se describirn como objetivos de la experimentacin, las pruebas necesarias que se
llevaron a cabo. En este caso se registraran los resultados de seguir la metodologa respecto al
cdigo AIML, la realizacin de una conversacin asistente-usuario, es decir, una interaccin
humano-computadora, adems de la efectividad de la misma.

7.1.1. Resultados de seguir la metodologa respecto al cdigo AIML.


Etapa 1. Identificar cul es la finalidad de la interaccin y las posibles preguntas que se deben
responder.
En esta etapa ya se debe tener definida la finalidad de la interaccin, para este caso devolver
respuestas y las preguntas posibles a realizar, tienen que ser relacionadas con nuestra Maestra. En
AIML aun no es necesario crear ninguna categora.

Etapa 2. Determinar quines sern los posibles usuarios del asistente virtual.
En esta etapa an no se realiza ningn procedimiento, ni es necesario aun crear ni un fragmento de
cdigo.

Etapa 3. Identificar las relaciones entre el tema y el usuario, para generar los contextos.
En esta etapa se analiza la informacin recabada para poder crear los contextos.
Etapa 4. Identificar el rol y tipo de actividad que el asistente virtual va a desarrollar.
76

En esta etapa se identifica el rol del asistente y que actividad realizara. En las primeras cuatro etapas
se realiza un anlisis de la informacin recopilada sobre la Maestra en Ciencias en Ciencias de la
Computacin.

Etapa 5. Determinar los Dominios de Conocimientos, Tpicos de la Conversacin, Categoras,


Patrones de Preguntas y las Respuestas a dichos patrones tomando en cuenta los diversos
estados emocionales que se considerarn.
En esta etapa se utiliza el anlisis de la informacin recabada, es decir se crean las categoras con
los posibles patrones relacionados con nuestra Maestra. Asignando como dominio de conocimiento
la Maestra, as como tambin el tpico de la conversacin, las categoras creadas son en general
sobre la Maestra y sobre temas en general, pero limitando a contestar lo bsico, en esta misma
etapa se crean las respuestas, es decir las templates.
Dominio de Conocimiento: Maestra en Ciencias en Ciencias de la Computacin.
Topics de la Conversacin
Topic: Maestra.
A continuacin se presentan algunas de las categorias completas con sus patrones y templates. En la
que se involucra el topic, el dominio de conocimiento y las Categorias (Category), Patrones
(Pattern), Plantillas o Respuestas (Template), referentes a la Maestra.
<!-- Maestria en Ciencias Coputacionales -->
<category>
<pattern>MAESTRIA</pattern><template>
<think><set name="topic">Maestria</set></think>
<random>
<li>Recuerda que puedes formularme tus dudas acerca de la Maestra en Ciencias en
Ciencias de la Computacin.</li>
<li>Mi funcion es ayudarte con tus dudas acerca de la Maestra en Ciencias en
Ciencias de la Computacin.</li>
<li>Si tienes alguna duda sobre la Maestra en Ciencias en Ciencias de la
Computacin., aqui estoy para ayudarte</li>
<li>Si estas interesado en la Maestra en Ciencias en Ciencias de la Computacin,
puedes preguntarme lo que quieras.</li>
<li>Estas interesado en la Maestria en Ciencias de de la Computacin sigueme
preguntando acerca de la maestria</li>
<li>Como ya te he dicho, mi funcion es informarte sobre la Maestra en Ciencias en
Ciencias de la Computacin.</li>
</random>
</template></category>

77

Categorias y Repuestas acerca de la Maestra


<category>
<pattern>HABLAME DE LA MAESTRIA</pattern>
<template>
<random>
<li>La Maestra en Ciencias en Ciencias de la Computacin es un posgrado que tiene un
plan de estudios que se ha diseado considerando como nica lnea de investigacin a la
Optimizacin Inteligente y como reas de aplicacin: Visin y Robtica, Base de Datos
Distribuidas, Lenguaje Natural</li>
<li>La Maestra en Ciencias en Ciencias de la Computacin tiene desde el ao 2000, se
inici el programa propio denominado originalmente Maestra en Computacin. Actualmente
cambi de nombre a Maestra en Ciencias en Ciencias de la Computacin.</li>
<li>La Maestria cuenta con los siguientes Doctores que imparten clases: Dra. Laura Cruz
Reyes, Dr. Hctor Joaquin Fraire Huacuja, Dr. Arturo Hernndez Ramrez, Dr. Juan Javier
Gonzlez Barbosa, Dra. Mara Lucila Morales Rodrguez, Dr. Rodolfo Abraham Pazos Rangel,
Dr. Jos Antonio Martnez Flores, M.C. Guadalupe Castilla Valdez,
Dra. Claudia Guadalupe Gmez Santilln, M.C. Jos Apolinar Ramrez Saldivar</li>
<li>La Maestria tiene pensado abrir una segunda linea de investigacion que es
relacionado a la IA, personajes virtuales con expresiones faciales que representan la
emocion que estan sintiendo artificialmente
</li>
</random>
</template>
</category>

<category>
<pattern>QUE ES?</pattern>
<template>Es un programa de estudios que esta dedicado a la Investigacion. Se
profundiza en problemas que por su complejidad, requieren de encontrar soluciones ptimas,
mediante los nuevos mtodos de computacin inteligente (redes neuronales, mtodos
heursticos, algoritmos genticos, entre otros)</template>
</category>
<category>
<pattern>QUE ES</pattern>
<template>Es un programa de estudios que esta dedicado a la Investigacion. Se
profundiza en problemas que por su complejidad, requieren de encontrar soluciones ptimas,
mediante los nuevos mtodos de computacin inteligente (redes neuronales, mtodos
heursticos, algoritmos genticos, entre otros)</template>
</category>
<category>
<pattern>QUE ES *?</pattern>
<template>Es un programa de estudios que esta dedicado a la Investigacion y Se
profundiza en problemas que por su complejidad, requieren de encontrar soluciones ptimas,
mediante los nuevos mtodos de computacin inteligente (redes neuronales, mtodos
heursticos, algoritmos genticos, entre otros).</template>
</category>
<category>
<pattern>DE QUE TRATA</pattern>
<template>Trata sobre tecnologias de bots y sus aplicaciones en el campo de la
educacion. Se profundiza en problemas que por su complejidad, requieren de encontrar
soluciones ptimas, mediante los nuevos mtodos de computacin inteligente (redes
neuronales, mtodos heursticos, algoritmos genticos, entre otros)</template>
</category>
<category>
<pattern>DE QUE SE TRATA</pattern>
<template>Trata sobre tecnologias de bots y sus aplicaciones en el campo de la
educacion. Se profundiza en problemas que por su complejidad, requieren de encontrar
soluciones ptimas, mediante los nuevos mtodos de computacin inteligente (redes
neuronales, mtodos heursticos, algoritmos genticos, entre otros).</template>
</category>

78

<category>
<pattern>_ PUBLICACIONES *</pattern>
<template><srai>_ PUBLICACIONES</srai></template>
</category>

<category>
<pattern>_ PUBLICACIONES</pattern>
<template>20</template>
</category>
<category>
<pattern>MIEMBROS</pattern>
<template>18</template>
</category>
<category>
<pattern>MIEMBROS *</pattern>
<template><srai>MIEMBROS</srai></template>
</category>
<category>
<pattern>WEB</pattern>
<template>01</template>
</category>
<category>
<pattern>_ WEB</pattern>
<template><srai>WEB</srai></template>
</category>
<category>
<pattern>ANTECEDENTES</pattern>
<template>02</template>
</category>
<category>
<pattern>ANTECEDENTES *</pattern>
<template><srai>ANTECEDENTES</srai></template>
</category>
<category>
<pattern>MISIONVISION</pattern>
<template>03</template>
</category>

<category>
<pattern>_ MISION * VISION</pattern>
<template><srai>MISIONVISION</srai></template>
</category>

En todas las categoras anteriores, como respuesta regresan un nmero, el cual es tratado con
Python, y hace consulta a una base de datos, para extraer la pgina y mostrrsela al usuario.

Etapa 6. Integracin de la Base de Conocimientos del agente virtual


En esta etapa AIML, solamente se carga como una librera en Python, en el momento que se inicia
la codificacin.
79

7.1.2. Resultado de la conversacin con el asistente virtual.


Usuario: Hola
Bot: Hola. Cmo te llamas?
Usuario: Mi nombre es Luis
Bot: Encantado Luis.
Usuario: Hblame de la Maestra
Bot: La Maestra en Ciencias en Ciencias de la Computacin es un posgrado que tiene un plan de
estudios que se ha diseado considerando como nica lnea de investigacin a la Optimizacin
Inteligente y como reas de aplicacin: Visin y Robtica, Base de Datos Distribuidas, Lenguaje
Natural.
Usuario: me podras decir cul es la pgina principal de la Maestra
Bot: usted recibir mayor informacin en la pgina que se abre
Usuario: me podras decir que lneas de investigacin tiene la Maestra
Bot: usted recibir mayor informacin en la pgina que se abre
Usuario: dime que publicaciones tiene la maestra
Bot: usted recibir mayor informacin en la pgina que se abre
Usuario: Quienes son los profesores
Bot: usted recibir mayor informacin en la pgina que se abre
Usuario: Cuales son las fechas de exmenes
Bot: usted recibir mayor informacin en la pgina que se abre
Usuario: Sabes matemticas
Bot: Me encuentro algo perdido en este contexto. explcate de otra manera

Identificacin de Problemas
Debido a que solo se escribieron categoras con patrones pensados como las posibles preguntas del
usuario, no se logro abarcar todo el conocimiento existente en el mundo, as que tiene tendencia a
equivocarse en las respuestas. Aunque con respecto a la Maestra debera de contestar
correctamente, con lo que se le pregunta.

80

CAPTULO 8.
CONCLUSIONES Y TRABAJOS
FUTUROS
8.1 Conclusiones
En este trabajo de tesis se realizo el diseo de una metodologa para organizar la estructura de los
dilogos. Tambin se diseo un asistente virtual con el software iClone PRO 4.1. Se utiliz una base
de conocimientos para darle el dilogo al asistente virtual. Se desarroll la interfaz grfica para
integrar al asistente virtual y la base de conocimientos en Python.

8.2 Aportaciones
Como resultado de este trabajo quedo un asistente creado en Python, que utiliza una base de
conocimientos creada en el lenguaje AIML.
Se present una metodologa, para crear bases de conocimientos, gua para construir
interfaces, se presenta caso aplicativo a la maestra en ciencias en ciencias de la
computacin.

8.3 Trabajos Futuros


Al dejar disponible el cdigo fuente de la aplicacin con interfaz grfica y de los archivos AIML
(base de conocimientos), pueden servir como base de futuras versiones aplicadas con nuevas
tcnicas de la Inteligencia Artificial. Dejando como reas de oportunidad para mejorar el proyecto:
el cambio de personaje de esttico a dinmico, y su conversin en una aplicacin Web, para as
acceder a l desde Internet
Otra parte interesante y que se deja abierta es la modificacin del ncleo de AIML para crear
etiquetas, objetivos, intensiones, independientes de la temtica.
81

BIBLIOGRAFA
lvarez, M. A. (2003). Qu es Python.
http://www.desarrolloweb.com/articulos/1325.php

Recuperado

Abril

8,

2011,

partir

de

Bates, J. (1994). The role of emotion in believable agents. Communications of ACM. Special Issue on Agents,
9.
Botti, V. J. V. (2000). Agentes Inteligentes: el siguiente paso en la Inteligencia Artificial. ATI, 5.
Bush, N. (2001). AIML 1.0.1 (A.L.I.C.E. AI Foundation). Recuperado Abril 8, 2011, a partir de
http://www.alicebot.org/TR/2001/WD-aiml/#section-introduction
Cassell, J., Bickmore, Tim, Campbell, L., Vilhjlmsson,, H., & Yan, H. (2000). Conversation as a System
Framework: Designing EmbodiedConversational Agents.
Cassell, J., & Bickmore, Timothy. (2002). Negotiated Collusion:Modeling Social Language and its
Relationship Effectsin Intelligent Agents. MIT Media Lab 20 Ames St., E15-315 Cambridge, MA 02139 USA.
Coca, G. H., & ngel, S. C. S. del. (2009). METODOLOGA PARA LA SIMULACIN DE EXPRESIONES
NO VERBALES DE UNA RECEPCIONISTA VIRTUAL. ITCM.
dTinfS.L. (2008). Asistente Virtual Semntico (pg pp 15).
Dustman, A. (2006). MySQL for Python | Download MySQL for Python software for free at SourceForge.net.
Recuperado Abril 8, 2011, a partir de http://sourceforge.net/projects/mysql-python/
Florencia, R. (2010). Agente Conversacional Corpreo que utiliza AIML para integrar procesos de
personalidad. ITCM, Cd. Madero, Tamaulipas.
Gratch,, J., Rickel, J., Andr, E., Badler, N., Cassell, J., & Petajan, E. (2002). Creating interactive Virtual
Humans some assembly requided. IEEE Inteligent Systems, pp 10.
Jenkins, M.-C. (2010). Using construction grammar in conversational systems. Recuperado Abril 5, 2011, a
partir de http://www.slideshare.net/mcjenkins/using-construction-grammar-in-conversational-systems
Kopp, S. (2009). Social Resonance and Embodied Coordination inFace-to-Face Conversation with Artificial
Interlocutors. Speech Communication, 12 pp.
Loyall, A. B., Bates, J., & Mitchell, T. (1997). Believable Agents: Building Interactive Personalities, 97--123.
Lun, E. V. (2010a). Conversational Agent - a program that acts on behalf of humans and chats. Recuperado
Abril 8, 2011, a partir de http://www.chatbots.org/conversational_agent/
Lun, E. V. (2010b). Chatbots.org 2.6: Forum and even smarter account pages | News. Recuperado Abril 8,
2011, a partir de http://www.chatbots.org/community/buzz_stop/welcome_to_chatbot.org_2.0/
Marcelo, A. C., & P, M. G. E. (2007). Agentes Inteligentes en la webBots de conversacin.

82

Monroy, G. L. (2008). Interfaz grfica para la edicion de cuentos interactivos para ninos. Recuperado Abril 6,
2011, a partir de http://catarina.udlap.mx/u_dl_a/tales/documentos/lis/lopez_m_g/index.html
Morales, M. L. (2007). Modle dinteraction sociale pour des agents conversationnels anims Application la
rducation de patients crbro-lss. LUNIVERSIT TOULOUSE III : PAUL SABATIER.
Next IT Corporation. (2010). Next IT - Providing Intelligent Customer Experience Solutions. Recuperado
Abril
14,
2011,
a
partir
de
file:///C:/Users/Jesus/Documents/Maestria/Tesis/Agentes%20Conversacionales/Paginas%20Web/Next%20IT
%20-%20Providing%20Intelligent%20Customer%20Experience%20Solutions(Introduccion).htm
Nwana, H. S. (1996). Software Agents: An Overview. Knowledge Engineering Review, Vol. 11(N 3), pp 49.
Pedro Branco. (2003). Emotional Interaction.
Ringate, T., Wallace, D. R., Taylon, A., Baer, J., & Daniels, D. (2001). ALICE AIML Primer. Recuperado
Mayo 9, 2011, a partir de http://www.alicebot.org/documentation/aiml-primer.html
Takeyas, B. L. (2005). Agentes Inteligentes.
VisualWx. (2010). VisualWX. Recuperado Abril 8, 2011, a partir de http://visualwx.altervista.org/index.php
Wordreference. (2005). conversacional - Definicin - WordReference.com. Conversacional- DefinicinWordreference.com Diccionario de la lengua espaola. Recuperado Abril 8, 2011, a partir de
http://www.wordreference.com/definicion/conversacional
Llisterri, J. (2007) El papel de la fontica en las tecnologas del habla in Actas do 3 Congreso Internacional
de Fontica Experimental. Santiago de Compostela, 24-26 outubro de 2005. Santiago de Compostela : Xunta
de
Galicia.
Pp.
23-37.
ISBN :
978-84-453-4451-4
disponible
en
http://liceu.uab.es/^joaquim/publicacions/Llisteri_05_Fontica_Tecnologias_Habla.pdf

83

ANEXOS
ANEXO A: CREACIN DE
INTERFAZ GRFICA
Este anexo contiene el proceso detallado paso por paso, de cmo ir aadiendo los componentes
grficos para conformar la interfaz grfica del asistente virtual.
Abrir el IDE VisualWx, una vez abierto
proseguimos a crear un nuevo proyecto dando
clic en File, despus en New Proyect, como se
muestra en la figura 35.
Posteriormente indicar que el template que se
utilizar ser WX_MDI_Python y guadar el
Proyecto en una carpeta en la que almacene
todos los archivos y programas que utilizar.
El nuevo proyecto tendr la extensin .pbc.
Figura 35. VisualWx

Una vez terminado el proceso anterior, aparece la ventana principal con un formulario gris (ver
figura 36) y podremos construir nuestro propio asistente virtual. Dentro de ste formulario se
crearn objetos o controles del tipo botn, caja de texto, panel, y rea de texto.
El botn para enviar la pregunta, la caja de texto para escribir la pregunta, y la caja de texto para
visualizar la pregunta y la respuesta, y el panel para visualizar al personaje virtual.

84

En el lado izquierdo de la interfaz del IDE se


encuentran

disponibles

componentes

que

continuacin

se

se

los
pueden

describir

el

diferentes
utilizar.

proceso

de

construccin y programacin de la interfaz


grfica del asistente virtual que se desarroll, ver
figura 36.

Figura 36. Frame de inicio de la plantilla Wx_MDI_python

Se inicia colocando una etiqueta de Texto (Static text). En esta siguiente ventana se ha cambiado el
color de fondo dando clic propiedades, en la opcin backcolor, ver figura 37.

Figura 37 . Elegir color de fondo del Frame

Para cambiar el contenido original de la etiqueta de texto se da clic en su propiedad Text, y despus
se escribe lo que se desea aparezca en la etiqueta y se da clic en OK.

85

Figura 38 . Escribir texto en una etiqueta (Static Text)

Tambin se le puede dar clic en la propiedad Font y cambiarlo si as se desea, en esta opcin se
puede cambiar el tipo de letra, el estilo, tamao y algunos efectos (Figura 38).

Figura 39 .Cambiar Fuente (Font)

En nuestro ejemplo se cre y edito el control static text (etiqueta), para escribir la cadena Haz tu
pregunta. Como se puede observar en la figura 41.

86

Figura 40. Cambio de texto en la etiqueta.

A continuacin se insertan 2 controles un edit text, que crear una caja de texto que permitir
mostrar la interaccin del usuario con el bot y un edit text multilnea o tambin conocido como
rea de texto, ver figura 40.

Figura 41. Insercin de Edit Text y Edit Text Multilnea.

Ahora se crea un botn con la leyenda enviar. En esta parte se edita el texto que tiene por default
que es control, se le escribe la palabra Enviar, y se da clic en OK, ver figura 42.

87

Figura 42. Asignar nombre al botn.

As se ve la interfaz grfica, pero aun falta colocar una imagen de un rostro para simular que es un
agente conversacional eso lo veremos ms adelante.
Ahora se selecciona, un objeto Panel, al cual se le asignar una imagen, para ello seleccionar la
opcin Bitmap en las propiedades del control y cargar la imagen que se desea especificando el tipo
de archivo al que pertenece nuestro recurso, por ejemplo bmp, icon, gif, png, jpg, pcx, iff, tiff, ani,
pnm, xpm, cursor, *.rc, etc.

Figura 43.objeto panel.

88

Para asignar un nombre a la ventana principal y a la sub-ventana, se le da clic en la propiedad de


title y se escribe el nombre.
A continuacin se procede a escribir el cdigo.

89

ANEXO B: INTEGRACIN DE
LA BASE DE CONOCIMIENTOS
A LA INTERFAZ GRFICA
Este anexo contiene el cdigo de las cuatro clases que se generan con el IDE VisualWx, en la cual la
clase App.py es el equivalente a un main, es decir, el programa principal que hace llamadas a todas
las clases relacionadas con la interfaz grfica.
Esta clase frmchild se construye a partir de que se elige el tipo de plantilla Wx_MDI_python, ya que
es cdigo que se genera automticamente, sin embargo en este cdigo es donde se debe incluir
nuestro cdigo, ya que es el que contendr los objetos que pueden esperar algn evento como lo
son: botones, cajas de texto, etc. En si aqu escribimos el cdigo para vincular MySQL, AIML con
Python para hacer funcional la aplicacin.
La vinculacin de la base de datos con la interfaz grfica se lleva a cabo mediante instrucciones, es
decir, a nivel de cdigo, al igual que el enlace de aiml con la interfaz grfica para integrar la base de
conocimientos.
El programa Visualwx crea 4 clases, las cuales se pondrn solo el cdigo necesario:

App.py, es la clase principal es como si fuera la aplicacin main.

Frmchild.py, es el frame que nos permite agregar cdigo y generar la interfaz grfica.

Myframe.py, es la segunda ventana que tiene nuestro frame principal.

VwXComponent.py, esta es una clase generada por el IDE de Python.

90

Frmchild.py
# -*- coding: utf-8 -*# Don't modify comment
import wx
#[inc]add your include files here
import aiml
import sys
import subprocess
import MySQLdb
db = MySQLdb.connect(host='localhost', user='root', passwd='root', db='paginas')
cursor = db.cursor()
busca = cursor.execute('SELECT * FROM pages')
res = cursor.fetchall()
valor=0
listidpages=[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
listcampo=['idpages','pagina']
k = aiml.Kernel()
k.learn("std-startup.xml")
k.respond("LOAD AIML B")

class frmChild(wx.MDIChildFrame):
def __init__(self,parent,id = -1,title='',pos = wx.Point(1,1),size = wx.Size(860,500),style
= wx.DEFAULT_FRAME_STYLE,name = 'frame'):
pre=wx.PreMDIChildFrame()
self.OnPreCreate()
pre.Create(parent,id,title,pos,size,style,name)
self.PostCreate(pre)
self.initBefore()
self.VwXinit()
self.initAfter()
def __del__(self):
self.Ddel()
return
def VwXinit(self):
self.fileImgBuf=[None] * 1
self.fileImgBuf[0] = wx.Bitmap("cybormona11.jpg",wx.BITMAP_TYPE_JPEG)
self.pn8cImg0=self.fileImgBuf[0];
self.SetTitle('Bot')
self.Show(True)
self.SetBackgroundColour (wx.SystemSettings.GetColour(wx.SYS_COLOUR_INFOBK))
self.st3c = wx.StaticText(self,-1,"",wx.Point(415,330),wx.Size(164,28),wx.ST_NO_AUTORESIZE)
self.st3c.SetLabel("Haz tu pregunta")
self.st3c.SetFont(wx.Font(14,74,90,92,0,"Tahoma"))
self.tx4c = wx.TextCtrl(self,-1,"",wx.Point(410,365),wx.Size(405,21))
self.Bind(wx.EVT_TEXT_ENTER,self.pregunta,self.tx4c)
self.txm5c = wx.TextCtrl(self,-1,"",wx.Point(415,20),wx.Size(400,300),wx.TE_MULTILINE)
self.bt6c = wx.Button(self,-1,"",wx.Point(685,330),wx.Size(135,25))
self.bt6c.SetLabel("Enviar")
self.Bind(wx.EVT_BUTTON,self.bt6c_VwXEvOnButtonClick,self.bt6c)
self.pn8c = wx.Panel(self,-1,wx.Point(15,20),wx.Size(365,300))
self.pn8c.Bind (wx.EVT_ERASE_BACKGROUND,self.VwXpn8c_VwXEvOnEraseBackground)
self.Refresh()
return

# Codigo agregado
def pregunta(self,event): #init function
usuario="Usuario: "
bot="Bot: "
pregunta=self.tx4c.GetValue()
respuesta= k.respond(pregunta)
resp=unicode(respuesta,"utf-8")
if(resp=="01" or resp=="02" or resp=="03" or resp=="04" or resp=="05" or resp=="06" or
resp=="07" or resp=="08" or resp=="09" or resp=="10" or resp=="11" or resp=="12" or
resp=="13" or resp=="14" or resp=="15" or resp=="16" or resp=="17" or resp=="18" or
resp=="19" or resp=="20" or resp=="21"):

91

valor=int(resp)
if(valor>=0):
for i in range (0, len(res)):
cursor.execute("SELECT * FROM pages WHERE "+str(listcampo[0])+ " = '
"+str(valor)+" ' " )
encuentra=cursor.fetchall()
aux= str(encuentra[0])
pagina1= aux[6:len(aux)-2]
pagina2= aux[7:len(aux)-2]
for j in range(0, len(listidpages)):
if(listidpages[j]==valor):
if(valor<10):
subprocess.Popen(
'"C:\Archivos
de
programa\Internet
Explorer\IEXPLORE.EXE" -brokerredirect %s' % pagina1 )
if(valor>9):
subprocess.Popen(
'"C:\Archivos
de
programa\Internet
Explorer\IEXPLORE.EXE" -brokerredirect %s' % pagina2 )
self.txm5c.AppendText(usuario+ pregunta+" \n")
self.txm5c.AppendText(bot+ "usted recibira mayor informacion en la pagina
que se abre :D"+" \n")
self.tx4c.SetValue(" ")
else:
self.txm5c.AppendText(usuario+ pregunta+" \n")
self.txm5c.AppendText(bot+ resp+" \n")
self.tx4c.SetValue(" ")
return #end function

def bt6c_VwXEvOnButtonClick(self,event): #init function


#[688]Code event VwX...Don't modify[688]#
#add your code here
usuario="Usuario: "
bot="Bot: "
pregunta=self.tx4c.GetValue()
respuesta= k.respond(pregunta)
resp=unicode(respuesta,"utf-8")
if(resp=="01" or resp=="02" or resp=="03" or resp=="04" or resp=="05" or resp=="06"
or resp=="07" or resp=="08" or resp=="09" or resp=="10" or resp=="11" or resp=="12" or
resp=="13" or resp=="14" or resp=="15" or resp=="16" or resp=="17" or resp=="18" or
resp=="19" or resp=="20" or resp=="21"):
valor=int(resp)
if(valor>=0):
for i in range (0, len(res)):
cursor.execute("SELECT * FROM pages WHERE "+str(listcampo[0])+ " = '
"+str(valor)+" ' " )
encuentra=cursor.fetchall()
aux= str(encuentra[0])
pagina1= aux[6:len(aux)-2]
pagina2= aux[7:len(aux)-2]
for j in range(0, len(listidpages)):
if(listidpages[j]==valor):
if(valor<10):
subprocess.Popen(
'"C:\Archivos
de
programa\Internet
Explorer\IEXPLORE.EXE" -brokerredirect %s' % pagina1 )
if(valor>9):
subprocess.Popen(
'"C:\Archivos
de
programa\Internet
Explorer\IEXPLORE.EXE" -brokerredirect %s' % pagina2 )
self.txm5c.AppendText(usuario+ pregunta+" \n")
self.txm5c.AppendText(bot+ "usted recibira mayor informacion en la pagina que
se abre :D"+" \n")
self.tx4c.SetValue(" ")
else:
self.txm5c.AppendText(usuario+ pregunta+" \n")
self.txm5c.AppendText(bot+ resp+" \n")
self.tx4c.SetValue(" ")
return #end function

92

ANEXO C: CREACIN DE
EJECUTABLE DE LA INTERFAZ
GRFICA
Se tiene que tener instalada la librera py2exe que nos permitir crear un ejecutable de la aplicacin.
Se importan las libreras disutils.core, se importa setup, despus se define como script principal
App.py, posteriormente se le asigna un icono a la aplicacin principal, es decir, una imagen al
archivo ejecutable. En este caso se llama bot.ico, despus se copian los archivos a los cuales pueda
hacer referencia el principal, ver figura 44.

Figura 44. Cdigo para hacer ejecutable

Al terminar esto se procede a abrir el smbolo del sistema (lnea de comandos), figura 45.

Figura 45. Lnea de comandos o smbolo del sistema.

93

Ya que se abri el smbolo del sistema se posiciona en el directorio python25, ver figura 46.

Figura 46. Directorio python25

Estando en la carpeta de python25, que es el lugar donde est guardado el archivo prueba.py, que
contiene el cdigo para hacer un ejecutable del archivo principal llamado App.py y asignarle un
icono. Se tiene que escribir de la siguiente forma para hacer ejecutable el archivo, vase figura 47:
Sintaxis:

Figura 47 .Python prueba.py py2exe (instrucciones que hacen el ejecutable)

Posteriormente se ver en la pantalla negra, como se empaquetan todas las libreras necesarias en
dos carpetas, una que se llama dist y otra que se llama build.

94

Figura 48. Compresin de libreras.

Figura 49. Fin de la compilacin y compresin de libreras.

Despus de que termin el proceso de hacer ejecutable en el directorio Python25 estarn dos
carpetas: build y dist. Las que contienen el archivo ejecutable (.exe, adems de las libreras
empaquetadas), vase figura 50.

Figura 50. Carpetas dist y build.

95

En la siguiente figura se puede observar el contenido de la carpeta build, tiene subcarpetas las cuales
contienen libreras empaquetadas.

Figura 51. Directorio build.

En la figura 52 se puede observar lo que contiene la carpeta dist, en la cual se guarda el archivo
ejecutable del proyecto, adems de las libreras necesarias para funcionar en cualquier otra
computadora.

Figura 52. Directorio dist.

96

You might also like