Professional Documents
Culture Documents
DE CD. MADERO
DEPARTAMENTO DE SISTEMAS Y COMPUTACIN
TESIS
Para obtener el Titulo de
Presenta
05070788
Director de Tesis
MAYO 2011
Declaracin de Originalidad
Declaro y prometo que ste documento de tesis es producto de mi trabajo original y que no infringe
los derechos de terceros, tales como derechos de publicacin, derechos de autor, patentes y
similares.
Adems, declaro que en las citas textuales que he incluido (las cuales aparecen entre comillas) y en
los resmenes que he realizado de publicaciones ajenas, indico explcitamente los datos de los
autores y las publicaciones.
Adems, en caso de infraccin de los derechos de terceros derivados de ste documento de tesis,
acepto la responsabilidad de la infraccin y relevo de sta a mi director y codirectores de tesis, as
como al Instituto Tecnolgico de Cd. Madero y sus autoridades.
DEDICATORIAS
A mi madre por brindarme siempre el apoyo necesario, y dar todo para verme
triunfador, y darme la fuerza necesaria para querer salir adelante en esta vida, y as lograr
uno ms de mis objetivos, y a mis hermanos que los quiero mucho por su apoyo.
A mis amigos que me ensearon el significado de la amistad, y que siempre
estuvieron ah apoyndome en cada uno de los momentos que vivimos juntos y siempre me
extendieron su mano amiga, gracias por todos esos momentos que compartimos.
AGRADECIMIENTOS
A Dios, por guiarme da a da, por darme las fuerzas necesarias de seguir adelante y
ayudarme a culminar uno de mis objetivos planteados hace algunos aos.
A mis padres; Rosala y Jos. A mi hermana y hermano; Abigail y Miguel. A mi
abuelita; Rosala.
A mi Directora de Tesis la Dra. Mara Lucila Morales Rodrguez por el apoyo y los
consejos que me brind durante el desarrollo de ste proyecto, por tenerme paciencia, y
compartir su conocimiento. Gracias por su dedicacin y por su tiempo.
Mi ms sincero agradecimiento a los miembros del comit tutorial de sta tesis: Dr.
Juan Javier Gonzlez Barbosa, Dra. Laura Cruz Reyes, Rubn Basez Castro y la Dra. Ma.
Lucila Morales Rodrguez.
Agradezco al Instituto Tecnolgico de Ciudad Madero por las facilidades
proporcionadas para la realizacin de ste proyecto, as como a los profesores que
contribuyeron a mi formacin acadmica humana.
Gracias a mis amigos de la ingeniera por la amistad, compaerismo y apoyo
prestado. Por todos los momentos que pase con ellos, en especial a Victoria, Blanca Teresa,
Rosario, y muchos ms que saben que estn incluidos aqu, aunque no est su nombre
muchas gracias por todo.
RESUMEN
Este trabajo de investigacin se origina a partir de un proyecto realizado en la institucin
relacionado con un agente conversacional corpreo, ya que actualmente el uso de los Agentes
Conversacionales Animados ha ido creciendo. Estos suelen ser una herramienta utilizada en ciertas
funciones en las cuales pueden servir como guas, maestros, ayudantes, etc. La problemtica que
abordamos en ste documento, es la implementacin de un agente conversacional capaz de expresar
dilogos crebles en lenguaje natural, expresando en sus dilogos rasgos de personalidad, emociones
y su intensidad. Para la generacin de dilogos crebles, proponemos utilizar la extensin que se le
hizo al lenguaje AIML (Artificial Intelligence Markup Language), utilizando la nueva estructura
para los archivos de la base de conocimientos basados en AIML, mediante dilogos crebles, es
capaz de crear escenarios ms reales para que el aspirante disperse sus dudas con relacin a la
Maestra en Ciencias en Ciencias de la Computacin, manteniendo una conversacin simulada por
el agente conversacional. Para esto se present una metodologa para organizar y disear la
estructura de los dilogos de un Agente Conversacional Animado capaz de expresar emociones en
su dilogo. Resultando de ste trabajo un Asistente Virtual con Dilogo Emocional que proporciona
informacin sobre la Maestra en Ciencias en Ciencias de la Computacin del ITCM.
TABLA DE CONTENIDO
Captulo 1. Introduccin ................................................................................................................ 1
1.1 Antecedentes ........................................................................................................................ 1
1.1.1 Creacin de una base de conocimientos en AIML para un Agente Conversacional........... 1
1.1.2 Agente Conversacional que utiliza AIML para integrar procesos de personalidad. ........... 2
1.1.3 Metodologa para la simulacin de expresiones no verbales de una recepcionista virtual 2
1.2 Objetivos ............................................................................................................................... 3
1.2.1 Objetivo General............................................................................................................. 3
1.2.2 Objetivos especficos....................................................................................................... 3
1.3 Problemtica ......................................................................................................................... 3
1.4 Justificacin ........................................................................................................................... 3
1.5 Hiptesis................................................................................................................................ 4
1.6 Alcances y Limitaciones ......................................................................................................... 4
1.7 Estructura del documento ..................................................................................................... 4
Captulo 2. Concepcin de Agentes Conversacionales...................................................................... 6
2.1 Agente Conversacional .......................................................................................................... 6
2.1.1 Caractersticas de los Agentes Conversacionales ............................................................. 7
2.1.2 Aplicaciones.................................................................................................................... 7
2.1.3 Agentes Conversacionales Animados .............................................................................. 8
2.1.4 Humanos Virtuales Crebles ............................................................................................ 9
2.2 Asistentes Virtuales Crebles ................................................................................................ 10
2.2.1 Estado de Arte de los Asistentes Virtuales..................................................................... 11
2.2.2 reas de Aplicacin....................................................................................................... 13
2.2.2 Rol de los Asistentes Virtuales....................................................................................... 14
2.2.3. Implementaciones de Asistentes Virtuales ................................................................... 17
LISTA DE FIGURAS
Figura 1. Usos de los Asistentes Virtuales ...................................................................................... 14
Figura 2. Ejemplos de Asistentes Sociales ...................................................................................... 15
Figura 3. Ejemplos de Asistentes Educacionales............................................................................. 15
Figura 4. Ejemplos de Asistentes Orientados a Servicios ................................................................ 16
Figura 5. Ejemplos de Asistentes Virtuales(Lun, 2010a).................................................................. 16
Figura 6. Ann asistente virtual de la aseguradora Aetna................................................................. 17
Figura 7. Jenn asistente de Alaska Airlines ..................................................................................... 17
Figura 8. Alex asistente de Continental Airlines ............................................................................. 17
Figura 9. Amy ................................................................................................................................ 18
Figura 10. SGT STAR del Ejercito de los Estados Unidos.................................................................. 18
Figura 11. Spike experto virtual de la Universidad Gonzaga ........................................................... 18
Figura 12. Proceso de Comunicacin bsica................................................................................... 22
Figura 13. Jerarqua de Etiquetas en AIML ..................................................................................... 28
Figura 14. Estructura propuesta para los archivos AIML de la base de conocimientos.................... 38
Figura 15. Arquitectura del Asistente Virtual ................................................................................. 44
Figura 16. Modulo de Generacin de locucin del Asistente.......................................................... 45
Figura 19. Interaccin con el usuario. ............................................................................................ 56
Figura 20. Prototipo final............................................................................................................... 67
Figura 21. Importacin de libreras. ............................................................................................... 69
Figura 22. Acceso a la BD paginas .................................................................................................. 69
Figura 23. Creacin del objeto k, en este caso es como si fuera el cerebro del bot. ....................... 70
Figura 24. Cdigo generado por la herramienta VisualWx.............................................................. 70
Figura 25. Funcin pregunta. ......................................................................................................... 70
Figura 26. Objeto edit text............................................................................................................. 71
LISTA DE TABLAS
Tabla 1. Bot en lnea...................................................................................................................... 12
Tabla 2. Caractersticas de Python ................................................................................................. 41
Tabla 3. Etapas de la construccin de la base de conocimientos .................................................... 51
Tabla 4. Registros de la BD paginas................................................................................................ 68
CAPTULO 1.
INTRODUCCIN
En la actualidad el uso de los Agentes Conversacionales Animados ha ido creciendo, ya que son una
herramienta muy til y fcil de usar para ciertas tareas. Estos pueden fungir como guas, maestros,
ayudantes, y pueden brindar ayuda en la bsqueda de informacin sobre un tema, hasta pueden
llegar a mantener una conversacin de cualquier tema en especfico. Los agentes son entidades
capaces de percibir su entorno, los cuales pueden procesar lo que perciben y tener una reaccin, es
decir una respuesta o actuar en su entorno de manera racional.
En esta tesis, se presenta una metodologa para organizar y disear la estructura de los dilogos de
un Agente Conversacional Animado capaz de expresar emociones en su dilogo. Resultado de ste
trabajo se disea e implementa un Asistente Virtual con Dilogo Emocional que proporciona
informacin sobre la Maestra en Ciencias en Ciencias de la Computacin del ITCM.
1.1 Antecedentes
Actualmente en la Maestra en Ciencias en Ciencias de la Computacin del ITCM se estn sentando
las bases para el desarrollo de una lnea de investigacin enfocada al desarrollo de Interaccin
Hombre-Mquina, usando Agentes Conversacionales Animados. Esto con la finalidad de construir
herramientas de simulacin para fines ludo-educativos y profesionales, que permitan ensear de una
manera ms eficaz.
Los Agentes Conversacionales, tienen la finalidad de interactuar con el usuario, para realizar tareas
de una forma muy natural, para lo cual, no basta con que su apariencia sea muy realista, sino que,
adems deben comportarse y comunicarse como lo hara un humano (Morales, 2007). A
continuacin, se mencionarn algunos trabajos realizados en el ITCM relacionados con esta tesis.
1.2 Objetivos
1.2.1 Objetivo General
Definir una metodologa para organizar la estructura de los dilogos de un agente conversacional
que exprese emociones, y as disear un asistente virtual con dilogo emocional.
Crear una arquitectura general para el desarrollo de Asistentes Virtuales con dilogo
emocional que puedan interactuar con el usuario a travs de una interfaz grfica.
1.3 Problemtica
La problemtica en el desarrollo de asistentes virtuales con dilogo emocional radica en cmo
representar emociones por medio del dilogo, adems de sus expresiones faciales.
Para este problema, se pretende analizar las conversaciones, identificar patrones en los dilogos en
los que se puedan representar emociones, de acuerdo a la conversacin con el usuario. Se evaluarn
las conversaciones, de tal forma que se pueda estructurar la base de conocimiento del dilogo y
saber, que tipo de dilogos representan cierta emocin.
1.4 Justificacin
Para elaborar formas de interacciones por medio de una computadora, ms naturales y herramientas
de simulacin que permitan una instruccin eficaz, es necesario que el usuario del sistema est
sumergido en una situacin virtual similar a la realidad. Para ello, no es suficiente reunir imgenes y
sonidos realistas, es tambin importante que los personajes virtuales manifiesten comportamientos
emocionales y de interaccin social mediante expresiones no verbales (Coca & ngel, 2009),
(Morales, 2007). El disear un asistente virtual con dilogo emocional, a la semejanza del ser
3
humano como parte de las interfaces entre hombre-mquina dar un enfoque ms interesante a stas.
Adems, de poder mantener una conversacin en la cual se podr dar la informacin pertinente al
usuario. Para lo cual se establecer una metodologa estndar para la organizacin de la estructura
de los dilogos que representen emociones. Adems, se disear un asistente virtual, el cual podr
expresar facialmente emociones.
1.5 Hiptesis
En esta tesis se busca facilitar la representacin de emociones de un agente conversacional por
medio del dilogo. Existen una serie de problemticas para lograrlo, ya que una misma frase puede
ser expresada transmitiendo diferentes emociones, as como una emocin puede expresarse usando
diferentes frases. Basndose en dicha afirmacin, se quiere determinar si es posible disear una
metodologa para el diseo de las bases de conocimiento de AIML, considerando la expresin de
emociones de acuerdo al contexto y as facilitar el diseo de un asistente virtual capaz de expresar
dilogo emocional.
Captulo 3. Anlisis de la comunicacin, en este captulo se presenta teora para fundamentar los
actos involucrados en la comunicacin.
Captulo 4. Programacin de dilogo en Agentes Conversacionales, en este apartado se presenta la
literatura relacionada con la programacin de la base de conocimientos.
Captulo 5. Diseo de un Asistente Virtual con Dilogo Emocional, en este apartado se describe
como disear un asistente virtual.
Captulo 6. Caso Aplicativo: Asistente Virtual de la Maestra en Ciencias en Ciencias
Computacionales, en esta seccin se presenta el desarrollo del caso aplicativo en esta Maestra.
Captulo 7. Experimentacin y Resultados, en este captulo se presentan la experimentacin y los
resultados llevados a cabo.
Captulo 8. Conclusiones y Trabajos Futuros, se presenta la conclusin del trabajo, se mencionan
los posibles trabajos futuros que permiten darle seguimiento a este proyecto.
CAPTULO 2.
CONCEPCIN DE AGENTES
CONVERSACIONALES
En este captulo se presentan los conceptos relacionados con el proceso de construccin de agentes
conversacionales, su interaccin social, y sus dilogos que estn contenidos en la base de
conocimientos, adems de la tecnologa necesaria para llevar a cabo su desarrollo.
Modelar con agentes tiene ventajas en el sentido de que este paradigma es ms cercano a nuestra
manera de ver el mundo, porque muchas organizaciones se definen con un conjunto de roles y
relaciones entre ellos, an as, es necesario disponer de mtodos y herramientas para el desarrollo de
los sistemas basados en agente (Monroy, 2008).
2.1.2 Aplicaciones
Ahora en da, los agentes conversacionales son de mucha utilidad, tal que se pueden encontrar en
diversas reas, realizando funciones como:
Tutores, en Educacin, (por ejemplo. para aprender y practicar un idioma) (Kopp, 2009).
Herramienta de entretenimiento.
Dar seales que indiquen el estado de la conversacin as como contribuir con nuevas
proposiciones.
Para desarrollar un ECA con las habilidades antes descritas, se requieren varios componentes, que
en base a su funcin en el flujo de la informacin de la interaccin con los usuarios, se pueden
dividir en las siguientes categoras:
Fase de entrada. Los ECAs deben estar preparados para recibir diferentes tipos de
entrada de informacin por parte del usuario, incluyendo las modalidades verbales y no
verbales.
modelos de rol social en un ECA para lograr credibilidad en la comunicacin con los
usuarios.
Fase de salida. Es necesario que el ECA posea un cuerpo expresivo, tanto en los canales
de comunicacin verbal como en los no verbales. En lugar de robots y personajes
animados, los ECAs son preferidos por los investigadores por su libertad de expresin.
Algunas de las caractersticas de los humanos virtuales son: utilizar sntesis de voz con algn tipo de
sincronizacin labial y tener sofisticadas representaciones grficas en 3D con movimientos
corporales y expresiones faciales complejos.
Hay varias ideas acerca de lo que les puede dar credibilidad a los personajes virtuales. Segn (Bates,
1994). Un personaje creble se define, como un personaje que puede proporcionar la ilusin de vida
y permite al pblico suspender su incredulidad. El grado de credibilidad de su ilusin se encuentra
en el acoplamiento y reproduccin de dos dimensiones principales: Antropomorfismo y el
comportamiento. La realizacin permite ms multimodalidad, por lo tanto haciendo la interaccin
ms natural y robusta.
De acuerdo a unos comentarios sobre la apariencia fsica y especialmente la falta de fluidez de las
animaciones de agentes, tambin pueden causar menor credibilidad. Por lo tanto la apariencia fsica
y los factores sociales tienen que tomarse en cuenta en forma conjunta para crear agentes ms
crebles capaces de mantener una interaccin con los usuarios.
conservando slo los elementos de realismo que contribuyen a transmitir la personalidad. Los
asistentes virtuales crebles son personajes interactivos, quienes parecen estar vivos, expresan
emociones y personalidad (Loyall, Bates, & Mitchell, 1997).
Segn (Loyall, Bates, & Mitchell, 1997) los requerimientos para los asistentes virtuales crebles son
que deben mostrar: personalidad, emociones, automotivacin, capacidad de adaptacin, relaciones
sociales, expresin de consistencia e ilusin de vida.
11
Otros bots que se han desarrollado son algunos como Theresa cuyo tema de conversacin es la
msica y la cultura griega, Mimic que aprende mientras hablas con l, Brian que gan el tercer
puesto en el Loebner Prize de 1998 y otros muchos.
La mayora de los bots estn diseados para hablar en ingls. A pesar de la supremaca de los
chatbots en idioma ingls, tambin cabe destacar algunos chatbots desarrollados para hablar en
espaol. Por ejemplo: Dr. Abuse que es uno de los mejores chatbots escritos en espaol en la
actualidad. Este bot toma la personalidad de un psiquiatra al que visitamos para que resuelva
nuestros problemas, pero es capaz de seguir casi cualquier tipo de conversacin. Sus conversaciones
tienen algunos toques de humor y los autores han conseguido dotarle de una personalidad definida.
Otro chatbot escrito en espaol es Zebal. La principal caracterstica de Zebal, es su gran capacidad
para interactuar con el exterior mediante una conexin al IRC lo que le permite aprender de
interlocutores humanos que no saben que estn hablando con un bot. Adems, Zebal se puede
conectar remotamente a bases de datos, lo que le aporta acceso a un gran diccionario de 30000
palabras o incluso puede recoger informacin de Internet. Por el contrario, Zebal no sigue
conversaciones tan bien como el resto de Bots.
Por ltimo cabe destacar que existen chatbots que conversan en otros idiomas, como ejemplo de
esto, tenemos a Eloisa que mantiene charlas en italiano. Muchos de estos Bot son de carcter
general, es decir que no estn especializados en ningn tema en particular, mientras que otros si lo
estn. En la Tabla 1 se muestra una relacin de algunos de los Bots que se encuentran en lnea, en la
cual se especifica la temtica que tratan, su idioma y su Url (Marcelo & P, 2007).
Nombre
Eliza
A.L.I.C.E.
Zebal
Julia
Erin
Mitbolel
Mimic
Brian
Dr. Abuse
Theresa
Eloisa
Alice-espX
Eva
Ins
Tema
Psicologa
General
General
General
Rock & Roll
General
General
General
Psicologa
Msica
General
Relaciones Afectivas
Empresa indisys
Ibanesto
Idioma
Ingles
Ingles
Espaol
Ingles
Ingles
Ingles
Ingles
Ingles
Espaol
Ingles
Italiano
Espaol
Espaol
Espaol
Url
http://www.manifestation.com/neurotoys/eliza.php3
http://www.alicebot.net
http://www.espasoft.net/fichas/zebal.shtm
http://www.lazytd.com/lti/julia/
http://www.extempo.com/webbar/index.html
http://www.romahi.com/yazann/Mitbolel/Mitbolel.html
http://www.thespoon.com/mimic/
http://www.strout.net/info/science/ai/brian/
http://www.ctv.es/USERS/jboronat/drabuse.html
http://www.oz.com/ov/agents/main_index.html
http://web.tin.it/eloisa/
http://aurora.esi.uem.es/ivinas
http://www.indisys.es/
http://asistentevirtual.ibanesto.com/ibanesto/ibanesto.jsp
Otra rea de inters son las aplicaciones mdicas, donde la idea es disponer de agentes que realicen
de forma autnoma tareas que pueden ser automatizadas en un hospital, como por ejemplo: la
monitorizacin de pacientes en cuidados intensivos, estos sistemas se encargaran de seguir el
tratamiento de un paciente controlando todos los aspectos relativos a la enfermedad que tenga el
mismo.
Tambin es posible encontrar aplicaciones dentro del rea del entretenimiento como pueden ser
juegos (la aplicacin de esta tecnologa en juegos permite disponer de juegos ms sofisticados, con
caractersticas inteligentes donde se pueden incorporar personajes virtuales que pueden funcionar de
forma casi autnoma) y el teatro interactivo y cine, donde se permite a un usuario interpretar el
papel de un personaje en una obra donde el resto de los personajes pueden ser virtuales (Botti,
2000).
13
Finanzas, banca y
seguros
Seguridad, industria y
logstica
Portales
Web
financieros
con
asistencia AVI como
gua
- Cajeros automticos.
Ayuda a personas con
problemas
de
accesibilidad.
- Sistemas de SV
(Speaker Verification)
o de huella de voz.
Funciones
de
autentificacin/
identificacin.
- Banca UMTS.
Consulta de saldos y
cuentas
mediante
asistente virtual en
mvil.
- Portales Web de
logstica del estado de
las entregas .Preguntas
tcnicas.
- Kioscos autoservicio
gua en aeropuertos,
estaciones, etc.
Paneles informativos
centros mdicos,
aeropuertos.
- Doctor virtual. Portal
Web de atencin
sanitaria, cita previa.
Telecomunicaciones
- Aplicaciones de
servicios telefnicos
3G.
- Campaas
publicitarias MMS en
mvil. Servicio
contestador.
- Informacin TDT.
14
15
El rol de los asistentes es muy importante, ya que puede un simple asistente que proporcione
informacin, aunque tambin podra realizar tareas ms complejas, si est programado para
realizarlas.
A continuacin una descripcin de algunos roles importantes:
16
Agente secreto o espa. Monitorizan una pgina Web identificada previamente por el
usuario e informan cuando se producen cambios en dicha pgina (Takeyas, 2005).
Jenn, es un experto virtual del servicio a clientes de Alaska Airlines, que entr en
operacin desde febrero de 2008.
Figura 7. Jenn asistente de Alaska Airlines
Alex, la experta virtual de Continental Airlines inici en Julio de 2009. En su primer mes
respondi a ms de un milln de preguntas, y actualmente atiende a ms de 60.000
preguntas por da.
Figura 8. Alex asistente de Continental Airlines
17
18
CAPTULO 3.
ANLISIS DE LA
COMUNICACIN
El anlisis de la comunicacin se basa en dos enfoques principales: El anlisis del discurso que tiene
por fundamento la teora de los actos del habla y el anlisis conversacional que se basa en la
Etnometodologa, que tiene como objetivo identificar las normas y principios que sustentan el
funcionamiento de las conversaciones y los diferentes tipos de intercambios que se producen en la
interaccin comunicativa (Morales, 2007). Este captulo permite comprender el backgroud de la
estructura detrs del diseo de la conversacin de un asistente virtual.
20
La localizacin
Marco socioespacial (escena psicosocial)
Deixis (de persona, de tiempo, de lugar, textual y social).
El comportamiento no verbal
Oral (vocalizaciones, Kinesia, proxemia)
Escrito (soporte, formato, tipografa, lo icnico).
El anlisis de la conversacin nos permite darnos cuenta de cmo las formas, tanto lingsticas
como no lingsticas en la interaccin social crean y dan sentido a nuestras actividades cotidianas.
Teniendo como objetivo el poder entender cmo se construyen, se negocian y reproducen
determinados papeles sociales. A travs del anlisis conversacional y partiendo de las formas
21
En un proceso de comunicacin bsico, un emisor transmite mensajes (actos del habla) por medio de
un canal, ya sea escrito, hablado, o por medio de smbolos (escritura) que son recibidos por un
interlocutor o receptor, quien descodifica los mensajes enviados, es decir los interpreta, los entiende
y los procesa para despus retroalimentar a quien transmite la informacin, esto se evidencia en la
figura 12.
22
Declarativos (enunciados que se usan para declarar un cambio en el estado de las cosas).
Ej.: Le declaro el cirujano jefe del hospital.
La teora de los actos del habla permite caracterizar las locuciones que sern expresadas por un
agente conversacional como parte de un sistema de dilogo.
23
Por lo tanto, el gestor de dilogo puede consultar distintas fuentes de informacin, tales
como resultados del procesamiento del lenguaje natural, resultados de consultas a bases
de datos, conocimiento acerca del dominio de aplicacin, conocimiento acerca de los
usuarios y la historia del dilogo. La complejidad depender de la tarea y flexibilidad e
iniciativa del dilogo.
24
4. Generacin de respuestas y sntesis de voz. A fin de ser aceptados por los usuarios finales, los
sistemas de dilogo deben generar mensajes con un alto nivel de inteligencia y naturalidad, y as de
esta manera programar un dilogo entre humano-maquina, es decir un agente conversacional y el
usuario (Libro Blanco de las Tecnologias del Habla).
25
CAPTULO 4.
PROGRAMACIN DE
DILOGO EN AGENTES
CONVERSACIONALES
En este captulo se describe el lenguaje AIML para poder entender el funcionamiento de cada una
de las etiquetas que se utilizan en ste, y de esta forma programar la base de conocimientos del
asistente virtual la cual permitir dar respuestas al usuario, y as establecer un dilogo.
4.1 AIML
Para poder mantener un dilogo de texto coherente con el usuario en lenguaje natural, en el mdulo
de gestin del dilogo de sta investigacin, se har uso del lenguaje AIML.
AIML (Artificial Intelligence Markup Language, Lenguaje) es un lenguaje compatible con XML
que es fcil de aprender, y nos permite crear una base de conocimientos. Esta base de conocimiento
utiliza un conjunto de categoras con las cuales un agente conversacional podr dar respuesta a
preguntas, asocindoles patrones (personalizados o enfocadas a un tema en especfico).
AIML fue desarrollado por la comunidad de software libre durante el periodo 1995-2000. AIML
describe una clase de objetos de datos llamados objetos AIML. Los objetos AIML estn formados
por unidades llamadas categoras y temas. La unidad bsica de conocimiento en AIML son las
categoras indicadas con la etiqueta <category>. Cada categora se compone de una pregunta de
entrada, una respuesta de salida y un contexto opcional. La pregunta o estimulo se llama patrn y se
seala con la etiqueta <pattern>, el patrn debe de estar en maysculas y debe coincidir con lo que
un usuario pueda dar como entrada. . La respuesta se llama plantilla y est especificada por la
etiqueta <template> (Bush, 2001).
26
4.1.1 Caractersticas
A continuacin se presentan las caractersticas que tiene el lenguaje AIML, como lo es su
simplicidad y su flexibilidad, en particular este lenguaje tiene dos problemas que se presentan a
continuacin el primero de ellos es la rigidez, en la exactitud que tiene, es decir el usuario debe
ingresar exactamente la frase que se tiene previamente en la base de conocimientos. Solo permite el
uso de comodines * y _ en una parte de la frase y no soporta ninguna variante de estos, como podra
ser; cualquier palabra que tenga diez letras, solo si es un digito, solo si es un signo, etc. Tampoco
permite obtener el valor ingresado. Por ejemplo: en la palabra HOLA relaciona solamente una
palabra idntica de las frases (Hola), y HOLA * relaciona cualquier frase de dos o ms
palabras iniciando con Hola (Ej. Hola como estas?). El segundo problema que tiene AIML, es
que ningn intrprete cumple con todo lo que est en la especificacin. Segn AIML debera poder
ejecutar sentencias java script o invocar scripts de otro lenguaje como puede ser BASH, incluso
HTML. Sin embargo estas funcionalidades no estn implementadas. [por que no aiml]
4.1.2 Etiquetas
Esta seccin describe las etiquetas de AIML ms utilizadas en la composicin de un archivo .aiml
que forma parte de la base de conocimiento de un agente conversacional. En la figura 13 se muestra
la jerarqua de las etiquetas en AIML. Cada etiqueta que se abre tiene asociada una etiqueta que se
cierra por ejemplo <category> y </category>.
Son 4 las etiquetas bsicas que se utilizan en la construccin de, la etiqueta <aiml> se utiliza para
iniciar y termina un documento AIML. La etiqueta <category>, marca el inicio de una "unidad de
conocimiento" que contiene a una pregunta (patrn), sus respuestas
y un contexto opcional
(etiquetas that y topic). Los patrones se definen por la etiqueta <pattern>, las posibles respuestas al
patrn estn definidas por la etiqueta <template>. A continuacin se describen las etiquetas
ilustradas en la figura 13.
27
<aiml>
<category>
<pattern>
<that>
</that>
<template>
<srai>
<random>
</srai>
</random>
<template>
</pattern>
</category>
<topic>
</topic>
/aiml
Las Categoras default, son aquellas que en su patrn tiene un * o _. La ltima categora
default es la que tiene un <pattern>*<pattern>, la cual se relaciona con cualquier entrada.
Esas respuestas default son a menudo llamadas por que generalmente se componen de preguntas
diseadas dirigidas a enfocar al cliente de temas que conoce. Categoras predeterminadas muestran
28
que la escritura AIML es un arte y una ciencia. Las categoras default ms comunes tienen patrones
combinados con unas pocas palabras y un smbolo comodn (Ringate, Wallace, Taylon, Baer, &
Daniels, 2001).
Por ejemplo la categora QUE ES *?, es un claro ejemplo de una categora default.
<category>
<pattern>QUE ES *?</pattern>
<template>Es un programa de estudios que est dedicado a la Investigacin y Se
profundiza en problemas que por su complejidad, requieren de encontrar soluciones ptimas,
mediante los nuevos mtodos de computacin inteligente (redes neuronales, mtodos
heursticos, algoritmos genticos, etc.).</template>
</category>
Las Categoras Recursivas son aquellas que mapean entradas a otras entradas, ya sea para
simplificar el lenguaje o a identificar patrones de sinnimos. Muchas entradas de sinnimos tienen
la misma respuesta. Esto se logra con la etiqueta recursiva <srai> (Ringate, Wallace, Taylon, Baer,
& Daniels, 2001). Un ejemplo de esta categora podra ser un saludo como el siguiente BUEN
BUEN
DIA *,
DIA,
estas frases pueden tener varias formas de sinnimos en la forma de responder, como
los que siguen: Que tal, como te va, Hey, como estas, etc. Para mapear esas entradas a la misma
salida para HOLA se usan categoras como las siguientes:
<category>
<pattern>BUEN DIA</pattern>
<template>
<srai>HOLA</srai>
</template>
</category>
<category>
<pattern>BUEN DIA *</pattern>
<template><srai>HOLA</srai></template>
</category>
<category>
<pattern>HOLA</pattern>
<template>
<condition name="name">
<li value="">Hola. Cmo te llamas?</li>
<li value="">Que tal, como te va</li>
<li value="">Hey, Como te va</li>
<li>Hola <get name="name" />!</li>
</condition>
</template>
</category>
"Sabes t que es X?", "Hblame sobre X", "Describe X", "Que puedes tu decirme sobre X?", y "X
es qu?" son algunos ejemplos. Usualmente se intenta almacenar conocimiento en la manera ms
concisa o comn. La funcin <srai> asigna a todas estas formas a la forma bsica:
<category>
<pattern>SABES QUE ES *</pattern>
<template><srai>QUE ES <star/></srai></template>
</category>
<category>
<pattern>HOLA *</pattern>
<template><srai>HOLA</srai> <sr/></template>
</category>
<category>
<pattern>HOLA</pattern>
<template>
<random>
<li>QUE ONDA</li>
<li>HEY COMO ESTAS</li>
<li>QUE TAL</li>
<li>QUE PASO</li>
<li>HEY</li>
</random>
</template>
</category>
30
Con el fin de especificar el estimulo o entrada del usuario, se hace uso de la etiqueta <pattern>.
El patrn es una expresin en un lenguaje formal que se compone de:
La etiqueta <name/>, es la que se sustituye a la hora de cargar el bot con el nombre del bot.
(Ringate, Wallace, Taylon, Baer, & Daniels, 2001).
Las expresiones de AIML en el lado del patrn(PSAE), que pueden aparecer en la etiqueta
<pattern>, <that>, o <topic>, y las expresiones de AIML en el lado de la plantilla(TSAE) que
pueden aparecer dentro de la etiqueta <template>. Note hay diferencias entre el patrn HOLA y
HOLA *. Como se puede observar en la seccin 4.1.2.1 se muestra la sintaxis de un patrn.
Etiquetas <topic></topic>
La etiqueta topic permite elegir las propias respuestas que tienen que ver con el tema actualmente
discutido. Es decir, cuando el programador decidi que un tema sea un topic, se pueden crear
categoras las cuales podran contener ciertas respuestas especficas sobre el topic.
Esto mantiene una conversacin de actualidad y an se tiene la habilidad para moverse de un tema a
otro. Esta etiqueta tambin permite tener patrones duplicados en diferentes contextos (temas)
permitiendo tener diferentes respuestas para el mismo patrn de entrada dependiendo del tema.
Por ejemplo, primordial el patrn * de los distintos temas. Hay la etiqueta <get_topic/> para
referirse al tema en tus declaraciones de salida (template).
Las etiquetas topic se colocan alrededor de una o ms categoras que serian asociadas con el topic
definido. El nombre del tema seria dado por una propiedad name en el inicio de la etiqueta.
Una vez que el tema es asignado, cuando el usuario teclea una frase para encontrar una respuesta,
las categoras definidas en las etiquetas <topic> se relacionan con el tema actual, si no hay una
relacin con la categora definida en el tema actual, entonces cualquiera de las categoras que no
estn definidas en las etiquetas topic son buscadas. Como se menciono anteriormente, podemos
crear categoras con frases o patrones idnticos <pattern> en diferentes temas, cada uno con
distintas repuestas que necesite el tema actual. Por ejemplo, si el bot fuera colocado en un sitio Web
y una persona hablara acerca de perros una entrada muy til podra ser desplegada.
31
<topic name="PERROS">
<category>
<pattern> * </pattern>
<template>
<random>
<li> Los perros son una de las mascotas mas populares para tener</li>
<li> Conoces un Chihuahua, no te gusta?</li>
<li> Que mas sabes sobre perros? </li>
<li> Tienes alguna otra pregunta acerca de los perros? </li>
</random>
</template>
</category>
.
.
.
</topic>
Normalmente habr muchas entradas en un tema, pero en este ejemplo, simplificamos las entradas
por default *. En este caso, si la persona dice algo que el bot no tiene una respuesta especifica
programada, podra aun responder inteligentemente en el tema actual. (Nota: Todo esto es
suponiendo que no son categoras que podra definir el tema actual PERROS). Aunque tambin
los temas pueden solamente tener un nombre, pueden contener los caracteres comodines * _
como un patrn. Asimismo, si bien la continuidad de los criterios del patrn, solamente un carcter
es permitido por nombre. Esto permitira temas como CUIDANDO PERROS o ASEANDO
PERROS puede ser tambin en el tema _PERROS. Al igual que los patrones, los temas mas
especficos ganaran preferencia sobre el tema comodn.
Esto significa que si el tema es actualmente ASEANDO PERROS y aun no hay una respuesta
programada para la entrada en la categora, entonces _PERROS sera verificada.
Etiquetas <that></that>
La etiqueta de AIML <that> se refiere a la respuesta anterior del bot. Hay dos formas de la etiqueta
<that>: una forma pareja <that></that> aparecen en una categora, y una forma atmica <that/>
siempre apareciendo en una plantilla de respuesta. A menudo podemos usar <that/> para encontrar
una oportunidad para crear una categora con <that></that>. Una de las respuestas para la entrada
QUE TAL es <that/> Genial, como te va.
32
Este estilo de anlisis conversacional no presupone que sabemos cuando el usuario dira Que tal;
ms bien se observa que regresa a identificar casos donde apareci uno del siguiente Como estas
tu de las declaraciones del bot. Teniendo identificado el punto de la conversacin, el diseador del
bot crea una nueva categora.
Etiquetas <template></template>
Una Template es la respuesta o parte de la salida de una categora AIML. El caso ms simple se
compone de un sencillo texto sin marcar. AIML provee funciones de marcado para confeccionar las
respuestas para cada entrada individual y de usuario. La funcin de marcado <getname/> por
ejemplo inserta el nombre del cliente en la respuesta. El template puede llamar al patrn relacionado
recursivamente usando las etiquetas <sr> y <srai>. Muchos templates son reducciones simples
simblicas que una frase de mapa para formar a otro, por ejemplo Sabes que es X? transformamos
a Que es X con la categora:
<category>
<pattern>SABES QUE ES *</pattern>
<template><srai>QUE ES<star/> </srai></template>
</category>
La etiqueta template se supone que tambin puede contener otras etiquetas incrustadas de HTML y
XML.
33
En el siguiente fragmento de cdigo, se aprecia cmo se asigna un topic, en un template elegido por
el programador.
<category>
<pattern>MAESTRIA</pattern>
<template>
<think><set name="topic">Maestria</set></think>
<random>
<li>Recuerda que puedes formularme tus dudas acerca de la Maestra en
Ciencias
de la Computacin.</li>
<li>Mi funcin es ayudarte con tus dudas acerca de la Maestra en Ciencias
de la Computacin.</li>
<li>Si tienes alguna duda sobre la Maestra en Ciencias de la Computacin.,
aqu
estoy para ayudarte</li>
<li>Si estas interesado en la Maestra en Ciencias de la Computacin, puedes
preguntarme lo que quieras.</li>
<li>Estas interesado en la Maestra en Ciencias de la Computacin?</li>
<li>Como ya te he dicho, mi funcin es informarte sobre la Maestra en
Ciencias de la Computacin.</li>
</random>
</template>
</category>
Este cdigo permite ilustrar la forma en que se asigna un topic, dentro de un template. Cabe
mencionar que las categoras asociadas al topic pueden ser diferentes o iguales a las que se tiene en
la base de conocimientos aiml. Como se puede apreciar las categoras del topic asignado se
encierran entre la etiqueta topic y tambin tiene su etiqueta de cierre como cualquier otra.
<topic name="MAESTRIA">
<category>
<pattern>QUE ES?</pattern>
<template>Es
un
programa
Investigacin.</template>
</category>
<category>
<pattern>QUE ES</pattern>
<template>Es un programa
.</template>
</category>
</topic>
de
de
estudios
estudios
que
esta
que
est
dedicado
dedicado
la
la
Investigacin
Este lenguaje permite tener en una categora un solo patrn, aunque dato curioso puedes tener varias
respuestas, como salida.
Etiquetas <srai></srai> o <sr></sr>
Esta etiqueta tiene muchos acrnimos (Inteligencia Artificial de Reduccin Simblica,
Inteligencia Artificial de Recursividad Simple, Inteligencia Artificial de Estimulo-Respuesta).
La etiqueta <srai> siempre aparece en la respuesta, pero siempre trae como respuesta lo que se
encuentre en el patrn que se escribe entre esta. El bot busca en su base de conocimientos y
34
encuentra la mejor respuesta. La nica parte difcil es que la respuesta puede estar contenida dentro
de ms etiquetas <srai>. La mejor forma de entender la accin recursiva de la etiqueta <srai> de
AIML es con un ejemplo
Por ejemplo:
<category>
<pattern>HOLA</pattern>
<template><srai>SALUDOS</srai></template>
</category>
<category>
<pattern>SALUDOS</pattern>
<template>Que tal</template>
</category>
En este caso si el usuario dice HOLA, el asistente dar la respuesta que est contenida en el
template del patrn SALUDOS.
En cada nodo, el smbolo _ tiene prioridad primero, luego una palabra y posteriormente, el
smbolo *. Los patrones son ordenados de manera en que el smbolo _ se encuentre antes de
cualquier palabra y el smbolo * posterior a cualquier palabra. La coincidencia se realiza palabra
por palabra, no categora por categora. El algoritmo combina el patrn de entrada y las etiquetas
<that> y <topic> en un slo patrn: PATTERN <that> THAT <topic> TOPIC y trata los tokens
<that> y <topic> como palabras ordinarias. El algoritmo es una versin limitada de una bsqueda en
profundidad y est basado en los algoritmos backtracking.
qu tan fuerte es la emocin. Este atributo permite incorporar varios rangos de intensidad dentro de
cada una de las emociones.
Los rangos de intensidad emocional de las etiquetas emocionales, se basan en la escala de valores
que la intensidad puede tomar en el mdulo emocional. La escala de valores oscila de 0 < x < 9,
donde x es el valor de la intensidad actual.
37
Category
Patrn
Pattern
/Pattern
Template
Enojo
Alegria
Miedo
Tristeza
Sorpresa
Placer
Resignacin
Angustia
Neutro
Intensidad 0-3
Texto Respuesta
/Intensidad
Intensidad 3-6
Texto Respuesta
/Intensidad
Intensidad 6-10
Texto Respuesta
/Intensidad
Intensidad 0-3
Texto Respuesta
/Intensidad
Intensidad 3-6
Texto Respuesta
/Intensidad
Intensidad 6-10
Texto Respuesta
/Intensidad
Intensidad 0-3
Texto Respuesta
/Intensidad
Intensidad 3-6
Texto Respuesta
/Intensidad
Intensidad 6-10
Texto Respuesta
/Intensidad
Intensidad 0-3
Texto Respuesta
/Intensidad
Intensidad 3-6
Texto Respuesta
/Intensidad
Intensidad 6-10
Texto Respuesta
/Intensidad
Intensidad 0-3
Texto Respuesta
/Intensidad
Intensidad 3-6
Texto Respuesta
/Intensidad
Intensidad 6-10
Texto Respuesta
/Intensidad
Intensidad 0-3
Texto Respuesta
/Intensidad
Intensidad 3-6
Texto Respuesta
/Intensidad
Intensidad 6-10
Texto Respuesta
/Intensidad
Intensidad 0-3
Texto Respuesta
/Intensidad
Intensidad 3-6
Texto Respuesta
/Intensidad
Intensidad 6-10
Texto Respuesta
/Intensidad
/Enojo
/Alegria
/Miedo
/Tristeza
/Sorpresa
/Placer
/Resignacin
Intensidad 0-3
Texto Respuesta
/Intensidad
Intensidad 3-6
Texto Respuesta
/Intensidad
Intensidad 6-10
Texto Respuesta
/Intensidad
/Angustia
/Intensidad
/ Neutro
/Template
/Category
Figura 14. Estructura propuesta para los archivos AIML de la base de conocimientos.
38
39
Propsito general
Multiplataforma
Python en
muchos sistemas
Interactivo
Orientado a
Objetos
Funciones y
libreras
Python se puede programar en consola o de forma grfica. Para la modalidad grfica existen varios
IDEs como los siguientes: Boa Constructor, VisualWx, PyDev, OpenKomodo, Eric, PIDA, SPE,
WingIDE, PyScripter.
41
En este caso se utilizar el IDE VisualWx para Python. VisualWx pretende ser la ltima herramienta
RAD diseada para C++, Python, Perl, Ruby, lua y wxWidgets. Algunas de sus caractersticas se
mencionan a continuacin:
4.3.3 MySQLdb
Python permite la conexin y gestin de bases de datos (DBMS). Un DBMS es uno de los cuales es
una coleccin de numerosas rutinas de software interrelacionadas, cada una de las cuales es
responsable de alguna tarea especfica. Para su uso se necesita descargar la librera mysql-python.
MySQLdb es el Python DB API 2.0._mysql es una API de bajo nivel similar a la API MySQL C.
MySQLdb es una interfaz popular para un servidor de base de datos para Python. Los objetivos de
diseo son: Cumple con la versin 2.0 de la API de BD para Python, Threads o hilos de seguridad,
Hilos de manejo o hilos que no se bloquean mutuamente (Dustman, 2006) .
42
CAPTULO 5.
DISEO DE UN ASISTENTE
VIRTUAL CON DILOGO
EMOCIONAL
En el presente captulo se describir la arquitectura general para el diseo de un asistente virtual con
dilogo emocional, sus requerimientos, y la metodologa para organizar la estructura de los
dilogos. La estructura de la base conocimiento que el agente utiliza para construir el dilogo har
uso del lenguaje aiml, ya que para crear una base de conocimientos como ya se haba mencionado
con anterioridad, se puede utilizar el lenguaje AIML, y para crear la interfaz grfica se utiliz, el
lenguaje Python.
Entrada o Pregunta. Es el estimulo o pregunta que se introduce por medio del teclado,
para que el Asistente Virtual, inicie con el proceso de conversacin.
43
En la figura 15, queda ilustrado que el mdulo de Generacin de locucin del asistente, recibe como
entrada una locucin por parte del usuario, es decir, una pregunta, o de la base de conocimientos en
AIML, o de la base de datos en MySQL, todo esto para gener una salida que ser mostrada como
una respuesta al usuario.
Es importante, destacar que lo relevante del Modulo de Generacin de locucin del Asistente, es
que este sirve para generar las respuestas del asistente, es decir, la gestin del dilogo.
Modulo de Generacin
de locucin del Asistente
44
Respuesta
Respuesta
==
Nmero
Respuesta
no
Interfaz
Grfica
Bsqueda de link
(idpage) en BD
Link
usted recibir ms
Informacin en la pgina web
46
La informacin podra provenir de anlisis de video filmaciones de las situaciones reales que se
desean simular. El trabajar con filmaciones permite facilitar el anlisis de la conversacin y del
discurso que permitirn generar una base de los Actos de Habla de la interaccin.
Adems de informacin sobre un tema en especifico, tambin se podran pensar temas relacionados
con los usuarios, como lo pueden ser la forma en que se expresa al saludar, es decir, saludos,
referentes a su persona como nombre, apariencia fsica, edad, estado de nimo, acerca de la familia,
gnero, profesin, nacionalidad, entre otras cosas relacionadas con el usuario. Estos ayudan a crear e
identificar contextos, y los roles de los interlocutores.
Nosotros tenemos la idea que la gestin del dilogo basada en AIML, y la estructura puede tratarse
como un diseo, con esto a partir de la teora de inteligencia artificial llamada CBR (Case-Based
Resasoning), se contextualiza, y en este caso el razonamiento basado en casos vendran siendo las
categoras de AIML. Esta tcnica encuentra el patrn que mejor encaja con cada entrada, y as la
categora enlaza la plantilla de respuesta directamente al patrn del estmulo, y regresa una salida
que satisfaga la entrada. A continuacin se describen algunas condiciones de esta tcnica.
Se estructura una tarea de forma clara; Es decir, que se tenga bien definido el tema o
funcionalidad.
Se introducen frases pre-establecidas por parte del programador o botmaster; Las frases
o preguntas que puede hacer el usuario solamente estarn obligadas a tratar sobre la
Maestra en Ciencias en Ciencias de la Computacin.
En cuanto a las preguntas, se tienen en mente algunas respuestas para las que ya han sido
preestablecidas, es decir se espera una determinada respuesta por parte del usuario; En
esta parte el sistema da una respuesta a una pregunta.
47
A continuacin se presentan las etapas de abstraccin con un diagrama, el cual posteriormente ser
descrito:
Inicio
Establecer
objetivo
Definir atributos de
conversacin
Anlisis de la informacin
recabada
Desarrollar la base de
conocimientos
Fin
En el diagrama anterior se puede observar a grandes rasgos, los pasos que se deben seguir para crear
una base de conocimientos, en la figura 17, se presenta el flujo de una forma muy general, y ya en la
figura 18 se muestra el proceso ms detallado o especifico.
Al utilizar la figura 17, como gua se tiene ha aplicado la metodologa de la organizacin de la
estructura de dilogos. A continuacin se empezarn a describir cada una de las etapas del diagrama
especfico.
48
Establecer objetivo
En esta parte se pretende que se definan o establezcan claramente el objetivo y la funcin del
asistente virtual. Esto influenciar tanto la construccin de la Base de Conocimiento como el
diseo de la Interfaz Grfica que lo acompaar.
49
Inicio
Determinar los dilogos
de respuestas
Establecer
objetivo
Establecer funcin
Desarrollar la base de
conocimientos
Definir el tema de
conversacin
Fin
Determinar
Contextos.
50
DESCRIPCIN
Identificar las relaciones entre el tema y el usuario, para generar los contextos.
5
6
A continuacin se describen las actividades relacionadas con las etapas de anlisis que se deben
tomar en cuenta a la hora de hacer una base de conocimientos, y como se puede deducir un contexto.
ETAPA 1
Para crear una base de conocimientos, es necesario hacernos las siguientes preguntas y tener las
respuestas en mente. Considerando que se tiene un tema especifico, para el cual se presuponen las
preguntas y respuestas de las mismas. En esta etapa se piensa en Cul es la finalidad de la
interaccin y las posibles preguntas que se deben responder?, pues dado el caso, puede ser
resolver dudas, dar informacin adicional, entre otras cosas. As que procedemos a determinar los
diferentes dominios de conocimiento que el asistente debe tener, es decir, Cul es el tema
especifico que queremos tratar?
ETAPA 2
En la siguiente etapa, se determinan quines sern los posibles usuarios del asistente virtual?,
es decir quines son nuestro pblico objetivo: por ejemplo pueden ser los mismos Egresados de
51
A continuacin se muestra un ejemplo de una categora con un patrn para este contexto.
52
<category>
<pattern>BUEN DIA</pattern>
<template><srai>HOLA</srai></template>
</category>
ETAPA 6
Al finalizar la creacin de los archivos AIML que conforman los diferentes contextos que tendr la
base de conocimientos, se recomienda la creacin de un directorio en el que se puedan agrupar y as
facilitar el proceso de la carga e integracin de la base de conocimientos del agente virtual.
La integracin de la base de conocimientos se realiza a travs de un archivo std-startup.xml, el cual
carga en memoria todos los archivos .aiml, que el asistente podr utilizar para la bsqueda de
respuestas. Cada archivo .aiml, que se procesar se especifica con la etiqueta <learn>, indicando la
ruta absoluta del archivo.
Un ejemplo de la estructura de ste archivo es el siguiente:
<?xml version="1.0" encoding="utf-8"?>
<aiml version="1.0.1">
<category>
<pattern>LOAD AIML B</pattern>
<template>
<learn>standard/saludos.aiml</learn>
<learn>standard/mcc.aiml</learn>
<learn>standard/infoUsuario.aiml</learn>
</template>
</category>
</aiml>
Teclado
Monitor
53
Software
DBMS: MySQL.
Tener la Base de Datos (pginas) instalada en el Servidor de BD, contar con el usuario
root y su contrasea root, ya que es la configuracin que tiene la interfaz.
54
CAPTULO 6.
CASO APLICATIVO:
ASISTENTE VIRTUAL DE LA
MAESTRA EN CIENCIAS
EN CIENCIAS
COMPUTACIONALES
En esta tesis nos interesa la problemtica de desarrollar asistentes virtuales con la capacidad de
comunicar por medio de su dilogo, emociones. Los asistentes virtuales que se pueden encontrar en
diversas aplicaciones, no expresan emociones, se disean como un simple personaje virtual con
ciertos movimientos de cabeza, lo cual a lo largo contribuye a un rompimiento de la interaccin con
el usuario, o simplemente un efecto visual.
En este captulo se describe la aplicacin de nuestra arquitectura de diseo de un asistente virtual
con dilogo emocional, como caso aplicativo se desarrollar un asistente virtual que proporcione
informacin sobre la Maestra en Ciencias en Ciencias de la Computacin del Instituto Tecnolgico
de Ciudad Madero (ITCM).
al usuario una respuesta de acuerdo con su entrada, tambin es capaz de mostrar una pgina de
Internet en la que se encontrar informacin ms acertada a la pregunta que le haga al asistente el
usuario.
La aplicacin tambin podra ser desarrollada para un ambiente Web, y as montarlo en la pgina
principal de la Maestra en Ciencias en Ciencias de la Computacin.
Patrn a buscar
Pregunta
Base
De
Conocimientos Aiml
Respuesta
Respuesta Encontrada
El proceso inicia de la siguiente forma, el usuario realiza una pregunta, para la cual el asistente
virtual busca rpidamente un patrn relacionado en la base de conocimientos, al encontrar un patrn
relacionado al de entrada, es decir, a la pregunta, el asistente regresa una respuesta, en forma de
texto, y as sucesivamente.
56
ETAPA 2. Determinar quines sern los posibles usuarios del asistente virtual.
En la siguiente etapa, se determinamos quines sern los posibles usuarios del asistente
virtual?, es decir quines son nuestro pblico objetivo: por ejemplo pueden ser los mismos
Egresados de Ingeniera en Sistemas Computacionales del ITCM, as como alumnos aspirantes a la
Maestra en Ciencias en Ciencias de la Computacin de otras escuelas, Maestros, y en general
alumnos de la Maestra en Ciencias en Ciencias de la Computacin.
ETAPA 3. Identificar las relaciones entre el tema y el usuario, para generar los contextos.
En base a las respuestas de las preguntas anteriores se procede a identificar las relaciones entre el
tema y el usuario, para generar los contextos.
Materias, Maestros, Tesistas, Publicaciones, Plan de estudios; Estas palabras clave le sirven al
asistente virtual, para poder buscar en una base de datos en la que tiene almacenadas, las URL de las
diferentes secciones de la pgina principal de la Maestra en Ciencias en Ciencias de la
Computacin.
58
Tambin se pueden aadir relaciones que involucren la forma de conocer a una persona: los saludos,
su familia, su apariencia fsica, su edad, su nombre, su nacionalidad, su gnero, su profesin, su
estado de nimo, pronombres usados en el dilogo, formas de hacer preguntas, etc.
En la etapa que sigue, se tiene que pensar en el tipo de actividad que uno va a desarrollar en
conjunto con el asistente, si es solo conversacin, o si es solicitud de informacin, u otra cosa.
Ya que se identificaron las relaciones pensando en todo lo que el usuario podra preguntarle al
asistente virtual, se procede a crear los archivos .aiml para cada una de ellas. Encontrando los
posibles patrones que se relacionen con el tema o el usuario. Se consideran todas las posibles
preguntas que el usuario le puede hacer al Bot. Por ejemplo, en el archivo nombrado como
saludos.aiml, en relacin con el contexto se crea el nombre del archivo, es decir, en este archivo se
escribirn categoras que contendrn patrones los cuales se relacionan con los saludos, esto mismo
se puede hacer para otros contextos. Palabras o frases relacionadas con saludos: hola, que tal, como
estas, buenas tardes, buenos das, que onda, etc.
Los patrones, son las palabras clave que el asistente virtual consultar en su base de conocimientos
para brindar la informacin pertinente, estos patrones estn contenidos en las categoras que
contiene el archivo AIML, y se determinan haciendo conjugacin de verbos, palabras. A
continuacin se muestra un ejemplo de una categora con un patrn.
<category>
<pattern>BUEN DIA</pattern>
<template><srai>HOLA</srai></template>
</category>
En el ejemplo anterior se muestra como el patrn BUEN DIA, a lo cual se contestara con lo que
contiene el patrn HOLA en su template, ya que en este caso la plantilla es recursiva, para crear los
patrones se utilizan las etiquetas <pattern> </pattern>, y lo que contiene va en maysculas, con la
finalidad de que sea una posible coincidencia con la entrada del usuario, y as proporcione una
respuesta que se relacione con la entrada del usuario. Posteriormente, si ya se finaliz con la
59
creacin de los archivos que conforman la base de conocimientos, se procede a crea un directorio en
el que se puedan agrupar.
REUTILIZACIN DE LA BASE DE CONOCIMIENTOS.
La reutilizacin de una base de conocimientos
Esta etapa ser de ayuda, por si se llegara a presentar el caso en que se quiere modificar la base de
conocimientos para otro tema diferente, a continuacin se describen los pasos para saber que se
debe modificar en los diferentes archivos aiml de la base de conocimientos.
Teniendo en cuenta que los archivos cuentan con recursividad, los cambios que realizarn sern
precisamente en la parte recursiva de los programas, la cual es una forma reutilizar el cdigo ya
generado, que existe en el archivo mcc.aiml, donde esta almacenada la informacin de la Maestra
en Ciencias en Ciencias de la Computacin.
La recursividad est programada en el archivo infoUsuario.aiml. Si se quiere personalizar la base
de conocimientos para otro proyecto, o empresa, se le tienen que realizar 2 cambios bsicos.
En
el
archivo
infoUsuario.aiml,
dentro
de
la
categora
que
tiene
como
patrn
saludos.aiml
infoMcc.aiml
familia.aiml
genero.aiml
infoUsuario.aiml
pronombres.aiml
nombres.aiml
astrologa.aiml
Mcc.aiml
60
Estos archivos que se presentan aqu arriba tienen como objetivo, crear un dilogo emocional, por
ende, una conversacin. Estos ficheros aiml servirn para darle la capacidad de mantener una
conversacin al asistente virtual con el usuario. De esta forma quedara organizado el conocimiento
del asistente virtual, posteriormente se explicar cada uno de los archivos ms significativos, que
conforman la base de conocimientos.
El primer archivo que se describir ser el de saludos.aiml, este es un archivo en el que se pensaron
las diferentes formas de emitir un saludo, ya sea de bienvenida, despedida, o de encuentros en las
diferentes partes de un da, maana, tarde, y noche, con expresiones simples como las siguientes:
buen da, buenas, buenas tardes, buenos das, buenas noches, hola, hi, hello, adis, gracias, etc.
A continuacin se muestra un pequeo ejemplo del contenido del archivo, que cuando encuentre un
patrn relacionado con buen da este tendr la respuesta que contiene el patrn HOLA, el cual
contiene las respuestas siguientes como las que se pueden apreciar. Al tener un gran nmero de
categoras se busca llegar a tener frases de respuesta por parte del asistente virtual.
<category>
<pattern>BUEN DIA</pattern>
<template>
<srai>HOLA</srai>
</template>
</category>
<category>
<pattern>BUEN DIA *</pattern>
<template><srai>HOLA</srai></template>
</category>
<category>
<pattern>HOLA</pattern>
<template>
<condition name="name">
<li value="">HOLA.Como te llamas?</li>
<li>HOLA <get name="name" />!</li>
</condition>
</template>
</category>
En el cdigo arriba presentado se puede comprobar lo que se dijo anteriormente, ya que se hace uso
de la recursividad, y a la vez se puede pensar en BUEN DIA, como un saludo, y por lo tanto
sinnimo de HOLA, tiene la misma intencin en el contexto.
El siguiente archivo a describir es el de sinRespuestas.aiml este contiene categoras con patrones
como un * el cual le da a entender al asistente virtual, que lo que escribi el usuario como entrada
y no se encuentre en la base de conocimientos, le dir lo siguiente, que no encuentra una respuesta a
la pregunta del usuario, y siendo as, mandara una respuesta la cual le haga saber al usuario que no
encontr respuesta alguna o que no entiende, este archivo tambin contiene categoras con patrones
que esperan informacin acerca de preguntas, gustos, capacidades y aficiones.
61
El cdigo que se presenta a continuacin, tiene la funcin de mandar una respuesta al usuario, aun
que no se encuentre coincidencia en toda la base de conocimientos.
<category>
<pattern>NOSE</pattern>
<template>
<think><set name="topic">interrogativas</set></think>
<random>
<li>Siento decirte que no lo s. </li>
<li>No tengo ni idea. </li>
<li>No lo s. </li>
<li>Yo que s. Mira que eres pesado, todo el da preguntando. No te enojes que es
broma.</li>
<li>Lo desconozco. </li>
<li>Pues no tengo ni la menor idea. </li>
<li>Si yo lo supiera te lo dijera</li>
</random>
</template>
</category>
<category>
<pattern>COMO *</pattern>
<template><srai>NOSE</srai></template>
</category>
<category>
<pattern>CUANDO *</pattern>
<template><srai>NOSE</srai></template>
</category>
Se podra dar el caso, en que se usen las palabras claves de las preguntas, es decir, como, cuando,
donde, tambin como ya se menciono tiene categoras que fueron programadas para el caso de que
no encontrara coincidencia alguna en toda la base de conocimientos, se devolvera una de las frases
que se tiene ah en el cdigo como plantilla.
El archivo infoUsuario.aiml tiene como finalidad responder a preguntas relacionadas con la
informacin del usuario. Se implemento con recursividad, en la cual se llega a una categora que
contiene un patrn final, en el cual se puede realizar varias preguntas, para obtener informacin del
usuario.
62
En este fragmento de cdigo, se presentan algunas preguntas personales, las cuales estn dadas en la
recursividad en el patrn NUEVO TEMA, esta lleva a generar aleatoriamente preguntas personales
como por ejemplo: Cmo te llamas?, Eres hombre o Mujer?, Cuntos aos tienes?, En qu
trabajas?, etc.
En el archivo que lleva por nombre Mcc.aiml, estn contenidos patrones que tienen palabras clave
que se relacionan con la informacin de la Maestra en Ciencias en Ciencias de la Computacin.
Sin embargo en este archivo contiene suficiente informacin acerca de la Maestra, pero como las
respuestas estaban dentro de una etiqueta topic, es decir se creaban respuestas para un contexto
predefinido, en este caso la Maestra. Por lo tanto se tuvo que crear un archivo con las mismas
categoras, para que respondiera aunque no se le haya hablado al asistente sobre el contexto
Maestra y tal archivo es infoMcc.aiml los contiene como categoras independientes de lo anterior.
63
En el archivo al que se le asigno el nombre de genero.aiml estn contenidas categoras las cuales
cuentan con patrones que preguntan al usuario si es hombre o mujer, al igual para el bot, es decir, el
usuario le pregunta al bot que genero es si es hombre o mujer, obviamente utilizando los sinnimos
respectivos.
En este cdigo se puede observar que la base de conocimientos espera como entrada SOY HOMBRE
o SOY MUJER para dar una respuesta condicionada al gnero del usuario, siempre y cuando ya lo
haya definido.
<category>
<pattern>SOY HOMBRE</pattern>
<template>
<condition name="gender" value="MUJER"> Pues pens que eras mujer.</condition>
<think><set name="gender">HOMBRE</set></think>Yo soy un hombre robot.
<srai>PREGUNTA</srai>
</template>
</category>
<category>
<pattern>SOY MUJER</pattern>
<template>
<condition name="gender" value="HOMBRE">Pues pens que eras hombre.</condition>
<think><set name="gender">MUJER</set></think>Yo tambien. <srai>PREGUNTA</srai>
</template>
</category>
64
65
</category>
<category>
<pattern>* HOLA *</pattern>
<template><srai>HOLA</srai></template>
</category>
<category>
<pattern>HI</pattern>
<template><srai>HOLA</srai></template>
</category>
<category>
<pattern>* HI</pattern>
<template><srai>HOLA</srai></template>
</category>
<category>
<pattern>HI *</pattern>
<template><srai>HOLA</srai></template>
</category>
<category>
<pattern>* HI *</pattern>
<template><srai>HOLA</srai></template>
</category>
Como se puede observar, aiml sufri unos cambios en la sintaxis del cdigo, y por ende se hace un
poco ms complejo. De esta forma quedara reorganizada la base de conocimientos, adecuando cada
uno de los archivos anteriormente descritos en la seccin 6.2.3.
Construccin de interfaz
66
Ahora sigue la parte fundamental de nuestro proyecto la codificacin de la interfaz. Para este
proyecto se cre una base de datos llamada pginas como se muestra a continuacin.
En la siguiente base de datos se almacenaron los links relacionados con la pgina principal de la
Maestra en Ciencias en Ciencias de la Computacin. Y contiene los links porque es una forma
sencilla de acceder a ellos de manera prctica a la hora de codificar.
La base de datos est compuesta de lo siguiente:
1 Tabla pages, 2 campos idpages y pagina.
Paginas
pages (idpages, pagina)
21 Registros con las pginas de la Maestra en Ciencias en Ciencias de la Computacin.
67
Idpages
Pagina
http://www.itcm.edu.mx/mccc06/
http://www.itcm.edu.mx/mccc06/anteMcc.php
http://www.itcm.edu.mx/mccc06/misionMcc.php
http://www.itcm.edu.mx/mccc06/equiposMcc.php
http://www.itcm.edu.mx/mccc06/logrosMcc.php
http://www.itcm.edu.mx/mccc06/ProgMccc07.html
http://www.itcm.edu.mx/mccc06/cursoMCCC.php
http://www.itcm.edu.mx/mccc06/infoMcc.php
http://www.itcm.edu.mx/mccc06/requiMcc.php
10
http://www.itcm.edu.mx/mccc06/material/material.php
11
http://www.itcm.edu.mx/mccc06/aceptados.php
12
http://www.itcm.edu.mx/mccc06/calendarioAspirantes.php
13
http://www.itcm.edu.mx/mccc06/planMcc.php
14
http://www.itcm.edu.mx/mccc06/perfilMcc.php
15
http://www.itcm.edu.mx/mccc06/criteriosEvaluacion.php
16
http://www.itcm.edu.mx/mccc06/calendarioPropuestas2007Nov.php
17
http://www.itcm.edu.mx/mccc06/lineasMcc.php
18
http://www.itcm.edu.mx/mccc06/inveMcc.php
19
http://www.itcm.edu.mx/mccc06/aluMcc.php
20
http://www.itcm.edu.mx/mccc06/publiMcc.php
21
http://www.itcm.edu.mx/mccc06/graduados.pdf
68
La primer librera que se carga es la Wx, ya que es la librera que utiliza la herramienta VisualWx,
para manejar los grficos, despus se procede a cargar de la librera AIML, y ya con esta librera,
podremos cargar archivos AIML, con los cuales podremos simular una conversacin con el bot, ya
que los posibles patrones que reconozca el bot estn escritos en los archivos .aiml, los cuales se
encuentran en una carpeta llamada standard, al mismo tiempo estos estn siendo cargados por el
archivo std-startup.xml y se utiliza el mtodo learn para enviarle como parmetro el nombre del
archivo y el mtodo respond para que inicie la carga de los archivos aiml.
Posteriormente se crea una conexin (lnea 10) a la base de datos llamada pginas, la cual contiene
lo siguiente ver figura 22:
Tambin se crea un cursor, el cual nos ubica en el inicio de la base de datos (lnea 11),
posteriormente se crea una consulta utilizando el cursor (lnea 12), despus se crea un filtro, en el
cual solo lo relacionado con la consulta quedara almacenado en el objeto res (lnea 13), y en seguida
69
se crean e inicializan las siguientes variables valor, listpages, listcampo cada una con sus respectivos
valores (lneas 14-16) como se muestra en la figura 22.
Figura 23. Creacin del objeto k, en este caso es como si fuera el cerebro del bot.
En la figura 23 se muestra la creacin del bot, cargando la base de conocimientos en su cerebro con
el mtodo learn (lnea 19) y permitiendo que el bot conteste con el mtodo respond (lnea 20) y
asignndole un nombre al bot (lnea 21).
En la figura 24 se muestra que a partir de la lnea 22 hasta la 99 es cdigo que genera la herramienta
VisualWx.
La funcin pregunta solo se activa cuando el evento que tiene especificada la caja de texto, es decir
la edit text, que es cuando escribes algo sobre ella y es presionada la tecla Enter, solo as se
ejecutara la funcin pregunta. Y esta se escribe a la misma sangra que los dems mtodos que ya
vienen por default ver figura 25.
70
En esta parte se cre el objeto donde se podrn teclear las preguntas ver figura 26.
En la lnea 99 se define la funcin pregunta, en la lnea 102 y 103 se crean variables de tipo String,
en la lnea 104 se recupera el contenido de la caja de texto (edit text) que esta nombrado como tx4c,
en la variable pregunta la cual es de tipo String, y que cuenta con un mtodo llamado GetValue (),
que regresa una cadena de tipo String, en la lnea 105 se recupera la respuesta del bot en la variable
respuesta, envindole como parmetro la cadena de la pregunta, posteriormente en la lnea 106 se
realiza una conversin, la cadena de respuesta se convierte a Unicode que es un estndar de
codificacin, con el cual se pueden interpretar ciertos caracteres, un ejemplo seria el acento, la ,
entre otros. Y as tambin se le pasa como parmetro al mtodo Unicode la cadena que se
transformar y el cdigo que en que est representado el carcter o caracteres a convertir ver figura
27.
71
Para visualizar el cdigo completo de la clase frmchild.py, que es el cdigo de nuestro inters, ver el
anexo A. En la seccin A2. Adems de la clase frmchild, estn tambin los cdigos de las clases
generadas automticamente por el IDE VisualWx.
Pseudocdigo.
As mismo con el Pseudocdigo anterior se espera que la cadena de respuesta sea un nmero ya sea
01, 0221 ya que son los ID que tienen las pginas en la base de datos, y as poder realizar todo el
procedimiento, y si no simplemente imprime la respuesta, ver figura 28.
72
Para el botn Enviar tambin se le coloc el mismo cdigo solo que en su funcin llamada
bt6_VxXEvOnButtonClick (). Este cdigo se ejecutar cuando sea presionado el botn vase figura
29 y 30 en la que observa el objeto y su forma de programarlo.
Ahora se ver como est estructurado el archivo std-startup.xml. Este archivo contiene un patrn
llamado LOAD AIML B, y los archivos en los que posiblemente puede encontrar una respuesta
relacionada con el patrn de entrada.
73
74
75
CAPTULO 7.
EXPERIMENTACIN Y
RESULTADOS
7.1 Descripcin de la Experimentacin
En esta seccin se describirn como objetivos de la experimentacin, las pruebas necesarias que se
llevaron a cabo. En este caso se registraran los resultados de seguir la metodologa respecto al
cdigo AIML, la realizacin de una conversacin asistente-usuario, es decir, una interaccin
humano-computadora, adems de la efectividad de la misma.
Etapa 2. Determinar quines sern los posibles usuarios del asistente virtual.
En esta etapa an no se realiza ningn procedimiento, ni es necesario aun crear ni un fragmento de
cdigo.
Etapa 3. Identificar las relaciones entre el tema y el usuario, para generar los contextos.
En esta etapa se analiza la informacin recabada para poder crear los contextos.
Etapa 4. Identificar el rol y tipo de actividad que el asistente virtual va a desarrollar.
76
En esta etapa se identifica el rol del asistente y que actividad realizara. En las primeras cuatro etapas
se realiza un anlisis de la informacin recopilada sobre la Maestra en Ciencias en Ciencias de la
Computacin.
77
<category>
<pattern>QUE ES?</pattern>
<template>Es un programa de estudios que esta dedicado a la Investigacion. Se
profundiza en problemas que por su complejidad, requieren de encontrar soluciones ptimas,
mediante los nuevos mtodos de computacin inteligente (redes neuronales, mtodos
heursticos, algoritmos genticos, entre otros)</template>
</category>
<category>
<pattern>QUE ES</pattern>
<template>Es un programa de estudios que esta dedicado a la Investigacion. Se
profundiza en problemas que por su complejidad, requieren de encontrar soluciones ptimas,
mediante los nuevos mtodos de computacin inteligente (redes neuronales, mtodos
heursticos, algoritmos genticos, entre otros)</template>
</category>
<category>
<pattern>QUE ES *?</pattern>
<template>Es un programa de estudios que esta dedicado a la Investigacion y Se
profundiza en problemas que por su complejidad, requieren de encontrar soluciones ptimas,
mediante los nuevos mtodos de computacin inteligente (redes neuronales, mtodos
heursticos, algoritmos genticos, entre otros).</template>
</category>
<category>
<pattern>DE QUE TRATA</pattern>
<template>Trata sobre tecnologias de bots y sus aplicaciones en el campo de la
educacion. Se profundiza en problemas que por su complejidad, requieren de encontrar
soluciones ptimas, mediante los nuevos mtodos de computacin inteligente (redes
neuronales, mtodos heursticos, algoritmos genticos, entre otros)</template>
</category>
<category>
<pattern>DE QUE SE TRATA</pattern>
<template>Trata sobre tecnologias de bots y sus aplicaciones en el campo de la
educacion. Se profundiza en problemas que por su complejidad, requieren de encontrar
soluciones ptimas, mediante los nuevos mtodos de computacin inteligente (redes
neuronales, mtodos heursticos, algoritmos genticos, entre otros).</template>
</category>
78
<category>
<pattern>_ PUBLICACIONES *</pattern>
<template><srai>_ PUBLICACIONES</srai></template>
</category>
<category>
<pattern>_ PUBLICACIONES</pattern>
<template>20</template>
</category>
<category>
<pattern>MIEMBROS</pattern>
<template>18</template>
</category>
<category>
<pattern>MIEMBROS *</pattern>
<template><srai>MIEMBROS</srai></template>
</category>
<category>
<pattern>WEB</pattern>
<template>01</template>
</category>
<category>
<pattern>_ WEB</pattern>
<template><srai>WEB</srai></template>
</category>
<category>
<pattern>ANTECEDENTES</pattern>
<template>02</template>
</category>
<category>
<pattern>ANTECEDENTES *</pattern>
<template><srai>ANTECEDENTES</srai></template>
</category>
<category>
<pattern>MISIONVISION</pattern>
<template>03</template>
</category>
<category>
<pattern>_ MISION * VISION</pattern>
<template><srai>MISIONVISION</srai></template>
</category>
En todas las categoras anteriores, como respuesta regresan un nmero, el cual es tratado con
Python, y hace consulta a una base de datos, para extraer la pgina y mostrrsela al usuario.
Identificacin de Problemas
Debido a que solo se escribieron categoras con patrones pensados como las posibles preguntas del
usuario, no se logro abarcar todo el conocimiento existente en el mundo, as que tiene tendencia a
equivocarse en las respuestas. Aunque con respecto a la Maestra debera de contestar
correctamente, con lo que se le pregunta.
80
CAPTULO 8.
CONCLUSIONES Y TRABAJOS
FUTUROS
8.1 Conclusiones
En este trabajo de tesis se realizo el diseo de una metodologa para organizar la estructura de los
dilogos. Tambin se diseo un asistente virtual con el software iClone PRO 4.1. Se utiliz una base
de conocimientos para darle el dilogo al asistente virtual. Se desarroll la interfaz grfica para
integrar al asistente virtual y la base de conocimientos en Python.
8.2 Aportaciones
Como resultado de este trabajo quedo un asistente creado en Python, que utiliza una base de
conocimientos creada en el lenguaje AIML.
Se present una metodologa, para crear bases de conocimientos, gua para construir
interfaces, se presenta caso aplicativo a la maestra en ciencias en ciencias de la
computacin.
BIBLIOGRAFA
lvarez, M. A. (2003). Qu es Python.
http://www.desarrolloweb.com/articulos/1325.php
Recuperado
Abril
8,
2011,
partir
de
Bates, J. (1994). The role of emotion in believable agents. Communications of ACM. Special Issue on Agents,
9.
Botti, V. J. V. (2000). Agentes Inteligentes: el siguiente paso en la Inteligencia Artificial. ATI, 5.
Bush, N. (2001). AIML 1.0.1 (A.L.I.C.E. AI Foundation). Recuperado Abril 8, 2011, a partir de
http://www.alicebot.org/TR/2001/WD-aiml/#section-introduction
Cassell, J., Bickmore, Tim, Campbell, L., Vilhjlmsson,, H., & Yan, H. (2000). Conversation as a System
Framework: Designing EmbodiedConversational Agents.
Cassell, J., & Bickmore, Timothy. (2002). Negotiated Collusion:Modeling Social Language and its
Relationship Effectsin Intelligent Agents. MIT Media Lab 20 Ames St., E15-315 Cambridge, MA 02139 USA.
Coca, G. H., & ngel, S. C. S. del. (2009). METODOLOGA PARA LA SIMULACIN DE EXPRESIONES
NO VERBALES DE UNA RECEPCIONISTA VIRTUAL. ITCM.
dTinfS.L. (2008). Asistente Virtual Semntico (pg pp 15).
Dustman, A. (2006). MySQL for Python | Download MySQL for Python software for free at SourceForge.net.
Recuperado Abril 8, 2011, a partir de http://sourceforge.net/projects/mysql-python/
Florencia, R. (2010). Agente Conversacional Corpreo que utiliza AIML para integrar procesos de
personalidad. ITCM, Cd. Madero, Tamaulipas.
Gratch,, J., Rickel, J., Andr, E., Badler, N., Cassell, J., & Petajan, E. (2002). Creating interactive Virtual
Humans some assembly requided. IEEE Inteligent Systems, pp 10.
Jenkins, M.-C. (2010). Using construction grammar in conversational systems. Recuperado Abril 5, 2011, a
partir de http://www.slideshare.net/mcjenkins/using-construction-grammar-in-conversational-systems
Kopp, S. (2009). Social Resonance and Embodied Coordination inFace-to-Face Conversation with Artificial
Interlocutors. Speech Communication, 12 pp.
Loyall, A. B., Bates, J., & Mitchell, T. (1997). Believable Agents: Building Interactive Personalities, 97--123.
Lun, E. V. (2010a). Conversational Agent - a program that acts on behalf of humans and chats. Recuperado
Abril 8, 2011, a partir de http://www.chatbots.org/conversational_agent/
Lun, E. V. (2010b). Chatbots.org 2.6: Forum and even smarter account pages | News. Recuperado Abril 8,
2011, a partir de http://www.chatbots.org/community/buzz_stop/welcome_to_chatbot.org_2.0/
Marcelo, A. C., & P, M. G. E. (2007). Agentes Inteligentes en la webBots de conversacin.
82
Monroy, G. L. (2008). Interfaz grfica para la edicion de cuentos interactivos para ninos. Recuperado Abril 6,
2011, a partir de http://catarina.udlap.mx/u_dl_a/tales/documentos/lis/lopez_m_g/index.html
Morales, M. L. (2007). Modle dinteraction sociale pour des agents conversationnels anims Application la
rducation de patients crbro-lss. LUNIVERSIT TOULOUSE III : PAUL SABATIER.
Next IT Corporation. (2010). Next IT - Providing Intelligent Customer Experience Solutions. Recuperado
Abril
14,
2011,
a
partir
de
file:///C:/Users/Jesus/Documents/Maestria/Tesis/Agentes%20Conversacionales/Paginas%20Web/Next%20IT
%20-%20Providing%20Intelligent%20Customer%20Experience%20Solutions(Introduccion).htm
Nwana, H. S. (1996). Software Agents: An Overview. Knowledge Engineering Review, Vol. 11(N 3), pp 49.
Pedro Branco. (2003). Emotional Interaction.
Ringate, T., Wallace, D. R., Taylon, A., Baer, J., & Daniels, D. (2001). ALICE AIML Primer. Recuperado
Mayo 9, 2011, a partir de http://www.alicebot.org/documentation/aiml-primer.html
Takeyas, B. L. (2005). Agentes Inteligentes.
VisualWx. (2010). VisualWX. Recuperado Abril 8, 2011, a partir de http://visualwx.altervista.org/index.php
Wordreference. (2005). conversacional - Definicin - WordReference.com. Conversacional- DefinicinWordreference.com Diccionario de la lengua espaola. Recuperado Abril 8, 2011, a partir de
http://www.wordreference.com/definicion/conversacional
Llisterri, J. (2007) El papel de la fontica en las tecnologas del habla in Actas do 3 Congreso Internacional
de Fontica Experimental. Santiago de Compostela, 24-26 outubro de 2005. Santiago de Compostela : Xunta
de
Galicia.
Pp.
23-37.
ISBN :
978-84-453-4451-4
disponible
en
http://liceu.uab.es/^joaquim/publicacions/Llisteri_05_Fontica_Tecnologias_Habla.pdf
83
ANEXOS
ANEXO A: CREACIN DE
INTERFAZ GRFICA
Este anexo contiene el proceso detallado paso por paso, de cmo ir aadiendo los componentes
grficos para conformar la interfaz grfica del asistente virtual.
Abrir el IDE VisualWx, una vez abierto
proseguimos a crear un nuevo proyecto dando
clic en File, despus en New Proyect, como se
muestra en la figura 35.
Posteriormente indicar que el template que se
utilizar ser WX_MDI_Python y guadar el
Proyecto en una carpeta en la que almacene
todos los archivos y programas que utilizar.
El nuevo proyecto tendr la extensin .pbc.
Figura 35. VisualWx
Una vez terminado el proceso anterior, aparece la ventana principal con un formulario gris (ver
figura 36) y podremos construir nuestro propio asistente virtual. Dentro de ste formulario se
crearn objetos o controles del tipo botn, caja de texto, panel, y rea de texto.
El botn para enviar la pregunta, la caja de texto para escribir la pregunta, y la caja de texto para
visualizar la pregunta y la respuesta, y el panel para visualizar al personaje virtual.
84
disponibles
componentes
que
continuacin
se
se
los
pueden
describir
el
diferentes
utilizar.
proceso
de
Se inicia colocando una etiqueta de Texto (Static text). En esta siguiente ventana se ha cambiado el
color de fondo dando clic propiedades, en la opcin backcolor, ver figura 37.
Para cambiar el contenido original de la etiqueta de texto se da clic en su propiedad Text, y despus
se escribe lo que se desea aparezca en la etiqueta y se da clic en OK.
85
Tambin se le puede dar clic en la propiedad Font y cambiarlo si as se desea, en esta opcin se
puede cambiar el tipo de letra, el estilo, tamao y algunos efectos (Figura 38).
En nuestro ejemplo se cre y edito el control static text (etiqueta), para escribir la cadena Haz tu
pregunta. Como se puede observar en la figura 41.
86
A continuacin se insertan 2 controles un edit text, que crear una caja de texto que permitir
mostrar la interaccin del usuario con el bot y un edit text multilnea o tambin conocido como
rea de texto, ver figura 40.
Ahora se crea un botn con la leyenda enviar. En esta parte se edita el texto que tiene por default
que es control, se le escribe la palabra Enviar, y se da clic en OK, ver figura 42.
87
As se ve la interfaz grfica, pero aun falta colocar una imagen de un rostro para simular que es un
agente conversacional eso lo veremos ms adelante.
Ahora se selecciona, un objeto Panel, al cual se le asignar una imagen, para ello seleccionar la
opcin Bitmap en las propiedades del control y cargar la imagen que se desea especificando el tipo
de archivo al que pertenece nuestro recurso, por ejemplo bmp, icon, gif, png, jpg, pcx, iff, tiff, ani,
pnm, xpm, cursor, *.rc, etc.
88
89
ANEXO B: INTEGRACIN DE
LA BASE DE CONOCIMIENTOS
A LA INTERFAZ GRFICA
Este anexo contiene el cdigo de las cuatro clases que se generan con el IDE VisualWx, en la cual la
clase App.py es el equivalente a un main, es decir, el programa principal que hace llamadas a todas
las clases relacionadas con la interfaz grfica.
Esta clase frmchild se construye a partir de que se elige el tipo de plantilla Wx_MDI_python, ya que
es cdigo que se genera automticamente, sin embargo en este cdigo es donde se debe incluir
nuestro cdigo, ya que es el que contendr los objetos que pueden esperar algn evento como lo
son: botones, cajas de texto, etc. En si aqu escribimos el cdigo para vincular MySQL, AIML con
Python para hacer funcional la aplicacin.
La vinculacin de la base de datos con la interfaz grfica se lleva a cabo mediante instrucciones, es
decir, a nivel de cdigo, al igual que el enlace de aiml con la interfaz grfica para integrar la base de
conocimientos.
El programa Visualwx crea 4 clases, las cuales se pondrn solo el cdigo necesario:
Frmchild.py, es el frame que nos permite agregar cdigo y generar la interfaz grfica.
90
Frmchild.py
# -*- coding: utf-8 -*# Don't modify comment
import wx
#[inc]add your include files here
import aiml
import sys
import subprocess
import MySQLdb
db = MySQLdb.connect(host='localhost', user='root', passwd='root', db='paginas')
cursor = db.cursor()
busca = cursor.execute('SELECT * FROM pages')
res = cursor.fetchall()
valor=0
listidpages=[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
listcampo=['idpages','pagina']
k = aiml.Kernel()
k.learn("std-startup.xml")
k.respond("LOAD AIML B")
class frmChild(wx.MDIChildFrame):
def __init__(self,parent,id = -1,title='',pos = wx.Point(1,1),size = wx.Size(860,500),style
= wx.DEFAULT_FRAME_STYLE,name = 'frame'):
pre=wx.PreMDIChildFrame()
self.OnPreCreate()
pre.Create(parent,id,title,pos,size,style,name)
self.PostCreate(pre)
self.initBefore()
self.VwXinit()
self.initAfter()
def __del__(self):
self.Ddel()
return
def VwXinit(self):
self.fileImgBuf=[None] * 1
self.fileImgBuf[0] = wx.Bitmap("cybormona11.jpg",wx.BITMAP_TYPE_JPEG)
self.pn8cImg0=self.fileImgBuf[0];
self.SetTitle('Bot')
self.Show(True)
self.SetBackgroundColour (wx.SystemSettings.GetColour(wx.SYS_COLOUR_INFOBK))
self.st3c = wx.StaticText(self,-1,"",wx.Point(415,330),wx.Size(164,28),wx.ST_NO_AUTORESIZE)
self.st3c.SetLabel("Haz tu pregunta")
self.st3c.SetFont(wx.Font(14,74,90,92,0,"Tahoma"))
self.tx4c = wx.TextCtrl(self,-1,"",wx.Point(410,365),wx.Size(405,21))
self.Bind(wx.EVT_TEXT_ENTER,self.pregunta,self.tx4c)
self.txm5c = wx.TextCtrl(self,-1,"",wx.Point(415,20),wx.Size(400,300),wx.TE_MULTILINE)
self.bt6c = wx.Button(self,-1,"",wx.Point(685,330),wx.Size(135,25))
self.bt6c.SetLabel("Enviar")
self.Bind(wx.EVT_BUTTON,self.bt6c_VwXEvOnButtonClick,self.bt6c)
self.pn8c = wx.Panel(self,-1,wx.Point(15,20),wx.Size(365,300))
self.pn8c.Bind (wx.EVT_ERASE_BACKGROUND,self.VwXpn8c_VwXEvOnEraseBackground)
self.Refresh()
return
# Codigo agregado
def pregunta(self,event): #init function
usuario="Usuario: "
bot="Bot: "
pregunta=self.tx4c.GetValue()
respuesta= k.respond(pregunta)
resp=unicode(respuesta,"utf-8")
if(resp=="01" or resp=="02" or resp=="03" or resp=="04" or resp=="05" or resp=="06" or
resp=="07" or resp=="08" or resp=="09" or resp=="10" or resp=="11" or resp=="12" or
resp=="13" or resp=="14" or resp=="15" or resp=="16" or resp=="17" or resp=="18" or
resp=="19" or resp=="20" or resp=="21"):
91
valor=int(resp)
if(valor>=0):
for i in range (0, len(res)):
cursor.execute("SELECT * FROM pages WHERE "+str(listcampo[0])+ " = '
"+str(valor)+" ' " )
encuentra=cursor.fetchall()
aux= str(encuentra[0])
pagina1= aux[6:len(aux)-2]
pagina2= aux[7:len(aux)-2]
for j in range(0, len(listidpages)):
if(listidpages[j]==valor):
if(valor<10):
subprocess.Popen(
'"C:\Archivos
de
programa\Internet
Explorer\IEXPLORE.EXE" -brokerredirect %s' % pagina1 )
if(valor>9):
subprocess.Popen(
'"C:\Archivos
de
programa\Internet
Explorer\IEXPLORE.EXE" -brokerredirect %s' % pagina2 )
self.txm5c.AppendText(usuario+ pregunta+" \n")
self.txm5c.AppendText(bot+ "usted recibira mayor informacion en la pagina
que se abre :D"+" \n")
self.tx4c.SetValue(" ")
else:
self.txm5c.AppendText(usuario+ pregunta+" \n")
self.txm5c.AppendText(bot+ resp+" \n")
self.tx4c.SetValue(" ")
return #end function
92
ANEXO C: CREACIN DE
EJECUTABLE DE LA INTERFAZ
GRFICA
Se tiene que tener instalada la librera py2exe que nos permitir crear un ejecutable de la aplicacin.
Se importan las libreras disutils.core, se importa setup, despus se define como script principal
App.py, posteriormente se le asigna un icono a la aplicacin principal, es decir, una imagen al
archivo ejecutable. En este caso se llama bot.ico, despus se copian los archivos a los cuales pueda
hacer referencia el principal, ver figura 44.
Al terminar esto se procede a abrir el smbolo del sistema (lnea de comandos), figura 45.
93
Ya que se abri el smbolo del sistema se posiciona en el directorio python25, ver figura 46.
Estando en la carpeta de python25, que es el lugar donde est guardado el archivo prueba.py, que
contiene el cdigo para hacer un ejecutable del archivo principal llamado App.py y asignarle un
icono. Se tiene que escribir de la siguiente forma para hacer ejecutable el archivo, vase figura 47:
Sintaxis:
Posteriormente se ver en la pantalla negra, como se empaquetan todas las libreras necesarias en
dos carpetas, una que se llama dist y otra que se llama build.
94
Despus de que termin el proceso de hacer ejecutable en el directorio Python25 estarn dos
carpetas: build y dist. Las que contienen el archivo ejecutable (.exe, adems de las libreras
empaquetadas), vase figura 50.
95
En la siguiente figura se puede observar el contenido de la carpeta build, tiene subcarpetas las cuales
contienen libreras empaquetadas.
En la figura 52 se puede observar lo que contiene la carpeta dist, en la cual se guarda el archivo
ejecutable del proyecto, adems de las libreras necesarias para funcionar en cualquier otra
computadora.
96