Anda di halaman 1dari 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 este documento de tesis es producto de mi trabajo original y que no inIringe
los derechos de terceros, tales como derechos de publicacion, derechos de autor, patentes y
similares.
Ademas, declaro que en las citas textuales que he incluido (las cuales aparecen entre comillas) y en
los resumenes que he realizado de publicaciones ajenas, indico explicitamente los datos de los
autores y las publicaciones.
Ademas, en caso de inIraccion de los derechos de terceros derivados de este documento de tesis,
acepto la responsabilidad de la inIraccion y relevo de esta a mi director y codirectores de tesis, asi
como al Instituto Tecnologico de Cd. Madero y sus autoridades.




Mayo 2011, Cd. Madero, Tamps.











C. Jesus Raymundo Dominguez Martinez
DEDICATORIAS
A mi madre por brindarme siempre el apoyo necesario, y dar todo para verme
triunIador, y darme la Iuerza necesaria para querer salir adelante en esta vida, y asi lograr
uno mas de mis objetivos, y a mis hermanos que los quiero mucho por su apoyo.
A mis amigos que me ensearon el signiIicado de la amistad, y que siempre
estuvieron ahi apoyandome 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 dia a dia, por darme las Iuerzas necesarias de seguir adelante y
ayudarme a culminar uno de mis objetivos planteados hace algunos aos.
A mis padres; Rosalia y Jose. A mi hermana y hermano; Abigail y Miguel. A mi
abuelita; Rosalia.
A mi Directora de Tesis la Dra. Maria Lucila Morales Rodriguez por el apoyo y los
consejos que me brindo durante el desarrollo de este proyecto, por tenerme paciencia, y
compartir su conocimiento. Gracias por su dedicacion y por su tiempo.
Mi mas sincero agradecimiento a los miembros del comite tutorial de esta tesis: Dr.
Juan Javier Gonzalez Barbosa, Dra. Laura Cruz Reyes, Ruben Basaez Castro y la Dra. Ma.
Lucila Morales Rodriguez.
Agradezco al Instituto Tecnologico de Ciudad Madero por las Iacilidades
proporcionadas para la realizacion de este proyecto, asi como a los proIesores que
contribuyeron a mi Iormacion academica humana.
Gracias a mis amigos de la ingenieria por la amistad, compaerismo y apoyo
prestado. Por todos los momentos que pase con ellos, en especial a Victoria, Blanca Teresa,
Rosario, y muchos mas que saben que estan incluidos aqui, aunque no este su nombre
muchas gracias por todo.



RESUMEN
Este trabajo de investigacion se origina a partir de un proyecto realizado en la institucion
relacionado con un agente conversacional corporeo, ya que actualmente el uso de los Agentes
Conversacionales Animados ha ido creciendo. Estos suelen ser una herramienta utilizada en ciertas
Iunciones en las cuales pueden servir como guias, maestros, ayudantes, etc. La problematica que
abordamos en este documento, es la implementacion de un agente conversacional capaz de expresar
dialogos creibles en lenguaje natural, expresando en sus dialogos rasgos de personalidad, emociones
y su intensidad. Para la generacion de dialogos creibles, proponemos utilizar la extension 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 dialogos creibles, es
capaz de crear escenarios mas reales para que el aspirante disperse sus dudas con relacion a la
Maestria en Ciencias en Ciencias de la Computacion, manteniendo una conversacion simulada por
el agente conversacional. Para esto se presento una metodologia para organizar y disear la
estructura de los dialogos de un Agente Conversacional Animado capaz de expresar emociones en
su dialogo. Resultando de este trabajo un Asistente Virtual con Dialogo Emocional que proporciona
inIormacion sobre la Maestria en Ciencias en Ciencias de la Computacion 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 Aente Con!ersacional........... 1
1.1." Aente Con!ersacional #ue utili$a AIML para interar procesos de personalidad. ........... "
1.1.% Metodoloa para la simulacin de e&presiones no !erbales de una recepcionista !irtual "
1." Ob'eti!os ............................................................................................................................... %
1.".1 Ob'eti!o (eneral ............................................................................................................. %
1."." Ob'eti!os espec)icos....................................................................................................... %
1.% *roblem+tica ......................................................................................................................... %
1., -usti)icacin........................................................................................................................... %
1.. /iptesis................................................................................................................................ ,
1.0 Alcances 1 Limitaciones ......................................................................................................... ,
1.2 Estructura del documento ..................................................................................................... ,
Captulo ". Concepcin de Aentes Con!ersacionales...................................................................... 0
".1 Aente Con!ersacional .......................................................................................................... 0
".1.1 Caractersticas de los Aentes Con!ersacionales ............................................................. 2
".1." Aplicaciones.................................................................................................................... 2
".1.% Aentes Con!ersacionales Animados .............................................................................. 3
".1., /umanos 4irtuales Crebles ............................................................................................ 5
"." Asistentes 4irtuales Crebles ................................................................................................ 16
".".1 Estado de Arte de los Asistentes 4irtuales..................................................................... 11
"."." 7reas de Aplicacin....................................................................................................... 1%
"."." 8ol de los Asistentes 4irtuales....................................................................................... 1,
".".%. Implementaciones de Asistentes 4irtuales ................................................................... 12
".% Base de Conocimientos de los Aentes Con!ersacionales .................................................... 13
Captulo %. An+lisis de la comunicacin......................................................................................... 15
%.1 Interaccin cara9a9cara ........................................................................................................ 15
%.". An+lisis de la con!ersacin.................................................................................................. "1
%.%. An+lisis del Discurso............................................................................................................ ""
%.,.1. Actos del :abla............................................................................................................. "%
%.,.". ;istemas de Di+loo ..................................................................................................... ",
Captulo ,. *roramacin de di+loo en Aentes Con!ersacionales ............................................... "0
,.1 AIML.................................................................................................................................... "0
,.1.1 Caractersticas............................................................................................................... "2
,.1." Eti#uetas....................................................................................................................... "2
,.1.% Aloritmo de Coincidencia de *atrones......................................................................... %.
,." E&tensin Emocional AIML................................................................................................... %0
,.% *1t:on 1 *1AIML.................................................................................................................. ,6
,.%.1 Caractersticas de *<AIML. ............................................................................................ ,6
,.%." Caractersticas de *1t:on.............................................................................................. ,6
,.%.% M1;=Ldb ...................................................................................................................... ,"
Captulo .. Dise>o de un Asistente 4irtual con Di+loo Emocional ................................................ ,%
..1 Ar#uitectura (eneral ........................................................................................................... ,%
.." Metodoloa a seuir para orani$ar la estructura de los di+loos ....................................... ,0
..% An+lisis de la In)ormacin para orani$ar la estructura de los di+loos................................. .1
..,. 8e#uerimientos del ;istema ............................................................................................... .%
Captulo 0. Caso Aplicati!o? Asistente 4irtual de la Maestra en Ciencias en Ciencias
Computacionales........................................................................................................................... ..
0.1 Caso de Aplicacin............................................................................................................... ..
0." Dise>o del di+loo ............................................................................................................... .0
0.".1 Aplicacin de la Metodoloa ........................................................................................ .0
0."." De)inicin de la Estructura del di+loo .......................................................................... .3
0.".% Caracteri$acin de locuciones ....................................................................................... 06
0."., 8eorani$acin de la base de conocimientos................................................................. 0.
0.% Desarrollo del *rototipo....................................................................................................... 00
Captulo 2. E&perimentacin 1 8esultados ..................................................................................... 20
2.1 Descripcin de la E&perimentacin ...................................................................................... 20
2.1.1. 8esultados de seuir la metodoloa respecto al cdio AIML. ..................................... 20
2.1.". 8esultado de la con!ersacin con el asistente !irtual. .................................................. 36
Captulo 3. Conclusiones 1 traba'os )uturos ................................................................................. 31
3.1 Conclusiones........................................................................................................................ 31
3." Aportaciones ....................................................................................................................... 31
3.% Traba'os @uturos.................................................................................................................. 31
Bibliora)a.................................................................................................................................... 3"
Ane&os .......................................................................................................................................... 3,
Ane&o A? Creacin de Inter)a$ (r+)ica............................................................................................ 3,
Ane&o B? Interacin de la base de conocimientos a la inter)a$ r+)ica.......................................... 56
Ane&o C? Creacin de e'ecutable de la inter)a$ r+)ica................................................................... 5%
LI;TA DE @I(A8A;

@iura 1. Asos de los Asistentes 4irtuales ...................................................................................... 1,
@iura ". E'emplos de Asistentes ;ociales ...................................................................................... 1.
@iura %. E'emplos de Asistentes Educacionales............................................................................. 1.
@iura ,. E'emplos de Asistentes Orientados a ;er!icios ................................................................ 10
@iura .. E'emplos de Asistentes 4irtualesBLunC "616aD.................................................................. 10
@iura 0. Ann asistente !irtual de la aseuradora Aetna................................................................. 12
@iura 2. -enn asistente de AlasEa Airlines ..................................................................................... 12
@iura 3. Ale& asistente de Continental Airlines ............................................................................. 12
@iura 5. Am1 ................................................................................................................................ 13
@iura 16. ;(T ;TA8 del E'ercito de los Estados Anidos.................................................................. 13
@iura 11. ;piEe e&perto !irtual de la Ani!ersidad (on$aa ........................................................... 13
@iura 1". *roceso de Comunicacin b+sica................................................................................... ""
@iura 1%. -erar#ua de Eti#uetas en AIML ..................................................................................... "3
@iura 1,. Estructura propuesta para los arc:i!os AIML de la base de conocimientos. ................... %3
@iura 1.. Ar#uitectura del Asistente 4irtual ................................................................................. ,,
@iura 10. Modulo de (eneracin de locucin del Asistente.......................................................... ,.
@iura 15. Interaccin con el usuario. ............................................................................................ .0
@iura "6. *rototipo )inal ............................................................................................................... 02
@iura "1. Importacin de libreras. ............................................................................................... 05
@iura "". Acceso a la BD painas .................................................................................................. 05
@iura "%. Creacin del ob'eto EC en este caso es como si )uera el cerebro del bot. ....................... 26
@iura ",. Cdio enerado por la :erramienta 4isualF&.............................................................. 26
@iura ".. @uncin preunta. ......................................................................................................... 26
@iura "0. Ob'eto edit te&t............................................................................................................. 21
@iura "2. De)inicin de la )uncin preunta.................................................................................. 21
@iura "3. Cdio para obtener el id de la paina a mostrar........................................................... 2"
@iura "5. Botn En!iar. ................................................................................................................ 2%
@iura %6. Cdio del botn en!iar. ............................................................................................... 2%
@iura %1.9 ;td9startup.&ml ............................................................................................................ 2,
@iura %". Cara de arc:i!os aiml. ................................................................................................. 2,
@iura %%. Inter)a$ r+)ica para simular un bot con!ersacional....................................................... 2.
@iura %,. Interaccin con el botC creado en 4isualF& *1t:on....................................................... 2.
@iura %2 . Eleir color de )ondo del @rame.................................................................................... 3.
@iura %3 . Escribir te&to en una eti#ueta B;tatic Te&tD ................................................................... 30
@iura %5 .Cambiar @uente B@ontD .................................................................................................. 30
@iura ,6. Cambio de te&to en la eti#ueta. .................................................................................... 32
@iura ,1. Insercin de Edit Te&t 1 Edit Te&t Multilnea. ................................................................. 32
@iura ,". Asinar nombre al botn............................................................................................... 33
@iura ,%.ob'eto panel................................................................................................................... 33
@iura ,,. Cdio para :acer e'ecutable........................................................................................ 5%
@iura ,.. Lnea de comandos o smbolo del sistema. .................................................................... 5%
@iura ,0. Directorio p1t:on"....................................................................................................... 5,
@iura ,2 .*1t:on prueba.p1 p1"e&e Binstrucciones #ue :acen el e'ecutableD ................................ 5,
@iura ,3. Compresin de libreras. ............................................................................................... 5.
@iura ,5. @in de la compilacin 1 compresin de libreras............................................................. 5.
@iura .6. Carpetas dist 1 build...................................................................................................... 5.
@iura .1. Directorio build. ............................................................................................................ 50
@iura .". Directorio dist. .............................................................................................................. 50
LI;TA DE TABLA;

Tabla 1. Bot en lnea...................................................................................................................... 1"
Tabla ". Caractersticas de *1t:on................................................................................................. ,1
Tabla %. Etapas de la construccin de la base de conocimientos .................................................... .1
Tabla ,. 8eistros de la BD painas................................................................................................ 03

1

CAPITULO 1.
INTRODUCCIN
En la actualidad el uso de los Agentes Conversacionales Animados ha ido creciendo, ya que son una
herramienta muy util y Iacil de usar para ciertas tareas. Estos pueden Iungir como guias, maestros,
ayudantes, y pueden brindar ayuda en la busqueda de inIormacion sobre un tema, hasta pueden
llegar a mantener una conversacion de cualquier tema en especiIico. Los agentes son entidades
capaces de percibir su entorno, los cuales pueden procesar lo que perciben y tener una reaccion, es
decir una respuesta o actuar en su entorno de manera racional.
En esta tesis, se presenta una metodologia para organizar y disear la estructura de los dialogos de
un Agente Conversacional Animado capaz de expresar emociones en su dialogo. Resultado de este
trabajo se disea e implementa un Asistente Virtual con Dialogo Emocional que proporciona
inIormacion sobre la Maestria en Ciencias en Ciencias de la Computacion del ITCM.
1.1 Antecedentes
Actualmente en la Maestria en Ciencias en Ciencias de la Computacion del ITCM se estan sentando
las bases para el desarrollo de una linea de investigacion enIocada al desarrollo de Interaccion
Hombre-Maquina, usando Agentes Conversacionales Animados. Esto con la Iinalidad de construir
herramientas de simulacion para Iines ludo-educativos y proIesionales, que permitan ensear de una
manera mas eIicaz.
Los Agentes Conversacionales, tienen la Iinalidad de interactuar con el usuario, para realizar tareas
de una Iorma muy natural, para lo cual, no basta con que su apariencia sea muy realista, sino que,
ademas deben comportarse y comunicarse como lo haria un humano (Morales, 2007). A
continuacion, se mencionaran 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 reviso material acerca de la sintaxis y estructura del lenguaje
AIML, el cual permite deIinir una serie de patrones y respuestas, para asi crear una base de
conocimientos, la cual contiene categorias ordenadas por contextos. Se creo una base conocimientos
"

para que el agente contestara preguntas acerca de la Maestria en Ciencias en Ciencias de la
Computacion, mostrandole al usuario una pagina Web con la inIormacion pertinente acerca de lo
que le pregunte el usuario. Ademas se creo una BD para almacenar links de paginas con
inIormacion de las diIerentes secciones de la pagina Web de la Maestria en Ciencias en Ciencias de
la Computacion para mostrarlas como inIormacion complementaria.
En este trabajo se programo un prototipo de una interIaz graIica con una imagen de un personaje
virtual, con el Iin de probar el Iuncionamiento de la base de conocimientos, la cual representa
emociones a traves del dialogo.
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 creo una propuesta de agente corporeo conversacional (ECA,
Embodied Conversational Agents) que implementa emociones en el proceso de gestion de dialogo
con un usuario. Este trabajo incorporo emociones en un ECA, extendiendo el lenguaje AIML,
incorporandole etiquetas que toman en cuenta la intensidad y los tipos de emociones universales.
Para incorporar las emociones se implemento el modelo emocional de (Morales, 2007),
desarrollandose un Framework que permite la interrelacion 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 & Angel, 2009), se busco Iormalizar las pautas para aumentar la credibilidad
de las expresiones de los personajes por medio de la implementacion de un automata Iinito
determinista que permitiria la seleccion de expresiones de interaccion social y emocional no
verbales asociadas al contexto.
Para este trabajo se realizo un estudio acerca del analisis de la comunicacion, interaccion,
conversacion, expresion y discurso. Para lo cual, se analizaron videos para la comprension de las
gesticulaciones.
%

