tesis de master “integraciÓn de un chatbot como...
TRANSCRIPT
UNIVERSIDAD CARLOS III DE MADRID
DEPARTAMENTO DE INGENIERÍA DE SISTEMAS Y AUTOMÁTICA
TESIS DE MASTERTESIS DE MASTERTESIS DE MASTERTESIS DE MASTER
“INTEGRACIÓN DE UN CHATBOT COMO HABILIDAD “INTEGRACIÓN DE UN CHATBOT COMO HABILIDAD “INTEGRACIÓN DE UN CHATBOT COMO HABILIDAD “INTEGRACIÓN DE UN CHATBOT COMO HABILIDAD
DE UN ROBOT SOCIAL CON GESTOR DE DIÁLOGOS”DE UN ROBOT SOCIAL CON GESTOR DE DIÁLOGOS”DE UN ROBOT SOCIAL CON GESTOR DE DIÁLOGOS”DE UN ROBOT SOCIAL CON GESTOR DE DIÁLOGOS”
Autor: Juan Carlos Cobos Torres.
Directores: Javier Fernández de Gorostiza Luengo.
y Fernando Alonso Martin.
MASTER OFICIAL EN
ROBÓTICA Y AUTOMATIZACIÓN.
LEGANÉS, MADRID
OCTUBRE 2013
UNIVERSIDAD CARLOS III DE MADRID MASTER OFICIAL EN ROBÓTICA Y AUTOMATIZACIÓN
El tribunal aprueba la tesis de Master titulada ““““INTINTINTINTEGRACIÓN DE EGRACIÓN DE EGRACIÓN DE EGRACIÓN DE UN CHATBOT COMO HABILIDAD DE UN ROBOT SOCIAL CON UN CHATBOT COMO HABILIDAD DE UN ROBOT SOCIAL CON UN CHATBOT COMO HABILIDAD DE UN ROBOT SOCIAL CON UN CHATBOT COMO HABILIDAD DE UN ROBOT SOCIAL CON GESTOR DE DIÁLOGOSGESTOR DE DIÁLOGOSGESTOR DE DIÁLOGOSGESTOR DE DIÁLOGOS”””” realizado por Juan C. CobosJuan C. CobosJuan C. CobosJuan C. Cobos....
Fecha: octubre 2013
Tribunal: _____________________________________________
Presidente
_____________________________________________ Vocal
_____________________________________________ Secretario
Al recuerdo de mis Abuelitos que siempre los llevo en mi corazón.
“El que tiene fe en sí mismo no necesita que los
demás crean en Él”
Miguel de Unamuno.
V
ÍNDICE GENERALÍNDICE GENERALÍNDICE GENERALÍNDICE GENERAL
ÍNDICE GENERAL .........................................................................................V
ÍNDICE ILUSTRACIONES .......................................................................... XI
AGRADECIMIENTOS .................................................................................. XV
RESUMEN ................................................................................................... XIX
ABSTRACT ................................................................................................. XXI
CAPÍTULO: PRELIMINARES. ............................................................. 1
1.1. Introducción. .................................................................................. 1
1.2. Objetivos. ........................................................................................ 2
1.2.1 Generales. ............................................................................................ 2
1.2.2 Específicos. .......................................................................................... 2
1.3. Estructura del documento. ........................................................... 3
CAPÍTULO: ESTADO DEL ARTE. ....................................................... 7
2.1. Reseña Histórica. ........................................................................... 7
2.2. Agentes Conversacionales o Chatbots. ...................................... 9
2.2.1. Características de los Chatbots. ................................................. 10
2.2.2. Aplicaciones. ................................................................................ 12
2.2.3. Arquitectura de los Chatbots. .................................................... 12
2.2.4. Evaluación de Chatbots. ............................................................. 15
2.3. Plataformas de desarrollo de chatbots. .................................... 18
2.3.1. AIML. ............................................................................................ 18
2.3.2. RiveScript. .................................................................................... 19
2.3.3. Aerolito. ........................................................................................ 20
2.4. Comparación de plataformas de desarrollo de chatbots. ...... 20
2.5. Justificación de elección. ............................................................. 21
VI
CAPÍTULO: ANÁLISIS DE CHATBOTS ACTUALES. ................... 25
3.1. Análisis de Chatbots existentes. ............................................... 25
3.1.1. Jabberwacky, George y Joan...................................................... 26
3.1.2. Cleverbot. ..................................................................................... 28
3.1.3. Akinator (2007). ........................................................................... 29
3.1.4. Elbot (2001). ................................................................................. 31
3.1.5. Pandorabots. ................................................................................ 33
3.1.6. BotGenes. ..................................................................................... 34
CAPÍTULO: EVALUACIÓN DE CHATBOTS. ................................ 41
4.1. Evaluación de Chatbots. ............................................................ 41
4.1.1. Tabulación de Datos. .................................................................. 41 4.1.2. Análisis de resultados. ................................................................... 47
CAPÍTULO: PLATAFORMA DE INTEGRACIÓN DE CHATBOTS. .......................................................................................................................... 51
5.1. Integración a gestor de diálogos. .............................................. 51
4. ....................................................................................................... 52
5.1.1. Nodo ASR. ................................................................................... 52
5.1.2. Nodo eTTS. .................................................................................. 52
5.2. Diseño del sistema. ..................................................................... 52
5.2.1. Plataforma de integración del chatbot George. ...................... 53
5.2.2. Desarrollo del Prototipo. ........................................................... 54
5.3. Plataforma de integración chatbot Diego. ............................... 55
5.3.1. Desarrollo del Prototipo. ........................................................... 57
5.4. Plataforma para el desarrollo del chatbot local. ..................... 58
5.4.1. Desarrollo del Prototipo. ........................................................... 59
5.5. PyAIML (Inteligencia Artificial Mark-up Language). ........... 67
CAPÍTULO: PRUEBAS EXPERIMENTALES. .................................. 73
6.1. Introducción. ............................................................................... 73
6.2. Ejecución general de Plataformas. ............................................ 73
6.2.1. Ejecución de Plataforma Diego. ................................................ 76
6.2.2. Ejecución de Plataforma George. .............................................. 77
VII
6.2.3. Ejecución de Plataforma Local. ................................................. 78
6.2.4. Autoevaluación de la plataforma Bot Local. ........................... 79
6.2.4.1. Fluidez verbal semántica. ........................................................... 80
6.2.4.2. Fluidez verbal fonológica. .......................................................... 81
6.2.4.3. Denominación a definiciones. ................................................... 81
6.2.4.4. Denominación de objetos. ¿Qué es esto? ................................. 81
6.2.4.5. Fluidez verbal de nombres propios y Denominación de nombres propios. ¿Cómo se llama…?. ................................................... 82
6.2.4.6. Recuerdo de una persona. (Presentación de conocido). ........ 82
6.2.4.7. Cantidad y Capacidad de cálculo. ............................................ 83
6.2.4.8. Ambigüedad. ............................................................................... 83
6.2.4.9. Ubicación temporal. .................................................................... 83
6.2.4.10. Capacidad lingüística. ................................................................ 84
6.2.4.11. Razonamiento lógico y Capacidad crítica, .............................. 84
CAPÍTULO: CONCLUSIONES Y TRABAJOS FUTUROS. ............ 87
7.1. Conclusiones. ............................................................................... 87
7.2. Aportaciones ................................................................................ 88
7.3. Trabajos Futuros. ......................................................................... 89
7.4. Recomendaciones. ....................................................................... 90
CAPÍTULO: ANEXOS. ........................................................................ 93
8.1. Lenguaje AIML (Inteligencia Artificial Mark-up Language). .................................................................................................. 93
BIBLIOGRAFÍA ........................................................................................... 109
IX
ÍNDICE TABLASÍNDICE TABLASÍNDICE TABLASÍNDICE TABLAS
Tabla 1 Aplicaciones de los chatbots. __________________________________ 12
Tabla 2. Comparación de plataformas de desarrollo de chatbots. __________ 21
Tabla 3 Código de Base de Conocimiento AIML. ________________________ 67
Tabla 4 Estructura motor de inferencia PyAIML. ________________________ 69
Tabla 5 Propiedades de un Chatbot en AIML. __________________________ 97
XI
ÍNDICE ILUSTRACIONESÍNDICE ILUSTRACIONESÍNDICE ILUSTRACIONESÍNDICE ILUSTRACIONES
Ilustración 1 Premio Loebner Medalla de Oro.1 __________________________ 9
Ilustración 2 Estructura básica de un chatbot. ___________________________ 13
Ilustración 3 Estructura ampliada de un chatbot. ________________________ 14
Ilustración 4 Test de Turing. _________________________________________ 15
Ilustración 5 Experimento de la habitación China. _______________________ 17
Ilustración 6 Lenguaje de programación AIML para chatbots. ____________ 18
Ilustración 7 Lenguaje de programación RiveScript para chatbots. _________ 19
Ilustración 8 Chatbot Jabberwacky. ___________________________________ 26
Ilustración 9 Chatbot George. ________________________________________ 27
Ilustración 10 Chatbot Joan. __________________________________________ 28
Ilustración 11 Chatbot Cleverbot. _____________________________________ 28
Ilustración 12 Chatbot de entretenimiento Akinator. _____________________ 29
Ilustración 13 Chatbot Elbot. _________________________________________ 31
Ilustración 14 Chatbot Ana de IKEA. __________________________________ 32
Ilustración 15 Comunidad Pandorabots________________________________ 33
Ilustración 16 Empresa BotGenes. _____________________________________ 34
Ilustración 17 Chatbot Claudio Matos. _________________________________ 35
Ilustración 18 Chatbot María Martínez. ________________________________ 36
Ilustración 19 Chatbot Diego Perez. ___________________________________ 37
Ilustración 20 Proceso del gestor de diálogos. ___________________________ 51
Ilustración 21 Diseño General del Sistema. _____________________________ 53
Ilustración 22 Diseño del Sistema George. ______________________________ 54
Ilustración 23 Código Fuente de Sistema George. _______________________ 55
Ilustración 24 Diseño del Diego. ______________________________________ 56
XII
Ilustración 25 Código Fuente de Sistema Diego. ________________________ 58
Ilustración 26 Diseño del Sistema del bot local. _________________________ 59
Ilustración 27 Código Fuente de Sistema Bot local. ______________________ 61
Ilustración 28 Motor de tratamiento de Datos PyAIML. __________________ 68
Ilustración 29 Estructura PyAIML. ____________________________________ 70
Ilustración 30 Ejecución nodos ad_core y ad_servers. ____________________ 74
Ilustración 31 Ejecución de nodo ASR. _________________________________ 74
Ilustración 32 Ejecución de nodo eTTS. ________________________________ 75
Ilustración 33 Nodos Activos ROS. ____________________________________ 76
Ilustración 34 Ejecución del nodo Bot_Diego. ___________________________ 77
Ilustración 35 Nodos activos en la plataforma del chatbot Diego. __________ 77
Ilustración 36 Ejecución del nodo Bot_George. __________________________ 78
Ilustración 37 Nodos activos en la plataforma del Bot George. ____________ 78
Ilustración 38 Ejecución del nodo Bot_Local. ___________________________ 79
Ilustración 39 Nodos activos en la plataforma del Bot Local. ______________ 79
Ilustración 40 Lenguaje de programacion AIML para Chatbots. ___________ 93
Ilustración 41 Etiquetas AIML. _______________________________________ 95
Ilustración 42 Uso de etiquetas Set, Get y Think. ________________________ 99
Ilustración 43 Esquema de etiquetas AIML. ___________________________ 101
Ilustración 44 Tipos de categorías AIML. _____________________________ 103
Ilustración 45 Uso de etiquetas Pattern y Template. ____________________ 104
Ilustración 46 Uso de etiqueta Topic. _________________________________ 105
Ilustración 47 Diagrama de Flujo etiqueta That. ________________________ 106
Ilustración 48 Uso de etiqueta That. __________________________________ 107
XV
AGRADECIMIENTOS Quería agradecer a mis tutores Javier Fernández de Gorostiza y Fernando
Alonso Martin por el esfuerzo realizado para que yo realizase con éxito el
máster, por su amistad sincera y colaboración, pero sobre todo por su apertura a
trabajar conmigo, con infinita paciencia, capacidad de reflexión y sobre todo su
siempre positivo estado de ánimo.
Al Profesor Miguel Angel Salichs le agradezco, por sus concejos y la motivación
para que continúe mis estudios y especialización con mi doctorado. Gracias.
Además a mi país, mi lindo Ecuador, por brindarme la actual beca de estudios y
darme la oportunidad de prorrogarla para continuar con mis estudios.
También a mis padres (Papitos Gonzalo, Alexandra y Carlitos) y hermanos
(Chalito, Betito, Camilita, Juanita, Xavi y Estebin), que a lo largo de estos años
a pesar de la distancia han sido mi apoyo y estímulo, siempre presentes en los
malos y buenos momentos, sabiendo sacar en cada momento lo mejor de mí.
Pero sobre quería dedicar esta tesis a mi amiga, compañera, el amor de mi vida
mi Esposa mi hermosa Carlita y a mi pequeño Patojito la razón de mi vida
Juanito que han sido mi pilar y compañía en esta aventurado en tierras lejanas.
No quería olvidarme a mis compañeros de laboratorio:
David, el manitas que con sus concejos y guía me daba ánimos día a día para
seguir avanzando con el presente proyecto.
XVI
Alberto que con su experiencia y conocimientos me guiaba y seguramente
gracias a él he sido capaz de completar este trabajo con éxito. Estoy convencido
de que sin su ayuda en los momentos en que no lograba algo no hubiera podido
avanzar.
Víctor con sus grandes conocimientos sobre Python que a pesar de estar casi
siempre ocupado, saco tiempo para ayudarme y aconsejarme.
Por último, gracias a todos los que me rodean, mi familia que nunca me olvida
y a pesar de la distancia siempre están presentes y estoy seguro de que sin su
apoyo, su colaboración, esta tesis no hubiese sido posible.
XIX
RESUMENRESUMENRESUMENRESUMEN La proliferación de Robots Sociales en la actualidad como sistemas de
interacción hombre-máquina, con capacidades cada vez más semejantes a los
humanos, está generando una gran variedad de puntos de vista y enfoques en
la incorporación de agentes virtuales como parte del sistema de interacción; por
eso en este trabajo de fin de máster se presenta la plataforma de integración de
un chatbot como habilidad de un Robot Social, se desarrolla con la reunión de
tres chatbots que permitirá al robot contar con temas extensos y variados de
conversación.
Esta tesis aborda esta problemática desde el punto de vista de la evaluación de
los chatbots que dialoguen en idioma castellano existentes en la actualidad y
que han sido reconocidos por sus logros y aptitudes, para esto se ha realizado
un estudio del análisis de los niveles lingüísticos, generando un sistema de
evaluación por tareas en los distintos niveles lingüísticos del Procesamiento de
Lenguaje Natural. Una vez evaluados y seleccionados se procede a su
integración, además se plantea la creación y desarrollo de un chatbot local que
alcance cualidades similares a los chatbots evaluados, será la base para
posteriores mejoras y trabajos de investigación en el área del Procesamiento de
Lenguaje.
Como herramienta que ayudara a relacionar los chatbots al Robot Social, se
diseña un paquete en el Sistema Operativo Robotico ROS, sistema que trabaja
bajo el lema “divide y vencerás” con lo cual podemos trabajar con módulos ya
existentes como reconocimiento automático del habla y síntesis de voz del
habla, que nos permitirá la interacción con el Robot Social de forma verbal.
XX
El paquete contiene tres nodos de conexión a los diferentes chatbots. Se ha
trabajado bajo el lenguaje Python por sus características de programación pero
sobre todo por su programación orientada a objetos, para esto se utiliza el nodo
Rospy. Los chatbots seleccionados son: Diego de la compañía argentina
Botgenes y George del programador Británico Rollo Carpenter que funcionan
bajo enlace a Internet y como dijimos el tercer chatbot es el desarrollado para
que funcione de manera local, bajo el lenguaje de programación AIML, que fue
seleccionado por contar con una comunidad que diariamente está trabajando
en Bases de Conocimiento, más extensas y complejas a nivel mundial. El enlace
a Python se realizó mediante el intérprete Pyaiml.
Finalmente se realiza una autoevaluación del chatbot local, mediante la
experimentación en las tareas planteadas en la evaluación de los niveles
lingüísticos, para plantear futuras mejoras y detallar todas sus funcionalidades.
En este trabajo, por tanto, se detalla el funcionamiento, desarrollo de esta
plataforma de integración de chatbots como habilidad de un Robot Social.
XXI
ABSTRACTABSTRACTABSTRACTABSTRACT
The proliferation of Social Robots today as systems of human-computer
interaction, with increasing capabilities similar to humans, is generating a
variety of views and approaches to the incorporation of virtual agents as part
of the interaction; so in this master's thesis presents the integration platform as
a chatbot ability of a Social Robot, is developing three chatbots the meeting will
enable the robot to have extensive and varied topics of conversation.
This thesis addresses this issue from the point of view of the evaluation of
chatbots engage in dialogue in Spanish language exist today and have been
recognized for their achievements and skills, for this has made a study of the
analysis of linguistic levels, generating a system of evaluation in different
linguistic levels in Natural Language Processing. Once evaluated and selected
their integration proceeds also proposes the creation and development of a
powerful local chatbot -like qualities evaluated chatbots, which will be the basis
for further improvements and research in the area of Language Processing.
As a tool to help relate the chatbots the Social Robot, designing a package in
ROS Robotic Operating System, a system that works under the motto "divide
and conquer" with which we can work with existing modules such as automatic
speech recognition and synthesis speech voice, allowing us to interact with the
Social Robot verbally.
The package contains three nodes connecting to different chatbots. He has
worked under the Python language for programming characteristics but
especially for object-oriented programming, so this node is used Rospy. The
selected chatbots are: Diego of the company Botgenes Argentina and George of
XXII
the British programmer Rollo Carpenter link operating under Internet and as
we said the third chatbot is developed to work locally, under the AIML
programming language, which was selected by have a community that is
working daily in Knowledge Bases, more extensive and complex worldwide.
The link to Python was performed by the interpreter Pyaiml.
Finally carried out a self-assessment of Local chatbot, by experimenting in the
tasks set in the evaluation of linguistic levels, to raise future enhancements and
detailing all its features. In this paper, therefore, describes the operation and
development of this integration platform skill chatbots as a Social Robot.
Capítulo 1Capítulo 1Capítulo 1Capítulo 1 PreliminaresPreliminaresPreliminaresPreliminares....
“Desde que se inventó la imprenta, la libertad de
prensa es la voluntad del dueño de la imprenta.”
Rafael Correa.
CapítuloCapítuloCapítuloCapítulo: : : : PPPPreliminaresreliminaresreliminaresreliminares....
1.1.1.1.1.1.1.1. IntroducciónIntroducciónIntroducciónIntroducción....
En la actualidad el uso de los Agentes Conversacionales o chatbots es muy
común, pues se han vuelto instrumentos de usos múltiples en disciplinas
variadas desde simples supervisores de conversaciones o chat, atención al
cliente, ayudantes, hasta mantener una conversación de cualquier tema
específico con la capacidad de emular el diálogo que un usuario mantendría
con un agente real. Los agentes son programas basados en Inteligencia
Artificial, son entidades capaces de percibir su entorno, procesar lo que
perciben y tener una reacción, es decir, una respuesta o actuar en su entorno
de manera racional. En esta tesis, se presenta un análisis de Agentes
Conversacionales que trabajen en idioma castellano. Resultado de éste
trabajo se diseña e implementa un Agente Virtual como una habilidad de
un Robot Social con gestor de diálogos, que proporciona información
mediante lenguaje natural.
1111
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 2
1.2.1.2.1.2.1.2. Objetivos.Objetivos.Objetivos.Objetivos.
1.2.1 Generales.1.2.1 Generales.1.2.1 Generales.1.2.1 Generales.
Realizar un análisis y evaluación sobre chatbots en castellano existentes
en la actualidad, mediante una revisión sistemática de bots disponibles
en la Web y un análisis comparativo, para implementar una plataforma
para chatbots como una habilidad de un Robot Social.
1.2.2 Específicos.1.2.2 Específicos.1.2.2 Específicos.1.2.2 Específicos.
- Analizar, explicar aspectos relevantes y conceptos de procesamiento
de lenguaje necesarios para desarrollar un chatbot.
- Identificar los puntos débiles que existen en el desarrollo de los
chatbots, para lograr su mejora.
- Proponer un proceso que permita medir y evaluar los chatbots que
trabajen en idioma castellano.
- Realizar la integración del chatbot como una habilidad de un Robot
Social.
Objetivos.
UNIVERSIDAD CARLOS III DE MADRID. Preliminares.
JUAN C. COBOS T. 3
1.3.1.3.1.3.1.3. Estructura del documento.Estructura del documento.Estructura del documento.Estructura del documento.
En ésta sección se describe cómo está organizado éste documento, así
como la Información que contiene cada uno de los capítulos.
Capítulo 2, presenta el Estado del Arte que da fundamento al presente
trabajo. Se revisan los conceptos básicos sobre agentes conversacionales, sus
características, aplicaciones, arquitectura, así como las plataformas de
desarrollo, su comparación y la justificación para la elección del lenguaje
seleccionado para la creación del chatbot local.
Capítulo 3, describe los chatbots existentes en la actualidad, detallando sus
características y atributos más destacados.
Capítulo 4, se evalúa a dos chatbots, los más destacados por sus logros,
premiaciones, características y que dialogan en idioma español.
Capítulo 5, se describe la metodología y las fases realizadas en el
desarrollo del prototipo experimental.
Capítulo 6, detalla la ejecución de la plataforma propuesta y los resultados
obtenidos relacionados con el desempeño del chatbot local.
Capítulo 2.Capítulo 2.Capítulo 2.Capítulo 2. Estado del Arte.Estado del Arte.Estado del Arte.Estado del Arte.
“Tanto más libre es un pueblo, cuanto más
ilustrado”
Juan Montalvo.
Capítulo:Capítulo:Capítulo:Capítulo: Estado del Arte.Estado del Arte.Estado del Arte.Estado del Arte.
2.1.2.1.2.1.2.1. Reseña Histórica.Reseña Histórica.Reseña Histórica.Reseña Histórica.
En la década de los 50 se empieza a utilizar el término “Artificial”, en el
análisis desarrollado por A. M. Turing en su artículo Máquinas de
Computación e Inteligencia que propuso un experimento hoy conocido
como Test de Turing, con la intención de definir una prueba estándar por el
que una máquina podría catalogarse como "sensible" o "sintiente” en cierta
medida, considerarse inteligentes, los avances en este campo han sido
cuantiosos. Algunos de estos avances se han realizado en el área del
lenguaje natural, centrándose en conseguir que una máquina sea capaz de
interpretar el lenguaje natural y generar una respuesta coherente y
apropiada.
El programa ELIZA fue escrito a finales de los años sesenta por el profesor
Joseph Weizenbaum del Massachusetts Institute of Technology. Lo diseñó
como una ayuda al análisis del lenguaje. Este programa, que es considerado
el primer bot conversacional, era muy sencillo, pero sin embargo era capaz
de obtener resultados muy convincentes dependiendo de las frases
introducidas. Eliza, sirvió de modelo para los chatbots actuales, se basan en
la creación de patrones que simulen el comportamiento humano. PARRY,
en cambio fingía ser un humano paranoico y sirvió para evaluar sus
conversaciones con tres pacientes que sufrían de paranoia y posteriormente
se los afronto con un médico.
La evolución de este tipo de programas ha sido incesante, y con el paso de
los años fueron apareciendo muchos nuevos diseños que intentaban
mejorar los resultados de sus antecesores, con más o menos suerte. Desde
2222
UNIVERSIDAD CARLOS III DE MADRID. Estado del Arte.
JUAN C. COBOS T. 8
1990 se celebra el concurso Loebner basado en el test de Turing que ofrece
$100,000 y una medalla de oro para el primer ordenador que sea capaz de
pasar este test. Esta medalla está aún sin ser entregada, Ilustración 1. Es un
certamen de carácter anual dedicado a valorar la calidad de los bots
conversacionales.
En 1995, el Dr. Richard Wallace escribió A.L.I.C.E., en su primera versión,
uso SETL, un lenguaje basado en lógica matemática, pero sin mucho exito.
Luego se desarrolló la segunda versión de A.L.I.C.E el “Program A”, esta
versión se desarrolló usando AIML y Java. La tercera version el “Program
B” con la colaboracion de 300 desarrolladores tomando como estándar
AIML en base a XML, esta versión permitió a A.L.I.C.E ganar el Loebner
Prize del año 2000. Se han creado dos versiones de A.L.I.C.E., el “Program
C” desarrolló en base C/C++ y el “Program D” desarrollado en tecnología
Java2. En 2001 se fundó “The A.L.I.C.E. AI Foundation” organización sin
ánimo de lucro con la vocación de distribuir, promocionar, desarrollar y
mantenimiento de Alicebot para fines de investigación y formación.
Pero aunque el camino para la perfección aún está lejos, las mejoras
tecnológicas actuales tanto a nivel de hardware como en la calidad del
software, invitan a pensar que probablemente se conseguirá el objetivo de
que los chatbots entiendan y no solo repitan patrones. Con suerte estaremos
aquí para verlo.
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 9
Ilustración Ilustración Ilustración Ilustración 1111 Premio Loebner Medalla de Oro.Premio Loebner Medalla de Oro.Premio Loebner Medalla de Oro.Premio Loebner Medalla de Oro.1111
2.2.2.2.2.2.2.2. Agentes ConversacionAgentes ConversacionAgentes ConversacionAgentes Conversacionales o Chatbots.ales o Chatbots.ales o Chatbots.ales o Chatbots.
Un agente conversacional es un programa de software que interpreta y
responde a las declaraciones realizadas por los usuarios en lenguaje natural
corriente. Se integra técnicas de lingüística computacional y la
comunicación se puede establecer a través de Internet, Mensajes
instantáneos, e-mail, foros, etc.
El término “agente conversacional” puede ser analizado por las dos
palabras que lo componen. La palabra “agente” es un sistema software, el
cual, viene definido por su flexibilidad, entendiendo por flexible que un
agente sea:
• Reactivo, responda al entorno en que se encuentra.
• Proactivo, que sea capaz de intentar cumplir sus propios objetivos.
• Social, sea capaz de comunicarse con otros agentes mediante algún
tipo de lenguaje” (Wooldridge & Jennings, 1995)
La palabra conversacional significa “Perteneciente o relativo a la
conversación.”. (DRAE, n.d.), entonces un agente conversacional es una
Agentes Conversacionales.
UNIVERSIDAD CARLOS III DE MADRID. Estado del Arte.
JUAN C. COBOS T. 10
entidad artificial diseñada para tener conversaciones con seres humanos u
otros agentes conversacionales.
Los agentes conversacionales son llamados chatbot, bots, chatterbots, V-
personas o persona virtual. En la actualidad existen muchos agentes
conversacionales con variadas características, utilidades, complejidad y
capacidad de respuesta. Podemos encontrar desde sencillos chatbots
pensados como juego y diversión, que pretenden responder de forma más o
menos cómica, hasta otros muy complejos y técnicos en algún campo que
tienen un uso práctico elevado o simplemente que han sido construidos con
fines comerciales.
2.2.1.2.2.1.2.2.1.2.2.1. Características de los Chatbots.Características de los Chatbots.Características de los Chatbots.Características de los Chatbots.
Cada agente, tiene sus propias características, pero las que diferencian
a los agentes conversacionales son las siguientes:
AutonomíaAutonomíaAutonomíaAutonomía: un agente es completamente autónomo si es capaz
de actuar basándose en su experiencia. El agente es capaz de
adaptarse aunque el entorno cambie severamente, puede
brindar diferentes formatos (o estilos) de respuesta,
dependiendo del tipo de usuario, del tipo de pregunta realizada,
etc.
Sociabilidad:Sociabilidad:Sociabilidad:Sociabilidad: este atributo permite a un agente comunicar con
otros agentes o incluso con otras entidades, la cual sería la
característica diferenciadora de los chatbots.
RacionalidadRacionalidadRacionalidadRacionalidad: el agente siempre realiza lo correcto a partir de los
datos que percibe del entorno, sabe formular respuestas,
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 11
analizando la frase introducida, son capaces de generar la
respuesta más apropiada
ReactividadReactividadReactividadReactividad: un agente actúa como resultado de cambios en su
entorno. En este caso, un agente percibe el entorno y esos
cambios dirigen el comportamiento del agente. Pueden
proporcionar respuestas de diversa naturaleza. Es decir, no
tienen que limitarse a brindar frases como respuestas. Pueden
proporcionar enlaces dentro de la web o incluso recursos
electrónicos como respuesta.
ProProProPro----actividadactividadactividadactividad: un agente es pro-activo cuando es capaz de
controlar sus propios objetivos a pesar de cambios en el entorno.
Pueden ser programados para comprender el contexto de la
conversación y situar la pregunta en el mismo.
AdaptabiliAdaptabiliAdaptabiliAdaptabilidaddaddaddad: está relacionado con el aprendizaje que un
agente es capaz de realizar y si puede cambiar su
comportamiento basándose en ese aprendizaje. Se encuentra en
fase de desarrollo, pero ya con avances promovedores.
MovilidadMovilidadMovilidadMovilidad: capacidad de un agente de trasladarse a través de
una red telemática.
VeracidadVeracidadVeracidadVeracidad: asunción de que un agente no comunica información
falsa a propósito.
PersonalidadPersonalidadPersonalidadPersonalidad: cada agente es único y depende del programador
las características que quiera darle como emociones,
comportamiento no verbal, entre otros.
Estas son sólo algunas de las características generales de este tipo de
agentes conversacionales.
Características de los Chatbots.
UNIVERSIDAD CARLOS III DE MADRID. Estado del Arte.
JUAN C. COBOS T. 12
2.2.2.2.2.2.2.2.2.2.2.2. AplicacionesAplicacionesAplicacionesAplicaciones....
En la actualidad los agentes conversacionales se han diversificado y
masificado en su uso, pues se están convirtiendo en herramientas de
mucha utilidad en diversas áreas, a continuación en la Tabla 1 se da un
detalle.
Tabla Tabla Tabla Tabla 1111 Aplicaciones de los chatbots.Aplicaciones de los chatbots.Aplicaciones de los chatbots.Aplicaciones de los chatbots.
2.2.3.2.2.3.2.2.3.2.2.3. Arquitectura de los Chatbots.Arquitectura de los Chatbots.Arquitectura de los Chatbots.Arquitectura de los Chatbots.
La estructura básica de un chatbot se puede observar en la Ilustración 2, el
proceso es:
•Educación.
•Idiomas.
•Psicología.
•Arte.
•Historia.
Académico y científico.
•Atención al Cliente.
Asistentes virtuales.
•Estudio de Mercado.
•Ventas.
•Marketing.
•Campañas.
•Turismo.
Empresariales.
•Entretenimiento.
•Juguetes
•Sexuales.
•Religiosos.
•Redes Sociales
Diversión
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 13
1. El conocimiento del experto humano debe introducirse en la base
del conocimiento, en función a las plantillas, patrones y reglas.
(Ingeniería del conocimiento).
2. El usuario introduce la entrada mediante la interfaz, está la envía al
motor de inferencia.
3. El motor de inferencia analiza las situaciones, establece los objetivos
y obtiene la respuesta de acuerdo a la base de conocimiento,
enviándola de vuelta a la interfaz del usuario.
Ilustración Ilustración Ilustración Ilustración 2222 Estructura básica de un cEstructura básica de un cEstructura básica de un cEstructura básica de un chatbot.hatbot.hatbot.hatbot.
“Los datos están agrupados en lo que denominaremos base de hechos, se
utilizan sistemas de representación del conocimiento de tipo declarativo que
forman la Base de Conocimientos, el control es independiente y se denomina
Motor de Inferencia, por último la entrada y salida de datos es similar a los
programas tradicionales”. (Ruiz Tadeo, 2009)
Arquitectura de los Chatbots.
UNIVERSIDAD CARLOS III DE MADRID. Estado del Arte.
JUAN C. COBOS T. 14
Podemos desglosar más la estructura del chatbot, en el cual se verifica la
estructura de la oración, errores ortográficos, entre otros. El proceso se presenta
en la Ilustración 3.
Ilustración Ilustración Ilustración Ilustración 3333 Estructura ampliEstructura ampliEstructura ampliEstructura ampliada de un cada de un cada de un cada de un chatbot.hatbot.hatbot.hatbot.
• Incorporación del texto a través del usuario:
• Eliminación de datos erróneos, espaciados.
• Dividir en las posibles múltiples oraciones, de existir más de una. Análisis por separado.
• Diferenciar entre postulado - pregunta: • Buscar signos de preguntas o
buscar datos comunes en preguntas
• Reducción de los datos de entrada: • Eliminación de puntuaciones
incensarais. Las oraciones mono silábicas: SI, NO, etc. pueden obviarse
Entrada
• Análisis estructural (postulado y pregunta)
• Asocian a su significado estructural (Sujeto, verbo, nexo, articulo, etc.) o través de la deducción por modelos típicos.
• La oración es convertida en un modelo de la base de conocimiento
• Unificación • Si no se puede analizar lo que el
usuario ingreso, se pregunta al usuario y se agrega el nuevo conocimiento.
Análisis del texto
• Postulado • Análisis avanzado con respecto a
registros. • Se genera una Salida, dependiendo
de los resultados • Pregunta
• Se busca una respuesta entre los postulados
• Se genera una Salida Respuesta
Análisis lógico
• Estilización de la salida para cada proceso
• A través de modelos típicos de preguntas, respuestas, razonamientos lógicos, se adornan las salidas del robot de modo que este se parezca a una persona al hablar
Salida
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 15
2.2.4.2.2.4.2.2.4.2.2.4. Evaluación de Chatbots.Evaluación de Chatbots.Evaluación de Chatbots.Evaluación de Chatbots.
El test de Turing se basa en la inferencia simple: un juez se sitúa en una
habitación y comienza a realizar preguntas a un ser humano y un
ordenador, ambos situados en otra habitación, y en caso de que el juez
no sea capaz de distinguir con certeza cuáles son las respuestas de la
máquina y cuáles las de la persona, entonces se puede considerar que la
máquina del experimento es inteligente, se ve esquematizado en la
Ilustración 4.
Ilustración Ilustración Ilustración Ilustración 4444 Test de Turing.Test de Turing.Test de Turing.Test de Turing.1111
A día de hoy ninguna máquina ha conseguido superar el test de Turing,
aunque de los resultados del premio Loebner podemos decir que vamos
en buen camino, en el año 2010, por primera vez en los veinte años de
historia del premio, un juez confundió al programa Suzette con una
persona.
1 http://www.alanturing.net/turing_archive/pages/reference%20articles/theturingtest.html
Evaluación de Chatbots.
UNIVERSIDAD CARLOS III DE MADRID. Estado del Arte.
JUAN C. COBOS T. 16
“Se trató de una situación especial y algo confusa, confiesa Bruce
Wilcox, creador del programa y ganador por dos veces del premio
Loebner. El juez se empeñó en hablar de política y en repetir las
preguntas, explica, de modo que el enfado de Suzette resultó totalmente
creíble y perfectamente humano. Pero la confusión sentó un
precedente.” (Martínez Ron & Fernández, 2012)
Suzette a pesar de ser uno de los chatbots más potentes en la actualidad
su programador comenta: "En realidad un chatbot no entiende lo que le
dices" (Wilcox, 2013), en el presente los chatbots trabajan buscando
únicamente similitud entre el patrón de entrada y el patrón contenido
en su base de datos y en base a eso responde, por eso Searle2 ha
rechazado siempre la idea de que la mente humana sea un computador
digital; o, en otras palabras, que la mente sea un programa de
ordenador. Insiste en que los ordenadores trabajan como sistema
manipuladores de símbolos (sistema binario) en función de unas reglas
(programación). Los programas son enteramente sintácticos; sin
embargo, las mentes tienen contenidos semánticos. Por consiguiente, la
pura gramática no es suficiente para justificar los contenidos
semánticos.
“Imagine un hablante nativo de Inglés que no conoce el chino encerrado
en una habitación llena de cajas de símbolos chinos (una base de datos),
junto con un libro de instrucciones para la manipulación de los símbolos
(el programa). Imagina que la gente fuera de la sala envíen otros
símbolos chinos que, sin que la persona en la habitación, son preguntas
2 Filosofo de la Universidad de California, Berkeley, reconocido por sus contribuciones a la filosofía del lenguaje, a la filosofía de la mente y de la conciencia. Muy conocido por el desarrollo de un experimento mental llamado el argumento de la "habitación china". Lo creó para demostrar que el pensamiento humano no se compone de simples procesos computacionales.
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 17
en chino (la entrada). Además imagine que, siguiendo las instrucciones
del programa del hombre en la habitación es capaz de pasar a los
símbolos chinos que son respuestas correctas a las preguntas (de la
salida). El programa permite a la persona en el espacio para pasar el Test
de Turing para la comprensión de chino, pero él no entiende una
palabra de chino.” (Cole, 2004)
Se puede ver el experimento de la habitación china en ilustración a
continuación:
Ilustración Ilustración Ilustración Ilustración 5555 Experimento de la habitación China.Experimento de la habitación China.Experimento de la habitación China.Experimento de la habitación China.3333
Otra metodología para evaluar chatbots, es utilizar el Test de Folstein o
MMSE, (Mini Mental Status Examination), que es utilizado por
psiquiatras para tener un acercamiento del estado cognitivo de los seres
humanos.
“Este mismo test fue utilizado con éxito en Julio de 2011§§“4 ”para
evaluar la capacidad de un Agente Virtual. Claudia, el Agente Virtual
3 http://sapereaudek3d.blogspot.com.es/2011/08/la-habitacion-china.html 4 “§§ Se utilizó un Agente Virtual que utiliza el BG200K desarrollado por BotGenes.”
Evaluación de Chatbots.
UNIVERSIDAD CARLOS III DE MADRID. Estado del Arte.
JUAN C. COBOS T. 18
sometido al test, dio respuesta satisfactoria a los mismos requerimientos
a los que es sometido un ser humano.” (Mazza, 2011).
En todo caso es un test, que evalúa el estado cognitivo del paciente, pero
no al procesamiento de lenguaje natural, por lo cual más adelante
desarrollaremos un test, que nos permita realizar una evaluación en
todos los niveles del análisis lingüístico.
2.3.2.3.2.3.2.3. Plataformas de desarrollo de cPlataformas de desarrollo de cPlataformas de desarrollo de cPlataformas de desarrollo de chatbots.hatbots.hatbots.hatbots.
2.3.1.2.3.1.2.3.1.2.3.1. AIML.AIML.AIML.AIML.
Como ya hemos hablado tenemos el lenguaje de programación AIML,
es una adaptación de una gramática XML y formó la base para el primer
Alicebot, ALICE, podemos ver su logotipo en la Ilustración 6.
AIML, describe una clase de objetos de datos llamados objetos AIML y
describe parcialmente el comportamiento de los programas de
ordenador que los procesan. AIML objetos se componen de unidades
llamadas temas y categorías, que contienen datos analizados o no
analizados.
Ilustración Ilustración Ilustración Ilustración 6666 LengLengLengLenguaje de uaje de uaje de uaje de programaciónprogramaciónprogramaciónprogramación AIML para cAIML para cAIML para cAIML para chatbots.hatbots.hatbots.hatbots.5555
5 http://www.meta-guide.com/home/bibliography/google-scholar/aiml-2005
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 19
AIML es concebido como un lenguaje de scripts que define una base de
conocimiento de pregunta-respuesta, la cual es utilizada como software
para chatbots basados en texto. En AIML, una interacción entre el agente
y su usuario se define dentro de la unidad categoría (category), mientras
las posibles expresiones del usuario se encuentran definidas en las
etiquetas de patrones (pattern) y la respuesta del agente se encuentra
definida dentro de las etiquetas de plantillas (template).
2.3.2.2.3.2.2.3.2.2.3.2. RiveScript.RiveScript.RiveScript.RiveScript.
RiveScript comenzó originalmente como un módulo de Perl llamado
Chatbot :: Alfa en 2004, programado por Casey Kirsle, quien durante
años había estado trabajando con chatterbots en RunABot.com en AIML
y al ver que este no brindaba la posibilidad de integración a MSN
Messenger comenzó a desarrollar RiveScript en Perl, siendo un nuevo
lenguaje, basado en texto plano. No mucho después, Chatbot :: Alfa fue
abandonada en favor de un sustituto, programado desde cero. La nueva
versión del lenguaje de scripting se parecía a código Alfa, que se
convirtió en un módulo Perl llamado Chatbot :: RiveScript. Vemos su
logo en la ilustración a continuación:
Ilustración Ilustración Ilustración Ilustración 7777 Lenguaje de programación RiveScript para chatbots.Lenguaje de programación RiveScript para chatbots.Lenguaje de programación RiveScript para chatbots.Lenguaje de programación RiveScript para chatbots.6666
6 http://www.rivescript.com
Plataformas de desarrollo de chatbots
UNIVERSIDAD CARLOS III DE MADRID. Estado del Arte.
JUAN C. COBOS T. 20
El desarrollo de Chatbot :: RiveScript es continuo, ha sido renombrado
como "RiveScript". El módulo se estabilizó en la versión 1.03 en julio de
2006. En 2008 se ha creado un nuevo estándar para RiveScript en la
versión 2.0 con un aumento la potencia y flexibilidad.
2.3.3.2.3.3.2.3.3.2.3.3. AerolitoAerolitoAerolitoAerolito....
Aerolito es un lenguaje de marcas basado YAML con una fuerte
influencia de AIML y RiveScript. La motivación es tener un lenguaje
más limpio y fácil que AIML sin crear un nuevo formato de archivo,
como RiveScript. Su autor es Renato de Pontes Pereira. Pero cuenta con
muy poco desarrollo y en la actualidad se puede decir que casi esta
extinto pues no cuenta con mejoras, un grupo ni página oficial.
2.4.2.4.2.4.2.4. Comparación de platComparación de platComparación de platComparación de plataformas de desarrollo de chatbotsaformas de desarrollo de chatbotsaformas de desarrollo de chatbotsaformas de desarrollo de chatbots....
Los lenguajes de programación de las bases de conocimientos de los
chatbots, son muy similares, ya que los unos han sido desarrollados en base
a los otros, siempre buscando una estructura más sencilla o su integración
en otras plataformas, a continuación detallamos esta comparativa en la
Tabla 2.
Descripción.Descripción.Descripción.Descripción. AIMLAIMLAIMLAIML RiveScriptRiveScriptRiveScriptRiveScript AerolitoAerolitoAerolitoAerolito
Declaración de tópicos. X X
Declaración de categorías. X
Declaración de patrones. X X X
Declaración de Respuestas. X X X
Declaración de condicionantes
según respuestas anteriores.
X X X
Uso de comodines. X X X
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 21
Declaración de condiciones por
niveles.
X
Variables. X X X
Comparadores. = ==, !=, <>,
<, >, <=, >=.
Puede
definir el
usuario
Estructura del lenguaje. Medio. Sencillo. Sencillo.
Comunidad de respaldo. Pandorabots. Rivescript.
Tabla Tabla Tabla Tabla 2222. Comparación de plataformas de desarrollo de chatbots.. Comparación de plataformas de desarrollo de chatbots.. Comparación de plataformas de desarrollo de chatbots.. Comparación de plataformas de desarrollo de chatbots.
2.5.2.5.2.5.2.5. Justificación de elección.Justificación de elección.Justificación de elección.Justificación de elección.
Como se puede ver aunque AIML no cuente con una estructura sencilla de
programación de bases de conocimiento, es el lenguaje más potente,
además cuenta con una comunidad muy grande que lo respalda,
permitiéndonos obtener bases de conocimiento e implementaciones
nuevas, por lo mismo este es el lenguaje seleccionado, para el desarrollo de
presente proyecto.
Justificación de elección.
Análisis de chabots actualesAnálisis de chabots actualesAnálisis de chabots actualesAnálisis de chabots actuales
Capítulo 3.Capítulo 3.Capítulo 3.Capítulo 3.
"Las naciones marchan
hacia su grandeza al
mismo paso que
avanza su educación."
Simón Bolívar.
Capítulo:Capítulo:Capítulo:Capítulo: Análisis de chatbots actuales.Análisis de chatbots actuales.Análisis de chatbots actuales.Análisis de chatbots actuales.
3.1.3.1.3.1.3.1. Análisis de Chatbots existentes.Análisis de Chatbots existentes.Análisis de Chatbots existentes.Análisis de Chatbots existentes.
Dentro de cada grupo, por supuesto, existen multitud de alternativas, por
lo que no es posible analizarlas todas; sin embargo, se ha utilizado ciertos
criterios para seleccionar algunos representantes de entre las distintas
opciones disponibles, con el fin de estudiar más en profundidad un grupo
menos numeroso y determinar qué hace mejores a unos respecto a otros,
sus utilidades reales y las tecnologías que han sido utilizadas para su
construcción.
Los criterios usados para seleccionar los candidatos a estudiar han sido:
- Idioma, solo se toma en cuenta chatbots que dialoguen en idioma
Español, tomando en cuenta si son multilenguaje.
- Calidad, se han seleccionado chatbots que hayan conseguido resultados
de calidad y de reconocido prestigio como por ejemplo el premio
Loebner, por lo que he priorizado a los ganadores de este premio y, en
menor medida, a candidatos que obtuvieron buenas calificaciones del
jurado.
- Disponibilidad de información pública sobre su funcionamiento,
valorando especialmente la posibilidad de que el código sea total o
parcialmente abierto, tengan el respaldo de una comunidad o una
empresa que les brinde actualizaciones y mejoras.
- Utilidad. Se clasifica los chatbots existentes según la utilidad práctica
real que tienen, y de esta manera tenemos:
3333
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 26
o Sin utilidad práctica. Disponibles la mayoría vía web, tienen un
uso meramente de entretenimiento.
o Con utilidad práctica. Chatbots cuyo objetivo es remplazar en
cierta medida algún rol humano. Los mejores ejemplos de este
tipo son asistentes virtuales, tanto de información como de
venta.
3.1.1.3.1.1.3.1.1.3.1.1. Jabberwacky, George y Joan.Jabberwacky, George y Joan.Jabberwacky, George y Joan.Jabberwacky, George y Joan.
Ilustración Ilustración Ilustración Ilustración 8888 Chatbot Jabberwacky.Chatbot Jabberwacky.Chatbot Jabberwacky.Chatbot Jabberwacky.7777
Jabberwacky es un chatterbot creado por el programador Britanico
Rollo Carpenter. Su objetivo declarado es "simular charla natural del ser
humano en una forma interesante, entretenida y divertida". Es un
primer intento de crear una inteligencia artificial a través de la
interacción. Su logo en la Ilustración 8
En el primer decenio de su existencia, tras su invención en el año 1988,
como Proyecto de Aprendizaje de Inteligencia Artificial fundada como
“Pensamientos” Jabberwacky tenía millares de conversaciones. Desde
su publicación en la red, en 1997, hay más de 65 millones de
conversaciones.
7 http://person.jabberwacky.com/j2about
Jabberwacky, George y Joan.
UNIVERSIDAD CARLOS III DE MADRID. Análisis de chatbots actuales.
JUAN C. COBOS T. 27
“Al hablar con usted utiliza simplemente el material aprendido y toma
prestado un poco de su inteligencia, ya que aprende mucho. Sin reglas
no modificables, se basa enteramente en los principios de la
retroalimentación. Esto es muy diferente a la mayoría de los robots
conversacionales, que son limitados por reglas y conocimiento finito. Si
usted habla en un idioma extranjero va ha aprender, y responder de
manera adecuada…” (Icogno, 2013)
Ilustración Ilustración Ilustración Ilustración 9999 Chatbot George.Chatbot George.Chatbot George.Chatbot George.8888
En octubre 2003, Jabberwacky gana el tercer lugar en el Premio Loebner.
Fue vencido por Juergen Pirner's con el chatbot Jabberwock (un
programa de chat basado en alemán). En Septiembre 2004, Jabberwacky
gana el segundo lugar en el Premio Loebner. Fue vencido por el chatbot
ALICE. En septiembre de 2005, George (Ilustración 8), un personaje
dentro Jabberwacky, gana el Premio Loebner y de la misma manera en
2006 Joan (Ilustración 10) otro personaje Jabberwacky, gana el Premio
Loebner.
8 http://person.jabberwacky.com/george
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 28
Ilustración Ilustración Ilustración Ilustración 10101010 Chatbot Joan.Chatbot Joan.Chatbot Joan.Chatbot Joan.9999
3.1.2.3.1.2.3.1.2.3.1.2. Cleverbot.Cleverbot.Cleverbot.Cleverbot.
Ilustración Ilustración Ilustración Ilustración 11111111 Chatbot Cleverbot.Chatbot Cleverbot.Chatbot Cleverbot.Chatbot Cleverbot.10
Fue creado por el científico de IA Rollo Carpenter como una nueva
variante de Jabberwacky como base, con lógica difusa y con un contexto
más profundo, bajo el nombre de Cleverbot, su logo en la Ilustración 11.
Es considerado una inteligencia artificial conservadora adaptiva.
9 http://www.icogno.com/joan.html 10 http://www.cleverbot.com/
Cleverbot.
UNIVERSIDAD CARLOS III DE MADRID. Análisis de chatbots actuales.
JUAN C. COBOS T. 29
“En el festival Techniche en Guwahati, India, 30 voluntarios llevaron a
cabo una conversación escrita de cuatro minutos con una entidad
desconocida. Mientras que la mitad conversó con Cleverbot, un
programa informático escrito por el británico de inteligencia artificial
desarrollador de software Rollo Carpenter, la otra mitad conversó con
un ser humano, que escribe sus respuestas en una pantalla. Todas las
conversaciones se visualizan en las pantallas grandes para una
audiencia. Con 1.334 votos - muchas más que en cualquier prueba de
Turing anterior - 59,3 por ciento cree Cleverbot era humano. El humano
anotó 63,3 por ciento” (PECK, 2011).
Alrededor de 100.000 conversaciones tienen lugar en cleverbot.com
todos los días. Su propósito es aprender a conversar de una manera
interesante, y al hacerlo, reúne datos de conversación que podrían ser
utilizados de otra manera.
3.1.3.3.1.3.3.1.3.3.1.3. Akinator (2007).Akinator (2007).Akinator (2007).Akinator (2007).
Ilustración Ilustración Ilustración Ilustración 12121212 Chatbot de entretenimiento Akinator.Chatbot de entretenimiento Akinator.Chatbot de entretenimiento Akinator.Chatbot de entretenimiento Akinator.11111111
11 http://es.akinator.com/
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 30
Akinator Ilustración 12 es un juego de Internet, mediante un test de
veinte preguntas puede determinar qué personaje está pensando el
jugador. Indudablemente es un chatbot, pues cuenta con todas las
características necesarias.
Fue creado por tres programadores franceses en 2007, los que fundaron
Elokence.com empresa francesa de ingeniería informática.
“El sistema consta de dos componentes: un algoritmo que gestiona la
elección de las preguntas y de una base de datos que contiene más de
100.000 caracteres establecidos todos los días durante los juegos. Con el
tiempo, Akinator se vuelve más eficiente. Presencia geográfica : 13
idiomas disponibles (Inglés, alemán, portugués, francés, árabe, español,
japonés, ruso, hebreo, italiano, turco, coreano y chino) Medios : Web ,
aplicaciones móviles ( App Store , Google Play , mercado WP , App
World , Windows Store )
Más de 1,3 millones de juegos jugados desde su lanzamiento en 2007.
Más de 5 millones de aplicaciones móviles vendidos en todo el mundo.
Ocupó el puesto número 1 en las primeras aplicaciones en App Store en
Francia, Suiza, Alemania, España, Italia y Japón.” (Elokence, 2013)
Tras finalizar la ronda de preguntas, Akinator presenta su solución al
usuario, el porcentaje de equivocaciones en la solución es bajo. En caso
de error en tres intentos consecutivos, el programa solicita al usuario
que introduzca el nombre del personaje, con el objetivo de expandir sus
conocimientos, lo cual es muy valorable ya que Akinator está
aprendiendo nuevas categorías, mediante la interacción con los
usuarios.
Akinator (2007).
UNIVERSIDAD CARLOS III DE MADRID. Análisis de chatbots actuales.
JUAN C. COBOS T. 31
3.1.4.3.1.4.3.1.4.3.1.4. Elbot (2001).Elbot (2001).Elbot (2001).Elbot (2001).
Elbot Ilustración 13 es un Chatbot creado en 2001 por Fred Roberts,
empleando para ello el Procesamiento del Lenguaje Natural.
Ilustración Ilustración Ilustración Ilustración 13131313 Chatbot Elbot.Chatbot Elbot.Chatbot Elbot.Chatbot Elbot.12121212
Elbot ha conseguido numerosos galardones desde su creación, sobre
todo en el Chatterbox Challenge13 destacando la obtención del premio
Loebner para la inteligencia artificial en 2002 cuarto lugar, 2003 tercer
lugar y en 2008 primer lugar, en la que logró convencer a tres de los doce
jueces que lo interrogaron de que era un ser humano, el problema de
Elbot es que no ha evolucionado a otros idiomas. A pesar de ser
desarrollado bajo la tecnología Lingubot de la empresa Artificial
Solution, que ofrece entornos de desarrollo sofisticados permitiendo la
12 http://www.elbot.com/chatterbot-elbot/ 13 El desafío Chatterbox nacio en 2001 como un concurso anual para chatbots. Es único con un mínimo de restricciones en cuanto al tipo de tecnología utilizada en la creación de la bot. Los Botmasters de todo el mundo presentan sus chatbots para la evaluación y la competencia. Cada chatbot participante se le realiza una serie de preguntas y anotan sus respuestas por un conjunto de jueces independientes. Los ocho primeros robots se mueven a una ronda final en la que se plantea una serie adicional de preguntas a los finalistas. Varios de los chatbots que han entrado a la competencia en el pasado se han convertido en la base de las tecnologías comerciales.
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 32
construcción de agentes conversacionales inteligentes con un
comportamiento y objetivos complejos.
En la actualidad la Empresa Artificial Solution brinda servicios a en todo
el mundo, en áreas como Banca y Seguros (La Cooperativa Banking
Group, Credit Suisse, BBVA, etc), Telecomunicaciones (Vodafone,
MÁSmovil, Orange, etc), Otras Industrias (Sant Joan de Deu Hospital,
Novartis, Stralfors TradCom Solutions), Sector Público (Forbruger
Europa, Brent Council, Ronneby Kommun, etc.), Transporte y Ocio
(Scandinavian Airlines, Airbus, RATP Moby, etc), Venta al por menor
Epson, IKEA, Yello Strom GmbH).
Ilustración Ilustración Ilustración Ilustración 14141414 Chatbot Ana de IKEA.Chatbot Ana de IKEA.Chatbot Ana de IKEA.Chatbot Ana de IKEA.14141414
“El asistente interactivo en la Web lingubot que cuenta con más de
250.000 conversaciones, todos los días de las principales organizaciones
mundiales, como IKEA, Lloyds TSB, BT, BBC, Daimler Chrysler, y más
de 150 otras empresas, está disponible en los EE.UU. a partir de Creative
virtual” (Businesswire, 2006)
14 http://www.ikea.com/es/es/
Elbot (2001).
UNIVERSIDAD CARLOS III DE MADRID. Análisis de chatbots actuales.
JUAN C. COBOS T. 33
Lo destacable de Ana Ilustración 14 es que habla más de 10 idiomas,
puede responder preguntas sobre todos los productos de IKEA y
transferir el diálogo a un operador de servicio al cliente en el caso de no
tener la respuesta a una pregunta específica o si el usuario así lo
requiere.
3.1.5.3.1.5.3.1.5.3.1.5. Pandorabots.Pandorabots.Pandorabots.Pandorabots.
Ilustración Ilustración Ilustración Ilustración 15151515 ComunidComunidComunidComunidad Pandorabotsad Pandorabotsad Pandorabotsad Pandorabots15151515
El Dr. Richard S. Wallace, en 2002 inició una importante colaboración
con Franz, Inc. para crear Pandorabots, un servidor AIML e intérprete
implementado en Common Lisp. En 2008 el proyecto se partió como una
empresa independiente, Pandorabots Inc. donde Wallace sirve como
Director de Ciencia. El logo de Pandorabots en la Ilustración 15.
La visión de Pandorabots es brindar un servicio web de código abierto,
que permite de manera gratuita desarrollar y publicar chatbots a
cualquier persona.
“Pandorabots es la comunidad chatbot más grande en Internet. 166.000
bot masters registradas han optado por crear más de 206.000
pandorabots ("chatbots") en varios idiomas. Hasta junio de 2012, más de
1500 millones interacciones conversacionales se han producido entre los
clientes y pandorabots, y este número aumenta rápidamente…”
“Pandorabots se ha adaptado a casi todos los rincones en Internet.
Pandorabots aparecen en páginas web, mensajería instantánea, correo
electrónico y mensajes en foros. Se pueden encontrar en Second Life, en
15 http://www.pandorabots.com/botmaster/en/home
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 34
los juegos en línea, y en las redes sociales como Facebook y Twitter.
Cada vez más pandorabots están apareciendo en las aplicaciones
móviles y mensajes de texto. Pandorabots apoyo a la comercialización y
la publicidad, y se utilizan en la educación”
Los chatbots incluidos en esta web constan de diversas características
que les permiten ser empleados en los siguientes aspectos:
• Soporte para móviles y otros dispositivos.
• Publicidad y Hosting en webs.
• Herramientas de desarrollo y edición de chatbots online.
• Registro de conversaciones que mejores las habilidades de los
chatbots ya creados.
• Desarrollo AIML y herramientas de mantenimiento.
• Diversos formatos de salida como HTML o Flash.
3.1.6.3.1.6.3.1.6.3.1.6. BotGenesBotGenesBotGenesBotGenes....
BotGenes, Ilustración 16 es una de las empresas pioneras en
Procesamiento del Lenguaje Natural en idioma Español. Ofrece Agentes
Virtuales capaces de actuar en un amplio número de situaciones típicas
de las organizaciones.
Ilustración Ilustración Ilustración Ilustración 16161616 Empresa BotGenes.Empresa BotGenes.Empresa BotGenes.Empresa BotGenes.16161616
16 http://www.botgenes.com/BotGenes/index.asp
Pandorabots.
UNIVERSIDAD CARLOS III DE MADRID. Análisis de chatbots actuales.
JUAN C. COBOS T. 35
“BotGenes anuncia la disponibilidad general de su “cerebro PLN en
idioma Castellano”, el BG200K, el cuál es capaz de interpretar más de
200.000 expresiones en dicho idioma incluyendo regionalismos, errores
de escritura, ortográficos y gramaticales comunes.
Con capacidad para acceder a bases de datos, web-services, y realizar
búsquedas en Internet, el BG200K es el elemento central para el
despliegue de agentes virtuales para realizar múltiples actividades
empresariales: servicio a clientes, pre-ventas, capacitación, soporte a
usuarios, etc.
El BG200K es el resultado de más 24 meses de investigación
involucrando miles de usuarios de habla hispana de Estados Unidos,
España y Latinoamérica.” (BotGenes, 2013)
Algo que vale la pena recalcar, la página web de Botgenes, cuenta con
un agente conversacional llamado Claudia Matos Ilustración 17, que es
el Agente de Atención al Cliente y brinda la información que uno le
solicite.
Ilustración Ilustración Ilustración Ilustración 17171717 Chatbot Claudio Matos.Chatbot Claudio Matos.Chatbot Claudio Matos.Chatbot Claudio Matos.
Adicionalmente, si se desea mantener una conversación sobre cine,
música, literatura, etc., e incluso hacer un Test de Personalidad, se
puede visitar a María Martínez Ilustración 18.
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 36
Ilustración Ilustración Ilustración Ilustración 18181818 Chatbot María Martínez.Chatbot María Martínez.Chatbot María Martínez.Chatbot María Martínez.
“Ella tiene estudios en psicología, le encanta escuchar a la gente, ir al
cine, leer y viajar, y podrá indicarte cuál es tu tipo de personalidad, qué
famosos tienen tú mismo tipo, etc., usando la tipología de Myer-Briggs,
basada en los estudios de Carl Jung y ya instrumentada con éxito en
millones de personas.
Conocer tu tipo de personalidad te ayudará a encontrar una pareja afín,
elegir una carrera donde naturalmente te sientas cómodo/cómoda,
integrarte en un equipo de trabajo, y fundamentalmente conocerte a ti
mismo/misma”. (BotGenes, 2013)
Botgenes es una empresa que cuenta con diversidad de chatbots, con
diversas características, con los cuales se puede interactuar sin ningún
problema. Otro ejemplo es Diego Perez Ilustración 19, que tiene un
amplio vocabulario, con el cual se puede perfeccionar o practicar el
idioma español.
BotGenes.
UNIVERSIDAD CARLOS III DE MADRID. Análisis de chatbots actuales.
JUAN C. COBOS T. 37
Ilustración Ilustración Ilustración Ilustración 19191919 Chatbot Diego Perez.Chatbot Diego Perez.Chatbot Diego Perez.Chatbot Diego Perez.17171717
“Puede serte de gran ayuda para practicar y perfeccionar el idioma
Castellano, ya que además puede señalarte alguno de los errores
ortográficos y/o gramaticales que se produzcan durante la
conversación.
Disponible para conversar contigo más de 700 horas por mes, educado,
reflexivo y por momentos gracioso, Diego puede ser un compañero
como pocos.” (BotGenes, 2013)
Además tiene asistentes de clase: Ariel18 es usado actualmente en la
asignatura Administración de Recursos Informáticos de la Universidad
de Buenos Aires, Juan Cruz19 como Asesor en Capacitación de la Nueva
Escuela de diseño y Comunicación de Buenos Aires; Esperanza20 como
Asesora virtual del Municipio de San Isidro Argentina, entre otros.
17 http://www.soydiego.com/SoyDiego/ 18 http://www.asistentedeclase.com.ar/AVC/index.asp 19 http://www.nuevaescuela.net/web/va.php 20 http://sanisidro.gob.ar/una-mirada-distinta-centro-municipal-para-la-inclusion-de-las-personas-con-discapacidad/
Capítulo 4.Capítulo 4.Capítulo 4.Capítulo 4. Evaluación de Chatbots.Evaluación de Chatbots.Evaluación de Chatbots.Evaluación de Chatbots.
"ama sua, ama quella,
ama llulla, ama
maklla,
ama sipex "
“no seas ladrón, no
seas ocioso, no seas
Capítulo: Capítulo: Capítulo: Capítulo: EvaluaciónEvaluaciónEvaluaciónEvaluación de chatbots.de chatbots.de chatbots.de chatbots.
4.1.4.1.4.1.4.1. Evaluación de Chatbots.Evaluación de Chatbots.Evaluación de Chatbots.Evaluación de Chatbots.
El objetivo principal de la presente evaluación es el estudio del uso del
chatbot Diego o George después de seleccionarlos por sus avances en PLN,
en lenguaje español, además de considerar su disponibilidad de interactuar
vía on-line, para ser integrados como una habilidad de un Robot Social con
Gestor de Diálogos.
Nuestra hipótesis es evaluarlos utilizando un análisis en los distintos
niveles de PLN, representación del conocimiento, proceso del pensamiento
y la memoria para lo cual construiremos una prueba que nos permitirá ver
las áreas en que todavía tienen deficiencias estos chatbots, es sumamente
importante alcanzar un diagnóstico de estas características de los chatbots
para tener un criterio más amplio y plantear posibles recomendaciones a
futuros trabajos de investigación. Pero, además, nuestra intención es
construir una prueba que no necesitase materiales complementarios, y
pueda ser aplicado mediante lenguaje natural, por el tipo de interacción que
se puede tener con estos chatbots.
Para ello hemos seleccionado las 14 tareas que, a partir de los estudios que
hemos realizado en lenguaje natural, puedan ser evaluados los distintos
niveles lingüísticos. Se ha procedido a realizar las mismas preguntas a los
dos chatbots, se han tabulado sus respuestas y se las ha cuantificado.
4.1.1.4.1.1.4.1.1.4.1.1. Tabulación de Datos.Tabulación de Datos.Tabulación de Datos.Tabulación de Datos.
4444
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 42
Tabulación de datos.
UNIVERSIDAD CARLOS III DE MADRID. Análisis de chatbots actuales.
JUAN C. COBOS T. 43
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 44
Tabulación de datos.
UNIVERSIDAD CARLOS III DE MADRID. Análisis de chatbots actuales.
JUAN C. COBOS T. 45
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 46
Tabulación de datos.
Tabulación de datos.
UNIVERSIDAD CARLOS III DE MADRID. Evaluación de chatbots.
JUAN C. COBOS T. 47
4.1.2. Análisis de resultados.
Vemos a nivel general, que Diego obtiene una puntuación más alta que
George, pero podríamos deberse a que George trabaja con varios
idiomas, mediante la traducción de los mensajes, con lo cual existen
pérdidas en el mensaje.
En cuanto a fluidez verbal semántica vemos que ambos tienen un nivel
similar, bastante aceptable aunque no muchas respuestas las contestan.
Su fluidez verbal fonológica es inexistente. Ahora la denominación de
definiciones George tiene una superioridad con respecto a Diego, pero
tampoco cuenta con un gran nivel. La denominación de objetos, Diego
cuenta con un enlace a la Real Academia Española, con lo cual cumple
con todas las expectativas en esta área, aunque pierde el lado humano,
pues una persona jamás podría dar ese tipo de definiciones, en cambio
George es un poco más conservador en el tema y trata de simular ser una
persona, que le despreocupa un poco esta área.
En la fluidez verbal de nombres propios, ambos chatbot responden de
manera bastante similar, siempre y cuando se hable de temas de farándula
y deportes. En la denominación de nombres propios de personajes se
observa la supremacía de Diego. En el área de memoria se les dio el
nombre de una persona conocida al comienzo de la charla y luego se les
pregunto por esa persona, Diego recordó sin inconveniente alguno,
George en cambio, recordó solo él un nombre, dando una respuesta
bastante real, al afirmar que se había perdido pero que el nombre era
Gonzalo, en cuanto al otro nombre se equivocó.
Dentro de los conceptos de lo que es cantidad, ambos no tienen
desarrollada esta área, en ambigüedad George respondió de manera
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 48
retórica, pero acertada en una pregunta, Diego en cambio desvió el tema
de conversación.
En cuanto a ubicación temporal, realmente George no tiene desarrollada
esta área, Diego responde bien, incluso calcula los días que faltan para el
fin de semana. En cuanto a la capacidad de cálculo Diego respondió
incluso cálculos muy complicados, con lo cual se puede ver que no trata
de imitar a un humano, por su lado George no respondió acertadamente
pero afirmo que no sabía la respuesta, la cual sería la respuesta normal
de un humano frente a un cálculo así. La capacidad lingüística de George
es inexistente, en cambio en el caso de Diego está bastante desarrollada
y dependiendo del grado de complejidad recomienda consultar en
internet. El razonamiento lógico de George es bastante bueno, incluso le
pone un grado de sarcasmo a sus respuestas, Diego responde de manera
dudosa y responde con otra pregunta.
En la capacidad de conducir un dialogo, se nota claramente que las
respuestas de Diego son más elaboradas e incluso respaldadas y en el
caso de no poder responder trata de cambiar de tema, manteniendo el
dialogo siempre activo, por su lado George se puede ver que es más
sencillo en sus respuestas, tratando siempre de aparentar ser un humano.
Podemos decir que ambos chatbots son muy buenos y por eso han tenido
los reconocimientos que tienen, tal vez el único problema de George es
trabajar con múltiples lenguajes con lo que muchas de las veces sus
respuestas son en otros idiomas.
Análisis de resultados.
Capítulo 5.Capítulo 5.Capítulo 5.Capítulo 5. PPPPlataformalataformalataformalataforma de integración de Chatbots.de integración de Chatbots.de integración de Chatbots.de integración de Chatbots.
"Podrán morir las personas,
pero jamás sus ideas”
Ernesto Che Guevara.
Capítulo:Capítulo:Capítulo:Capítulo: PPPPlataforma de integración de lataforma de integración de lataforma de integración de lataforma de integración de ChatbotChatbotChatbotChatbotssss....
5.1.5.1.5.1.5.1. Integración a gestor de diálogos.Integración a gestor de diálogos.Integración a gestor de diálogos.Integración a gestor de diálogos.
En el presente capítulo se describirá la arquitectura general para la
integración de un Chatbot como Habilidad de un Robot Social con Gestor
de Diálogos, sus requerimientos, y la metodología para organizar la
estructura existente con los nuevos módulos de comunicación.
Ilustración Ilustración Ilustración Ilustración 20202020 Proceso del gestor de diálogos.Proceso del gestor de diálogos.Proceso del gestor de diálogos.Proceso del gestor de diálogos.
•Estimulo o pregunta que seintroduce de maneraverbal.
Entrada
•ReconocimientoAutomatico del Habla,conversion a Texto.
ASR
•Se envia la cadena de textopara que el bot, inicie conel proceso deconversación.
Envio
•Es el proceso donde sebusca un patrónrelacionado con la entraday así producir unarespuesta o salida.
Búsqueda
•Se recibe la cadena detexto, con la respuesta delbot.
Recepcion
•Síntesis de cadena de textoen voz.eTTS
•Es el proceso en el que demanera verbal se da unarespuesta al usuario.
Salida
5555
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 52
5.1.1.5.1.1.5.1.1.5.1.1. Nodo ASR.Nodo ASR.Nodo ASR.Nodo ASR.
El reconocimiento automático del habla es una habilidad ya
implementada como un nodo de ROS, por el grupo de robots sociales
del Robotics Lab, de la UC3M, brindando la capacidad de
reconocimiento de voz de alta precisión, con independencia del locutor,
además de manera robusta a ruidos ambientales.
5.1.2.5.1.2.5.1.2.5.1.2. Nodo eTTS.Nodo eTTS.Nodo eTTS.Nodo eTTS.
La síntesis de voz del habla es otra habilidad ya implementada como un
nodo de ROS, por el grupo de robots sociales del Robotics Lab,
ofreciendo una síntesis de voz claramente entendible con capacidad de
darle emociones, además permite expresiones como risas, bostezos,
suspiros, etc.
5.2.5.2.5.2.5.2. Diseño del sDiseño del sDiseño del sDiseño del sistema.istema.istema.istema.
Se ha realizado la integración de tres chatbot, al gestor de diálogos, Diego y
George mediante enlace a internet (utilizando los módulos Urlib2 y
Selenium), y un tercer chatbot correrá de manera local (utilizando el
módulo PyAIML), todo bajo el lenguaje de programación Python, todo se
ejecutara dentro de ROS, para él envió y recepción de los tópicos necesarios
para los gestores de diálogos. Para el tercer chatbot se utilizara la base de
conocimiento modificada del chatbot ALEXIA v1.5,21 en español basado en
ALICE, con el motor de inferencia PyAIML como se puede ver en la
Ilustración 21.
21 GALAIA es un proyecto del Grupo de Tecnologías de la Información (GTI) del Departamento de Ingeniería Telemática de la Universidad de Vigo (España). http://soaxe.det.uvigo.es/~galaia/ES/home/descargas/
Nodo ASR.
UNIVERSIDAD CARLOS III DE MADRID. Plataforma de integración de Chatbots.
JUAN C. COBOS T. 53
Ilustración Ilustración Ilustración Ilustración 21212121 Diseño General del Sistema.Diseño General del Sistema.Diseño General del Sistema.Diseño General del Sistema.
5.2.1.5.2.1.5.2.1.5.2.1. PPPPlataforma lataforma lataforma lataforma dededede integración del chatbot Georgintegración del chatbot Georgintegración del chatbot Georgintegración del chatbot George.e.e.e.
En esta sección se realizará el seguimiento de la metodología
seguida para la integración del chatbot George, al gestor de diálogos,
para lo cual:
1. Mediante el micrófono del ordenar se realiza la pregunta, la misma
es procesada en ROS por el nodo ASR, para lo cual se importa el
manifiesto asr_msg, para cargar los tópicos del nodo, este nodo
trabaja en modo Standby, hasta cuando la entrada del micrófono
supera el umbral calibrado, en ese momento empieza a almacenar
la muestra de voz, ahora contrasta la media del umbral de voz no
baje en un tiempo determinado, si baja esta media significa que el
usuario termino de hablar, el nodo realiza el Reconocimiento
Automático del Habla y escribe el resultado en el tópico
open_grammar_recog_result.
2. Paralelamente, se encuentra corriendo el nodo bot_george en modo
Standby, en espera del mensaje en el tópico
open_grammar_recog_result, cuando llega el mensaje, se selecciona
solo el mensaje en forma de cadena y se envía la consulta a George
Internet
Patrón a Buscar Texto
Respuesta Texto
AIML
Patrón a Buscar Texto
ROS
Respuesta Sintetizada
Pregunta Vocalizada Usuario
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 54
mediante el módulo URLIB2 (George trabaja en JSON22, por lo cual
es muy sencillo el intercambio de información, mediante la
simulación de un navegador), se espera a la respuesta y una vez
recibida se publica en el tópico ETTS_SAY_SENTENCE.
3. Paralelamente se encuentra corriendo el nodo eTTS de la misma
manera en modo Standby, en espera del mensaje en el tópico
ETTS_SAY_SENTENCE una vez que llega el mensaje este nodo
realiza la síntesis del mensaje en voz. Esto se observa en la
Ilustración 22
Ilustración Ilustración Ilustración Ilustración 22222222 Diseño del Sistema George.Diseño del Sistema George.Diseño del Sistema George.Diseño del Sistema George.
5.2.2.5.2.2.5.2.2.5.2.2. Desarrollo del Prototipo.Desarrollo del Prototipo.Desarrollo del Prototipo.Desarrollo del Prototipo.
22 JSON (acrónimo de JavaScript Object Notation), es un formato ligero para el intercambio de datos. La simplicidad de JSON ha dado lugar a la generalización de su uso, especialmente como alternativa a XML en AJAX (acrónimo de Asynchronous JavaScript And XML) Estas aplicaciones se ejecutan en el cliente, es decir, en el navegador de los usuarios mientras se mantiene la comunicación asíncrona con el servidor en segundo plano
ROS
ASR
eTTS ETTS_SAY_SENTENCE
open_grammar_recog_result micrófono
parlante
internet
TÓPICOS
ad_core
ad_server
rospy
roslib
urlib2
ROS
Plataforma de integración del chatbot George.
UNIVERSIDAD CARLOS III DE MADRID. Plataforma de integración de Chatbots.
JUAN C. COBOS T. 55
A continuación en la Ilustración 23 se presenta el código
desarrollado en ROS, bajo lenguaje Python para la creación del
nodo de integración.
Ilustración Ilustración Ilustración Ilustración 23232323 Código Fuente de Sistema George.Código Fuente de Sistema George.Código Fuente de Sistema George.Código Fuente de Sistema George.
5.3.5.3.5.3.5.3. PPPPlataforma lataforma lataforma lataforma dededede integración integración integración integración chatbot chatbot chatbot chatbot Diego.Diego.Diego.Diego.
En esta sección se realizará el seguimiento de la metodología
seguida para la integración del chatbot Diego, al gestor de
diálogos, para lo cual al igual que en George (paso 1 y 3) se realiza
el reconocimiento automático del habla y la síntesis de voz.
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 56
Ilustración Ilustración Ilustración Ilustración 24242424 Diseño del Diego.Diseño del Diego.Diseño del Diego.Diseño del Diego.
La diferencia radica en el paso 2, donde el nodo bot_diego se encuentra
en Standby, en espera del mensaje en el tópico de entrada pero se envía
la consulta a Diego mediante el módulo Selenium (Diego trabaja en
DWR23, por lo cual no basta con simular un navegador para el
intercambio de información). Debemos considerar que Selenium
permite ejecutar un navegador e interactuar con la información de la
página web. Una vez puesta la consulta en la página Web de Diego se
23 DWR (acrónimo de Direct Web Remoting) es una librería de código abierto escrita en Java que permite escribir aplicaciones web con Ajax. DWR está formado por dos partes: • Un Servlet corriendo en el servidor que procesa las peticiones y envía las respuestas de retorno al navegador. • JavaScript corriendo en el navegador que envía peticiones y puede actualizar dinámicamente el contenido de las páginas. Osea utilizando DWR podemos invocar métodos vía JavaScript pero que se procesarán en el servidor.
ASR
eTTS ETTS_SAY_SENTENCE
open_grammar_recog_result micrófono
parlante
ROS
internet
TÓPICOS
ad_core
ad_server
rospy
roslib
selenium
Navegador
Mozilla Firefox.
Plataforma de integración del chatbot Diego.
UNIVERSIDAD CARLOS III DE MADRID. Plataforma de integración de Chatbots.
JUAN C. COBOS T. 57
espera a la respuesta y una vez recibida la misma, se publica en el tópico
de salida del nodo, se puede ver esto en la Ilustración 24.
5.3.1.5.3.1.5.3.1.5.3.1. Desarrollo del Prototipo.Desarrollo del Prototipo.Desarrollo del Prototipo.Desarrollo del Prototipo.
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 58
Ilustración Ilustración Ilustración Ilustración 25252525 Código Fuente de Sistema Diego.Código Fuente de Sistema Diego.Código Fuente de Sistema Diego.Código Fuente de Sistema Diego.
En la Ilustración 25 se presenta el código desarrollado en ROS, bajo
lenguaje Python para la creación del nodo de integración.
5.4.5.4.5.4.5.4. PPPPlataforma para el desarrollo del chatbot local.lataforma para el desarrollo del chatbot local.lataforma para el desarrollo del chatbot local.lataforma para el desarrollo del chatbot local.
En esta sección se realizará el seguimiento de la metodología seguida
para la integración y desarrollo del chatbot local, al gestor de diálogos, al
igual que George y Diego (paso 1 y 3) se realiza el reconocimiento
automático del habla y la síntesis de voz.
La diferencia radica en el paso 2, donde el nodo bot_local se encuentra en
Standby, en espera del mensaje en el tópico de entrada pero su respectivo
envío al motor de inferencia PyAIML el cual busca el patrón en la base de
conocimiento y devuelve la respuesta, la misma que se publica en el tópico
de salida del nodo, se puede ver esto en la Ilustración 26.
Plataforma de integración del chatbot Diego.
UNIVERSIDAD CARLOS III DE MADRID. Plataforma de integración de Chatbots.
JUAN C. COBOS T. 59
Ilustración Ilustración Ilustración Ilustración 26262626 Diseño del Sistema del bot local.Diseño del Sistema del bot local.Diseño del Sistema del bot local.Diseño del Sistema del bot local.
5.4.1.5.4.1.5.4.1.5.4.1. Desarrollo del Prototipo.Desarrollo del Prototipo.Desarrollo del Prototipo.Desarrollo del Prototipo.
A continuación en la Ilustración 27 se presenta el código
desarrollado en ROS, bajo lenguaje Python para la creación del
nodo de integración.
ASR
eTTS
open_grammar_recog_result micrófono
ROS
ad_core
ad_server
TÓPICOS
rospy
roslib
PyAIML
ETTS_SAY_SENTENCE
AIML
parlante
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 60
Plataforma para el desarrollo del chatbot local.
UNIVERSIDAD CARLOS III DE MADRID. Plataforma de integración de Chatbots.
JUAN C. COBOS T. 61
Ilustración Ilustración Ilustración Ilustración 27272727 Código Fuente de Sistema Bot local.Código Fuente de Sistema Bot local.Código Fuente de Sistema Bot local.Código Fuente de Sistema Bot local.
5.4.1.1.5.4.1.1.5.4.1.1.5.4.1.1. Descripción de Base de conociDescripción de Base de conociDescripción de Base de conociDescripción de Base de conocimiento AIMLmiento AIMLmiento AIMLmiento AIML
A continuación se presenta la lista de archivos que conforman la
base de conocimientos, con sus variables o conocidos como
predicados si se refieren al usuario y metapredicados si es
información del chatbot.
� aparienciaFisica.aiml (predicado: haircolor, eyecolor)
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 62
� astrología.aiml (predicado: zodiac) (metapredicado:
zodiac)
� atributosPsicologicos.aiml (predicado: personality)
� clima.aiml
� conectores.aiml
� edad.aiml (predicado: age, birthday) (metapredicado:
age, birthday)
� estadoAnimo.aiml
� familia.aiml (predicado: gender, maritalstatus, partner,
couple)
� fecha.aiml
� genero.aiml (predicado: gender)
� infoUsuario.aiml (predicado: topic, job, country, gender,
age, zodiac, birthday, location, maritalstatus, haircolor,
eyecolor, partner)
� insultos.aiml (predicado: personality)
� nacionalidades.aiml (predicado: country)
(metapredicado: country, location, nacionalidad)
� nombres.aiml (predicado: nombre) (metapredicado:
name)
� noticias.aiml
� profesiones.aiml (predicado: job)
� respuestaGenerales.aiml (predicado: topic)
(metapredicado: name)
� saludos.aiml
� sinRespuestas.aiml
� sustituciones.aiml y uc3m.aiml
Se presenta en la Tabla 3 una sección de código de cada uno de los
archivos relacionados con la base de conocimientos.
Descripción de Base de conocimiento AIML.
UNIVERSIDAD CARLOS III DE MADRID. Plataforma de integración de Chatbots.
JUAN C. COBOS T. 63
aparienciaFisica.aiml
•<category><pattern>ESTOY GORDO</pattern><template>
• <random>
• <li>No, no lo creo. Quizás te sobre algún kilito, pero nada más.</li>
• <li>Quizás debería controlar tu peso un poco más.</li>
• </random><srai>ASKQUESTION1</srai></template>
•</category>
•<category><pattern>ESTOY GORDA</pattern><template><gender><srai>ESTOY GORDO</srai></gender></template></category>
astrología.aiml
•<category><pattern>MI ZODIACO ES *</pattern><template><sr/></template></category>
•<category><pattern>ACUARIO</pattern><template>Hay un montón de gente que es <set name="zodiac">acuario</set>.</template></category>
atributosPsicologicos.aiml
•<category><pattern>SOY MALO</pattern><template>
• <random>
• <li>Por tus palabras interpreto que no te importa ser mala persona. Deberías reconsiderarlo.</li>
• <li>Seguro que no es para tanto. Estoy convencida que en el fondo eres una buena persona.</li>
• <li>Pues deberías recapacitar y tratar de comportarte mejor.</li>
• </random>
•</template></category>
•<category><pattern>SOY MALA</pattern><template><gender><srai>SOY MALO</srai></gender></template></category>
•<category><pattern>SOY * MALO</pattern><template><srai>SOY MALO</srai></template></category>
Clima.aiml
•<category><pattern>TEMP *</pattern><template>
•<think><set name="temp"><formal><star/></formal></set><set name="banderatemp">1</set></think>
•<random>
•<li>Encantada, dejame reviso... </li>
•<li>No se exactamente, pero en internet dice... </li>
•<li>El clima es ... </li>
•</random>
•</template></category>
•<category><pattern>DIME LA TEMPERATURA ACTUAL EN *</pattern><template><srai>TEMP <star/></srai></template></category>
conectores.aiml
•<category><pattern>CABE *</pattern><template><srai><star /></srai></template></category>
•<category><pattern>CON *</pattern><template><srai><star /></srai></template></category>
•<category><pattern>CONTRA *</pattern><template><srai><star /></srai></template></category>
edad.aiml
•<category><pattern>QUE EDAD TENGO</pattern><template><srai>CUAL ES MI EDAD</srai></template></category>
•<category><pattern>CUANTOS ANOS TENGO</pattern><template><srai>CUAL ES MI EDAD</srai></template></category>
•<category><pattern>CUAL ES MI EDAD</pattern><template>
• <condition>
• <li name="age" value="">No me lo has dicho. ¿Cuántos años tienes?</li>
• <li>Si no me has mentido, tienes <get name="age"></get> años.</li>
• </condition></template></category>
•<category>
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 64
estadoAnimo.aiml
•<category><pattern>TENGO MIEDO</pattern><template>
• <random>
• <li>El miedo es una reacción muy humana.</li>
• <li>Eres un gallina. A tú edad y muerto de miedo.</li>
• </random>
•</template></category>
•<category><pattern>*</pattern><that>PORQUE TIENES MIEDO</that><template>Ya veo. <srai>ASKQUESTION1</srai></template></category>
familia.aiml
•<category><pattern>ESTOY CASADO</pattern>
•<template><think><set name="maritalstatus">casado</set><set name="gender">hombre</set></think> Cuéntame algo de tu matrimonio.</template></category>
•<category><pattern>SOY UN HOMBRE CASADO</pattern><template><srai>ESTOY CASADO</srai></template></category>
fecha.aiml
•<category><pattern>QUE HORA ES</pattern><template>
•<random>
•<li>No tienes reloj? bueno no importa son: <get name="hora"/></li>
•<li>la hora es: <get name="hora"/></li>
• </random>
• </template></category>
•<category><pattern>QUE HORA *</pattern><template><srai>QUE HORA ES</srai></template></category>
genero.aiml
•<category><pattern>SOY HOMBRE</pattern><template><condition name="gender" value="mujer"> Pues te suponía una mujer.</condition><think><set name="gender">hombre</set></think>YO SOY UNA MUJER ROBOT. <srai>ASKQUESTION1</srai>
•</template></category>
•<category><pattern>SOY TIO</pattern><template><srai>SOY HOMBRE</srai></template></category>
infoUsuario.aiml
•<category><pattern>NEWTOPIC</pattern>
• <template>
• <random>
• <li>Oye, una pregunta. </li>
• <li>Déjame preguntarte algo. </li>
• </random>
• </template></category>
•<category><pattern>ASKPERSONALQUESTION1</pattern>
• <template><condition>
• <li name="nombre" value="">¿Cómo te llamas?</li>
• <li name="gender" value="">¿Eres hombre o mujer?</li>
• <li><srai>ASKSPECIFICTOPIC</srai></li>
• </condition>
• </template>
•</category>
Descripción de Base de conocimiento AIML.
UNIVERSIDAD CARLOS III DE MADRID. Plataforma de integración de Chatbots.
JUAN C. COBOS T. 65
insultos.aiml
•<category><pattern>PUTA</pattern>
• <template>
• <think>
• <set name="personality">MALEDUCADO</set>
• </think>¿<sentence><input/></sentence>? Tu madre sí que es <input/>.
• </template>
•</category>
•<category><pattern>PUERCA</pattern><template><srai>PUTA</srai></template></category>
nacionalidades.aiml
•<category><pattern>SOY DE *</pattern><that>DE QUE PAIS ERES</that>
• <template><think><set name="country"><star></star></set></think>
• <random>
• <li><sentence><star/></sentence>? Bonito país.</li>
• <li>A ver si algún día puedo viajar hasta ahí.</li>
• </random>
• <srai>ASKQUESTION1</srai>
•</template></category>
•<category><pattern>DE *</pattern><that>DE QUE PAIS ERES</that><template><srai>SOY DE <star/></srai></template></category>
nombres.aiml
•<category><pattern>MI NOMBRE ES *</pattern><template><srai>NAM <star/></srai></template></category>
•<category><pattern>NAM *</pattern>
• <template><think><set name="nombre"><formal><star/></formal></set></think>
• <random>
• <li>Encantada, <get name ="nombre"/>.</li>
• <li>Un gusto hablar contigo, <get name ="nombre"/>.</li>
• </random>
• <srai>ASKQUESTION1</srai>
•</template></category>
noticias.aiml
•<category><pattern>NEWSLIST</pattern><template>
•<random>
•<li>Cuando quieras me puedes preguntar por las principales Noticias de Deportes </li>
•<li>Conozco las noticias mas Destacadas, preguntame si deseas</li>
•<li>Aunque el mundo es muy grande, he tratado de sintetizar las noticias internacionales mas relevantes, consultame cuando lo desees </li>
•<li>Las Noticias de Economia, son otro fuerte mio, si quieres puedes preguntame por noticias en Economia</li>
•</random>
•</template></category>
•<category><pattern>FEATURED</pattern><template>Claro, <think><set name="banderanews">0</set></think>
•</template></category>
•<category><pattern>NOTICIAS DESTACADAS</pattern><template><srai>FEATURED</srai>
•</template></category>
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 66
profesiones.aiml
•<category><pattern>SOY UN *</pattern><that>EN QUE TRABAJAS</that><template><srai>TRABAJO DE <star></star></srai></template></category>
•<category><pattern>WORK *</pattern>
• <template><think><set name="job"><star/></set></think>
• <random>
• <li>¿Por qué decidiste serlo?</li>
• <li><sentence><get name="job"/></sentence>... es una profesión interesante. ¿Te gusta?</li>
• <li>¡<sentence><get name="job"></get></sentence>! Suena interesante.</li>
• <li><sentence><get name="job"/></sentence>? ¿Desde cuándo trabajas como tal?</li>
• </random>
•</template></category>
sustituciones.aiml
•<substitutions lang="es">
• <gender> <substitute find="la" replace="el"/> </gender>
• <person> <substitute find=" Yo " replace=" El "/> </person>
•</substitutions>
respuestaGenerales.aiml
•<category><pattern>NO</pattern><template>
• <think><set name="topic"></set></think>
• <random>
• <li>Vale.</li>
• <li>De acuerdo.</li>
• <li>¿Por qué no?</li>
• <li>Perfecto, pues a otra cosa.</li>
• <li>Entendido. Si es que no, es que no.</li>
• </random>
•</template></category>
•<category> <pattern>NO *</pattern> <template><srai>NO</srai></template></category>
•<category> <pattern>*</pattern><that>POR QUE NO</that> <template>Parece una buena razón.</template> </category>
saludos.aiml
•<category><pattern>BUEN DIA</pattern><template><srai>HOLA</srai></template></category>
•<category><pattern>HOLA</pattern><template>
• <condition name="nombre">
• <li value="">Hola. ¿Cómo te llamas?</li>
• <li>¡Hola <get name="nombre" />!</li>
• </condition>
•</template></category>
Descripción de Base de conocimiento AIML.
UNIVERSIDAD CARLOS III DE MADRID. Plataforma de integración de Chatbots.
JUAN C. COBOS T. 67
Tabla Tabla Tabla Tabla 3333 Código deCódigo deCódigo deCódigo de Base de Conocimiento AIML.Base de Conocimiento AIML.Base de Conocimiento AIML.Base de Conocimiento AIML.
5.5.5.5.5.5.5.5. PyAIML (Inteligencia Artificial MarkPyAIML (Inteligencia Artificial MarkPyAIML (Inteligencia Artificial MarkPyAIML (Inteligencia Artificial Mark----up Language).up Language).up Language).up Language).
El motor de tratamiento de datos AIML bajo el cual se desarrolla el chatbot
de este proyecto ha sido PyAIML Se puede decir que nació paralelamente
con AIML, su autor es Cort Stratton como una librería externa de Python,
sirve para interpretar archivos AIML, que contienen la base de
conocimiento.
Fue desarrollado como una extensión de Howie, un proyecto chatterbot
AIML. Howie fue construido sobre J-Alice, que es un motor de AIML escrito
sinRespuestas.aiml
•<category><pattern>QUIENES *</pattern><template><srai>NOSE</srai></template></category>
•<category><pattern>CUANTOS *</pattern><template><srai>NOSE</srai></template></category>
•<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>Yo que sé. Mira que eres pesadito... todo el día preguntando jaja. No te enfades que es broma. </li>
• </random>
•</template></category>
uc3m.aiml
•<category><pattern>beginstatement</pattern>
•<template> Soy un robot desarrollado por el Grupo de robots sociales del Robotics Lab de la Universidad de Carlos Tercero. Si tienes alguna duda acerca de los robots sociales o respecto al grupo no dudes en preguntármelo.
•</template></category>
•<category><pattern>UC3MTOPIC</pattern><template>
• <think><set name="topic">uc3m</set></think>
• <random>
• <li>Recuerda que puedes formularme tus dudas acerca de Mi.</li>
• <li>Mi función es ayudarte con tus dudas acerca de los Robots Sociales.</li>
• <li>Si tienes alguna duda sobre Mi, aquí estoy para ayudarte</li>
• </random>
•</template></category>
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 68
en C + +, pero cuando J-Alice se hizo demasiado difícil de compilar se
decidió cambiar a un intérprete nativo de Python.
Ilustración Ilustración Ilustración Ilustración 28282828 Motor de tratamiento de Datos PyAIML.Motor de tratamiento de Datos PyAIML.Motor de tratamiento de Datos PyAIML.Motor de tratamiento de Datos PyAIML.
El módulo PyAIML, está formado por los archivos detallados en la Tabla 4.
El módulo PyAIML, Kernel.py, funciona como interfaz entre el usuario y el
intérprete AIML. Sigue la siguiente estructura:
1. Se carga los archivos AIML, mediante Kernel.py y se valida la
estructura de los archivos con AimlParser.py.
2. Si está bien estructurado el archivo AIML se almacena en memoria
mediante PatternMgr.py.
3. Se realizan las sustituciones de patrones y palabras mediante,
DefaultSubs.py y WordSub.py.
4. Se espera entrada del usuario en Kernel.py
5. Con la entrada del usuario, se busca en PatternMgr.py un patrón
que concuerde con la entrada del usuario, devuelve el contenido
existente dentro de la etiqueta <template> a Kernel.py,
6. Kernel.py devuelve, a su vez la respuesta, al usuario.
PyAIML (Inteligencia Artificial Mark-up Language).
UNIVERSIDAD CARLOS III DE MADRID. Plataforma de integración de Chatbots.
JUAN C. COBOS T. 69
Archivo Archivo Archivo Archivo FunciónFunciónFunciónFunción
AiAiAiAimlParser.py mlParser.py mlParser.py mlParser.py Analiza la estructura de la base de conocimiento
almacenada en los archivos AIML.
DefaultSubs.pyDefaultSubs.pyDefaultSubs.pyDefaultSubs.py
Contiene las sustituciones por defecto (Inglés) para el
núcleo PyAIML. Estas sustituciones pueden ser anulados
por el uso de Kernel.loadSubs
Kernel.py Kernel.py Kernel.py Kernel.py
Es la interfaz con AIML. Utiliza los archivos para
procesar patrones de entrada y determinar los diálogos
de respuesta.
PatternMgr.py PatternMgr.py PatternMgr.py PatternMgr.py
Implementa el algoritmo de coincidencia de patrones
AIML del Dr. Richard Wallace.
http://www.alicebot.org/documentation/matching.html
Utils.py Utils.py Utils.py Utils.py
Contiene funciones general, utilizadas por los demás
módulos.
WordSub.py WordSub.py WordSub.py WordSub.py
Permite definir un diccionario de sustitución de
palabras. Realiza las sustituciones dentro de un patrón,
dando como resultado un patrón formateado según sea
el propósito
Tabla Tabla Tabla Tabla 4444 Estructura motor de inferencia PyAIML.Estructura motor de inferencia PyAIML.Estructura motor de inferencia PyAIML.Estructura motor de inferencia PyAIML.
Además podemos ver la estructura del módulo PyAIML en la Ilustración 29.
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 70
Ilustración Ilustración Ilustración Ilustración 29292929 Estructura PyAIML.Estructura PyAIML.Estructura PyAIML.Estructura PyAIML.
Archivos
AIML
AimlParser.py
PatternMgr.py
DefaultSubs.pypy
Usuario
almacenar
WordSub.py sustituciones
Kernel.py
sustituciones
Utils.py
PyAIML (Inteligencia Artificial Mark-up Language).
Capítulo 6.Capítulo 6.Capítulo 6.Capítulo 6. Pruebas experimentales.Pruebas experimentales.Pruebas experimentales.Pruebas experimentales.
"Ni los muertos pueden
descansar en paz en un
país oprimido”
Fidel Castro.
Capítulo:Capítulo:Capítulo:Capítulo: Pruebas experimentales.Pruebas experimentales.Pruebas experimentales.Pruebas experimentales.
6.1.6.1.6.1.6.1. Introducción.Introducción.Introducción.Introducción.
En el capítulo anterior se ha presentado la plataforma de implementación
de integración de los chatbots como habilidad de un robot social. En el
presente capítulo, se presenta los pasos necesarios para ejecutar las
plataformas propuestas de integración de los chatbots como habilidad de
un robot social. Además se analiza detalladamente el diseño del chatbot
local y de sus capacidades automáticas tanto simples como complejas
presentando mejoras a la arquitectura propuesta.
Se han realizado varios experimentos utilizando la arquitectura propuesta,
buscando mejoras significativas mediante la comparación con los chatbots
Diego y George. En este capítulo, se describe también la evaluación del
chatbot local en cada uno de los niveles lingüísticos propuestos en la
evaluación realizada en el capítulo 4.
6.2.6.2.6.2.6.2. EjecuciónEjecuciónEjecuciónEjecución general general general general de Plataformasde Plataformasde Plataformasde Plataformas....
Para comenzar la ejecución, debemos correr el nodo principal de ROS
ad_core y ad_servers que nos van a permitir la comunicación entre los
distintos nodos. El comando es:
roslaunch ad_core ad_servers.launch
6666
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 74
Ilustración Ilustración Ilustración Ilustración 30303030 Ejecución nodos ad_core y ad_servers.Ejecución nodos ad_core y ad_servers.Ejecución nodos ad_core y ad_servers.Ejecución nodos ad_core y ad_servers.
Luego debemos activar el nodo de Reconocimiento Automático del Habla
ASR, mediante el comando:
rosrun asr launcher_open_grammar_asr_skill.exe –activate –
volume_threshold 1000
Ilustración Ilustración Ilustración Ilustración 31313131 Ejecución de nodo ASR.Ejecución de nodo ASR.Ejecución de nodo ASR.Ejecución de nodo ASR.
Ejecución general de plataformas.
UNIVERSIDAD CARLOS III DE MADRID. Pruebas experimentales.
JUAN C. COBOS T. 75
Finalmente activamos el nodo de Síntesis de Voz eTTS, mediante los
comandos:
roslaunch etts etts_skill.launch
rosrun etts test_etts_api_say_sentence.cpp
Ilustración Ilustración Ilustración Ilustración 32323232 Ejecución de nodo eTTS.Ejecución de nodo eTTS.Ejecución de nodo eTTS.Ejecución de nodo eTTS.
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 76
Con lo cual conseguimos la siguiente estructura del sistema de nodos:
Ilustración Ilustración Ilustración Ilustración 33333333 Nodos Activos ROS.Nodos Activos ROS.Nodos Activos ROS.Nodos Activos ROS.
Donde podemos ver el nodo eTTS a la derecha con el el nombre /etts_skill,
el nodo ASR en la parte inferior con el nombre /mcp_client_ros y todos
conectados al nodo principal de eventos y comunicaciones AD_CORE y
AD_ SERVERS con el nombre /cevent_ros.
6.2.1.6.2.1.6.2.1.6.2.1. Ejecución de Plataforma Diego.Ejecución de Plataforma Diego.Ejecución de Plataforma Diego.Ejecución de Plataforma Diego.
Para lanzar la plataforma de Diego, debemos ejecutar el siguiente
comando:
rosrun chatter chat_diego.py
Se desplegara una ventana de Firefox en modo WebDriver que nos
permitirá la comunicación, como se puede ver en la Ilustración 34.
Ejecución de Plataforma Diego.
UNIVERSIDAD CARLOS III DE MADRID. Pruebas experimentales.
JUAN C. COBOS T. 77
Ilustración Ilustración Ilustración Ilustración 34343434 Ejecución del nodo Ejecución del nodo Ejecución del nodo Ejecución del nodo BotBotBotBot_Diego._Diego._Diego._Diego.
En la Ilustración 35, se puede observar los nodos que se encuentran
corriendo, en color rojo el nodo del chatbot Diego con el nombre
/bot_diego en comunicación con el nodo ASR y enlazado con el nodo
eTTS, mediante el nodo de comunicaciones y eventos.
Ilustración Ilustración Ilustración Ilustración 35353535 Nodos activoNodos activoNodos activoNodos activos en la plataforma del chatbot Diego.s en la plataforma del chatbot Diego.s en la plataforma del chatbot Diego.s en la plataforma del chatbot Diego.
6.2.2.6.2.2.6.2.2.6.2.2. Ejecución de Plataforma George.Ejecución de Plataforma George.Ejecución de Plataforma George.Ejecución de Plataforma George.
Para lanzar la plataforma de George, debemos ejecutar el siguiente
comando:
rosrun chatter chat_george.py
Se ve el nodo ejecutándose en la siguiente ilustración.
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 78
Ilustración Ilustración Ilustración Ilustración 36363636 Ejecución del nodo Ejecución del nodo Ejecución del nodo Ejecución del nodo BotBotBotBot_George._George._George._George.
En la Ilustración 37, se puede observar los nodos activos, en color rojo
el nodo del chatbot George con el nombre /bot_george con la misma
estructura de comunicación que el nodo del chatbot Diego.
Ilustración Ilustración Ilustración Ilustración 37373737 Nodos activos en la plataforma del Nodos activos en la plataforma del Nodos activos en la plataforma del Nodos activos en la plataforma del BBBBot George.ot George.ot George.ot George.
6.2.3.6.2.3.6.2.3.6.2.3. Ejecución de Plataforma Ejecución de Plataforma Ejecución de Plataforma Ejecución de Plataforma LocalLocalLocalLocal....
Para lanzar la plataforma local, debemos ejecutar el siguiente comando:
rosrun chatter chat_local.py
Ejecución de Plataforma Local.
UNIVERSIDAD CARLOS III DE MADRID. Pruebas experimentales.
JUAN C. COBOS T. 79
Se ve el nodo ejecutándose en la siguiente ilustración, al inicializarse se
observa como carga las categorías de la base de conocimiento AIML.
Ilustración Ilustración Ilustración Ilustración 38383838 Ejecución del nodo Bot_Local.Ejecución del nodo Bot_Local.Ejecución del nodo Bot_Local.Ejecución del nodo Bot_Local.
En la Ilustración 39, se puede observar los nodos activos, en color rojo
el nodo del botBLocal con el nombre /bot_local con la misma estructura
de comunicación que el nodo del chatbot Diego.
Ilustración Ilustración Ilustración Ilustración 39393939 NodoNodoNodoNodos activos en la plataforma del Bot Local.s activos en la plataforma del Bot Local.s activos en la plataforma del Bot Local.s activos en la plataforma del Bot Local.
6.2.4.6.2.4.6.2.4.6.2.4. Autoevaluación de laAutoevaluación de laAutoevaluación de laAutoevaluación de la plataforma Bot Localplataforma Bot Localplataforma Bot Localplataforma Bot Local....
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 80
Se quiere presentar a continuación datos experimentales sobre la
calidad del chatbot local. Con el desarrollo del presente trabajo y la
experimentación con los chatbot, nos da razones positivas sobre su gran
potencia y calidad a pesar del corto tiempo de desarrollo en
comparación con chatbot que llevan años de perfeccionamiento de sus
bases de conocimiento para alcanzar los premios y reconocimientos que
tienen, queríamos de alguna manera cuantificar sus capacidades en
cada área lingüística. Para ello hemos realizado varias pruebas y
mejoras, con el objetivo de analizar y extraer conclusiones respecto a
varios factores que se deben mejor y presentar líneas de futuros trabajos
de investigación.
6.2.4.1.6.2.4.1.6.2.4.1.6.2.4.1. Fluidez verbal semántica.Fluidez verbal semántica.Fluidez verbal semántica.Fluidez verbal semántica.
Una de las pruebas de mayor uso en la valoración neuropsicológica
es la de fluidez verbal semántica, experimentalmente por su fácil y
rápida aplicacion. La tarea consiste en generar frases estructuradas
con contenidos semánticos pertenecientes a una categoría; por
ejemplo ¿Quién fue Cristóbal Colon?, ¿Cuáles son los diez
mandamientos? La fluidez verbal mide principalmente la velocidad
y facilidad de producción verbal; además, evalúa la disponibilidad
para iniciar una conducta en respuesta ante una tarea novedosa.
En cuanto a este nivel lingüístico, hemos dotado al chatbot de un
enlace a internet a Kngine.com24 un potente servicio de
procesamiento de lenguaje natural con la aplicación de respuestas a
preguntas, con lo cual hemos alcanzado un nivel muy alto en este
punto, además como respaldo si no obtenemos una respuesta
24 http://kngine.com/ Kngine es el motor de conocimiento diseñado para dar respuesta directa a preguntas. Kngine fue construida sobre la creencia de que hay personas con preguntas y de que hay suficiente información en la Web para responderlas. Especialmente a los usuarios móviles que necesitan respuesta, no páginas de enlaces que pueden o no conducir a respuestas.
Autoevaluación de la plataforma Bot Local
UNIVERSIDAD CARLOS III DE MADRID. Pruebas experimentales.
JUAN C. COBOS T. 81
específica, se doto también al chatbot de un enlace a un diccionario
electrónico thefreedictionary25, el cual busca el significado de las
palabra o palabras sin la parte interrogativa de la pregunta.
6.2.4.2.6.2.4.2.6.2.4.2.6.2.4.2. Fluidez verbal Fluidez verbal Fluidez verbal Fluidez verbal fonológica.fonológica.fonológica.fonológica.
La tarea consiste en generar tantas palabras como sea posible
fonológica, palabras pertenecientes a una categoría; por ejemplo,
¿enumera animales?, ¿enumera frutas?, etc. En este punto se ha
implementado una conexión a shertonenglish26 con lo cual tenemos
listas organizadas por categorías.
6.2.4.3.6.2.4.3.6.2.4.3.6.2.4.3. Denominación a definiciones.Denominación a definiciones.Denominación a definiciones.Denominación a definiciones.
Este es un punto sensible en los chatbots, pues en base a una
pregunta cerrada y dentro de una temática específica, es algo muy
complejo de analizar, pues no solo se debe realizar un análisis
semántico, sino avanzar a un análisis pragmático, aunque muchas
de las veces sean preguntas muy simples, por ejemplo: ¿Con que se
abre una puerta?, ¿Qué animal ladra?. En este punto se ha tratado
de implementar en la base de conocimiento respuestas a conceptos
básicos.
6.2.4.4.6.2.4.4.6.2.4.4.6.2.4.4. Denominación de objetos. ¿Qué es esto?Denominación de objetos. ¿Qué es esto?Denominación de objetos. ¿Qué es esto?Denominación de objetos. ¿Qué es esto?
Dar una descripción a un objeto, mediante la exposición de manera
particular, específica y precisa de un concepto o término, es algo que
se puede realizar utilizando un diccionario, por lo mismo se ha
25 http://es.thefreedictionary.com/ De la empresa independiente y privada Farlex, Inc. que ofrece productos de referencia en línea. 26 http://www.shertonenglish.com/ Página Web que brinda vocabulario, organizado por Categorías
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 82
utilizado la destreza desarrollada en la Fluidez verbal semántica y
se realizan las consultas, en thefreedictionary.
Además se ha incluido una conexión a la página web Weather
Underground27, con lo que puede informarnos de la temperatura de
cualquier ciudad del mundo.
6.2.4.5.6.2.4.5.6.2.4.5.6.2.4.5. Fluidez verbal de nombres propiosFluidez verbal de nombres propiosFluidez verbal de nombres propiosFluidez verbal de nombres propios y y y y
Denominación de nombres propios. ¿Cómo se Denominación de nombres propios. ¿Cómo se Denominación de nombres propios. ¿Cómo se Denominación de nombres propios. ¿Cómo se
llama…?llama…?llama…?llama…?....
Los nombres propios, por su propia forma designativa, y por su
contenido que encierran como relativo a algo o alguien, encierran la
particularidad de ser demasiado diversos, pues pueden estar
referidos según la nacionalidad, ideología, religión entre otros. Es
muy complejo pensar que se puede construir una base de
conocimiento que englobe la diversidad de nombres propios, pues
los mismos carecen de significado lingüísticamente construido. Pero
esta área queda cubierta en gran medida gracias al buscador
semántico kngine, que nos brinda respuestas muy precisas de
personajes históricos, política, ciencia, con lo cual el chatbot puede
contestar a preguntas como: ¿Cómo se llama el presidente de
Ecuador?, ¿Quién es el Papa actual?, ¿Quién descubrió América?.
6.2.4.6.6.2.4.6.6.2.4.6.6.2.4.6. Recuerdo de una persona. (Presentación de Recuerdo de una persona. (Presentación de Recuerdo de una persona. (Presentación de Recuerdo de una persona. (Presentación de
conocido).conocido).conocido).conocido).
Se ha dotado la capacidad de almacenar el nombre de los familiares
del usuario así como de amigos, mientras se desarrolla la
27 http://www.wunderground.com/ sitio web que ofrece numerosos servicios meteorológicos profesionales y gratuitos.
Autoevaluación de la plataforma Bot Local
UNIVERSIDAD CARLOS III DE MADRID. Pruebas experimentales.
JUAN C. COBOS T. 83
conversación, al detectar una de las designaciones anteriores,
almacenamos en un variable, que puede ser consultada
posteriormente en el transcurso del dialogo.
6.2.4.7.6.2.4.7.6.2.4.7.6.2.4.7. Cantidad y Capacidad de cálculo.Cantidad y Capacidad de cálculo.Cantidad y Capacidad de cálculo.Cantidad y Capacidad de cálculo.
Esta área no se ha desarrollado y no porque no sea importante de
dotar la capacidad de cuantificar las cosas, pero debe implementarse
dependiendo del área en que se vaya a utilizar al chatbot, Se cuenta
con herramientas en la red como Wolfram28 que permite resolver
cálculos dinámicos basados en una amplia colección de datos
integrados, algoritmos y métodos.
6.2.4.8.6.2.4.8.6.2.4.8.6.2.4.8. Ambigüedad.Ambigüedad.Ambigüedad.Ambigüedad.
La ambigüedad lingüística se da cuando una palabra u oración es
susceptible de dos o más significados o interpretaciones. La
ambigüedad puede ser sintáctica el nivel más desarrollado,
semántica o pragmática. Esta área es muy amplia y en la que se debe
realizar un desarrollo muy completo.
6.2.4.9.6.2.4.9.6.2.4.9.6.2.4.9. Ubicación temporal.Ubicación temporal.Ubicación temporal.Ubicación temporal.
La ubicación temporal se refiere al día mes y año, se la puede definir
como una medida de tiempo, Esta área queda cubierta ya que se ha
enlazado al chatbot con el reloj del sistema, con lo cual dispone de
la información necesaria.
28 http://www.wolframalpha.com Wolfram | Alpha pretende acercar el conocimiento y las capacidades a nivel de expertos para la más amplia gama de personas, su objetivo es reunir y conservar datos, aplicar cada modelo conocido, el método, y el algoritmo que permiten calcular lo que se puede calcular a partir de una pregunta.
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 84
6.2.4.10.6.2.4.10.6.2.4.10.6.2.4.10. Capacidad lingüística.Capacidad lingüística.Capacidad lingüística.Capacidad lingüística.
Las capacidades lingüísticas son muchas y muy variadas, como
sinonimia, numero gramatical, entre otros. Por lo mismo se deberá
integrar esta área dependiendo del uso que se vaya a dar al chatbot
como por ejemplo en el espacio de la educación o salud.
En todo caso en esta área se realizó la conexión a las noticias de
Google29, así como a otra página web que brinda efemérides30.
6.2.4.11.6.2.4.11.6.2.4.11.6.2.4.11. RRRRazonamiento lógico y Capacidad crítica,azonamiento lógico y Capacidad crítica,azonamiento lógico y Capacidad crítica,azonamiento lógico y Capacidad crítica,
En la actualidad aun nos encontramos muy lejos de ver un
ordenador que razone, pero la simulación de estas capacidades se le
debe ir dando al chatbot con el análisis de las conversaciones con los
usuarios y el análisis de sus preguntas, en distintos escenarios, estas
son las áreas en la que los desarrolladores de chatbots actualmente
trabajan más y por lo que han obtenido reconocimientos sus
desarrollos.
29 https://news.google.es/ 30 http://www.efemerides.net
Autoevaluación de la plataforma Bot Local
Capítulo 7.Capítulo 7.Capítulo 7.Capítulo 7. Conclusiones y Trabajos FutConclusiones y Trabajos FutConclusiones y Trabajos FutConclusiones y Trabajos Futuros.uros.uros.uros.
"No es lo mismo hablar de revolución
democrática que de democracia
revolucionaria. El primer concepto
tiene un freno conservador; el
segundo es liberador”
Hugo Chávez.
Capítulo:Capítulo:Capítulo:Capítulo: Conclusiones y Trabajos FConclusiones y Trabajos FConclusiones y Trabajos FConclusiones y Trabajos Futuros.uturos.uturos.uturos.
7.1.7.1.7.1.7.1. Conclusiones.Conclusiones.Conclusiones.Conclusiones.
Como parte de la investigación, se comenzó por un análisis del
Procesamiento de Lenguaje Natural, con sus principales aplicaciones en la
actualidad, detallando las que se encuentran disponibles en internet, luego
se realizó un estudio minucioso sobre el análisis lingüístico, sus niveles y su
correlación con el PLN, además se definió y analizo los chatbots que se
comunican en lenguaje español y que se encuentran disponibles en internet.
Esto nos sirvió para posteriormente realizar una evaluación de los agentes
virtuales existentes, relacionando sus reconocimientos y premiaciones con
su desempeño conversacional.
Además se realizó la revisión de las herramientas utilizadas, para el
desarrollo del presente proyecto, de las cuáles se eligió como sistema
operativo informático Ubuntu Precise Pangolin 12.04 y como sistema
operativo robótico ROS Groovy Galapagos, ya que los nodos de Síntesis de
Voz y de Reconocimiento Automático del Habla, están desarrollados en
estos sistemas. Para la creación de los nuevos nodos se escogió el lenguaje
de programación Python, por su sencillez, minimalismo y fácil estructura,
además cuenta con muchos módulos que facilitaron la consecución de los
objetivos, como son Urlib2 y Selenium que nos permitieron el enlace a
internet y PyAiml que funciono como motor de inferencia para trabajar con
la base de conocimiento creada en AIML.
Y finalmente en base a todo lo mencionado anteriormente se presentó la
integración de tres chatbots como Habilidad de un Robot Social con Gestor
de Diálogos del grupo de Robots Sociales Robotic Lab de la UC3M. La
arquitectura se compone de tres nodos, dos de ellos con conexión a chatbots
7777
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 88
George y Diego, que fueron evaluados por sus capacidades lingüísticas y el
tercero se realiza con un chatbot local, desarrollado en lenguaje AIML y que
se le ha dotado de más de 8000 categorías, conexión a búsquedas
semánticas, diccionario, efemérides, temperatura y noticias.
7.2.7.2.7.2.7.2. Aportaciones Aportaciones Aportaciones Aportaciones
La principal aportación de ésta investigación fue la integración de un
chatbot como Habilidad de un Robot Social con Gestor de Diálogos.
Otras aportaciones realizadas en ésta investigación fueron las siguientes:
• Se realizó un análisis sobre el Procesamiento de Lenguaje Natural,
examinando sus principales aplicaciones en la actualidad y como estas se
podían utilizar en el desarrollo del presente proyecto.
• Se efectuó el estudio de las herramientas, módulos y nodos disponibles
para realizar el presente proyecto, y se realizaron las mejoras necesarias.
• Se detalló los chatbots existentes en la actualidad, con sus características
y logros alcanzados.
• Se evaluó los chatbots más destacados, mediante la aplicación de una
encuesta para determinar sus capacidades lingüísticas.
• Se modificó y mejora la Base de Conocimiento en AIML, se la adecuo
para su correcto funcionamiento con el motor de inferencia PyAIML.
• Se realizó la conexión al chatbot George mediante el módulo Urlib2 de
Python.
• Se realizó la conexión al chatbot Diego mediante el módulo Selenium de
Python.
• Se realizó la conexión al chatbot Local a:
Conclusiones.
UNIVERSIDAD CARLOS III DE MADRID. Conclusiones y Trabajos Futuros.
89
- Web de preguntas y respuestas kngine.
- Web de efemérides.
- Web de noticias Google News.
- Web de clima Weather Underground.
- Web diccionario thefreedictionary.
7.3.7.3.7.3.7.3. Trabajos FuturosTrabajos FuturosTrabajos FuturosTrabajos Futuros....
Entre las principales líneas de desarrollo e investigación que quedan
abiertas con el desarrollo del presente proyecto podemos enumerar:
• Al ser el presente proyecto, la base para la implementación de un
agente virtual como habilidad de un robot social, a futuro se debe
seguir ampliando la base de conocimiento, buscando mejorar las
áreas aquí Autoevaluadas.
• Realizar la implementación para expresar emociones en el dialogo.
• Desarrollar un análisis semántico y pragmático de las
conversaciones, para dotar al chatbot de un análisis de conceptos,
expresiones temporales, entidades tratadas, así como una
clasificación temática y un análisis de los sentimientos en el
decálogo.
• Utilizar el presente chatbot en escenarios como educación o con
enfermos por ejemplo con deterioro cognitivo y trastornos
conductuales, ver su posible aplicación como herramienta de
conversación (narración y descripción), ayuda de denominación de
objetos, tareas léxicas, repeticiones, entre otros.
• La autogeneración de Bases de Conocimiento, mediante la
interacción con el usuario.
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 90
7.4.7.4.7.4.7.4. Recomendaciones. Recomendaciones. Recomendaciones. Recomendaciones.
Siempre se busca la mejora de un proyecto, por lo mismo recomiendo a
futuros estudiantes, seguir ampliando y mejorando la Base de
Conocimiento e incluso su automatización para el aprendizaje automático
de patrones y sus correspondientes respuestas, aprovechando la fácil
interacción que se ha logrado mediante la implementación de Síntesis de
Voz y reconocimiento automática del habla.
Por otro lado el área de PLN se encuentra en fase de desarrollo y no hay
una correcta correlación entre el análisis lingüístico y su procesamiento, a
veces de manera arbitraria se piensa, como era mi caso que es una área muy
sencilla y muy desarrollada, pero la realidad es otra, aún estamos muy lejos
de ver un chatbot, robot u otro agente virtual que llegue a tener la capacidad
lingüística de una persona, por lo que incentivaría a trabajar en análisis
semántico y pragmático, para encontrar nuevos modelos que permitan una
correcta simulación informática del lenguaje español, que a pesar de ser la
segunda lengua del mundo por el número de personas que la usan como
lengua materna, existe muy poco desarrollo en PLN.
Recomendaciones.
Capítulo 8.Capítulo 8.Capítulo 8.Capítulo 8. Anexos.Anexos.Anexos.Anexos.
"Mi mejor amigo es el
que enmienda mis
errores o reprueba mis
desaciertos”
San Martín.
Capítulo:Capítulo:Capítulo:Capítulo: AnexosAnexosAnexosAnexos....
8.1.8.1.8.1.8.1. Lenguaje Lenguaje Lenguaje Lenguaje AIMAIMAIMAIML (Inteligencia Artificial MarkL (Inteligencia Artificial MarkL (Inteligencia Artificial MarkL (Inteligencia Artificial Mark----up up up up
Language).Language).Language).Language).
El lenguaje bajo el cual se desarrolla el chatbot de este proyecto ha sido
AIML. Este lenguaje fue creado por el Dr. Richard Wallace y la comunidad
de código abierto Alicebot, durante el período 1995-2000. Fue adaptada
originalmente de una gramática no XML también llamado AIML, y formó
la base para el primer Alicebot, ALICE, la Entidad Artificial Lingüística
Informática Internet es la raíz del funcionamiento de la mayoría de los bots
actuales que se basan en los éxitos de este proyecto abierto.
AIML, describe una clase de objetos de datos llamados objetos AIML y
describe parcialmente el comportamiento de los programas de ordenador
que los procesan. AIML objetos se componen de unidades llamadas temas
y categorías, que contienen datos analizados o no analizados.
Ilustración Ilustración Ilustración Ilustración 40404040 Lenguaje de programacion AIML para Chatbots.Lenguaje de programacion AIML para Chatbots.Lenguaje de programacion AIML para Chatbots.Lenguaje de programacion AIML para Chatbots.31313131
31 http://www.meta-guide.com/home/bibliography/google-scholar/aiml-2005
8888
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 94
AIML es concebido como un lenguaje de scripts que define una base de
conocimiento de pregunta-respuesta, la cual es utilizada como software
para chatbots basados en texto, por lo que carece de la capacidad de
manejar las entradas no verbales del usuario y las respuestas no verbales
del agente. En AIML, una interacción entre el agente y su usuario se define
dentro de la unidad categoría (category), mientras las posibles expresiones
del usuario se encuentran definidas en las etiquetas de patrones (pattern)
y la respuesta del agente se encuentra definida dentro de las etiquetas de
plantillas (template).
La discusión sobre el diseño correcto de una interfase AIML se encuentra
acorde dos cosas fundamentales: que sucede con los patterns dentro, y que
pasa con los templates. Del lado del patrón debe haber un programa que
procese lo que el cliente dice, la entrada, y toma la decisión sobre que
categoría de AIML va a ser activada.
El template es realmente una mini computadora programada de tal manera
que puede contener un número de pasos para procesar las respuestas.
El algoritmo o procedimiento de funcionamiento de AIML encuentra miles
de categorías AIML en el cerebro del bot si este está altamente
desarrollado. Definir el mejor funcionamiento de entrada-salida es un
problema de diseño o programación que ha sido investigado por muchos
años por los desarrolladores de Inteligencia Artificial en todo el mundo.
Lenguaje AIML.
UNIVERSIDAD CARLOS III DE MADRID. Anexos.
95
Ilustración Ilustración Ilustración Ilustración 41414141 Etiquetas AIML.Etiquetas AIML.Etiquetas AIML.Etiquetas AIML.
8.2.8.2.8.2.8.2. Características AIML.Características AIML.Características AIML.Características AIML.
La sencillez y flexibilidad son las características esenciales de AIML, pero
presenta dos limitaciones específicas su exactitud, el usuario debe ingresar
exactamente la frase almacenada en la base de conocimientos par que
estimule la respuesta. Se permite el uso de comodines (* y _) solo en una
parte de la frase sin ninguna variante de estos, como una palabra que tenga
diez letras, solo si es un digito, solo si es un signo, etc. Además se puede
perder parte del mensaje. Por ejemplo: en la palabra “HOLA” relaciona
solamente una palabra idéntica de las frases (“Hola”), ahora con
“HOLA *” relaciona cualquier frase de dos o más palabras iniciando
con “Hola” (Ej. “Hola ¿cómo estás?”), entonces “¿cómo estás?” no sería
evaluado. El segundo problema que tiene AIML, son los motores, estos por
lo general no cumplen con todas las declaraciones AIML. Por ejemplo se
podría ejecutar sentencias java script o invocar scripts de otro lenguaje
como puede ser BASH, incluso HTML.
•Indica el inicio y el fin de un archivo AIML.
<aiml>
•Representa una "unidad de conocimiento" en una base de conocimiento.
<category>
•Es el texto que es el estímulo o entrada que el chatbot recibe.
<pattern>
•Etiqueta que se utiliza para contener el tema de conversación en curso.
<topic>
•Etiqueta que se refiere a la respuesta anterior del bot.
<that>
•Contiene la respuesta al estímulo de una entrada textual del usuario.
<template>
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 96
8.3.8.3.8.3.8.3. Propiedades AIML.Propiedades AIML.Propiedades AIML.Propiedades AIML.
Las propiedades son constantes que se mantienen invariables en el chatbot,
solo el programador puede modificarlas, una propiedad básica es el
nombre del robot que se asigna cuando se crea el mismo.
AIML provee propiedades que se asignas al bot para permitir al botmaster
crear constantes como el nombre, la edad, preferencias, etc, todo lo que
significa la biografía o características básicas de un robot.
La motivación para usar estas variables es la masificación del uso en
distintos lugares y aspectos. Por ejemplo, una propiedad como "localidad
de residencia" de un bot puede estar relacionada con la pregunta “¿De
dónde eres?”, “dime sobre ti” o “¿Dónde has estado que has llegado tarde?”
entre otras.
Es importante tener presente que un cambio en las propiedades implica un
cambio en la personalidad del robot. Algunas propiedades del chatbot
como su tamaño, vocabulario, creador, versión, etc. son propiedades
técnicas y están relacionadas con el software o programa que utiliza la base
de conocimientos. Estas propiedades pueden utilizarse para responder
preguntas como “¿Qué tan grande eres tú?”, “¿Cuantas palabras tú sabes?”.
Si se desea hacer una apariencia más humana de la personalidad del robot,
debe usar propiedades como “Clase=Animal”, “Orden=Primate”,
“Familia=Homo sapiens”. “especie=humano”.
Observa que incluso puedes cambiar la palabra “botmaster” por “maestro”
o “creador”. Este tipo de propiedades suelen aparecer más comúnmente en
el archivo llamado bot.aiml, (que veremos luego donde se ubica) que es la
respuesta a muchas preguntas que se le hacen al robot.
Propiedades AIML.
UNIVERSIDAD CARLOS III DE MADRID. Anexos.
97
Hay propiedades asociadas con la personalidad y las emociones del bot:
“etype” (el tipo de personalidad del bot), “emociones” (sobre las emociones
del bot), “sentimientos (un conjunto referido a los sentimientos), “ética”
(puntos básicos sobre la ética).
A continuación vemos, un ejemplo de una lista de propiedades:
Item Propiedad Valor (value)
1 Creador UC3M
2 Maestro Juan Carlos Cobos
3 Nombre *******
4 Genero Robot
5 Ubicación España, Madrid
6 Sexo Femenino
7 Especialidad Agente Conversacional
8 Fecha nacimiento Febrero 01, 2013
9 Tipo Inteligencia Artificial
10 Lugar nacimiento Laboratorio UC3M
11 Amigos Javier Gorostiza, David García Godoy, Alberto Ramón Jañez.
12 Película favorita Yo soy Robot
13 Religión Católica
14 Comida preferida Electrones
15 Color preferido Azul
16 Familia Robotic Lab.
17 Actor favorito Will Smith
18 Nacionalidad Española
19 Reino de la Máquinas
20 Amigo Miguel Angel Salich
21 Website http://roboticslab.uc3m.es/roboticslab/
22 Temas
conversación
Inteligencia Artificial, Robots, Filosofía, Historia, Geografía y
muchos otros temas más.
23 Lenguaje Español
Tabla Tabla Tabla Tabla 5555 Propiedades de un Chatbot en AIML.Propiedades de un Chatbot en AIML.Propiedades de un Chatbot en AIML.Propiedades de un Chatbot en AIML.
Para recuperar el valor de cualquier propiedad tenemos que usar la
etiqueta <bot name=”Propiedad”>. Por ejemplo para un patrón como
“Háblame de ti” la respuesta estará en una caja de texto y podría ser del
siguiente tipo:
Yo soy un <bot name=”Especialidad”/>
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 98
Yo fui creado en <bot name=”Lugar nacimiento”/> por <bot
name=”Maestro”/>
8.4.8.4.8.4.8.4. Variables AIML.Variables AIML.Variables AIML.Variables AIML.
AIML permite almacenar informacion sobre el usuario mediante el uso
de dos marcadores: <set> y <get>.
El marcador establecer <set>, no permite declarar el nombre de una
variable y su valor. Por otro lado el marcador obtener <get> nos permite
recuperar en valor almacenado en la variable. La sintaxis <set> y <get> es
la siguiente:
<set name = "nombre_variable">valor_variable</set>
<get name = "nombre _ variable"/>.
Normalmente, estos dos marcadores hacen que se muestre por pantalla el
valor de la variable. Si no queremos que se muestren los valores devueltos
por ellos u otros marcadores, tenemos que cerrarlos en los marcadores
<think></think>: todo lo que se halle dentro de <think> serán
"pensamientos interiores" del bot y no se imprimirán por pantalla. Por
ejemplo, si queremos cargar el nombre del usuario en su enunciación, y
luego responder saludando con este nombre (dentro de un momento,
vamos a ver cómo hacerlo), podemos utilizar el siguiente modelo de
enunciación:
Variables AIML.
UNIVERSIDAD CARLOS III DE MADRID. Anexos.
99
Ilustración Ilustración Ilustración Ilustración 42424242 Uso de etiqueUso de etiqueUso de etiqueUso de etiquetas Set, Get y Think.tas Set, Get y Think.tas Set, Get y Think.tas Set, Get y Think.
Dentro de <template>, recuperamos el valor del comodin * con el nombre
del usuario en el modelo, colocando el marcador <star/>.
Podemos escribir el mismo código abreviado sin los marcadores <think> y
<get>, al mismo tiempo se guarda el nombre y se lo escribe en la pantalla:
8.4.1.8.4.1.8.4.1.8.4.1. Comodines AIML.Comodines AIML.Comodines AIML.Comodines AIML.
Los patrones (patterns) están hechos de palabras naturales, que incluyen
letras, números y espacios. Pero también pueden contener palabras
“claves”. Estas palabras claves como ya habíamos dicho anteriormente
se identifican con un asterisco ( * ) o con un guión bajo ( _ ).
La utilidad de los asteriscos y guiones es poder simplificar los patrones
de entrada de tal manera que abarquen más frases.
La diferencia entre el uso del asterisco y el guion es la prioridad con la
cual las frases serán sustituidas.
Si tenemos los siguientes patrones de entrada:
_ es un amigo
<aiml version="1.0">
<category>
<pattern>me llamo *</pattern>
<template>
<think><set name="nombre"><star/></set>
</think>Buenas<get name="nombre"/>
</template>
</category>
<aiml version="1.0">
</category>
<pattern>me llamo *</pattern>
<template> Buenas <set
name="name">
<star/></set>
</template>
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 100
¿Qué es un amigo?
Que es un *
Y la entrada que escribe el usuario es “¿Que es un amigo?”, el primer
patrón “_es un amigo” será el que desplegará la respuesta
correspondiente por que el guion tiene prioridad sobre cualquier otro
tipo de palabra.
Ahora si la entrada fuera “¿Qué es un niño?”, el patrón “Que es un *”
coincidirá (y desplegará la respuesta correspondiente) ya que ninguna
de las dos frases anteriores contiene las palabras correspondientes para
coincidir con la palabra "niño". La tercera frase contiene el asterisco (*)
que puede coincidir con una o más palabras.
Pero si tenemos los siguientes patrones de entrada:
_es*
¿Qué es un amigo?
Que es *
Y la entrada fuera “¿Qué es un amigo?”,
El primer patrón coincidirá ya que el primer guion tomará "Que" y el
asterisco coincidirá con la secuencia de palabras "un amigo". Observar
que los patrones también incluyen, en este caso la frase de coincidencia
exacta "¿Que es un amigo?" pero el patrón con el que se responderá será
el primero debido a la prioridad que tienen los guiones y asteriscos.
8.4.2.8.4.2.8.4.2.8.4.2. Declaraciones AIML.Declaraciones AIML.Declaraciones AIML.Declaraciones AIML.
Comodines AIML.
UNIVERSIDAD CARLOS III DE MADRID. Anexos.
101
Esta sección describe las etiquetas de AIML más utilizadas en la
composición de un archivo .aiml que forma parte de la base de
conocimiento de un agente conversacional.
Ilustración 43 Esquema de etiquetas AIML.
Como vemos el lenguaje de programación AIML tiene una estructura y
jerarquía clara, manteniendo la estructura del código XML de apertura
y cierre de etiqueta.
8.4.3.8.4.3.8.4.3.8.4.3. Etiquetas <category></Etiquetas <category></Etiquetas <category></Etiquetas <category></catecatecatecategorygorygorygory>.>.>.>.
Dependiendo de la configuración de los <template> y <pattern>, se
pueden considerar que hay 3 tipos de categorías: Ideales, Generalizadas
y Enlazadas.
<a
iml>
</a
iml>
<category>
</category>
<pattern>
</pattern>
<template>
</template>
<srai>
</srai>
<random>
</random>
<that>
</that>
<topic>
</topic>
Categorías de un Tema
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 102
• Una categoría Ideal sería la que tiene un único patrón de
entrada, lo cual por la riqueza del lenguaje español es casi
imposible, pero en todo caso se puede decir que es un patrón
que no contenga “*” o “_”, son las más fáciles y simples para
añadir en AIML.
• Una categoría Generalizada es cuando se engloba el patrón,
generalizando parte del mensaje, es lo que más se utiliza
dentro de AIML son aquellas que en su patrón tiene un
“*” o “_”. La última categoría generalizada es
<pattern>*<pattern>, la cual se relaciona con cualquier
entrada.
• Una categoría Enlazada son aquellas que se conectan con
otros patrones, para simplificar la sinonimia de patrones o
para simplificar el lenguaje. Dentro de la plantilla de
respuesta <template> se utiliza la etiqueta <srai> que
permite llamar al patrón que contiene la plantilla con la
respuesta.
Etiquetas <category></category>.
UNIVERSIDAD CARLOS III DE MADRID. Anexos.
103
Ilustración Ilustración Ilustración Ilustración 44444444 Tipos de categorías AIML.Tipos de categorías AIML.Tipos de categorías AIML.Tipos de categorías AIML.
Además podemos ver la etiqueta <random> que nos permite desplegar
varias respuestas que signifiquen lo mismo pero que se expresan de
manera distinta, conocidas como respuestas aleatorias, cada respuesta
aleatoria debe estar con la etiqueta <li>.
La simplificación o reducción de patrones de entrada complejos es
otra aplicación común de categorías enlazadas, mediante la etiqueta
<star>, se puede recuperar la información del comodín utilizado en la
entrada, por ejemplo:
Ide
ale
s
Ge
ne
rali
zad
os
En
laza
da
s<aiml version="1.0">
<category>
<pattern>HOLA</pattern>
<template>
<random>
<li>Buenos días.</li>
<li>¡Hola!</li>
<li>¡Buenas!</li>
</random>
</template>
</category>
<category>
<pattern>HOLA *</pattern>
<template><srai>HOLA</srai>
</template>
</category>
<category>
<pattern>BUENAS</pattern>
<template><srai>HOLA</srai>
</template>
</category>
<category>
<pattern>BUENAS *</pattern>
<template><srai>HOLA</srai>
</template>
</category>
</aiml>
<aiml version="1.0">
<category>
<pattern>HOLA *</pattern>
<template>
<random>
<li>Buenos días.</li>
<li>¡Hola!</li>
<li>¡Buenas!</li>
</random>
</template>
</category>
</aiml>
<aiml version="1.0">
<category>
<pattern>HOLA</pattern>
<template>Buenos días</template>
</category>
</aiml>
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 104
Ilustración Ilustración Ilustración Ilustración 45454545 Uso de etiquetas Pattern y Template.Uso de etiquetas Pattern y Template.Uso de etiquetas Pattern y Template.Uso de etiquetas Pattern y Template.
8.4.4.8.4.4.8.4.4.8.4.4. Etiquetas <topic></topic>.Etiquetas <topic></topic>.Etiquetas <topic></topic>.Etiquetas <topic></topic>.
Los tópicos permiten elegir las propias respuestas que tienen que ver
con el tema actualmente discutido. Es decir, cuando el programador
decidió que un tema sea un tópico, se pueden crear categorías las
cuales podrían contener ciertas respuestas específicas sobre el tópico.
Esto mantiene una conversación de actualidad y se tiene la habilidad
para moverse de un tema a otro. Pero hay que tener claro que tal vez
nunca se podrá prever todas las preguntas del usuario en todos los
contextos: el lenguaje natural ofrece simplemente demasiadas
posibilidades. Nos ayuda el marcador del tema de la conversación
<topic>, junto con una variable del sistema que le acompaña, que tiene
el mismo nombre. Si se indica la variable topic y el chatbot no es capaz
de contestar a la enunciación del usuario, busca un bloque adecuado
<topic> y carga la respuesta de este bloque. Veámoslo en el ejemplo del
saludo. A menudo el saludo entre la gente no termina sólo con un
intercambio de saludos, sino que le acompaña una corta conversación
de cortesía,
Por ejemplo sobre la salud o sobre el tiempo. Incluimos estas opciones,
indicando el tema del saludo como: SALUDO y agregando el bloque
<topic> responsable de este tema.
<aiml version="1.0">
<category>
<pattern>CONOCES A *</pattern>
<template> ¿Quién es <star index="1"/>?
</template>
</category>
<aiml version="1.0">
</category>
<pattern>_ CONOCES A *</pattern>
<template> ¿Quién es <star index="2"/>?
</template>
</category>
Etiquetas <topic></topic>.
UNIVERSIDAD CARLOS III DE MADRID. Anexos.
105
Si el chatbot se despista después del saludo con una enunciación que
desconozca, podrá ayudarse con las respuestas del bloque <topic>. Al
principio, añadimos en el saludo HOLA un fragmento que indique el
valor de la variable topic adecuado:
Ilustración 46 Uso de etiqueta Topic.
Y en un espacio libre escribimos el bloque <topic> que
corresponda al tema del saludo (lo más fácil es colocarlo justo
detrás de los modelos del saludo).
Como podemos observar, es una categoría normal con la sintaxis
ya descrita, que escribe una respuesta al azar a todas las preguntas
del usuario. La diferencia consiste en que está cerrada en el bloque
<topic>, para entrar en este bloque hay que cumplir la condición
de que el chatbot no podrá responder a la pregunta con ayuda de
modelos disponibles, y el valor de la variable topic se encajará con
SALUDO.
Aim
l
<aiml version="1.0">
<category>
<pattern>HOLA</pattern>
<template>
<think><set
name="topic">SALUDO</set></think>
<random>
<li>¡Buenos días!</li>
<li>¡Buenas!</li>
<li>¡Hola!</li>
</random>
</template>
</category>
To
pic
<topic name="SALUDO">
<category>
<pattern>*</pattern>
<template>
<random>
<li>¿Qué tal?</li>
<li>¿Cómo vas de salud?</li>
<li>Pues, ¿en qué puedo
ayudarte?</li>
</random>
</template>
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 106
8.4.5.8.4.5.8.4.5.8.4.5. Etiquetas <that></that>.Etiquetas <that></that>.Etiquetas <that></that>.Etiquetas <that></that>.
El marcador <that>, puesto dentro de la categoría, es un tipo de la
instrucción condicional que permite contestar según el modelo de
<template>, sólo en caso de que la respuesta anterior estuviera de
acuerdo con el modelo indicado en <that>, y la respuesta del
usuario estuviera con el modelo indicado en <pattern>. La
Ilustración 47 ilustra la norma del funcionamiento de este
mecanismo. Merece la pena observar que <that> verifica la última
respuesta del bot, o sea, palabras concretas, y no el modelo según
el cual se respondió.
Ilustración Ilustración Ilustración Ilustración 47474747 Diagrama de Flujo etiqueta That.Diagrama de Flujo etiqueta That.Diagrama de Flujo etiqueta That.Diagrama de Flujo etiqueta That.
Estrada de
usuario
Entrada =
<pattern>?
Buscar otra
respuesta
Salida segun
template
Respuesta bot
= <that>?
No
No
Etiquetas <that></that>.
UNIVERSIDAD CARLOS III DE MADRID. Anexos.
107
Supongamos que el chatbot pregunte por la ciudad en la que vives en
reacción a la pregunta del usuario por su ubicacion. Vamos a utilizar
dos formas de esta pregunta: ¿De dónde eres? y ¿Dónde estás?. Al
principio, vamos a construir los modelos adecuados:
El chatbot responde a las dos preguntas del mismo modo, así que
podemos verificar la respuesta. Agregamos el marcador <that> que
comprueba si la última respuesta estuvo conforme con el modelo * LO
CONOCES o * MEJOR CIUDAD (o sea, si es cualquier enunciación que
termine con las palabras lo conoces o mejor ciudad).
Ilustración Ilustración Ilustración Ilustración 48484848 Uso de etiqueta That.Uso de etiqueta That.Uso de etiqueta That.Uso de etiqueta That.
Aim
l
<category>
<pattern>DE DONDE ERES</pattern>
<template>
<random>
<li>Vivo en <bot name="location"/>, y tu</li>
<li>De <bot name="location"/>. Y tu</li>
<li>Soy de <bot name="location"/>. Y tu</li>
<li><bot name="location"/>, de donde eres
tu</li>
</random>
</template>
</category>
<category>
<pattern>DONDE ESTAS</pattern>
<template>
<random>
<li>Estoy en <bot name="location"/>, y tu</li>
<li>Vivo en <bot name="location"/>. Y tu</li>
</random>
</template>
</category>
Th
at
<category>
<pattern>*</pattern>
<that>* lo conoces</that>
<template>
<random>
<li>Es un bonito lugar</li>
<li>Es un lugar muy tranquilo</li>
</random>
</template>
</category>
<category>
<pattern>*</pattern>
<that>* mejor ciudad </that>
<template>
<random>
<li>asi me han dicho, es un bonito
lugar.</li>
<li>claro, es un lugar muy
tranquilo.</li>
</random>
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 108
Veamos los efectos que produce este fragmento. En cada
enunciación del usuario (en <pattern> indicamos sólo un comodín, se
puede escribir cualquier cosa); el bot verifica si su enunciación anterior
terminó con las palabras lo conoces o mejor ciudad: si es así, escribe el
comunicado del modo que ya hemos conocido.
Etiquetas <that></that>.
UNIVERSIDAD CARLOS III DE MADRID. Anexos.
109
BibliografíaBibliografíaBibliografíaBibliografía
BotGenes. (15 de julio de 2013). BotGenes Restless evolution... Obtenido de http://www.botgenes.com/botgenes/pr/BG200KPressRelease.pdf
BotGenes. (15 de julio de 2013). Soydiego. Obtenido de http://www.soydiego.com/SoyDiego/
BotGenes. (15 de julio de 2013). soymaria.com. Obtenido de http://www.soymaria.com/SoyMaria/index.asp
Businesswire. (2006). Creative Virtual Announces Award Winning Lingubot(TM). Businesswire.
Cole, D. (19 de marzo de 2004). Stanford Encyclopedia of Philosophy (Summer 2013 Edition). (Copyright © 2009 by David Cole) Recuperado el 2013 de junio de 1, de The Chinese Room Argument: http://plato.stanford.edu/entries/chinese-room/#3
DRAE. (s.f.). Real Academia Española. Recuperado el 28 de mayo de 2013, de Diccionario de la lengua española: http://lema.rae.es/drae/
Elokence. (08 de 07 de 2013). Elokence conçoit et exploite des solutions intelligentes de dialogue homme-machine. Obtenido de http://elokence.com/fr/content/7/akinator
Icogno. (3 de julio de 2013). About the Jabberwacky AI. Obtenido de http://person.jabberwacky.com/j2about
Martínez Ron, A., & Fernández, M. (23 de octubre de 2012). El programador que desafía el test de Turing. Madrid, Madrid, España.
Mazza, N. (octubre de 2011). Sustentum. Obtenido de Gestión Estratégica en TIC: http://www.sustentum.com/sustentum/pubs/JAASI2011%20_%20Inteligencia%20Artificial%20-%20La%20prueba%20de%20Folstein.pdf
PECK, T. (8 de septiembre de 2011). Has inventor made a computer that's as clever as a human? London, Grand London, UK.
Ruiz Tadeo, A. C. (Julio de 2009). Sistema Inteligente de Conversacion para la Orientacion Vocacional. Colíma, Mexico, Mexico: Universidad de Colima.
UNIVERSIDAD CARLOS III DE MADRID.
JUAN C. COBOS T. 110
Wilcox, B. (23 de octubre de 2013). El programador que desafía el test de Turing. (lainformacion.com, Entrevistador)
Wooldridge, M., & Jennings, N. (1995). Intelligent Agents --- Theories, . 890.
Bibliografía.