1.2 Objetivos
1.2.1 Objetivo General
DeIinir una metodologia para organizar la estructura de los dialogos de un agente conversacional
que exprese emociones, y asi disear un asistente virtual con dialogo emocional.
1.2.2 Objetivos especficos
Crear una arquitectura general para el desarrollo de Asistentes Virtuales con dialogo
emocional que puedan interactuar con el usuario a traves de una interIaz graIica.
Establecer las consideraciones que se deben tomar en cuenta para la organizacion de la
estructura de los dialogos utilizando la extension emocional del Lenguaje AIML para
asi disear un asistente virtual que exprese un comportamiento emocional en su dialogo.
Disear un personaje (asistente virtual) en iClone PRO.V4.1, que sea capaz de
representar emociones por medio de expresiones Iaciales.
Crear un prototipo de la arquitectura para disear el dialogo del asistente virtual en el
contexto de la Maestria en Ciencias en Ciencias de la Computacion del ITCM.
1.3 Problemtica
La problematica en el desarrollo de asistentes virtuales con dialogo emocional radica en como
representar emociones por medio del dialogo, ademas de sus expresiones Iaciales.
Para este problema, se pretende analizar las conversaciones, identiIicar patrones en los dialogos en
los que se puedan representar emociones, de acuerdo a la conversacion con el usuario. Se evaluaran
las conversaciones, de tal Iorma que se pueda estructurar la base de conocimiento del dialogo y
saber, que tipo de dialogos representan cierta emocion.
1.4 Justificacin
Para elaborar Iormas de interacciones por medio de una computadora, mas naturales y herramientas
de simulacion que permitan una instruccion eIicaz, es necesario que el usuario del sistema este
sumergido en una situacion virtual similar a la realidad. Para ello, no es suIiciente reunir imagenes y
sonidos realistas, es tambien importante que los personajes virtuales maniIiesten comportamientos
emocionales y de interaccion social mediante expresiones no verbales (Coca & Angel, 2009),
(Morales, 2007). El disear un asistente virtual con dialogo emocional, a la semejanza del ser
,

humano como parte de las interIaces entre hombre-maquina dara un enIoque mas interesante a estas.
Ademas, de poder mantener una conversacion en la cual se podra dar la inIormacion pertinente al
usuario. Para lo cual se establecera una metodologia estandar para la organizacion de la estructura
de los dialogos que representen emociones. Ademas, se diseara un asistente virtual, el cual podra
expresar Iacialmente emociones.
1.5 Hiptesis
En esta tesis se busca Iacilitar la representacion de emociones de un agente conversacional por
medio del dialogo. Existen una serie de problematicas para lograrlo, ya que una misma Irase puede
ser expresada transmitiendo diIerentes emociones, asi como una emocion puede expresarse usando
diIerentes Irases. Basandose en dicha aIirmacion, se quiere determinar si es posible disear una
metodologia para el diseo de las bases de conocimiento de AIML, considerando la expresion de
emociones de acuerdo al contexto y asi Iacilitar el diseo de un asistente virtual capaz de expresar
dialogo emocional.
1.6 Alcances y Limitaciones
El alcance de este proyecto esta limitado a deIinir una metodologia para la organizacion de la
estructura del dialogo emocional utilizando la extension del lenguaje AIML desarrollada por
(Florencia, 2010).
El caso aplicativo de esta metodologia, sera un asistente virtual, que proporcione inIormacion sobre
la Maestria en Ciencias en Ciencias de la Computacion del ITCM.
El diseo del asistente virtual sera en el soItware ICLONE4 PRO, y la implementacion se creara con
Python, haciendo uso de una base de datos creada en MySQL, por lo que se requerira que este
instalado este manejador de Base de Datos.
1.7 Estructura del documento
En esta seccion, se presenta la Iorma en que esta organizada esta tesis:
Capitulo 1. Introduccion, en este capitulo se presenta de manera clara y precisa lo relacionado a la
tesis, para que el lector se interese en seguir leyendo sobre el tema.
Capitulo 2. Concepcion de Agentes Conversacionales, en este capitulo se presenta la teoria para
entender conceptos relacionados con agentes conversacionales.
.

Capitulo 3. Analisis de la comunicacion, en este capitulo se presenta teoria para Iundamentar los
actos involucrados en la comunicacion.
Capitulo 4. Programacion de dialogo en Agentes Conversacionales, en este apartado se presenta la
literatura relacionada con la programacion de la base de conocimientos.
Capitulo 5. Diseo de un Asistente Virtual con Dialogo Emocional, en este apartado se describe
como disear un asistente virtual.
Capitulo 6. Caso Aplicativo: Asistente Virtual de la Maestria en Ciencias en Ciencias
Computacionales, en esta seccion se presenta el desarrollo del caso aplicativo en esta Maestria.
Capitulo 7. Experimentacion y Resultados, en este capitulo se presentan la experimentacion y los
resultados llevados a cabo.
Capitulo 8. Conclusiones y Trabajos Futuros, se presenta la conclusion del trabajo, se mencionan
los posibles trabajos Iuturos que permiten darle seguimiento a este proyecto.




0

CAPITULO 2.
CONCEPCIN DE AGENTES
CONVERSACIONALES
En este capitulo se presentan los conceptos relacionados con el proceso de construccion de agentes
conversacionales, su interaccion social, y sus dialogos que estan contenidos en la base de
conocimientos, ademas de la tecnologia necesaria para llevar a cabo su desarrollo.
2.1 Agente Conversacional
Segun (Marcelo & P, 2007) hacen mencion que el termino agente Iue empleado por primera vez por
Minsky en su obra "The Society oI Mind".

Segun (Nwana, 1996) dice que un Agente es 'aquel componente de software o hardware que es
capa: de actuar en forma precisa para llevar a cabo una tarea en beneficio de su usuario.
Los agentes de soItware son sistemas inIormaticos que se puede encontrar en multiples plataIormas,
y que usando tecnicas de resolucion de problemas, ejecutan acciones de Iorma Ilexible y autonoma,
para alcanzar sus objetivos, lo cual los puede llevar a cambiar su entorno (Monroy, 2008).
Existen diIerentes tipos de agentes, los agentes conversacionales son uno de ellos. El termino
'agente conversacional esta compuesto por dos palabras 'agente y 'conversacional. La palabra
agente tiene su raiz antes del siglo XV y signiIica: 'el que actua y del Latin 'agentem
(nominativo: Agens, el genero: Agentis) (Lun, 2010). La palabra 'conversacional signiIica, que
tiene la caracteristica de una conversacion o del lenguaje coloquial empleado en ella
(wordreIerence, 2005).
Un agente conversacional es una entidad viviente artiIicial diseada para tener conversaciones con
seres humanos reales. Estas conversaciones se pueden expresar via texto, de Iorma oral o incluso
una conversacion no verbal. Los agentes conversacionales tambien son conocidos como chatbots
(Lun, 2010), pueden encontrarse en pantallas, mundos virtuales, pero tambien en el mundo real, a
2

traves de proyecciones (por ejemplo con proyeccion holograIica) o Iisicamente hablando y
respondiendo como marionetas, juguetes y robots (Lun, 2010b).
En esta tesis se deIinira una metodologia para organizar la estructura de los dialogos de un agente
conversacional que exprese emociones, y asi disear un asistente virtual con dialogo emocional. Los
agentes conversacionales deben tener una base de conocimientos, mediante la cual podran contestar
y hacer preguntas al usuario.
2.1.1 Caractersticas de los Agentes Conversacionales
Los agentes conversacionales tienen las siguientes caracteristicas, las cuales hacen estos que se
distingan de los diIerentes tipos de agentes:
Autonomia: 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 Comunicacion.
o Cooperacion.
o Negociacion.
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 mas cercano a nuestra
manera de ver el mundo, porque muchas organizaciones se deIinen con un conjunto de roles y
relaciones entre ellos, aun asi, es necesario disponer de metodos y herramientas para el desarrollo de
los sistemas basados en agente (Monroy, 2008).
2.1.2 Aplicaciones
Ahora en dia, los agentes conversacionales son de mucha utilidad, tal que se pueden encontrar en
diversas areas, realizando Iunciones como:
Wizards, en aplicaciones de escritorio.
Asistentes, en sitios web de comercio electronico, negocios y otros dominios.
3

Tutores, en Educacion, (por ejemplo. para aprender y practicar un idioma) (Kopp, 2009).
Herramienta de entretenimiento.
Herramienta de recuperacion de inIormacion.
2.1.3 Agentes Conversacionales Animados
Existen diIerentes tipos de Agentes Conversacionales, uno de ellos son los ECA`s (Embodied
Conversational Agents por sus siglas en ingles), en espaol se han conocidos como Agentes
Conversacionales Corporeos o Agentes Conversacionales Animados.
Estos Agentes son interIaces graIicas con la capacidad de utilizar modos de comunicacion verbal y
no verbal para interactuar con usuarios en ambientes virtuales. Estos agentes algunas veces son solo
un rostro parlante animado, pueden desplegar expresiones Iaciales simples, pueden utilizar sintesis
de voz con algun tipo de sincronizacion labial, y algunas veces tienen soIisticadas representaciones
graIicas en 3D con movimientos corporales y expresiones Iaciales complejos.
Segun (Cassell, Tim Bickmore, Campbell, Vilhjalmsson, & 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 Iunciones conversacionales (por ejemplo turno de la palabra, retroalimentacion,
etc.)
Dar seales que indiquen el estado de la conversacion asi como contribuir con nuevas
proposiciones.
Para desarrollar un ECA con las habilidades antes descritas, se requieren varios componentes, que
en base a su Iuncion en el Ilujo de la inIormacion de la interaccion con los usuarios, se pueden
dividir en las siguientes categorias:
Fase de entrada. Los ECA`s deben estar preparados para recibir diIerentes tipos de
entrada de inIormacion 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 Iaciales
no se ve creible, por lo tanto se debe incorporar emociones, personalidad, cultura y
5

modelos de rol social en un ECA para lograr credibilidad en la comunicacion con los
usuarios.
Fase de salida. Es necesario que el ECA posea un cuerpo expresivo, tanto en los canales
de comunicacion verbal como en los no verbales. En lugar de robots y personajes
animados, los ECA`s son preIeridos por los investigadores por su libertad de expresion.
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 preIieren mas a
las que los halagan. Morkes, Kernal & Nass demostraron que agentes computacionales que utilizan
el humor son clasiIicados como amables, competentes y cooperativas Moon demostro que una
computadora que utiliza estrategias de reciprocidad y proIundidad en la conversacion con el usuario,
son clasiIicadas como mas aIectivas y el usuario llega a comprar un producto de la computadora. En
un paradigma diIerente, Mark y Becker estudiaron como las convenciones sociales pueden aIectar
las relaciones interpersonales entre los usuarios que se encuentren reunidos en un ciberespacio.
Estos son ejemplos de tecnicas de persuasion empleadas con la Iinalidad de cambiar las creencias,
sentimientos y pensamientos de los usuarios (Cassell & Timothy Bickmore, 2002).
2.1.4 Humanos Virtuales Crebles
Construir ECA`s es una tarea multidisciplinaria, ya que reune problemas tradicionales de la
inteligencia artiIicial con las ciencias sociales. Los ECA`s deben actuar y reaccionar en sus
ambientes simulados, basandose en las disciplinas de razonamiento automatico y planeacion. Para
mantener una conversacion, se debe explotar la gama de investigaciones realizadas sobre lenguaje
natural, reconocimiento de voz y comprension del lenguaje natural para la generacion de sintesis del
habla, asi como visualmente tener un cuerpo humano con movimientos reales, tal como los de un ser
humano real.
La representacion visual mas comun de los ECA`s son los personajes humanoides virtuales que son
representaciones digitales en un ambiente virtual. La construccion de personajes virtuales creibles
requiere un enIoque multidisciplinario que tome en cuenta las cuestiones psicologicas, sociologicas
y IilosoIicas. La consideracion 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 interaccion puede enriquecer la
interaccion humano-computadora, por lo que hace mas agradable y aumenta la motivacion del
usuario (Gratch, et al., 2002).
16

Algunas de las caracteristicas de los humanos virtuales son: utilizar sintesis de voz con algun tipo de
sincronizacion labial y tener soIisticadas representaciones graIicas en 3D con movimientos
corporales y expresiones Iaciales complejos.
Hay varias ideas acerca de lo que les puede dar credibilidad a los personajes virtuales. Segun (Bates,
1994). Un personaje creible se deIine, como un personaje que puede proporcionar la ilusion de vida
y permite al publico suspender su incredulidad. El grado de credibilidad de su ilusion se encuentra
en el acoplamiento y reproduccion de dos dimensiones principales: AntropomorIismo y el
comportamiento. La realizacion permite mas multimodalidad, por lo tanto haciendo la interaccion
mas natural y robusta.
De acuerdo a unos comentarios sobre la apariencia Iisica y especialmente la Ialta de Iluidez de las
animaciones de agentes, tambien pueden causar menor credibilidad. Por lo tanto la apariencia Iisica
y los Iactores sociales tienen que tomarse en cuenta en Iorma conjunta para crear agentes mas
creibles capaces de mantener una interaccion con los usuarios.
2.2 Asistentes Virtuales Crebles
Un Asistente Virtual es una herramienta inIormatica, que bajo la apariencia de un personaje virtual,
es capaz de poner atencion a los visitantes de un determinado sitio web. Es, por lo tanto, una
herramienta Iundamental para reducir los costes de atencion, mientras que se incrementa la calidad
de esta atencion. Los Asistentes Virtuales permiten responder, de Iorma automatica, las necesidades
de inIormacion de sus usuarios. De este modo podra tanto aportar en todo momento, la inIormacion
que estos precisan, como tambien encauzar la conversacion de la Iorma mas provechosa para su
organizacion o institucion (dTinI, S.L., 2008).
Los asistentes virtuales creibles son una mezcla de agentes autonomos y personajes por
computadora basados en las artes, como lo son la animacion, peliculas o literatura. Son una
extension, tanto en la investigacion de agentes autonomos en la ciencia de la computacion y la idea
de los asistentes virtuales creibles de las historias tradicionales. Los asistentes virtuales creibles son
una version de los agentes autonomos.
Aunque los agentes creibles estan basados en los personajes creibles, estos son diIerentes en que
ambos son interactivos y basados en computadora. El hecho que son basados en computadora
signiIica 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 pelicula o en teatro. Para un agente creible su
personalidad debe ser creada completamente. Estos siempre son una abstraccion de la realidad,
11

conservando solo los elementos de realismo que contribuyen a transmitir la personalidad. Los
asistentes virtuales creibles son personajes interactivos, quienes parecen estar vivos, expresan
emociones y personalidad (Loyall, Bates, & Mitchell, 1997).
Segun (Loyall, Bates, & Mitchell, 1997) los requerimientos para los asistentes virtuales creibles son
que deben mostrar: personalidad, emociones, automotivacion, capacidad de adaptacion, relaciones
sociales, expresion de consistencia e ilusion de vida.
2.2.1 Estado de Arte de los Asistentes Virtuales
'Eliza Iue el primer agente conversacional desarrollado, podia seguir una conversacion sobre un
tema concreto. Era un chatbot que dominaba el tema de la psicologia, Iue creado en 1980 por Joseph
Weizenbaum, con el objetivo de sustituir a un psicologo real en sus conversaciones con los
pacientes. Eliza, sirvio de inspiracion para casi todos los chatbots actuales, ya que todos se basan
principalmente en la creacion de patrones que simulen el comportamiento humano. PARRY, otro
bot que tenia como objetivo, simular a un paciente paranoico. A este bot se le evaluo en sus
conversaciones con tres pacientes que realmente tenian dicha enIermedad y enIrentandolos a un
medico de verdad.
En 1995, el Dr. Richard Wallace escribio A.L.I.C.E., en su primera version, uso SETL, un lenguaje
basado en logica matematica, pero se quedo en un experimento. A partir de este primer intento se
desarrollo el 'Program A que Iue la primera version de A.L.I.C.E., esta version se desarrollo
usando AIML y Java. El siguiente paso de este bot Iue el 'Program B en el que ya intervinieron
alrededor de 300 desarrolladores y donde se sustituyo AIML evoluciono a algo parecido a XML, y
Iue con esta version con la que se gano el Loebner Prize en 2000. A partir de aqui 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 tecnologia Java2). A partir de aqui se creo, en 2001 'The A.L.I.C.E. AI Foundation
para distribuir, promocionar, desarrollar y mantenimiento de Alicebot y de la tecnologia AIML.
Otro trabajo a destacar lo encontramos en TinyMud, un entorno ideal para probar bots de charla ya
que consistia en una especie de mundo virtual donde los usuarios hablaban sobre sus asuntos y
problemas. La prueba consistia en que el bot se conIundiera con los usuarios reales. El bot Julia es
una evolucion de un bot que se probo 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 conversacion es el Rock &
Roll.
1"

Otros bots que se han desarrollado son algunos como 'Theresa cuyo tema de conversacion es la
musica y la cultura griega, 'Mimic que aprende mientras hablas con el, 'Brian que gano el tercer
puesto en el Loebner Prize de 1998 y otros muchos.
La mayoria de los bots estan diseados para hablar en ingles. A pesar de la supremacia de los
chatbots en idioma ingles, tambien 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 conversacion. Sus conversaciones
tienen algunos toques de humor y los autores han conseguido dotarle de una personalidad deIinida.
Otro chatbot escrito en espaol es Zebal. La principal caracteristica de Zebal, es su gran capacidad
para interactuar con el exterior mediante una conexion al IRC lo que le permite aprender de
interlocutores humanos que no saben que estan hablando con un bot. Ademas, 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 inIormacion de Internet. Por el contrario, Zebal no sigue
conversaciones tan bien como el resto de Bots.
Por ultimo 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 caracter
general, es decir que no estan especializados en ningun tema en particular, mientras que otros si lo
estan. En la Tabla 1 se muestra una relacion de algunos de los Bots que se encuentran en linea, en la
cual se especiIica la tematica que tratan, su idioma y su Url (Marcelo & P, 2007).
Nombre Tema Idioma Url
Eliza Psicologia Ingles http://www.maniIestation.com/neurotoys/eliza.php3
A.L.I.C.E. General Ingles http://www.alicebot.net
Zebal General Espaol http://www.espasoIt.net/Iichas/zebal.shtm
Julia General Ingles http://www.lazytd.com/lti/julia/
Erin Rock & Roll Ingles http://www.extempo.com/webbar/index.html
Mitbolel General Ingles http://www.romahi.com/yazann/Mitbolel/Mitbolel.html
Mimic General Ingles http://www.thespoon.com/mimic/
Brian General Ingles http://www.strout.net/inIo/science/ai/brian/
Dr. Abuse Psicologia Espaol http://www.ctv.es/USERS/jboronat/drabuse.html
Theresa Musica Ingles http://www.oz.com/ov/agents/mainindex.html
Eloisa General Italiano http://web.tin.it/eloisa/
Alice-espX Relaciones AIectivas Espaol http://aurora.esi.uem.es/ivinas
Eva Empresa indisys Espaol http://www.indisys.es/
Ines Ibanesto Espaol http://asistentevirtual.ibanesto.com/ibanesto/ibanesto.jsp
Tabla 1. Bot en linea
1%

2.2.2 reas de Aplicacin
Las areas de aplicacion de los asistentes virtuales pueden ser: Industrial, Comercial, en la
Educacion, en la Medicina, etc. De las cuales, se pueden destacar dos areas de aplicacion, la
industrial y la comercial.
Por otro lado, tambien esta 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 gestion de inIormacion el agente puede
Iiltrar correos, noticias o recopilar inIormacion que se encuentre en la red. Tambien
puede realizar tareas como almacenar, aprender, y manejar las preIerencias del usuario,
asi como sus modiIicaciones. Podria tambien ser una agenda personal, como si se
contara con una secretaria o asistente personal.
Comercio electrnico: En este caso la tecnologia se aplicaria para crear el entorno
virtual en donde se llevaran a cabo transacciones como compras, ventas de algun
producto o hacer busquedas de productos para comprobar la existencia o precios de estos
automaticamente.
Monitorizacin: En esta aplicacion el agente da inIormacion al usuario acerca de lo que
sucede, si se actualiza inIormacion, elimina o se mueve. Tambien indican al usuario que
pagina o paginas han sido modiIicadas, y desde cuando sucedio.
Mediador de diferentes fuentes de informacin: En esta aplicacion aun se esta
trabajando actualmente, para que los agentes operen entre diIerentes Iuentes de
inIormacion independientemente del sistema en que se haya creado.
Otra area de interes son las aplicaciones mdicas, donde la idea es disponer de agentes que realicen
de Iorma autonoma tareas que pueden ser automatizadas en un hospital, como por ejemplo: la
monitorizacion de pacientes en cuidados intensivos, estos sistemas se encargarian de seguir el
tratamiento de un paciente controlando todos los aspectos relativos a la enIermedad que tenga el
mismo.
Tambien es posible encontrar aplicaciones dentro del area del entretenimiento como pueden ser
fuegos (la aplicacion de esta tecnologia en juegos permite disponer de juegos mas soIisticados, con
caracteristicas inteligentes donde se pueden incorporar personajes virtuales que pueden Iuncionar de
Iorma casi autonoma) y el teatro interactivo v 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).
1,







Figura 1. Usos de los Asistentes Virtuales
2.2.2 Rol de los Asistentes Virtuales
De Iorma 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 continuacion.
Asistentes Virtuales Sociales: Su proposito es conversar libremente acerca de algo con cualquier
usuario, asi como lo haria con un amigo. Son usados en linea para entretenimiento. Ver Iigura 2.
Asistentes Virtuales Educacionales: Su proposito es ayudar a aprender acerca de algo, como un
nuevo lenguaje, historia, geograIia, etc. Son usados en las escuelas. Ver Iigura 3.
Asistentes Virtuales Orientados a Servicios: Estos generalmente son utilizados por empresas que
oIrecen servicios en linea. Su proposito es ayudar a los clientes a encontrar el camino en el sitio
web, asi como contestar preguntas acerca de sus productos y servicios. Ver Iigura 4 (Jenkins, 2010).

Finanzas, banca y
seguros
9 *ortales Feb
)inancieros con
asistencia A4I como
ua
9 Ca'eros autom+ticos.
A1uda a personas con
problemas de
accesibilidad.
9 Banca AMT;.
Consulta de saldos 1
cuentas mediante
asistente !irtual en
m!il.

Seguridad, industria y
logstica
9 ;istemas de ;4
B;peaEer 4eri)icationD
o de :uella de !o$.
@unciones de
autenti)icacinG
identi)icacin.
9 *ortales Feb de
lostica del estado de
las entreas .*reuntas
tHcnicas.

AA, PP, Sanidad y
Turismo
9 Iioscos autoser!icio
ua en aeropuertosC
estacionesC etc.
J *aneles in)ormati!os
centros mHdicosC
aeropuertos.
9 Doctor !irtual. *ortal
Feb de atencin
sanitariaC cita pre!ia.

Telecomunicaciones
9 Aplicaciones de
ser!icios tele)nicos
%(.
9 Campa>as
publicitarias MM; en
m!il. ;er!icio
contestador.
9 In)ormacin TDT.

Ocio, utilidades y enseanza

9 *aneles in)ormati!os en comerciosC 9 4ideo'ueos de )ideli$acin. Acercan a usuarios. No e9(eneration a
8ecomendador de productos. Empresa.
9 *ortales Feb de e9learnin *ro)esor !irtual.

1.




Figura . !"em#los de Asistentes Sociales



Figura $. !"em#los de Asistentes !ducacionales
10




Figura %. !"em#los de Asistentes Orientados a Ser&icios


Figura '. !"em#los de Asistentes Virtuales()un, *1*a+
El rol de los asistentes es muy importante, ya que puede un simple asistente que proporcione
inIormacion, aunque tambien podria realizar tareas mas complejas, si esta programado para
realizarlas.
A continuacion una descripcion de algunos roles importantes:
Representacin virtual. Se comunican en lenguaje natural y suplen a los comerciales.
Como asistentes personales. Nos ayudan como lo haria un ayudante.
12

Negociador en mercados electrnicos. Localiza una subasta en Internet, aprende como
va la oIerta y realiza una compra por nosotros.
Agente de bsqueda de informacin o rastreador. Rastrean en las redes de
ordenadores en busca de inIormacion solicitada. Son parametrizables por el usuario
aprenden de sus habitos, rastrean la red e inIorman por correo electronico de novedades
que consideran pueden ser de interes para el usuario.
Agente secreto o espa. Monitorizan una pagina Web identiIicada previamente por el
usuario e inIorman cuando se producen cambios en dicha pagina (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, ArtiIicial Solutions Iberia, The Reuse Company, INBENTA, Intuit
MyProSeries, CAJA MADRID y Next IT. A continuacion se presentan algunos de los asistentes
virtuales realizados Next IT (Next IT Corporation, 2010):
Aetna compaia aseguradora de salud de los Estados Unidos lanzo su asistente Ann a
principios del ao 2010. Lo que ha ocasionado una reduccion del 29 en las llamadas a
su servicio de asistencia tecnica de los clientes.
Figura ,. Ann asistente &irtual de la aseguradora Aetna

Jenn, es un experto virtual del servicio a clientes de Alaska Airlines, que entro en
operacion desde Iebrero de 2008.
Figura -. .enn asistente de Alas/a Airlines

Alex, la experta virtual de Continental Airlines inicio en Julio de 2009. En su primer mes
respondio a mas de un millon de preguntas, y actualmente atiende a mas de 60.000
preguntas por dia
Figura 0. Ale1 asistente de 2ontinental Airlines

13

Amv, la experta virtual para Comunicaciones Shaw, ayuda a mejorar la interaccion en su
sitio web el cual anteriormente Iue percibido como torpe y con servicios diIiciles de
ubicar.
Figura 3. Amy

Lan:ado en 2006, el SGT STAR ha aumentado la duracion de la sesion promedio y ha
respondido a mas de 4 millones de preguntas en el sitio web del Ejercito de los Estados
Unidos.
Figura 1*. S4T STA5 del !"ercito de los !stados Unidos

Con el Iin de ayudar al alumnado, estudiantes, y proporcionar inIormacion relevante del
sitio web de la escuela, la Universidad Gonzaga colaboro con Next IT y en 2004 puso
en marcha su experto virtual 'Spike.
Figura 11. S#i/e e1#erto &irtual de la Uni&ersidad 4onzaga

2.3 Base de Conocimientos de los Agentes Conversacionales
Para poder mantener un dialogo con coherencia es necesario que el agente cuente con una base de
conocimientos. Esta puede estar Iormada por una serie de archivos .aiml los cuales contienen una
gran cantidad de reglas que deIinen la respuesta del bot en base a la inIormacion de entrada.
Las bases de conocimientos deben manejar diIerentes niveles de conocimiento, y tener una
estructura organizada por contextos, puede ser deIinida para un tema en particular o se puede hacer
general.
El diseo de una base de conocimiento que apoye la generacion de un dialogo requiere de realizar
analisis de la comunicacion cara a cara que se realiza en el contexto que se desea simular.
En los siguientes capitulos se presentan los Iundamentos teoricos necesarios para disear e
implementar una base de datos de conocimiento para un agente conversacional.


15

CAPITULO 3.
ANLISIS DE LA
COMUNICACIN

El analisis de la comunicacion se basa en dos enIoques principales: El analisis del discurso que tiene
por Iundamento la teoria de los actos del habla y el analisis conversacional que se basa en la
Etnometodologia, que tiene como objetivo identiIicar las normas y principios que sustentan el
Iuncionamiento de las conversaciones y los diIerentes tipos de intercambios que se producen en la
interaccion comunicativa (Morales, 2007). Este capitulo permite comprender el backgroud de la
estructura detras del diseo de la conversacion de un asistente virtual.
3.1 Interaccin cara-a-cara
La conversacion cara-a-cara involucra la expresion de comportamientos no-verbal y de lenguaje.
Los comportamientos durante la conversacion no solo Iuncionan en paralelo, sino interdependiente.
Una conversacion cara-a-cara es una actividad en la que las sincronizacion entre los participantes
parece ocurrir de manera natural. Esto se ve Iacilitado por el numero de canales o modalidades que
tenemos a nuestra disposicion para transmitir inIormacion. Estos canales incluyen las palabras, la
entonacion de la voz, gestos, expresion Iacial, la postura, la orientacion y la mirada.
La coordinacion de los comportamientos conversacionales no verbales y verbales para humanos
virtuales requiere la reunion de los desaIios interrelacionados. Como el habla, la entonacion, la
mirada y los movimientos de la cabeza, que le dan sentido en conjunto, los patrones de su co-
ocurrencia en la conversacion, y que tipos de objetivos son alcanzados por los diIerentes canales,
todos son igualmente importantes para comprender la construccion de humanos virtuales. Los
comportamientos no verbales y del habla no siempre maniIiestan la misma inIormacion, sino lo que
ellos transmiten es siempre compatible virtualmente. En muchos casos, las diIerentes modalidades
sirven para reIorzar de una a otra gracias al signiIicado de la redundancia. En otros casos, los
"6

mensajes de los atributos de la pragmatica y la semantica se distribuyen a traves de las modalidades.
La compatibilidad de signiIicado entre los gestos y el discurso destituye la interaccion de palabras y
graIicos en las presentaciones multimodales.
Los comportamientos no verbales y verbales, las arquitecturas computacionales para humanos
virtuales deben controlar tanto las estructuras proposicional y de interaccion.
La construccion de un humano virtual que pueda participar eIicazmente en una conversacion cara a
cara requiere una arquitectura de control con las siguientes caracteristicas: E/S multimodal,
retroalimentacion en tiempo real, entendimiento y sintesis de la inIormacion de interaccion y
proposicional, asi como tambien un modelo de Iuncion conversacional (Gratch, et al., 2002).
La tendencia en interaccion Hombre-Maquina (IHM) se enIoca en el uso de tecnicas que permiten
que el usuario se comunique, y asi relacionarse, con las computadoras de manera mas natural. El
uso de lenguaje natural no basta, se necesitan aadir diversos aspectos emocionales, es decir,
interaccion emocional para que al tener una conversacion con el usuario se mejore la comunicacion.
Las emociones son parte de la interaccion social y de nuestra capacidad para tomar decisiones.
Con el Iin de entender el papel del comportamiento emocional en una interaccion Maquina-Humano
es necesario entender los aspectos Iundamentales de la emocion misma (Pedro Branco, 2003). La
teoria cognitiva de la emocion es la mas adaptada en la computacion, en particular la teoria de la
valoracion de la emocion.
De acuerdo con esta teoria, los resultados de las respuestas emocionales a partir de una evaluacion
dinamica de las necesidades, creencias, objetivos, inquietudes, demandas ambientales que puedan
resultar, consciente o inconscientemente. Uno de los modelos mas implementados es el modelo
OCC que proporciona un esquema de clasiIicacion de etiquetas de emocion basadas en una reaccion
de valencia para eventos y objetos en los objetivos del agente, normas y actitudes.
La interaccion social, es el Ienomeno basico mediante el cual se establece la inIluencia social que
recibe todo individuo.
El dialogo es la Iorma mas simple de la interaccion humana en situaciones de cooperacion. Segun
(Morales, 2007) el dialogo puede verse como un juego, en el que cada participante juega disparos
con los actos del habla para lograr su objetivo. El dialogo es el resultado de las interacciones
(acciones y operaciones) para resolver subobjetivos. Los dialogos se suelen describir en tres Iases:
la primera es el comienzo de la conversacion, la segunda Iase es el intercambio de turnos para
hablar y la tercera Iinaliza la conversacion.2.5 Les
"1

3.2. Anlisis de la conversacin
El analisis de la conversacion se interesa por analizar la accion humana, entendida como un sistema
que permite que las personas actuen en multiples ocasiones de la vida cotidiana de Iorma regular,
utilizando 'metodos que les permiten dar sentido a las estructuras sociales.
Se considera que el habla es un vehiculo para la accion social y tambien uno de los principales
medios con que se construye y se mantiene mutuamente la organizacion social en la interaccion
entre las personas.
Segun (Goodwin & Duranti, AO), proponen cuatro dimensiones que abarcan los elementos no
lingisticos presentados en una conversacion:
La localizacion
Marco socioespacial (escena psicosocial)
Deixis (de persona, de tiempo, de lugar, textual y social).
El comportamiento no verbal
Oral (vocalizaciones, Kinesia, proxemia)
Escrito (soporte, Iormato, tipograIia, lo iconico).
La lengua como contexto
o marcas de cohesion (relaciones. Ionicas, conexion...)
o generos discursivos
o (proto), tipos textual/es
o variedad/es lingistica/s
o intertextualidad.
El contexto extrasituacional aclara la estructura de las presuposiciones (conocimiento
previo) guiones (secuencias cognitivas) Asi pues, tanto lo lingistico como lo no
lingistico 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 conversacion.
El analisis de la conversacion nos permite darnos cuenta de como las Iormas, tanto lingisticas
como no lingisticas en la interaccion social crean y dan sentido a nuestras actividades cotidianas.
Teniendo como objetivo el poder entender como se construyen, se negocian y reproducen
determinados papeles sociales. A traves del analisis conversacional y partiendo de las Iormas
""

lingisticas en uso, al analizar como se va modulando una conversacion con elementos no
lingisticos, se crea sentido y se descubren los signos sociales que emergen en una conversacion.
3.3. Anlisis del Discurso
Tanto el discurso hablado como el discurso escrito (texto), se consideran hoy en dia como una
Iorma de interaccion contextualmente situada.
Si queremos entender en su totalidad los mensajes que nos transmiten, es necesario hacer un analisis
de lo que nos dicen, es decir, tomar cada parte de esos mensajes y saber cual es su signiIicado,
conocer que se obtiene de la union de todo lo que una persona hablo o escribio de cualquier tema;
de esa manera tendremos la certeza de conocer el trasIondo de lo que se esta diciendo. Por otra
parte, si nos quedamos unicamente con la transmision de inIormacion1, sin comprender a Iondo lo
que se nos esta comunicando, solamente obtendremos lo explicito del mensaje, (lo que escuchamos,
lo que leemos) dejando de lado lo implicito (lo que esta entre lineas, lo que no se dice claramente)
del mensaje, por lo que nos quedamos con la mitad de la inIormacion (V)

Figura 1. Proceso de 2omunicaci6n b7sica
En un proceso de comunicacion basico, un emisor transmite mensajes (actos del habla) por medio de
un canal, ya sea escrito, hablado, o por medio de simbolos (escritura) que son recibidos por un
interlocutor o receptor, quien descodiIica los mensajes enviados, es decir los interpreta, los entiende
y los procesa para despues retroalimentar a quien transmite la inIormacion, esto se evidencia en la
Iigura 12.
"%

3.4.1. Actos del habla
La teoria 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 reIieren 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, identiIicandose 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 intencion o
Iinalidad que se tiene al decir algo, el acto perlocutivo es el eIecto que se produce en el oyente por
haber dicho algo.
Austin Iue el primer autor en presentar la idea del acto de habla como una unidad Iuncional en la
comunicacion. Austin, menciona que, cuando una persona dice o enuncia algo, lo dicho puede tener
dos signiIicados: el signiIicado literal, o locutivo, y el signiIicado ilocutivo, para el, el decir es
actuar.
Searle, se baso en las ideas de Austin y analizando los actos ilocutivos, clasiIico los actos de habla
en cinco grupos:
Encomendativos (promesas o amenazas).Ej.: La recepcionista te llamara para hacer una
cita.
Declarativos (enunciados que se usan para declarar un cambio en el estado de las cosas).
Ej.: Le declaro el cirujano jeIe del hospital.
Representativos (aIirmaciones, reclamaciones e inIormes). Ej.: Sus niveles de
colesterol son altos.
Expresivos (disculpas, quejas y otras expresiones de sentimientos y actitudes hacia
algo). Ej.: No me gusta como me trato el Dr. Agnew.
Directivos (sugerencias, peticiones y mandados). Ej.: Tumbese encima de la cama
(directo); Por que no se sienta encima de la cama? (Indirecto). (dicho no es lo que
creen que has dicho, Jacobson 2001)
La teoria de los actos del habla permite caracterizar las locuciones que seran expresadas por un
agente conversacional como parte de un sistema de dialogo.
",

3.4.2. Sistemas de Dilogo
Los sistemas de dialogo, tambien conocidos como sistemas conversacionales, se han convertido hoy
en dia en una herramienta esencial para el desarrollo de servicios de atencion al cliente, banca
teleIonica o de venta de productos.
La tendencia actual de esta tecnologia este orientada a desarrollar sistemas para dominios de
aplicacion restringidos, los cuales permiten utilizar inIormacion acerca de las posibles palabras,
tipos de Irases e intenciones de los usuarios. Los sistemas de dialogo desarrollados han sido
aplicados principalmente a tareas como las siguientes: inIormacion y reserva de viajes en avion o en
tren, inIormacion meteorologica, control de terminales teleIonicos, compra de productos, ayuda a la
comunicacion entre personas que hablan distintos idiomas, acceso al correo electronico o mensajes
teleIonicos, etc.
Algunos de los principales problemas que se deben resolver para lograr que estos sistemas sean mas
"amigables" y eIectivos para los usuarios son los siguientes:
1. Reconocimiento robusto del habla.
2. Extraccion de la inIormacion semantica de las Irases.
3. Gestin del dilogo. El exito de un sistema de dialogo depende mucho del cuidado que se tenga
con el diseo de la interaccion, considerar que esta permita cubrir las limitantes usuales de la
tecnologia del reconocimiento del habla. Supuestamente esta tecnologia no esta garantizada por
completo, asi que se necesita mejorar los metodos empleados para prevenir, detectar, y recuperar los
errores que se puedan producir durante la interaccion.
Normalmente un gestor de dialogo cumple cuatro Iunciones principales:
Actualizar el contexto del dialogo
Proveer de contexto en el que basara las interpretaciones.
Coordinar el resto de los modulos.
Decidir que inIormacion dar al usuario y cuando hacerlo. Para que asi de inIormacion
pertinente.
Por lo tanto, el gestor de dialogo puede consultar distintas Iuentes de inIormacion, tales
como resultados del procesamiento del lenguaje natural, resultados de consultas a bases
de datos, conocimiento acerca del dominio de aplicacion, conocimiento acerca de los
usuarios y la historia del dialogo. La complejidad dependera de la tarea y Ilexibilidad e
iniciativa del dialogo.
".

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

CAPITULO 4.
PROGRAMACIN DE
DILOGO EN AGENTES
CONVERSACIONALES
En este capitulo se describe el lenguaje AIML para poder entender el Iuncionamiento de cada una
de las etiquetas que se utilizan en este, y de esta Iorma programar la base de conocimientos del
asistente virtual la cual permitira dar respuestas al usuario, y asi establecer un dialogo.
4.1 AIML
Para poder mantener un dialogo de texto coherente con el usuario en lenguaje natural, en el modulo
de gestion del dialogo de esta investigacion, se hara uso del lenguaje AIML.
AIML (Artificial Intelligence Markup Language, Lenguafe) es un lenguaje compatible con XML
que es Iacil de aprender, y nos permite crear una base de conocimientos. Esta base de conocimiento
utiliza un conjunto de categorias con las cuales un agente conversacional podra dar respuesta a
preguntas, asociandoles patrones (personalizados o enIocadas a un tema en especiIico).
AIML Iue desarrollado por la comunidad de soItware libre durante el periodo 1995-2000. AIML
describe una clase de objetos de datos llamados objetos AIML. Los objetos AIML estan Iormados
por unidades llamadas categorias y temas. La unidad basica de conocimiento en AIML son las
categorias indicadas con la etiqueta <category>. Cada categoria se compone de una pregunta de
entrada, una respuesta de salida y un contexto opcional. La pregunta o estimulo se llama patron y se
seala con la etiqueta <pattern>, el patron debe de estar en mayusculas y debe coincidir con lo que
un usuario pueda dar como entrada. . La respuesta se llama plantilla y esta especiIicada por la
etiqueta <template> (Bush, 2001).
"2

4.1.1 Caractersticas
A continuacion se presentan las caracteristicas que tiene el lenguaje AIML, como lo es su
simplicidad y su Ilexibilidad, en particular este lenguaje tiene dos problemas que se presentan a
continuacion el primero de ellos es la rigidez, en la exactitud que tiene, es decir el usuario debe
ingresar exactamente la Irase que se tiene previamente en la base de conocimientos. Solo permite el
uso de comodines * y en una parte de la Irase y no soporta ninguna variante de estos, como podria
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 identica de las Irases ('Hola), y 'HOLA ` relaciona cualquier Irase de dos o mas
palabras iniciando con 'Hola (Ej. 'Hola como estas?). El segundo problema que tiene AIML, es
que ningun interprete cumple con todo lo que esta en la especiIicacion. Segun AIML deberia poder
ejecutar sentencias java script o invocar scripts de otro lenguaje como puede ser BASH, incluso
HTML. Sin embargo estas Iuncionalidades no estan implementadas. |por que no aiml|
4.1.2 Etiquetas
Esta seccion describe las etiquetas de AIML mas utilizadas en la composicion de un archivo .aiml
que Iorma parte de la base de conocimiento de un agente conversacional. En la Iigura 13 se muestra
la jerarquia 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 basicas que se utilizan en la construccion 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 (patron), sus respuestas y un contexto opcional
(etiquetas that y topic). Los patrones se deIinen por la etiqueta <pattern>, las posibles respuestas al
patron estan deIinidas por la etiqueta <template>. A continuacion se describen las etiquetas
ilustradas en la Iigura 13.
"3


Figura 1$. .erar8ua de !ti8uetas en A9:)
Dependiendo de la conIiguracion de los template~ y pattern~, se pueden considerar que hay 3
tipos de categorias: Atomicas, DeIault y Recursivas.
Las Categoras Atmicas son las que tienen patrones atomicos, por ejemplo; el patron que no
contenga '* o ', son las mas Iaciles 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 patron tiene un '* o '. La ultima categoria
deIault es la que tiene un pattern~*pattern~, la cual se relaciona con cualquier entrada.
Esas respuestas deIault son a menudo llamadas por que generalmente se componen de preguntas
diseadas dirigidas a enIocar al cliente de temas que conoce. Categorias predeterminadas muestran
;category<
;#attern<
;tem#late<
;srai<
;to#ic<
=aiml
;=category<
;=to#ic<
;t>at< ;=t>at<
;=srai<
;=random<
. . . Cateoras 8elacionadas a un Tema. . .
;=#attern<
;random<
;tem#late<
;aiml<
"5

que la escritura AIML es un arte y una ciencia. Las categorias deIault mas comunes tienen patrones
combinados con unas pocas palabras y un simbolo comodin (Ringate, Wallace, Taylon, Baer, &
Daniels, 2001).
Por ejemplo la categoria 'QUE ES *?, es un claro ejemplo de una categoria deIault.
<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
simpliIicar el lenguaje o a identiIicar patrones de sinonimos. Muchas entradas de sinonimos tienen
la misma respuesta. Esto se logra con la etiqueta recursiva <srai> (Ringate, Wallace, Taylon, Baer,
& Daniels, 2001). Un ejemplo de esta categoria podria ser un saludo como el siguiente 'BUEN DIA,
'BUEN DIA *, estas Irases pueden tener varias Iormas de sinonimos en la Iorma 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 categorias 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 simpliIicacion o reduccion de patrones de entrada complejos es otra aplicacion comun de
categorias recursivas. La pregunta 'Que es X podria ser preguntada de muchas Iormas diIerentes:
%6

"Sabes tu que es X?", "Hablame sobre X", "Describe X", "Que puedes tu decirme sobre X?", y "X
es que?" son algunos ejemplos. Usualmente se intenta almacenar conocimiento en la manera mas
concisa o comun. La Iuncion srai~ asigna a todas estas Iormas a la Iorma basica:

<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 categoria transIorma 'Sabes que es un circulo? a 'Que es un circulo?, y
entonces encuentra la mejor relacion para la entrada transIormada. Otra aplicacion muy comun de
las categorias recursiva es lo que podria denominarse "analisis", excepto que AIML no analiza el
lenguaje natural. Un mejor termino podria ser "particion", porque estas categorias AIML
descomponen la entrada en dos (o mas) partes, y luego se combinan las respuestas y nuevamente se
juntan. Si una Irase comienza con "Hola..." no importa lo que viene despues de la palabra en primer
lugar, en el sentido de que el robot puede responder a "Hola" y lo que esta despues de "..." es
independiente.
Ejemplo 'Hola mi nombre es Carlos y 'Hola como estas son bastante diIerentes, pero muestran
como la entrada puede ser partida en dos partes. A continuacion se muestran unos ejemplos que
sirven para ilustrar la idea que se plantea.
Lleva a cabo la particion 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>


%1

Con el Iin de especiIicar el 'estimulo o 'entrada del usuario, se hace uso de la etiqueta pattern~.
El patron es una expresion en un lenguaje Iormal que se compone de:
Palabras de lenguaje natural en MAYUSCULAS.
El simbolo '* el cual relaciona cualquier relacion de una o mas palabras.
El simbolo ' el cual es lo mismo que un '* excepto que si viene despues de la Z en
orden lexicograIico.
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 patron(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 diIerencias entre el patron 'HOLA y
'HOLA *. Como se puede observar en la seccion 4.1.2.1 se muestra la sintaxis de un patron.
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 decidio que un tema sea un topic, se pueden crear
categorias las cuales podrian contener ciertas respuestas especiIicas sobre el topic.
Esto mantiene una conversacion de actualidad y aun se tiene la habilidad para moverse de un tema a
otro. Esta etiqueta tambien permite tener patrones duplicados en diIerentes contextos (temas)
permitiendo tener diIerentes respuestas para el mismo patron de entrada dependiendo del tema.
Por ejemplo, primordial el patron '* de los distintos temas. Hay la etiqueta gettopic/~ para
reIerirse al tema en tus declaraciones de salida (template).
Las etiquetas topic se colocan alrededor de una o mas categorias que serian asociadas con el topic
deIinido. 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 Irase para encontrar una respuesta,
las categorias deIinidas en las etiquetas topic~ se relacionan con el tema actual, si no hay una
relacion con la categoria deIinida en el tema actual, entonces cualquiera de las categorias que no
estan deIinidas en las etiquetas topic son buscadas. Como se menciono anteriormente, podemos
crear categorias con Irases o patrones identicos pattern~ en diIerentes temas, cada uno con
distintas repuestas que necesite el tema actual. Por ejemplo, si el bot Iuera colocado en un sitio Web
y una persona hablara acerca de perros una entrada muy util podria ser desplegada.

%"


<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 habra muchas entradas en un tema, pero en este ejemplo, simpliIicamos las entradas
por deIault '*. En este caso, si la persona dice algo que el bot no tiene una respuesta especiIica
programada, podria aun responder inteligentemente en el tema actual. (Nota: Todo esto es
suponiendo que no son categorias que podria deIinir el tema actual 'PERROS). Aunque tambien
los temas pueden solamente tener un nombre, pueden contener los caracteres comodines '* o '
como un patron. Asimismo, si bien la continuidad de los criterios del patron, solamente un caracter
es permitido por nombre. Esto permitiria temas como 'CUIDANDO PERROS o 'ASEANDO
PERROS puede ser tambien en el tema 'PERROS. Al igual que los patrones, los temas mas
especiIicos ganarian preIerencia sobre el tema comodin.
Esto signiIica que si el tema es actualmente 'ASEANDO PERROS y aun no hay una respuesta
programada para la entrada en la categoria, entonces 'PERROS seria veriIicada.
Etiquetas <that></that>
La etiqueta de AIML that~ se reIiere a la respuesta anterior del bot. Hay dos Iormas de la etiqueta
that~: una Iorma pareja that~./that~ aparecen en una categoria, y una Iorma atomica that/~
siempre apareciendo en una plantilla de respuesta. A menudo podemos usar that/~ para encontrar
una oportunidad para crear una categoria con that~/that~. Una de las respuestas para la entrada
'QUE TAL es that/~ 'Genial, como te va.





%%

A continuacion se presenta un ejemplo de como 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 analisis conversacional no presupone que sabemos cuando el usuario diria 'Que tal;
mas bien se observa que regresa a identiIicar casos donde aparecio uno del siguiente 'Como estas
tu de las declaraciones del bot. Teniendo identiIicado el punto de la conversacion, el diseador del
bot crea una nueva categoria.
Etiquetas <template></template>
Una Template es la respuesta o parte de la salida de una categoria AIML. El caso mas simple se
compone de un sencillo texto sin marcar. AIML provee Iunciones de marcado para conIeccionar las
respuestas para cada entrada individual y de usuario. La Iuncion de marcado getname/~ por
ejemplo inserta el nombre del cliente en la respuesta. El template puede llamar al patron relacionado
recursivamente usando las etiquetas sr~ y srai~. Muchos templates son reducciones simples
simbolicas que una Irase de mapa para Iormar a otro, por ejemplo 'Sabes que es X? transIormamos
a 'Que es X con la categoria:

<category>
<pattern>SABES QUE ES *</pattern>
<template><srai>QUE ES<star/> </srai></template>
</category>


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




%,

En el siguiente Iragmento de codigo, se aprecia como 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 codigo permite ilustrar la Iorma en que se asigna un topic, dentro de un template. Cabe
mencionar que las categorias asociadas al topic pueden ser diIerentes o iguales a las que se tiene en
la base de conocimientos aiml. Como se puede apreciar las categorias del topic asignado se
encierran entre la etiqueta topic y tambien tiene su etiqueta de cierre como cualquier otra.

<topic name="MAESTRIA">
<category>
<pattern>QUE ES?</pattern>
<template>Es un programa de estudios que est dedicado a la
Investigacin.</template>
</category>

<category>
<pattern>QUE ES</pattern>
<template>Es un programa de estudios que esta dedicado a la Investigacin
.</template>
</category>
</topic>


Este lenguaje permite tener en una categoria un solo patron, aunque dato curioso puedes tener varias
respuestas, como salida.
Etiquetas <srai></srai> o <sr></sr>
Esta etiqueta tiene muchos acronimos ('Inteligencia ArtiIicial de Reduccion Simbolica,
'Inteligencia ArtiIicial de Recursividad Simple, 'Inteligencia ArtiIicial de Estimulo-Respuesta).
La etiqueta srai~ siempre aparece en la respuesta, pero siempre trae como respuesta lo que se
encuentre en el patron que se escribe entre esta. El bot busca en su base de conocimientos y
%.

encuentra la mejor respuesta. La unica parte diIicil es que la respuesta puede estar contenida dentro
de mas etiquetas srai~. La mejor Iorma de entender la accion 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 dara la respuesta que esta contenida en el
template del patron 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 coleccion de nodos llamados Nodemappers. Esos Nodemappers
controlan las ramas de cada nodo. Las ramas son palabras simples o simbolos (comodines). El
numero de hojas graIo es igual al numero de categorias, y cada nodo hoja contiene una etiqueta
template~. Los pasos del algoritmo de coincidencia de patrones son:
VeriIicar si el Nodemapper contiene el simbolo ', si es asi, buscar en el subgraIo
correspondiente. Intentar todos los suIijos siguientes 'X para ver si uno coincide. Si no
se encuentra coincidencia, intentar;
VeriIicar si el Nodemapper contiene el simbolo 'X, si es asi, buscar en el subgraIo
correspondiente, utilizando la cola de la entrada (el suIijo de la entrada con 'X
removido). Si no se encuentra coincidencia, intentar:
VeriIicar si el Nodemapper contiene el simbolo '*, si es asi, buscar en el subgraIo
correspondiente. Intentar todos los suIijos siguientes 'X para ver si uno coincide. Si no
se encuentra coincidencia, regresar al padre de este nodo, y colocar 'X en el inicio de la
entrada.
Para terminar, si la entrada es nula (es decir, no hay mas palabras) y el Nodemapper
contiene la palabra template~, indica que se ha encontrado una coincidencia. Detener la
busqueda y regresar el nodo coincidente.
Si el Nodemapper contiene el simbolo '* y es un nodo hoja, entonces el algoritmo
garantiza encontrar una coincidencia.
%0

En cada nodo, el simbolo ' tiene prioridad primero, luego una palabra y posteriormente, el
simbolo '*. Los patrones son ordenados de manera en que el simbolo ' se encuentre antes de
cualquier palabra y el simbolo '* posterior a cualquier palabra. La coincidencia se realiza palabra
por palabra, no categoria por categoria. El algoritmo combina el patron de entrada y las etiquetas
that~ y topic~ en un solo patron: PATTERN that~ THAT topic~ TOPIC y trata los tokens
that~ y topic~ como palabras ordinarias. El algoritmo es una version limitada de una busqueda en
proIundidad y esta basado en los algoritmos backtracking.
4.2 Extensin Emocional AIML
En esta seccion se presenta la estructura de la extension de AIML desarrollada por (Florencia, 2010)
que integra etiquetas que permiten caracterizar la expresion de rasgos de personalidad, emocion y su
intensidad en los actos del habla de una base de conocimientos AIML. En la Iigura 14 se presenta la
nueva estructura general de archivos los AIML que integran las nuevas etiquetas que permiten
expresar emociones en el dialogo.
Esta estructura considera el contexto y 3 atributos del modelo emocional de Morales |Morales,
2007| (personalidad, emocion y su intensidad) para Iiltrar los posibles dialogos emocionales
contenidos dentro de la etiqueta template~.
El atributo contexto se agrego a la etiqueta template~. En este atributo se especiIica el contexto del
tema conversacional asociado al patron de entrada del usuario. Dentro de la etiqueta template~, se
agrego la etiqueta personalidad~, cuya Iinalidad es Iiltrar los dialogos emocionales de acuerdo a la
personalidad especiIicada, es decir, si la personalidad indicada es Personalidad 2, los dialogos
emocionales de Personalidad 1 no son considerados en el proceso de seleccion de dialogos de
AIML.
Para cada personalidad, se agregaron las etiquetas emocionales de enojo~, alegria~, tristeza~,
miedo~, placer~, angustia~, sorpresa~, resignacion~ y neutro~. Dependiendo de la emocion
actual determinada por el modulo emocional, estas etiquetas emocionales son utilizadas para Iiltrar
los dialogos de respuesta al usuario, es decir, si la emocion actual Iuera 'enojo, solo los dialogos
correspondientes a esta emocion serian considerados en el proceso de seleccion de dialogos de
AIML.
Asociada a cada etiqueta de la emocion se agrega la etiqueta intensidad~, el uso de este atributo
permite asociar una Intensidad de la emocion al texto de respuesta proporcionado por la etiqueta
Template. La intensidad se deIine como un numero que esta en el rango de 0-9, el cual representaria
%2

que tan Iuerte es la emocion. 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 modulo emocional. La escala de valores oscila de 0 x 9,
donde x es el valor de la intensidad actual.

%3

Category
Pattern /Pattern
Template
/Template
/Category
Enojo
/Enojo
Intensidad 0-3 /Intensidad
Intensidad 3-6 /Intensidad
Intensidad 6-10 /Intensidad
Alegria
/Alegria
Intensidad 0-3 /Intensidad
Intensidad 3-6 /Intensidad
Intensidad 6-10 /Intensidad
Miedo
/Miedo
Intensidad 0-3 /Intensidad
Intensidad 3-6 /Intensidad
Intensidad 6-10 /Intensidad
Tristeza
/Tristeza
Intensidad 0-3 /Intensidad
Intensidad 3-6 /Intensidad
Intensidad 6-10 /Intensidad
Neutro
/ Neutro Intensidad 0-10 /Intensidad
Patron
Texto Respuesta
Texto Respuesta
Texto Respuesta
Texto Respuesta
Texto Respuesta
Texto Respuesta
Texto Respuesta
Texto Respuesta
Texto Respuesta
Texto Respuesta
Texto Respuesta
Texto Respuesta
Texto Respuesta
Sorpresa
/Sorpresa
Intensidad 0-3 /Intensidad
Intensidad 3-6 /Intensidad
Intensidad 6-10 /Intensidad
Placer
/Placer
Intensidad 0-3 /Intensidad
Intensidad 3-6 /Intensidad
Intensidad 6-10 /Intensidad
Resignacion
/Resignacion
Intensidad 0-3 /Intensidad
Intensidad 3-6 /Intensidad
Intensidad 6-10 /Intensidad
Angustia
/Angustia
Intensidad 0-3 /Intensidad
Intensidad 3-6 /Intensidad
Intensidad 6-10 /Intensidad
Texto Respuesta
Texto Respuesta
Texto Respuesta
Texto Respuesta
Texto Respuesta
Texto Respuesta
Texto Respuesta
Texto Respuesta
Texto Respuesta
Texto Respuesta
Texto Respuesta
Texto Respuesta

Figura 1%. !structura #ro#uesta #ara los arc>i&os A9:) de la base de conocimientos.



%5

A continuacion se presenta un Iragmento de codigo 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 codigo de ejemplo anterior, la Iuncionalidad 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 especiIicar el nombre de un archivo de imagen, el cual es enviado a la
interIaz principal del Asistente Virtual al recuperar la respuesta asociada al patron de entrada del
usuario. Esto da la posibilidad de presentar imagenes estaticas 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 emocion y a la intensidad a las que se quiere representar. En los atributos
intensidadMin e intensidadMax, se especiIica el valor inicial y Iinal de un rango de intensidad.
,6

Entonces, el Iiltrado de los dialogos depende del valor de la etiqueta de la personalidad, de la
emocion actual y de la intensidad de la emocion actual.

4.3 Python y PyAIML
Python es el lenguaje de programacion orientado a objetos que se utilizara para implementar la
interIaz graIica del asistente virtual, el cual cuenta con una libreria externa que sirve para interpretar
archivos aiml, que son los que se crean para la base de conocimientos. A continuacion se describe el
lenguaje.
Python es un lenguaje de Scripting independiente de plataIorma y orientado a objetos, preparado
para realizar cualquier tipo de programa, desde aplicaciones Windows a servidores de red o incluso,
paginas Web. Es un lenguaje interpretado, lo que signiIica que no se necesita compilar el codigo
Iuente para poder ejecutarlo, lo que oIrece ventajas como la rapidez de desarrollo e inconvenientes
como una menor velocidad (Alvarez, 2003).
En las siguientes secciones se presentan las caracteristicas del lenguaje y de la libreria PyAIML.
4.3.1 Caractersticas de PYAIML.
Esta libreria es un complemento de clases escritas 100 en Python, las cuales permiten la
interpretacion de los archivos escritos en el lenguaje aiml. Es libre.
4.3.2 Caractersticas de Python
En los ultimos aos el lenguaje se ha hecho muy popular, gracias a varias razones como: 1) la
cantidad de librerias que contiene, tipos de datos y Iunciones 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 plataIormas en las que podemos
desarrollar, como Unix, Windows, OS/2, Mac, y otros, 4) ademas, Python es gratuito, incluso para
propositos empresariales.



A continuacion se describen sus caracteristicas mas sobresalientes (Alvarez, 2003):
,1

Proposito general Con el se pueden crear todo tipo de programas. No es un lenguaje
creado especiIicamente para la Web, aunque entre sus posibilidades si
se encuentra el desarrollo de paginas.
MultiplataIorma

Hay versiones disponibles de Python en muchos sistemas
inIormaticos distintos. Originalmente se desarrollo para Unix, Aunque
cualquier sistema es compatible con el lenguaje siempre y cuando
exista un interprete programado para el.
Interpretado

Quiere decir que no se debe compilar el codigo antes de su ejecucion.
En realidad si que se realiza una compilacion, pero esta se realiza de
manera transparente para el programador. En ciertos casos, cuando se
ejecuta por primera vez un codigo, se producen unos bytecodes que se
guardan en el sistema y que sirven para acelerar la compilacion
implicita que realiza el interprete cada vez que se ejecuta el mismo
codigo.
Interactivo

Python dispone de un interprete por linea 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 ejecucion de porciones de codigo
rapidamente.
Orientado a
Objetos
La programacion orientada a objetos esta soportada en Python y
oIrece en muchos casos una manera sencilla de crear programas con
componentes reutilizables.
Funciones y
librerias

Dispone de muchas Iunciones incorporadas en el propio lenguaje,
para el tratamiento de Strings, numeros, archivos, etc. Ademas,
existen muchas librerias que podemos importar en los programas para
tratar temas especiIicos como la programacion de ventanas o sistemas
en red o cosas tan interesantes como crear archivos comprimidos en
.zip.
Tabla . 2aractersticas de Pyt>on
Python se puede programar en consola o de Iorma graIica. Para la modalidad graIica existen varios
IDE`s como los siguientes: Boa Constructor, VisualWx, PyDev, OpenKomodo, Eric, PIDA, SPE,
WingIDE, PyScripter.
,"

En este caso se utilizara el IDE VisualWx para Python. VisualWx pretende ser la ultima herramienta
RAD diseada para C, Python, Perl, Ruby, lua y wxWidgets. Algunas de sus caracteristicas se
mencionan a continuacion:
Diseador de varios Irames.
Visualwx genera codigo 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 conexion y gestion de bases de datos (DBMS). Un DBMS es uno de los cuales es
una coleccion de numerosas rutinas de soItware interrelacionadas, cada una de las cuales es
responsable de alguna tarea especiIica. Para su uso se necesita descargar la libreria 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 interIaz popular para un servidor de base de datos para Python. Los objetivos de
diseo son: Cumple con la version 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) .



,%

CAPITULO 5.
DISEO DE UN ASISTENTE
VIRTUAL CON DILOGO
EMOCIONAL
En el presente capitulo se describira la arquitectura general para el diseo de un asistente virtual con
dialogo emocional, sus requerimientos, y la metodologia para organizar la estructura de los
dialogos. La estructura de la base conocimiento que el agente utiliza para construir el dialogo hara
uso del lenguaje aiml, ya que para crear una base de conocimientos como ya se habia mencionado
con anterioridad, se puede utilizar el lenguaje AIML, y para crear la interIaz graIica se utilizo, el
lenguaje Python.
5.1 Arquitectura General
En esta seccion se presenta la arquitectura general del asistente virtual, la cual se puede apreciar en
la Iigura 15. El diseo de un asistente virtual requiere de contar con los modulos de gestion del
dialogo, Modulo de generacion de locucion del asistente, los cuales cuentan con entradas y salidas.
El modulo de gestion del dialogo recibe inIormacion como entradas de la Base de Datos AIML,
Locucion del usuario (pregunta), Base de Datos MySQL. El modulo de generacion de locucion del
asistente recibe como entradas inIormacion del interprete PyAIML, tambien recibe inIormacion de
la base de datos MySQL.
Estas son tres las etapas del proceso del dialogo:
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 conversacion.
,,

Bsqueda: Es el proceso donde se busca un patron relacionado con la entrada y asi
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 Iigura 15, queda ilustrado que el modulo de Generacion de locucion del asistente, recibe como
entrada una locucion 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 genere una salida que sera mostrada como
una respuesta al usuario.
Es importante, destacar que lo relevante del Modulo de Generacion de locucion del Asistente, es
que este sirve para generar las respuestas del asistente, es decir, la gestion del dialogo.



Figura 1'. Ar8uitectura del Asistente Virtual

Modulo de (eneracin
de locucin del Asistente
Base de Datos AIML Base de Datos M1;=L
Locucin del usuario
Gestin del Dilogo
Locucin del asistente !irtual
Inter)a$
r+)ica
,.

A continuacion se presenta nuestra propuesta de estructuracion del Modulo de Generacion de
locuciones del Asistente, el cual genera respuestas a partir de decisiones, las cuales seran explicadas
a continuacion.

Figura 1,. :odulo de 4eneraci6n de locuci6n del Asistente

Los componentes involucrados son: la base de conocimientos en AIML, la base de Datos en
MySQL, la interIaz graIica en Python.
La relacion que existe entre estos componentes es la siguiente, debido a que la interIaz graIica
creada en Python podria hacer uso de la base de conocimientos en AIML, asi como tambien podria
utilizar la Base de Datos que se creo en MySQL, esto con el Iin 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 seria un caso directo en la interaccion del asistente virtual con el
usuario.
Un tipo de interaccion indirecta es el siguiente caso, en el que un usuario interactua con el modulo
de generacion de locucion del asistente virtual sin saberlo, y el solo se percata que el asistente le
Modulo de Generacin de locucin del Asistente
Interprete
*1AIML
Base de datos AIML
Locucin del usuario
8espuesta 8espuesta
KK
NLmero no
si
8espuesta
BLs#ueda de linE
BidpaeD en BD
Base de datos M1;=L
Consulta del linE
en Internet
LinE
Musted recibir+ m+s
In)ormacin en la p+ina NebO
Locucin del
asistente !irtual
Inter)a$
(r+)ica
,0

esta respondiendo, asi que, a continuacion se describira el proceso interno de la interaccion entre la
interIaz y las bases de conocimientos, por lo tanto, es valido decir que el usuario da como entrada
una palabra o una Irase, es decir una locucion, y lo que hace el interprete de AIML para Python,
llamado PyAIML, realice una busqueda en la base de conocimientos, y asi genere una respuesta y se
la presente al usuario, pero en el caso que el resultado ser igual a un numero (idpage), este hara una
consulta internamente en una base de datos, el cual buscara un link relacionado a la entrada o
pregunta, y al encontrar el link relacionado con la respuesta, se abrira una pagina web, que de igual
Iorma se relaciona con la respuesta. Asi mismo, en la interIaz graIica se manda a imprimir un
mensaje como el siguiente: 'usted recibira mas inIormacion en la pagina 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 dara 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 dialogo con el que se piensa trabajar. Y asi llegar a crear estructuras
de dialogos concretas. En esta seccion se presenta la descripcion del proceso involucrado en la
organizacion de la estructura de los dialogos, desde el analisis hasta la creacion.
Para crear la estructura de un dialogo sobre un tema en especiIico, se deben crear unidades de
conocimiento con esta inIormacion, la cual se tendran que almacenar como una base de
conocimientos.
,2

La inIormacion podria provenir de analisis de video Iilmaciones de las situaciones reales que se
desean simular. El trabajar con Iilmaciones permite Iacilitar el analisis de la conversacion y del
discurso que permitiran generar una base de los Actos de Habla de la interaccion.
Ademas de inIormacion sobre un tema en especiIico, tambien se podrian pensar temas relacionados
con los usuarios, como lo pueden ser la Iorma en que se expresa al saludar, es decir, saludos,
reIerentes a su persona como nombre, apariencia Iisica, edad, estado de animo, acerca de la Iamilia,
genero, proIesion, nacionalidad, entre otras cosas relacionadas con el usuario. Estos ayudan a crear e
identiIicar contextos, y los roles de los interlocutores.
Nosotros tenemos la idea que la gestion del dialogo basada en AIML, y la estructura puede tratarse
como un diseo, con esto a partir de la teoria de inteligencia artiIicial llamada CBR (Case-Based
Resasoning), se contextualiza, y en este caso el razonamiento basado en casos vendrian siendo las
categorias de AIML. Esta tecnica encuentra el patron que mejor encaja con cada entrada, y asi la
categoria enlaza la plantilla de respuesta directamente al patron del estimulo, y regresa una salida
que satisIaga la entrada. A continuacion se describen algunas condiciones de esta tecnica.
Se estructura una tarea de Iorma clara; Es decir, que se tenga bien deIinido el tema o
Iuncionalidad.
Se introducen Irases pre-establecidas por parte del programador o botmaster; Las Irases
o preguntas que puede hacer el usuario solamente estaran obligadas a tratar sobre la
Maestria en Ciencias en Ciencias de la Computacion.
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.








,3

A continuacion se presentan las etapas de abstraccion con un diagrama, el cual posteriormente sera
descrito:





En el diagrama anterior se puede observar a grandes rasgos, los pasos que se deben seguir para crear
una base de conocimientos, en la Iigura 17, se presenta el Ilujo de una Iorma muy general, y ya en la
Iigura 18 se muestra el proceso mas detallado o especiIico.
Al utilizar la Iigura 17, como guia se tiene ha aplicado la metodologia de la organizacion de la
estructura de dialogos. A continuacion se empezaran a describir cada una de las etapas del diagrama
especiIico.
Establecer
objetivo
Inicio
Recabar informacin relacionada
con el tema de conversacin.
Desarrollar la base de
conocimientos

@in
Definir atributos de
conversacin
Anlisis de la informacin
recabada
Figura 1-. ?iagrama de @lu"o de la metodologa
en @orma general.
,5

Establecer objetivo
En esta parte se pretende que se deIinan o establezcan claramente el objetivo y la Iuncion del
asistente virtual. Esto inIluenciara tanto la construccion de la Base de Conocimiento como el
diseo de la InterIaz GraIica que lo acompaara.

Definir atributos de la conversacin
En este proceso se quiere que se tengan deIinidos los atributos como lo pueden ser: las
emociones, rangos de intensidad y el tema de conversacion, y asi asignarselos al asistente virtual.

Recabar informacin relacionada con el tema de conversacin.

Este es un proceso de recoleccion de la inIormacion necesaria para posteriormente crear los
dialogos de respuestas, etc. que se relacione con el tema de conversacion. Para que al momento
de querer utilizar la inIormacion sea coherente. Por ejemplo analisis de la conversacion y del
discurso de video Iilmaciones.

Anlisis de la Informacin recabada.

Al usar la inIormacion recabada se pueden inIerir contextos, crear categorias de acuerdo a la
inIormacion recopilada, y asi determinar dialogos de respuestas, con los cuales se podran escribir
Irases o palabras de manera adecuada que expresen emociones, las cuales seran respuestas a
preguntas por parte del usuario.

Desarrollo de la base de conocimientos.

En este proceso se ve involucrada la programacion de categorias en el lenguaje aiml, los cuales se
utilizan para crear una base de conocimientos. La programacion de categorias, permite darle la
Iuncionalidad al cerebro del asistente virtual, presentando algunas preguntas para conocer al
usuario, y otras que estan diseadas para hablar sobre el tema de interes.
La estructura de la base de conocimientos del asistente virtual, debe estar construida de tal
manera que permita ingresar a modiIicarla, actualizarla y recuperar el conocimiento de la Iorma
mas sencilla posible.


.6

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

Establecer
objetivo
Establecer funcin
Definir las emociones y
rangos de intensidad
Definir el tema de
conversacin

Inicio
Recabar informacin relacionada
con el tema de conversacin.

Determinar
Contextos.
Hacer categoras con la
informacin recopilada
Determinar los dilogos
de respuestas
!scribir las @rases o
#alabras adecuadamente
e1#resando emociones
?esarrollar la base de
conocimientos
@in
@iura 13. Diarama de )lu'o
para desarrollar una base de
conocimientos en )orma
espec)ica.
.1

5.3 Anlisis de la Informacin para organizar la estructura de los
dilogos
Las siguientes son las etapas a considerar para analizar la inIormacion que permita el diseo y
construccion de la Base de Conocimientos.
ETAPAS DESCRIPCION
1 IdentiIicar cual es la Iinalidad de la interaccion y las posibles preguntas que se deben
responder.
2 Determinar quienes seran los posibles usuarios del asistente virtual.
3 IdentiIicar las relaciones entre el tema y el usuario, para generar los contextos.
4 IdentiIicar el rol y tipo de actividad que el asistente virtual va a desarrollar.

5
Determinar los Dominios de Conocimientos, Topicos de la Conversacion, Categorias,
Patrones de Preguntas y las Respuestas a dichos patrones tomando en cuenta los diversos
estados emocionales que se consideraran.
6 Integracion de la Base de Conocimientos del agente virtual
Tabla $. !ta#as de la construcci6n de la base de conocimientos

A continuacion se describen las actividades relacionadas con las etapas de analisis 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 especiIico, 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 inIormacion adicional, entre otras cosas. Asi que procedemos a determinar los
diIerentes dominios de conocimiento que el asistente debe tener, es decir, Cual es el tema
especiIico que queremos tratar?

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

Ingenieria en Sistemas Computacionales del ITCM, asi como alumnos aspirantes a la Maestria en
Ciencias en Ciencias de la Computacion de otras escuelas, Maestros, y en general alumnos de la
Maestria en Ciencias en Ciencias de la Computacion.
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 esta etapa se tiene que pensar en el rol y tipo de actividad va a desarrollar el asistente, por
ejemplo si es solo conversacion, o si es solicitud de inIormacion. Aun asi, siempre tenemos que
pensar en que se tiene que especiIicar 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 asi el usuario este enterado de esto.
ETAPA 5
Determinados los dominios de conocimientos que abarcara el asistente virtual, se identiIican los
topicos de la conversacion y sus categorias. Como componentes de las categorias se determinan o
recuperan de los analisis de la conversacion los actos del habla que se convertiran en patrones de
preguntas y las respuestas a dichos patrones tomando en cuenta los diversos estados emocionales
que se consideraran.
Los patrones son las palabras clave que el asistente virtual consultara en su base de conocimientos
para brindar la inIormacion pertinente, estos patrones estan contenidos en las categorias 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 especiIico como el inicio de una conversacion.
Proponemos que en relacion con el contexto se cree el nombre del archivo AIML. En ese archivo se
escribiran las categoras que contendran patrones los cuales se relacionan con los saludos,
Ejemplos de palabras o Irases relacionadas con saludos que pueden ser considerados como patrones
son: hola, que tal, como estas, buenas tardes, buenos dias, que onda, etc.

A continuacion se muestra un ejemplo de una categoria con un patron para este contexto.
.%


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


ETAPA 6
Al Iinalizar la creacion de los archivos AIML que conIorman los diIerentes contextos que tendra la
base de conocimientos, se recomienda la creacion de un directorio en el que se puedan agrupar y asi
Iacilitar el proceso de la carga e integracion de la base de conocimientos del agente virtual.
La integracion de la base de conocimientos se realiza a traves de un archivo std-startup.xml, el cual
carga en memoria todos los archivos .aiml, que el asistente podra utilizar para la busqueda de
respuestas. Cada archivo .aiml, que se procesara se especiIica con la etiqueta learn~, indicando la
ruta absoluta del archivo.
Un ejemplo de la estructura de este 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 continuacion se describen los requerimientos tanto de hardware, como los de soItware del
sistema, Con el Iin de que Iuncione correctamente la ejecucion de la interIaz graIica, ademas se hace
mencion de algunas caracteristicas como minimas, pero si son indispensables:
Hardware
1 GB Memoria RAM o menos
Procesador Pentium(R) 4 CPU 2.40 GHz
Teclado
Monitor

.,

Software
Interprete de AIML, para el lenguaje Python (PyAIML o Programa Y).
Python version 2.5.
DBMS: MySQL.
MicrosoIt Windows XP ProIesional Version 2002, Service Pack 3
Tener la Base de Datos (paginas) instalada en el Servidor de BD, contar con el usuario
'root y su contrasea 'root, ya que es la conIiguracion que tiene la interIaz.
La libreria MSVCP71.dll, se busca, se copia y se pega en la carpeta dist, asi ya no
marcara error, y debe Iuncionar perIectamente.

..

CAPITULO 6.
CASO APLICATIVO:
ASISTENTE VIRTUAL DE LA
MAESTRIA EN CIENCIAS
EN CIENCIAS
COMPUTACIONALES
En esta tesis nos interesa la problematica de desarrollar asistentes virtuales con la capacidad de
comunicar por medio de su dialogo, 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 interaccion con
el usuario, o simplemente un eIecto visual.
En este capitulo se describe la aplicacion de nuestra arquitectura de diseo de un asistente virtual
con dialogo emocional, como caso aplicativo se desarrollara un asistente virtual que proporcione
inIormacion sobre la Maestria en Ciencias en Ciencias de la Computacion del Instituto Tecnologico
de Ciudad Madero (ITCM).
6.1 Caso de Aplicacin
El caso de aplicacion de este asistente virtual en este caso sera utilizado para proporcionar
inIormacion acerca de la Maestria en Ciencias en Ciencias de la Computacion, y la Iuncion que
realizara el asistente virtual, es encontrar la respuesta adecuada en la base de conocimientos, y darle
.0

al usuario una respuesta de acuerdo con su entrada, tambien es capaz de mostrar una pagina de
Internet en la que se encontrara inIormacion mas acertada a la pregunta que le haga al asistente el
usuario.
La aplicacion tambien podria ser desarrollada para un ambiente Web, y asi montarlo en la pagina
principal de la Maestria en Ciencias en Ciencias de la Computacion.
6.2 Diseo del dilogo
En esta seccion se realizara el seguimiento de la metodologia para estructurar los dialogos y el
analisis de los datos para el diseo de AIML, como resultado de esto se obtendra una interaccion
con el usuario como la que se ilustra en la Iigura 19.


Figura 13. Interaccin con el usuario.
El proceso inicia de la siguiente Iorma, el usuario realiza una pregunta, para la cual el asistente
virtual busca rapidamente un patron relacionado en la base de conocimientos, al encontrar un patron
relacionado al de entrada, es decir, a la pregunta, el asistente regresa una respuesta, en Iorma de
texto, y asi sucesivamente.
6.2.1 Aplicacin de la Metodologa
Retomar cuales son las etapas de la metodologia y que se hizo / obtuvo para el ejemplo de la
aplicacion.
1.- Establecimiento del objetivo del asistente virtual
El objetivo de nuestro asistente virtual es brindar atencion y proporcionar inIormacion acerca de la
Maestria en Ciencias en Ciencias de la Computacion.

*reunta
8espuesta
Base
De
Conocimientos Aiml
*atrn a buscar
8espuesta Encontrada
.2

2.- Definicin de los atributos de la conversacin con un usuario
Las emociones que se pueden expresar al usuario son: miedo, tristeza, enojo, alegria, y un estado
neutro, las cuales tienen diIerentes rangos de intensidad que estan predeIinidos, por ejemplo se
pueden establecer en el rango de 0-10, los cuales se pueden predeIinir por ejemplo manejar 3
rangos quedando: 0-3, 3-6, 6-10 estos son algunos de los rangos de intensidad.
En el tema de conversacion se deIine como: La Maestria en Ciencias en Ciencias de la
Computacion.

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

Para crear las respuestas se recopilo inIormacion acerca de la maestria, se obtuvo el plan de
estudios, donde habla de la linea de investigacion a la que se enIoca la maestria, se mencionan las
ventajas, tambien menciona los nombres de los doctores, y los temas en particulares que trata la
linea de investigacion, es decir los problemas a los que esta enIocada a resolver la maestria.

4.- Anlisis de la Informacin recabada.

Se estudio el programa o plan de estudios de la Maestria en Ciencias en Ciencias de la
Computacion, y se determino que la inIormacion que se encontraba en ese texto serviria, como
respuestas a muchas dudas que les surgen a los aspirantes a la carrera, para asi poder solucionarlas,
y entonces darles la mejor inIormacion posible. Con esto despertar el interes por matricularse en
nuestra Maestria en Ciencias en Ciencias de la Computacion.
Asi, de esta Iorma podemos inIerir contextos, para posteriormente crear categorias relacionadas con
esta inIormacion, y los contextos inIeridos son hablar sobre la maestria, su deIinicion, su mision, su
vision, quienes son los proIesores, que publicaciones tienen como universidad, la linea de
investigacion.
5.- Desarrollo de la base de conocimientos.

En esta etapa se crean las categorias relacionadas con cada uno de los temas inIeridos en la etapa
anterior, y por cada uno de los contextos, se crean sus categorias pertinentes, y de acuerdo a la teoria
de AIML, se crean 4 categorias por cada uno de los patrones de entrada, cuando solo existe una
palabra clave, y cuando son mas de una palabra clave las que se estan introduciendo se crean 4
categorias para la primer palabra clave y 4 para la segunda palabra clave, esto con el Iin de ubicar
la primer palabra clave en distintos lugares de la Irase, de igual Iorma para la segunda palabra clave.
En la siguiente seccion se deIine la estructura de un dialogo.
.3

6.2.2 Definicin de la Estructura del dilogo
En esta seccion se describiran los componentes que pertenecen a la etapa 4 de la metodologia que
servira para analizar la inIormacion para organizar la estructura de los dialogos. A continuacion se
van a presentar como se aplicaron los procesos las 6 etapas.
Como se vio en la seccion 5.3 las etapas que ayudan a identiIicar la Iinalidad de la interaccion,
algunas posibles preguntas que se deben responder, los usuarios que utilizaran 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 deIine el tema especiIico del cual hablara preIerentemente el asistente virtual con
un usuario, con el Iin de que se genere el interes por incorporarse a la Maestria en Ciencias en
Ciencias de la Computacion por parte de los aspirantes.
Cual es el tema especiIico que queremos tratar?
El tema en especiIico sera sobre la Maestria en Ciencias en Ciencias de la Computacion.

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 quienes son nuestro publico objetivo: por ejemplo pueden ser los mismos
Egresados de Ingenieria en Sistemas Computacionales del ITCM, asi como alumnos aspirantes a la
Maestria en Ciencias en Ciencias de la Computacion de otras escuelas, Maestros, y en general
alumnos de la Maestria en Ciencias en Ciencias de la Computacion.

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
diIerentes secciones de la pagina principal de la Maestria en Ciencias en Ciencias de la
Computacion.
.5



Tambien se pueden aadir relaciones que involucren la Iorma de conocer a una persona: los saludos,
su Iamilia, su apariencia Iisica, su edad, su nombre, su nacionalidad, su genero, su proIesion, su
estado de animo, pronombres usados en el dialogo, Iormas 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 conversacion, o si es solicitud de inIormacion, u otra cosa.
Ya que se identiIicaron las relaciones pensando en todo lo que el usuario podria 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 relacion con el contexto se crea el nombre del archivo, es decir, en este archivo se
escribiran categoras que contendran patrones los cuales se relacionan con los saludos, esto mismo
se puede hacer para otros contextos. Palabras o Irases relacionadas con saludos: hola, que tal, como
estas, buenas tardes, buenos dias, que onda, etc.
Los patrones, son las palabras clave que el asistente virtual consultara en su base de conocimientos
para brindar la inIormacion pertinente, estos patrones estan contenidos en las categorias que
contiene el archivo AIML, y se determinan haciendo conjugacion de verbos, palabras. A
continuacion se muestra un ejemplo de una categoria con un patron.

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


En el ejemplo anterior se muestra como el patron BUEN DIA, a lo cual se contestaria con lo que
contiene el patron 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 mayusculas, con la
Iinalidad de que sea una posible coincidencia con la entrada del usuario, y asi proporcione una
respuesta que se relacione con la entrada del usuario. Posteriormente, si ya se Iinalizo con la
06

creacion de los archivos que conIorman la base de conocimientos, se procede a crea un directorio en
el que se puedan agrupar.
REUTILIZACIN DE LA BASE DE CONOCIMIENTOS.
La reutilizacion de una base de conocimientos
Esta etapa sera de ayuda, por si se llegara a presentar el caso en que se quiere modiIicar la base de
conocimientos para otro tema diIerente, a continuacion se describen los pasos para saber que se
debe modiIicar en los diIerentes archivos aiml de la base de conocimientos.
Teniendo en cuenta que los archivos cuentan con recursividad, los cambios que realizaran seran
precisamente en la parte recursiva de los programas, la cual es una Iorma reutilizar el codigo ya
generado, que existe en el archivo mcc.aiml, donde esta almacenada la inIormacion de la Maestria
en Ciencias en Ciencias de la Computacion.
La recursividad esta programada en el archivo inIoUsuario.aiml. Si se quiere personalizar la base
de conocimientos para otro proyecto, o empresa, se le tienen que realizar 2 cambios basicos.
En el archivo inIoUsuario.aiml, dentro de la categoria que tiene como patron
'TEMAESPECIFICO, se sustituye en la recursion srai~MAESTRIA/srai~ por otro tema
deseado.
Se sustituye el archivo mcc.aiml por uno personalizado con la inIormacion que uno desee.
Practicamente realizando estos dos cambio en la base de conocimientos se puede personalizar
adecuandola a las necesidades de cada quien.
6.2.3 Caracterizacin de locuciones
De acuerdo a la teoria de los actos del habla, puede decir que la caracterizacion de locuciones, en
esta parte se describira como se creo cada uno de los archivos .aiml que daran origen a las
respuestas del asistente virtual. A continuacion se presenta la lista de archivos que conIorman la
base de conocimientos, de los cuales solo se describiran los mas signiIicativos:
saludos.aiml
Iamilia.aiml
inIoUsuario.aiml
nombres.aiml
Mcc.aiml
inIoMcc.aiml
genero.aiml
pronombres.aiml
astrologia.aiml

01

Estos archivos que se presentan aqui arriba tienen como objetivo, crear un dialogo emocional, por
ende, una conversacion. Estos Iicheros aiml serviran para darle la capacidad de mantener una
conversacion al asistente virtual con el usuario. De esta Iorma quedaria organizado el conocimiento
del asistente virtual, posteriormente se explicara cada uno de los archivos mas signiIicativos, que
conIorman la base de conocimientos.
El primer archivo que se describira sera el de saludos.aiml, este es un archivo en el que se pensaron
las diIerentes Iormas de emitir un saludo, ya sea de bienvenida, despedida, o de encuentros en las
diIerentes partes de un dia, maana, tarde, y noche, con expresiones simples como las siguientes:
buen dia, buenas, buenas tardes, buenos dias, buenas noches, hola, hi, hello, adios, gracias, etc.
A continuacion se muestra un pequeo ejemplo del contenido del archivo, que cuando encuentre un
patron relacionado con buen dia este tendra la respuesta que contiene el patron HOLA, el cual
contiene las respuestas siguientes como las que se pueden apreciar. Al tener un gran numero de
categorias se busca llegar a tener Irases 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 codigo 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
sinonimo de HOLA, tiene la misma intencion en el contexto.
El siguiente archivo a describir es el de sinRespuestas.aiml este contiene categorias con patrones
como un '* el cual le da a entender al asistente virtual, que lo que escribio el usuario como entrada
y no se encuentre en la base de conocimientos, le dira lo siguiente, que no encuentra una respuesta a
la pregunta del usuario, y siendo asi, mandaria una respuesta la cual le haga saber al usuario que no
encontro respuesta alguna o que no entiende, este archivo tambien contiene categorias con patrones
que esperan inIormacion acerca de preguntas, gustos, capacidades y aIiciones.
0"


El codigo que se presenta a continuacion, tiene la Iuncion 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 podria dar el caso, en que se usen las palabras claves de las preguntas, es decir, como, cuando,
donde, tambien como ya se menciono tiene categorias que Iueron programadas para el caso de que
no encontrara coincidencia alguna en toda la base de conocimientos, se devolveria una de las Irases
que se tiene ahi en el codigo como plantilla.
El archivo inIoUsuario.aiml tiene como Iinalidad responder a preguntas relacionadas con la
inIormacion del usuario. Se implemento con recursividad, en la cual se llega a una categoria que
contiene un patron Iinal, en el cual se puede realizar varias preguntas, para obtener inIormacion del
usuario.





0%

A continuacion se muestra una parte del codigo:
<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 Iragmento de codigo, se presentan algunas preguntas personales, las cuales estan dadas en la
recursividad en el patron NUEVO TEMA, esta lleva a generar aleatoriamente preguntas personales
como por ejemplo: Como te llamas?, Eres hombre o Mujer?, Cuantos aos tienes?, En que
trabajas?, etc.
En el archivo que lleva por nombre Mcc.aiml, estan contenidos patrones que tienen palabras clave
que se relacionan con la inIormacion de la Maestria en Ciencias en Ciencias de la Computacion.
Sin embargo en este archivo contiene suIiciente inIormacion acerca de la Maestria, pero como las
respuestas estaban dentro de una etiqueta topic, es decir se creaban respuestas para un contexto
predeIinido, en este caso la Maestria. Por lo tanto se tuvo que crear un archivo con las mismas
categorias, para que respondiera aunque no se le haya hablado al asistente sobre el contexto
Maestria y tal archivo es inIoMcc.aiml los contiene como categorias independientes de lo anterior.


0,

En el siguiente Iragmento de codigo, se recibe como entrada la palabra MAESTRIA, la cual es
asignada como topic, y al hacerse topic tiene sus propias categorias, teniendo en cuenta que tiene sus
propias categorias, puede responder a cualquier palabra que se de como entrada despues de la
palabra maestria, 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 estan contenidas categorias 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 sinonimos
respectivos.
En este codigo se puede observar que la base de conocimientos espera como entrada SOY HOMBRE
o SOY MUJER para dar una respuesta condicionada al genero del usuario, siempre y cuando ya lo
haya deIinido.
<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>
0.

6.2.4 Reorganizacin de la base de conocimientos
En este paso de reorganizacion de la base de conocimientos, se propone que los archivos de AIML
se cambien al nuevo Iormato quedando de la siguiente manera los codigos ya modiIicados:

<?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>
00

</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 suIrio unos cambios en la sintaxis del codigo, y por ende se hace un
poco mas complejo. De esta Iorma quedaria reorganizada la base de conocimientos, adecuando cada
uno de los archivos anteriormente descritos en la seccion 6.2.3.
6.3 Desarrollo del Prototipo
Una vez deIinidos los archivos que integran la base de conocimientos del asistente, lo que procede
para construccion del prototipo es:
Construccion de interIaz
Integracion de base de conocimiento a la interIaz
En esta seccion se iniciara la construccion de la interIaz, y despues que ya esta construida se le
integrara la base de conocimientos, para dotarla de conocimiento artiIicial, y asi simule una
conversacion real.
En esta parte de la creacion de una aplicacion con interIaz graIica se describiran 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 esten instaladas las librerias pywin32 y Wx python2.8-unicode,
para el Iuncionamiento 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 seria; C:\Python25, y se vuelve a guardar ya con la ruta en la variable de entorno, y asi
Iuncionara bien.
02

A continuacion se prosigue a desarrollar la aplicacion con interIaz graIica utilizando en IDE
VisualWx Python. En esta ocasion se va a programar una aplicacion con interIaz graIica, que debe
quedar como se puede observar en la Iigura 20. Este sera el producto Iinal. Para ver el proceso de
construccion ver el ANEXO A.








Figura *. Prototi#o @inal

Ahora sigue la parte Iundamental de nuestro proyecto la codiIicacion de la interIaz. Para este
proyecto se creo una base de datos llamada paginas como se muestra a continuacion.

En la siguiente base de datos se almacenaron los links relacionados con la pagina principal de la
Maestria en Ciencias en Ciencias de la Computacion. Y contiene los links porque es una Iorma
sencilla de acceder a ellos de manera practica a la hora de codiIicar.
La base de datos esta compuesta de lo siguiente:
1 Tabla pages, 2 campos idpages y pagina.
Paginas
pages (idpages, pagina)
21 Registros con las paginas de la Maestria en Ciencias en Ciencias de la Computacion.



03

Idpages Pagina
1 http://www.itcm.edu.mx/mccc06/
2 http://www.itcm.edu.mx/mccc06/anteMcc.php
3 http://www.itcm.edu.mx/mccc06/misionMcc.php
4 http://www.itcm.edu.mx/mccc06/equiposMcc.php
5 http://www.itcm.edu.mx/mccc06/logrosMcc.php
6 http://www.itcm.edu.mx/mccc06/ProgMccc07.html
7 http://www.itcm.edu.mx/mccc06/cursoMCCC.php
8 http://www.itcm.edu.mx/mccc06/inIoMcc.php
9 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/perIilMcc.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.pdI
Tabla %. 5egistros de la A? #aginas.



05

CODIFICACION DE LA INTERFAZ GRFICA.
A continuacion se presenta el codigo que se le agrego a la interIaz graIica para que Iuncionara
correctamente, de este modo se inicio a detalle la programacion en Python.
Este codigo se agrega al inicio del archivo IrmChild, el cual sera nuestro Irame, para colocar los
objetos de la interIaz graIica.
Ahora bien se inicia cargando las librerias necesarias para que Python pueda interpretar los archivos
aiml, acceder a la base de datos y utilizar subprocesos ver Iigura 21. Y asi poder simular la
conversacion con el bot. Como se puede observar esta al inicio del archivo IrmChild.

Figura 1. 9m#ortaci6n de libreras.
La primer libreria que se carga es la Wx, ya que es la libreria que utiliza la herramienta VisualWx,
para manejar los graIicos, despues se procede a cargar de la libreria AIML, y ya con esta libreria,
podremos cargar archivos AIML, con los cuales podremos simular una conversacion con el bot, ya
que los posibles patrones que reconozca el bot estan escritos en los archivos .aiml, los cuales se
encuentran en una carpeta llamada 'standard, al mismo tiempo estos estan siendo cargados por el
archivo 'std-startup.xml y se utiliza el metodo learn para enviarle como parametro el nombre del
archivo y el metodo respond para que inicie la carga de los archivos aiml.
Posteriormente se crea una conexion (linea 10) a la base de datos llamada paginas, la cual contiene
lo siguiente ver Iigura 22:

Figura . Acceso a la A? #aginas
Tambien se crea un cursor, el cual nos ubica en el inicio de la base de datos (linea 11),
posteriormente se crea una consulta utilizando el cursor (linea 12), despues se crea un Iiltro, en el
cual solo lo relacionado con la consulta quedara almacenado en el objeto res (linea 13), y en seguida
26

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

Figura $. 2reaci6n del ob"eto /, en este caso es como si @uera el cerebro del bot.
En la Iigura 23 se muestra la creacion del bot, cargando la base de conocimientos en su cerebro con
el metodo learn (linea 19) y permitiendo que el bot conteste con el metodo respond (linea 20) y
asignandole un nombre al bot (linea 21).

Figura %. 26digo generado #or la >erramienta VisualB1
En la Iigura 24 se muestra que a partir de la linea 22 hasta la 99 es codigo que genera la herramienta
VisualWx.

Figura '. Funci6n #regunta.
La Iuncion pregunta solo se activa cuando el evento que tiene especiIicada la caja de texto, es decir
la edit text, que es cuando escribes algo sobre ella y es presionada la tecla Enter, solo asi se
ejecutara la Iuncion pregunta. Y esta se escribe a la misma sangria que los demas metodos que ya
vienen por deIault ver Iigura 25.
21


Figura ,. Ob"eto edit te1t.
En esta parte se creo el objeto donde se podran teclear las preguntas ver Iigura 26.

Figura -. ?e@inici6n de la @unci6n #regunta.
En la linea 99 se deIine la Iuncion pregunta, en la linea 102 y 103 se crean variables de tipo String,
en la linea 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 metodo llamado GetValue (),
que regresa una cadena de tipo String, en la linea 105 se recupera la respuesta del bot en la variable
respuesta, enviandole como parametro la cadena de la pregunta, posteriormente en la linea 106 se
realiza una conversion, la cadena de respuesta se convierte a Unicode que es un estandar de
codiIicacion, con el cual se pueden interpretar ciertos caracteres, un ejemplo seria el acento, la ,
entre otros. Y asi tambien se le pasa como parametro al metodo Unicode la cadena que se
transIormara y el codigo que en que esta representado el caracter o caracteres a convertir ver Iigura
27.
2"


Figura 0. 26digo #ara obtener el id de la #agina a mostrar.
Para visualizar el codigo completo de la clase Irmchild.py, que es el codigo de nuestro interes, ver el
anexo A. En la seccion A2. Ademas de la clase Irmchild, estan tambien los codigos de las clases
generadas automaticamente 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


Asi mismo con el Pseudocodigo anterior se espera que la cadena de respuesta sea un numero ya sea
01, 02.21 ya que son los ID que tienen las paginas en la base de datos, y asi poder realizar todo el
procedimiento, y si no simplemente imprime la respuesta, ver Iigura 28.
2%

Para el boton 'Enviar tambien se le coloco el mismo codigo solo que en su Iuncion llamada
bt6VxXEvOnButtonClick (). Este codigo se ejecutara cuando sea presionado el boton vease Iigura
29 y 30 en la que observa el objeto y su Iorma de programarlo.

Figura 3. Aot6n !n&iar.

Figura $*. 26digo del bot6n en&iar.
Ahora se vera como esta estructurado el archivo std-startup.xml. Este archivo contiene un patron
llamado 'LOAD AIML B, y los archivos en los que posiblemente puede encontrar una respuesta
relacionada con el patron de entrada.
2,


Figura $1.C StdCstartu#.1ml
Al ejecutar nuevamente nuestro proyecto, nos solicitara guardar cambios, se da clic en si y al
ejecutarse apareceran las siguientes dos ventanas, en las cuales se muestra como se cargan los
archivos .aiml y en la otra la ejecucion de la aplicacion.

Figura $. 2arga de arc>i&os aiml.
2.


Figura $$. 9nter@az gr7@ica #ara simular un bot con&ersacional.
Finalmente se ha concluido la aplicacion con interIaz graIica (bot conversacional) hecho en
VisualWx python.

Figura $%. 9nteracci6n con el bot, creado en VisualB1 Pyt>on

Posteriormente se creo un ejecutable de la aplicacion desarrollada con el siguiente codigo que se
guardo en un archivo independiente que nombramos prueba.py.
Si se quiere ver a detalle Iavor de ir al ANEXO C.


20

CAPITULO 7.
EXPERIMENTACIN Y
RESULTADOS
7.1 Descripcin de la Experimentacin
En esta seccion se describiran como objetivos de la experimentacion, las pruebas necesarias que se
llevaron a cabo. En este caso se registraran los resultados de seguir la metodologia respecto al
codigo AIML, la realizacion de una conversacion asistente-usuario, es decir, una interaccion
humano-computadora, ademas de la eIectividad 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 deIinida la Iinalidad de la interaccion, para este caso devolver
respuestas y las preguntas posibles a realizar, tienen que ser relacionadas con nuestra Maestria. En
AIML aun no es necesario crear ninguna categoria.

Etapa 2. Determinar quines sern los posibles usuarios del asistente virtual.
En esta etapa aun no se realiza ningun procedimiento, ni es necesario aun crear ni un Iragmento de
codigo.

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

En esta etapa se identiIica el rol del asistente y que actividad realizara. En las primeras cuatro etapas
se realiza un analisis de la inIormacion recopilada sobre la Maestria en Ciencias en Ciencias de la
Computacion.

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 analisis de la inIormacion recabada, es decir se crean las categorias con
los posibles patrones relacionados con nuestra Maestria. Asignando como dominio de conocimiento
la Maestria, asi como tambien el topico de la conversacion, las categorias creadas son en general
sobre la Maestria y sobre temas en general, pero limitando a contestar lo basico, en esta misma
etapa se crean las respuestas, es decir las templates.
Dominio de Conocimiento: Maestria en Ciencias en Ciencias de la Computacion.
Topics de la Conversacin
Topic: Maestria.
A continuacion 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), reIerentes a la Maestria.
<!-- 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>




23


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>

25


<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 categorias anteriores, como respuesta regresan un numero, el cual es tratado con
Python, y hace consulta a una base de datos, para extraer la pagina y mostrarsela al usuario.

Etapa 6. Integracin de la Base de Conocimientos del agente virtual
En esta etapa AIML, solamente se carga como una libreria en Python, en el momento que se inicia
la codiIicacion.
36

7.1.2. Resultado de la conversacin con el asistente virtual.
Usuario: Hola
Bot: Hola. Como te llamas?
Usuario: Mi nombre es Luis
Bot: Encantado Luis.
Usuario: Hablame de la Maestria
Bot: La Maestria en Ciencias en Ciencias de la Computacion es un posgrado que tiene un plan de
estudios que se ha diseado considerando como unica linea de investigacion a la Optimizacion
Inteligente y como areas de aplicacion: Vision y Robotica, Base de Datos Distribuidas, Lenguaje
Natural.
Usuario: me podrias decir cual es la pagina principal de la Maestria
Bot: usted recibira mayor inIormacion en la pagina que se abre
Usuario: me podrias decir que lineas de investigacion tiene la Maestria
Bot: usted recibira mayor inIormacion en la pagina que se abre
Usuario: dime que publicaciones tiene la maestria
Bot: usted recibira mayor inIormacion en la pagina que se abre
Usuario: Quienes son los proIesores
Bot: usted recibira mayor inIormacion en la pagina que se abre
Usuario: Cuales son las Iechas de examenes
Bot: usted recibira mayor inIormacion en la pagina que se abre
Usuario: Sabes matematicas
Bot: Me encuentro algo perdido en este contexto. explicate de otra manera


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

31

CAPITULO 8.
CONCLUSIONES Y TRABA1OS
FUTUROS
8.1 Conclusiones
En este trabajo de tesis se realizo el diseo de una metodologia para organizar la estructura de los
dialogos. Tambien se diseo un asistente virtual con el soItware iClone PRO 4.1. Se utilizo una base
de conocimientos para darle el dialogo al asistente virtual. Se desarrollo la interIaz graIica 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 presento una metodologia, para crear bases de conocimientos, guia para construir
interIaces, se presenta caso aplicativo a la maestria en ciencias en ciencias de la
computacion.
8.3 Trabajos Futuros
Al dejar disponible el codigo Iuente de la aplicacion con interIaz graIica y de los archivos AIML
(base de conocimientos), pueden servir como base de Iuturas versiones aplicadas con nuevas
tecnicas de la Inteligencia ArtiIicial. Dejando como areas de oportunidad para mejorar el proyecto:
el cambio de personaje de estatico a dinamico, y su conversion en una aplicacion Web, para asi
acceder a el desde Internet
Otra parte interesante y que se deja abierta es la modiIicacion del nucleo de AIML para crear
etiquetas, objetivos, intensiones, independientes de la tematica.
3"

BIBLIOGRAFIA

Alvarez, M. A. (2003). Que es Python. Recuperado Abril 8, 2011, a partir de
http://www.desarrolloweb.com/articulos/1325.php
Bates, J. (1994). The role oI emotion in believable agents. Communications oI ACM. Special Issue on Agents,
9.
Botti, V. J. V. (2000). Agentes Inteligentes: el siguiente paso en la Inteligencia ArtiIicial. 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., Vilhjalmsson,, 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 EIIectsin Intelligent Agents. MIT Media Lab 20 Ames St., E15-315 Cambridge, MA 02139 USA.
Coca, G. H., & Angel, S. C. S. del. (2009). METODOLOGIA PARA LA SIMULACION DE EXPRESIONES
NO VERBALES DE UNA RECEPCIONISTA VIRTUAL. ITCM.
dTinIS.L. (2008). Asistente Virtual Semantico (pag pp 15).
Dustman, A. (2006). MySQL Ior Python , Download MySQL Ior Python soItware Ior Iree at SourceForge.net.
Recuperado Abril 8, 2011, a partir de http://sourceIorge.net/projects/mysql-python/
Florencia, R. (2010). Agente Conversacional Corporeo que utiliza AIML para integrar procesos de
personalidad. ITCM, Cd. Madero, Tamaulipas.
Gratch,, J., Rickel, J., Andre, 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 ArtiIicial
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 behalI oI humans and chats. Recuperado
Abril 8, 2011, a partir de http://www.chatbots.org/conversationalagent/
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/buzzstop/welcometochatbot.org2.0/
Marcelo, A. C., & P, M. G. E. (2007). Agentes Inteligentes en la webBots de conversacion.
3%

Monroy, G. L. (2008). InterIaz graIica para la edicion de cuentos interactivos para ninos. Recuperado Abril 6,
2011, a partir de http://catarina.udlap.mx/udla/tales/documentos/lis/lopezmg/index.html
Morales, M. L. (2007). Modele d`interaction sociale pour des agents conversationnels animes Application a la
reeducation de patients cerebro-leses. L`UNIVERSITE TOULOUSE III : PAUL SABATIER.
Next IT Corporation. (2010). Next IT - Providing Intelligent Customer Experience Solutions. Recuperado
Abril 14, 2011, a partir de
Iile:///C:/Users/Jesus/Documents/Maestria/Tesis/Agentes20Conversacionales/Paginas20Web/Next20IT
20-20Providing20Intelligent20Customer20Experience20Solutions(Introduccion).htm
Nwana, H. S. (1996). SoItware 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
WordreIerence. (2005). conversacional - DeIinicion - WordReIerence.com. Conversacional- DeIinicion-
WordreIerence.com Diccionario de la lengua espaola. Recuperado Abril 8, 2011, a partir de
http://www.wordreIerence.com/deIinicion/conversacional
Llisterri, J. (2007) 'El papel de la Ionetica en las tecnologias del habla in Actas do 3 Congreso Internacional
de Fonetica 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/Llisteri05FoneticaTecnologiasHabla.pdI

3,

Figura $'. VisualB1
ANEXOS
ANEXO A: CREACIN DE
INTERFAZ GRFICA
Este anexo contiene el proceso detallado paso por paso, de como ir aadiendo los componentes
graIicos para conIormar la interIaz graIica del asistente virtual.
Abrir el IDE VisualWx, una vez abierto
proseguimos a crear un nuevo proyecto dando
clic en File, despues en New Proyect, como se
muestra en la Iigura 35.
Posteriormente indicar que el template que se
utilizara sera WX_MDI_Python y guadar el
Proyecto en una carpeta en la que almacene
todos los archivos y programas que utilizara.
El nuevo proyecto tendra la extension .pbc.

Una vez terminado el proceso anterior, aparece la ventana principal con un Iormulario gris (ver
Iigura 36) y podremos construir nuestro propio asistente virtual. Dentro de este Iormulario se
crearan objetos o controles del tipo boton, caja de texto, panel, y area de texto.
El boton 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.




3.

Figura $,. Frame de inicio de la #lantilla B1D:?9D#yt>on
En el lado izquierdo de la interIaz del IDE se
encuentran disponibles los diIerentes
componentes que se pueden utilizar. A
continuacion se describira el proceso de
construccion y programacion de la interIaz
graIica del asistente virtual que se desarrollo, ver
Iigura 36.




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

Figura $- . !legir color de @ondo del Frame
Para cambiar el contenido original de la etiqueta de texto se da clic en su propiedad Text, y despues
se escribe lo que se desea aparezca en la etiqueta y se da clic en OK.
30


Figura $0 . !scribir te1to en una eti8ueta (Static Te1t+
Tambien se le puede dar clic en la propiedad Font y cambiarlo si asi se desea, en esta opcion se
puede cambiar el tipo de letra, el estilo, tamao y algunos eIectos (Figura 38).

Figura $3 .2ambiar Fuente (Font+
En nuestro ejemplo se creo y edito el control static text (etiqueta), para escribir la cadena 'Haz tu
pregunta. Como se puede observar en la Iigura 41.
32


Figura %*. 2ambio de te1to en la eti8ueta.
A continuacion se insertan 2 controles un 'edit text, que creara una cafa de texto que permitira
mostrar la interaccion del usuario con el bot y un 'edit text multilinea o tambien conocido como
area de texto, ver Iigura 40.

Figura %1. 9nserci6n de !dit Te1t y !dit Te1t :ultilnea.
Ahora se crea un boton con la leyenda enviar. En esta parte se edita el texto que tiene por deIault
que es control, se le escribe la palabra Enviar, y se da clic en OK, ver Iigura 42.
33


Figura %. Asignar nombre al bot6n.

Asi se ve la interIaz graIica, pero aun Ialta colocar una imagen de un rostro para simular que es un
agente conversacional eso lo veremos mas adelante.
Ahora se selecciona, un objeto Panel, al cual se le asignara una imagen, para ello seleccionar la
opcion Bitmap en las propiedades del control y cargar la imagen que se desea especiIicando el tipo
de archivo al que pertenece nuestro recurso, por ejemplo bmp, icon, giI, png, jpg, pcx, iII, tiII, ani,
pnm, xpm, cursor, *.rc, etc.

Figura %$.ob"eto #anel.
35


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 continuacion se procede a escribir el codigo.

56

ANEXO B: INTEGRACIN DE
LA BASE DE CONOCIMIENTOS
A LA INTERFAZ GRFICA
Este anexo contiene el codigo 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 interIaz graIica.
Esta clase Irmchild se construye a partir de que se elige el tipo de plantilla WxMDIpython, ya que
es codigo que se genera automaticamente, sin embargo en este codigo es donde se debe incluir
nuestro codigo, ya que es el que contendra los objetos que pueden esperar algun evento como lo
son: botones, cajas de texto, etc. En si aqui escribimos el codigo para vincular MySQL, AIML con
Python para hacer Iuncional la aplicacion.
La vinculacion de la base de datos con la interIaz graIica se lleva a cabo mediante instrucciones, es
decir, a nivel de codigo, al igual que el enlace de aiml con la interIaz graIica para integrar la base de
conocimientos.
El programa Visualwx crea 4 clases, las cuales se pondran solo el codigo necesario:
App.py, es la clase principal es como si Iuera la aplicacion main.
Frmchild.py, es el Irame que nos permite agregar codigo y generar la interIaz graIica.
MyIrame.py, es la segunda ventana que tiene nuestro Irame principal.
VwXComponent.py, esta es una clase generada por el IDE de Python.





51

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"):
5"

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

5%

ANEXO C: CREACIN DE
E1ECUTABLE DE LA INTERFAZ
GRFICA
Se tiene que tener instalada la libreria py2exe que nos permitira crear un ejecutable de la aplicacion.
Se importan las librerias 'disutils.core, se importa setup, despues se deIine como script principal
App.py, posteriormente se le asigna un icono a la aplicacion principal, es decir, una imagen al
archivo ejecutable. En este caso se llama bot.ico, despues se copian los archivos a los cuales pueda
hacer reIerencia el principal, ver Iigura 44.

Figura %%. 26digo #ara >acer e"ecutable
Al terminar esto se procede a abrir el simbolo del sistema (linea de comandos), Iigura 45.

Figura %'. )nea de comandos o smbolo del sistema.
5,

Ya que se abrio el simbolo del sistema se posiciona en el directorio python25, ver Iigura 46.

Figura %,. ?irectorio #yt>on'
Estando en la carpeta de python25, que es el lugar donde esta guardado el archivo prueba.py, que
contiene el codigo para hacer un ejecutable del archivo principal llamado App.py y asignarle un
icono. Se tiene que escribir de la siguiente Iorma para hacer ejecutable el archivo, vease Iigura 47:
Sintaxis:

Figura %- .Pyt>on #rueba.#y #ye1e (instrucciones 8ue >acen el e"ecutable+
Posteriormente se vera en la pantalla negra, como se empaquetan todas las librerias necesarias en
dos carpetas, una que se llama dist y otra que se llama build.
5.


Figura %0. 2om#resi6n de libreras.

Figura %3. Fin de la com#ilaci6n y com#resi6n de libreras.
Despues de que termino el proceso de hacer ejecutable en el directorio Python25 estaran dos
carpetas: build y dist. Las que contienen el archivo ejecutable (.exe, ademas de las librerias
empaquetadas), vease Iigura 50.


Figura '*. 2ar#etas dist y build.
50

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

Figura '1. ?irectorio build.
En la Iigura 52 se puede observar lo que contiene la carpeta dist, en la cual se guarda el archivo
ejecutable del proyecto, ademas de las librerias necesarias para Iuncionar en cualquier otra
computadora.

Figura '. ?irectorio dist.

Anda mungkin juga menyukai