ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN INFORMÁTICA
AGENTE VIRTUAL INTELIGENTE DE AYUDA AL APRENDIZAJE
Autora: Celia Gómez Róspide
Directora: Cristina Puente Águeda
Madrid Junio 2012
CELIA GÓMEZ RÓSPIDE 2 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Autorizada la entrega del proyecto del alumno/a:
Celia Gómez Róspide
EL DIRECTOR DEL PROYECTO
Cristina Puente Águeda
Fdo: ………………………… Fecha: ……/……/……
Vº Bº del Coordinador de Proyectos
David Contreras Bárcena
Fdo: ………………………… Fecha: ……/……/……
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO EN INFORMÁTICA
AGENTE VIRTUAL INTELIGENTE DE AYUDA AL APRENDIZAJE
Autora: Celia Gómez Róspide
Directora: Cristina Puente Águeda
Madrid Junio 2012
CELIA GÓMEZ RÓSPIDE 4 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
AGRADECIMIENTOS
“El que da, no debe volver a acordarse; pero el que recibe nunca debe olvidar”
En primer lugar, quería dar las gracias por todo a mi familia; por hacerme y dejarme
ser, por brindarme siempre su cariño y apoyo, por aconsejarme y darme la libertad de
elegir. Su orgullo es, sin duda, mi mayor motivación.
También me gustaría agradecer a mis compañeros y profesores estos inolvidables
cinco años. Han pasado ya, y apenas parece que fue ayer cuando comenzamos juntos esta
gran aventura. Espero, verdaderamente, que se marque un punto y seguido entre nosotros.
Y, por último, quería agradecerle a Cristina su dedicación, carisma e ilusión
constantes. Personas así engrandecen cualquier circunstancia; gracias a ella este proyecto
es lo que es.
CELIA GÓMEZ RÓSPIDE 5 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Autora: Celia Gómez Róspide
Directora: Cristina Puente Águeda
RESUMEN DEL PROYECTO
El proyecto planteado consiste en el desarrollo de un agente virtual o chatbot cuyo
dominio de conocimiento se corresponde con el temario de una asignatura académica,
Procesadores del Lenguaje, impartida en la ETSI ICAI en 4º curso de Ingeniería
Informática, con el objetivo de lograr su interacción con el alumno y suponer, así, un
refuerzo en su proceso de aprendizaje.
Palabras clave: Agente Virtual Educativo Inteligente, Chatbot, e-Learning, Respuesta
Flexible.
1. Introducción
Desde siempre, y más en los últimos tiempos, vivimos en un mundo en el cual
debemos esforzarnos cada día por lograr una sociedad más capacitada y preparada. Para
ello, la educación se convierte en un aspecto de vital importancia, debiendo entenderse
como un bien compartido.
Respecto a este punto, cabe recuperar las palabras de Velásquez Córdoba [1] cuando,
citando a Víctor Guédez [2] subrayaba un modelo de educación fundamentado en la
motivación a ser más, apelando para ello a la colaboración de los demás. Este prototipo se
apoya en una idea de educación que se aleja del sistema individual de aprendizaje,
basándose en una trama de intercambio de conocimientos entre personas en desarrollo
constante.
CELIA GÓMEZ RÓSPIDE 6 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
En este orden de magnitud, se materializan numerosas posibilidades de potenciación
de la educación a través de la participación activa, entre las que se encuentra la ofrecida
por las nuevas tendencias tecnológicas y, en concreto, la que puede ser brindada por un
agente virtual o chatbot.
Un chatbot puede definirse como un programa diseñado para mantener una
conversación con una persona. Recientemente, este tipo de aplicaciones han visto
aumentada su capacidad tras haber sido dotadas de inteligencia artificial, la cual aproxima
su comportamiento al generalmente ejercido por el ser humano. Dicha inteligencia
distingue varios tipos de procesos válidos para la obtención de resultados racionales, entre
los que destacan dos de ellos por su relación con la base sobre la que se cimentan los
chatbots: la ejecución de una respuesta predeterminada para cada entrada, y la búsqueda
del estado requerido dentro del conjunto de estados producidos en función de la entrada
recibida.
En la actualidad, son diversos los usos de que se provee a estos agentes, siendo los
siguientes, quizá, los más representativos: ventas, consulta sobre productos, explicación de
manuales de instrucciones, o entretenimiento.
Con todo, su empleo en el ámbito de la educación no se encuentra aún demasiado
explotado. En la última década han surgido nuevos tipos de sistemas, basados en robots
virtuales, que han demostrado ser de gran apoyo en la capacitación de alumnos y en el
trabajo de los profesores. Sin embargo, estos agentes no están orientados a la resolución de
dudas académicas sobre una asignatura concreta.
2. Modelo de funcionamiento
Este proyecto se basa en el desarrollo de un sistema inteligente, destinado a la
satisfacción de dicha necesidad, por medio del mantenimiento de una conversación con un
humano, siendo capaz de cumplir dos objetivos fundamentales:
Comprender las preguntas formuladas por el alumno, distinguiendo entre las
que atañen a la materia de la asignatura y las que presentan un carácter general.
Elaborar una respuesta en consonancia con lo cuestionado, pudiendo resolver
las dudas del alumno sobre el contenido de la disciplina.
CELIA GÓMEZ RÓSPIDE 7 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Para el cumplimiento del primero de ellos es necesario tener en cuenta la siguiente
directriz, revelada por el estudio del estado del arte: el mejor método de comprensión
empleado por un chatbot es el análisis de los patrones de diálogo empleados por su
interlocutor humano. Es decir, el sistema analizará de forma individual la entrada
introducida por el usuario, detectando en ella patrones considerados clave para la posterior
elaboración de la respuesta. Este procedimiento, otorgará una total flexibilidad a la
estructura que debe presentar la pregunta del alumno.
Una vez determinados los patrones empleados por el usuario, se comprobará la
correspondencia de los mismos con una ontología creada a base de términos de la
asignatura, por medio de la cual se realizará la composición de lugar de las claves
introducidas, conformando la correspondiente respuesta a la pregunta formulada.
La consecución de ambos objetivos conlleva la facilitación del proceso de
aprendizaje del alumno, pudiéndose éste realizar a través de un mecanismo flexible,
dinámico e interactivo, el cual, se espera, atraerá al estudiante y fomentará su implicación
en la materia.
3. Trabajos futuros
Además de los puntos citados anteriormente, este desarrollo constituirá una sólida
base para la adaptación del prototipo a diversos entornos. Destaca, por encima de todos, la
aplicación que puede tener en el mundo empresarial, tanto a nivel interno como externo.
Las empresas ofrecen a sus nuevos empleados un plan de formación inicial
denominado “kit de bienvenida”. Al finalizar este periodo de formación, al nuevo
empleado se le asignará un consultor que le sirva de soporte y guía para su integración y
futura actuación para con el cliente. Por tanto, un chatbot ajustado a tales necesidades
optimizaría la calidad de la formación inicial proporcionada a sus empleados, y, además,
permitiría a las empresas ahorrar en costes, dado que podría sustituir la figura del consultor
de soporte a tiempo total.
Asimismo, desde el punto de vista externo, al finalizar un proyecto para un cliente,
un agente virtual podría servir, también, como herramienta de soporte al propio cliente en
la etapa de post-implantación, solventándole, a su vez, todas las dudas que tenga acerca del
CELIA GÓMEZ RÓSPIDE 8 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
producto desarrollado y su empleo, suponiendo un nuevo ahorro en el proceso de
transferencia de conocimiento.
4. Reconocimientos
Cabe destacar los logros y reconocimientos conseguidos por este proyecto:
Artículo aceptado e invitación a participar en la 14th International Conference
on Artificial Intelligence (ICAI'12: July 16-19, 2012, Las Vegas, Nevada,
USA), organizada por WORLDCOMP (World Congress in Computer
Science, Computer Engineering and Applied Computing
Artículo aceptado para participar en la Segunda Jornada Internacional
“Matemáticas Everywhere”, organizada por el Grupo de Investigación de la
Universidad Politécnica de Madrid: “Matemática Aplicada a la Ingeniería
Civil” (MAIC) y el Grupo de Innovación Educativa de la Universidad
Politécnica de Madrid: “Pensamiento Matemático”. Las actas de este
congreso se publicarán en la revista “Pensamiento Matemático”, indexada en
el catálogo de LATINDEX.
Artículo aceptado para participar en el CONACI 2012, (Congreso Nacional
de Computación e Informática), organizado por la Universidad Autónoma del
Carmen (Ciudad del Carmen, México).
5. Acceso a la aplicación
Es posible acceder a la aplicación desde
http://www.mapachetech.com/chatbot/vista/index.php, sitio en cuyo servidor ha sido albergada
una demo con menor funcionalidad (Usuario y Contraseña: comillas).
6. Referencias
[1] Velásques Córdoba, L.F. (2007), Compromiso y trascendencia de la educación.
Revista electrónica de Psicología Social. FUNLAM.
[2] Guédez, V. (2006). Educación y Proyecto Histórico Pedagógico.
CELIA GÓMEZ RÓSPIDE 9 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
VIRTUAL AGENT ORIENTED TO E-
LEARNING PROCESSES Author: Celia Gómez Róspide
Supervisor: Cristina Puente Águeda
ABSTRACT
This project is based on the development of a virtual agent or chatbot, whose
knowledge domain belongs to the contents of an university subject listed under ETSI
ICAI´s academic plans, Language Processors. The goal of the project is to achieve the
interaction between the application and the student, and, therefore, to help him in his
learning process.
Keywords: Intelligent Virtual Agent, Chatbot, e-Learning, Flexible answer.
1. Introduction
Since a long time ago, we live in world in which we must make an effort everyday to
achieve a more capable and prepared society. In order to do that, education becomes a vital
point, being understood as a shared resource.
Velasquez Córdoba [1] remarked the words of Víctor Guedez [2] when he claimed
an educational model based in the motivation ‘to achieve more’ appealing to the
cooperation of the others.
Based on this, there are many possibilities of improving the education through an
active participation, like those offered by new technological trends, and in particular, the
ones offered by virtual agents or chatbots.
A chatbot is defined as a program able to have a conversation with a person.
Recently these types of applications have increased their potential by adding Artificial
Intelligence to their processes, which approaches their behavior to a human being. This
CELIA GÓMEZ RÓSPIDE 10 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
intelligence distinguishes several types of valid processes to obtain rational results. Among
them, two are highlighted by their relationship with the basis underneath chatbots : the
obtaining of a different output according to the input received, and the search of the
required state among the set of all the possible states in base to the input received.
Nowadays, these applications have different purposes, being the most
representatives: selling’s, queries on products, user’s manuals, entertaining, etc.
In educational fields, their use is not very extended. In the last decade new
educational systems have emerged, based on virtual robots, which have demonstrated to be
very useful in the student’s learning process. Despite, these agents are not oriented in
solving concrete doubts about a given academic subject.
2. Operation model
To help on that purpose, this work designs and develops an intelligent system
oriented to solve academic doubts through a conversation with a person, being able to
fulfill two objectives:
Understand the questions proposed by the student, being able to distinguish between
those concerning the subject and those about general issues.
Compose an appropriate answer according to the received question, in order to solve
doubts about the subject’s contents.
To achieve the first objective it is needed to consider this statement (from the state
of the art chapter): the best understanding method applied in a conversational agent is the
analysis of dialog patterns used in a human’s conversation. It means that the bot will
analyze individually the user’s input, detecting those patterns considered as important
when elaborating the answer. This procedure will give total flexibility to the structure
submitted in the student’s question.
Once detected the user’s patterns, we will match them against an ontology designed
with the key terms of the subject, to compose an appropriate answer.
CELIA GÓMEZ RÓSPIDE 11 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
The achievement of both objectives will contribute to improve the student’s learning
process, being able to make it through a flexible, dynamic and interactive mechanism
which will hopefully attract and encourage the student involvement in the studied subject.
3. Future work
Moreover, this development can provide a solid basis for adaptation to different
environments, like business sectors in both internal and external areas.
Usually, most of enterprises have a ‘welcoming kit’ for new employees. Once
finished this training period, the new employee is assigned to a consultant to advise him
and guide him in his behavior with the client. So that, a chatbot optimized for this purpose
could increase the training quality. for the employees and would allow the enterprise to
reduce costs by removing this support consultant full time.
On the other hand, from an external point of view, a virtual agent could serve as
client support by solving the client doubts when a project is finished, saving costs in the
knowledge transfer process.
4. Achievements
This work has received the following achievements:
Accepted paper in the 14th International Conference on Artificial Intelligence
(ICAI'12: July 16-19, 2012, Las Vegas, Nevada, USA), organized by
WORLDCOMP (World Congress in Computer Science, Computer
Engineering and Applied Computing).
Accepted paper in the Segunda Jornada Internacional “Matemáticas
Everywhere”, organized by the Universidad Politécnica de Madrid research
group: “Matemática Aplicada a la Ingeniería Civil” (MAIC) and the “Grupo
de Innovación Educativa de la Universidad Politécnica de Madrid:
“Pensamiento Matemático” research group. Proceedings of this conference
will be published in the issue “Pensamiento Matemático”, indexed in
LATINDEX catalog.
CELIA GÓMEZ RÓSPIDE 12 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Accepted paper in CONACI 2012 (Congreso Nacional de Computación e
Informática), organized by the Universidad Autónoma del Carmen (Ciudad
del Carmen, México).
5. Access to the application
It is possible to access the application from
http://www.mapachetech.com/chatbot/vista/index.php, website in which there is a demo
with reduced functionality (User and Password: comillas).
6. References
[1] Velásques Córdoba, L.F. (2007), Compromiso y trascendencia de la educación.
Revista electrónica de Psicología Social. FUNLAM.
[2] Guédez, V. (2006). Educación y Proyecto Histórico Pedagógico.
CELIA GÓMEZ RÓSPIDE 13 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
ÍNDICE DE ILUSTRACIONES
Ilustración 1 - Modelo de ciclo en espiral ................................................................................ 25
Ilustración 2 - Ejemplo de aplicación de WordNet ................................................................... 36
Ilustración 3 - Esquema de funcionamiento del sistema SHRDLU .......................................... 39
Ilustración 4 - Ejemplo de etiquetado gramatical ..................................................................... 42
Ilustración 5 - A.L.I.C.E. .......................................................................................................... 52
Ilustración 6 - Elbot .................................................................................................................. 53
Ilustración 7 - Akinator ............................................................................................................. 55
Ilustración 8 - Arquitectura externa del sistema ....................................................................... 64
Ilustración 9 - Patrón MVC. Modelo ........................................................................................ 67
Ilustración 10 - Patrón MVC. Vista .......................................................................................... 68
Ilustración 11 - Patrón MVC. Controlador ............................................................................... 69
Ilustración 12 - Diagrama de secuencia .................................................................................... 69
Ilustración 13 - Logotipo Access .............................................................................................. 71
Ilustración 14 - Logotipo Oracle ............................................................................................... 72
Ilustración 15 - Logotipo MySQL ............................................................................................ 73
Ilustración 16 - Esquema de funcionamiento de ASP .............................................................. 77
Ilustración 17 - Logotipo ASP.net ............................................................................................ 78
Ilustración 18 - JSP de Java ...................................................................................................... 79
Ilustración 19 - Logotipo PHP .................................................................................................. 82
Ilustración 20 - Logotipo de GNU ............................................................................................ 86
Ilustración 21 – Arquitectura específica ................................................................................... 87
Ilustración 22 - Modelo Relacional de la base de datos ........................................................... 91
Ilustración 23- Modelo relacional Usuarios-Exámenes ............................................................ 96
Ilustración 24 - Ventana de acceso al chatbot........................................................................... 98
Ilustración 25 - Conjunto de imágenes que puede mostrar el bot ............................................. 99
Ilustración 26 - Conversación con el chatbot.......................................................................... 100
Ilustración 27 - Arquitectura específica .................................................................................. 104
Ilustración 28 - Propuesta de revisión de contenidos ............................................................. 105
Ilustración 29 - Felicitación por los resultados académicos ................................................... 106
Ilustración 30 - Fragmento de código donde se eliminan los caracteres ASCII ..................... 107
Ilustración 31 – Submódulo de insultos .................................................................................. 108
Ilustración 32 - Secuencia de insultos .................................................................................... 109
Ilustración 33 - Submódulo de saludo y bienvenida ............................................................... 110
Ilustración 34 - Pregunta por el aula en la que tendrá lugar el examen .................................. 111
Ilustración 35 - Fragmento de código donde se concatena el carácter '#' y se envía la cadena al
Algoritmo de Respuesta .......................................................................................................... 112
Ilustración 36 - Esquema de ficheros en Flex ......................................................................... 113
Ilustración 37 - Estructura interna de un fichero Flex ............................................................ 114
Ilustración 38 - Ejemplo de sección de definiciones .............................................................. 114
Ilustración 39 - Ejemplo de definición de estados en Flex ..................................................... 115
Ilustración 40 - Formato de una regla en Flex ........................................................................ 116
Ilustración 41 - Zona de Usuario en Flex ............................................................................... 116
Ilustración 42 - Definición de los patrones de reconocimiento .............................................. 118
Ilustración 43 - Divagación por parte del usuario................................................................... 119
CELIA GÓMEZ RÓSPIDE 14 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Ilustración 44 - Muestra de uso del histórico .......................................................................... 121
Ilustración 45 - Apertura de contador.txt................................................................................ 122
Ilustración 46 - Apertura de fclave.txt .................................................................................... 123
Ilustración 47 - Apertura de fcomprobar.txt ........................................................................... 124
Ilustración 48 - Apertura de fimagen.txt ................................................................................. 124
Ilustración 49 - Apertura de frespuesta.txt.............................................................................. 124
Ilustración 50 - Autómata del estado INITIAL ...................................................................... 126
Ilustración 51 - Autómata del estado PREGUNTA ................................................................ 127
Ilustración 52 - Autómata del estado OTRO ......................................................................... 128
Ilustración 53 - Autómata del estado CLAVE ........................................................................ 129
Ilustración 54 - Autómata del estado INTERMEDIO ............................................................ 130
Ilustración 55 - Respuesta textual + Pop up ........................................................................... 131
Ilustración 56 - Cálculo del factor de máxima coincidencia .................................................. 132
Ilustración 57 - Orientación de la pregunta del usuario .......................................................... 133
Ilustración 58 - Función despedida ......................................................................................... 136
Ilustración 59 - Función agradecimiento ................................................................................ 137
Ilustración 60 - Función especificar ....................................................................................... 138
Ilustración 61 - Funcíon formulaPregunta ............................................................................. 139
Ilustración 62 - Organigrama del equipo de trabajo ............................................................... 144
Ilustración 63 - Estructura de División del Trabajo (EDT) .................................................... 148
Ilustración 64 - Planificación del trabajo ................................................................................ 151
Ilustración 65 - Distribución del gasto en recursos humanos ................................................. 169
Ilustración 66 – Introducción de credenciales ........................................................................ 173
Ilustración 67 - Conjunto de imágenes que puede mostrar el chatbot ................................... 175
Ilustración 68 - Ejemplos de posibles conversaciones ............................................................ 178
CELIA GÓMEZ RÓSPIDE 15 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
ÍNDICE DE TABLAS
Tabla 1 - Resumen características evaluadas y tecnologías que las soportan ........................... 83
Tabla 2 - Principales riesgos del Proyecto ................................................................................ 88
Tabla 3 - Estructura de Saludos ................................................................................................ 92
Tabla 4 - Estructura de Estados ................................................................................................ 92
Tabla 5 - Estructura de Insultos ................................................................................................ 93
Tabla 6 - Estructura de Información ......................................................................................... 93
Tabla 7 - Estructura de Usuarios .............................................................................................. 95
Tabla 8 - Estructura de Exámenes ............................................................................................ 95
Tabla 9 - Estructura de Diapositivas ........................................................................................ 96
Tabla 10 - Cadenas probadas .................................................................................................. 141
Tabla 11 - Asignación de horas/hombre ................................................................................. 150
Tabla 12- Costes recursos humanos ....................................................................................... 168
CELIA GÓMEZ RÓSPIDE 16 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
ÍNDICE
INTRODUCCIÓN ________________________________________________ 20
1.1 MOTIVACIÓN ________________________________________________________________ 20
1.2 JUSTIFICACIÓN ______________________________________________________________ 21
1.3 OBJETIVOS __________________________________________________________________ 22
1.3.1 OBJETIVOS GENERALES _________________________________________________ 23
1.3.2 OBJETIVOS ESPECÍFICOS _________________________________________________ 23
1.4 METODOLOGÍA ___________________________________________________________ 25
1.5 RESTRICCIONES ___________________________________________________________ 27
ESTADO DEL ARTE ______________________________________________ 30
2.1 PROCESAMIENTO DEL LENGUAJE NATURAL ______________________________ 30
2.1.1. LINGÜÍSTICA COMPUTACIONAL _________________________________________ 32
2.1.2. ANTECEDENTES DE LA LINGÜÍSTICA COMPUTACIONAL ___________________ 37
2.1.3. TÉCNICAS EMPLEADAS EN EL PROCESAMIENTO DEL LENGUAJE NATURAL _ 40
2.2 INTELIGENCIA ARTIFICIAL EN EL PROCESAMIENTO DEL LENGUAJE
NATURAL ______________________________________________________________________ 44
2.3 ROBOT VIRTUAL __________________________________________________________ 45
2.4 AGENTE INTELIGENTE ____________________________________________________ 46
2.4.1 SISTEMAS TUTORES INTELIGENTES (STI) ___________________________________ 48
2.4.2 AGENTE CONVERSACIONAL O CHATBOT ___________________________________ 49
2.4.3 ANTECEDENTES DE LA PROPUESTA ________________________________________ 50
2.4.4 LINGUBOT _______________________________________________________________ 55
2.4.5 PANDORABOTS ___________________________________________________________ 56
ESPECIFICACIÓN DE REQUISITOS ___________________________________ 58
3.1. REQUISITOS FUNCIONALES _______________________________________________ 58
3.2. REQUISITOS NO FUNCIONALES ___________________________________________ 60
ARQUITECTURA ________________________________________________ 62
4.1 ARQUITECTURA EXTERNA ________________________________________________ 63
CELIA GÓMEZ RÓSPIDE 17 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
4.2 ARQUITECTURA INTERNA ________________________________________________ 66
4.2.1 MODELO ________________________________________________________________ 66
4.2.2 VISTA __________________________________________________________________ 67
4.2.3 CONTROLADOR _________________________________________________________ 68
4.3 EVALUACIÓN DE ALTERNATIVAS _________________________________________ 70
4.3.1 SISTEMA GESTOR DE BASE DE DATOS (SGBD) ______________________________ 70
4.3.2 TRATAMIENTO DE LOS EVENTOS PRODUCIDOS EN EL INTERFAZ ____________ 84
4.4 ARQUITECTURA ESPECÍFICA ______________________________________________ 86
4.5 ANÁLISIS DE RIESGOS ____________________________________________________ 87
DISEÑO ______________________________________________________ 90
5.1 DISEÑO DE LA BASE DE DATOS ________________________________________ 90
5.1.1 SECCIÓN DE PATRONES CLAVE ____________________________________________ 91
5.1.2 SECCIÓN DE INFORMACIÓN DEL ALUMNO _________________________________ 94
5.1.3 SECCIÓN DE CONTENIDOS DE LA ASIGNATURA _____________________________ 96
5.2 MODELO DE INTERFAZ _________________________________________________ 97
IMPLEMENTACIÓN _____________________________________________ 102
6.1 CARACTERÍSTICAS DEL BOT __________________________________________ 102
6.2 MÓDULOS _______________________________________________________________ 104
6.2.1 INTERFAZ _______________________________________________________________ 104
6.2.2 VALIDACIÓN DE ENTRADA _______________________________________________ 105
6.2.3 ANÁLISIS DE LA PREGUNTA ______________________________________________ 107
6.2.4 ALGORITMO DE RESPUESTA _____________________________________________ 113
6.3 PRUEBAS Y VALIDACIÓN ______________________________________________ 140
6.3.1 PRUEBAS UNITARIAS ____________________________________________________ 140
6.3.2 PRUEBAS CONJUNTAS ___________________________________________________ 141
ORGANIZACIÓN _______________________________________________ 143
7.1 ORGANIGRAMA DEL EQUIPO DE TRABAJO ___________________________ 143
7.1.1 COORDINADOR _________________________________________________________ 144
7.1.2 DIRECTOR ______________________________________________________________ 145
7.1.3 JEFE DE PROYECTO ______________________________________________________ 145
7.1.4 ANALISTA ______________________________________________________________ 146
7.1.5 DISEÑADOR_____________________________________________________________ 146
7.1.6 PROGRAMADOR _________________________________________________________ 147
7.2 ESTRUCTURA DE DIVISIÓN DEL TRABAJO (EDT) _____________________ 147
7.3 DISTRIBUCIÓN DE TRABAJO ___________________________________________ 149
7.4 PLANIFICACIÓN DEL TRABAJO ________________________________________ 151
7.5 CONTROL DEL PROYECTO _____________________________________________ 152
CONCLUSIONES Y TRABAJOS FUTUROS _______________________________ 154
8.1 CONCLUSIONES ________________________________________________________ 154
8.2 TRABAJOS FUTUROS ___________________________________________________ 156
8.2.1 AMPLIACIÓN DEL DESARROLLO __________________________________________ 156
8.2.2 ADAPTACIÓN A NUEVOS REQUERIMIENTOS Y ENTORNOS __________________ 157
BIBLIOGRAFÍA ________________________________________________ 160
ANEXO A: VOCABULARIO TÉCNICO _________________________________________________ 163
ANEXO B: ESTIMACIÓN ECONÓMICA ________________________________________________ 167
ANEXO C: MANUAL DE USUARIO ___________________________________________________ 171
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 19 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
CAPÍTULO 1
INTRODUCCIÓN
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 20 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
INTRODUCCIÓN
El proyecto planteado consiste en el desarrollo de un agente virtual o chatbot cuyo
dominio de conocimiento se corresponde con el temario de una asignatura académica,
Procesadores del Lenguaje, impartida en la ETSI ICAI en 4º curso de Ingeniería
Informática.
A través de él se pretende facilitar el aprendizaje de la materia por parte del alumno,
basándose en la interacción usuario-máquina. Dicha comunicación, que podrá llevarse a
cabo con total flexibilidad, proporcionará de manera orientativa la información que el
alumno desea obtener. Asimismo, se tendrá constancia de la evolución del mismo a lo
largo del curso, de manera que la información proporcionada podrá verse ampliada, de
forma automática, con aquellos contenidos en los que el alumno necesite hacer especial
incisión.
Gracias a la solidez de su arquitectura, el sistema permite la ejecución simultánea de
sus funcionalidades por parte de varios usuarios, los cuales dispondrán de una información
actualizada en todo momento. Por tanto, el agente creado puede definirse como un sistema
interactivo, capaz de proveer a su interlocutor de una respuesta en tiempo real.
1.1 MOTIVACIÓN
Las principales motivaciones que ha desencadenado el desarrollo de este proyecto se
describen a continuación.
Por un lado, la trascendencia de su alcance. Es evidente que el resultado obtenido
proporcionará una ayuda inestimable a los alumnos que cursen la asignatura sobre la que
versa el proyecto, ya que el agente virtual incidirá de forma constante en su proceso de
aprendizaje, lo que supondrá un incentivo en la consecución de los objetivos escolares del
alumno.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 21 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Por otro lado, la novedad que supone el lanzamiento de este producto al mercado.
Hoy en día existen aplicaciones de chatbot para otros entornos, sin embargo este campo no
se encuentra tan extendido. Lo cual, innegablemente, proporciona una posición
privilegiada dentro del orbe de la oferta de bienes y servicios.
Asimismo, la gran variedad de tecnologías empleadas supone una motivación
adicional, ya que este hecho me permite poner en práctica los conocimientos adquiridos a
lo largo de la carrera, comprobar su grado de asimilación, y ampliar dichos conocimientos
con las nuevas tecnologías utilizadas.
1.2 JUSTIFICACIÓN
La justificación de este proyecto está íntegramente ligada con los motivos que llevan
a su desarrollo.
El agente virtual supone un refuerzo evidente en el proceso de aprendizaje del
alumno y, además, entra en un mercado que no se encuentra explotado, situándose en él
como un producto bastante novedoso.
En la última década han surgido nuevos tipos de sistemas, basados en robots
virtuales, que han demostrado ser de gran apoyo en la capacitación de alumnos y en el
trabajo de los profesores [Villarreal, 2004]. Sin embargo, sus características particulares
distan de las proporcionadas por el sistema desarrollado en este proyecto, siendo la más
evidente la incorporación de un chat para el establecimiento de la comunicación con el
alumno.
Hoy en día está muy extendido el uso de plataformas educativas, fundamentalmente
en universidades y centros de enseñanza de grado superior. Gracias a ellas, los alumnos
tienen acceso a la información de carácter general proporcionada por la institución, y a
aquélla relacionada directamente con su progreso docente.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 22 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
La inclusión de un elemento que agiliza el procedimiento de enseñanza,
convirtiéndolo en un proceso dinámico e interactivo, sin lugar a dudas, atraerá al alumno y
fomentará su implicación en la materia.
Cabe mencionar que el idioma nativo de la base de conocimientos del agente virtual
es el inglés. Como se podrá comprobar más adelante, este hecho ayuda notablemente a
agilizar la programación y el análisis de las cadenas, puesto que la estructura de
formulación de preguntas en esta lengua es mucho más parametrizable y estricta que la del
castellano.
De hecho, el castellano es un idioma cuya gramática presenta una dificultad latente,
destacando las formas verbales, tiempos y modos. La estructura gramatical que compone
las frases admite una amplia variedad de formulación. Además, el vocabulario permite una
gran cantidad de giros, sinónimos y variantes. Por esta razón, se ha escogido el inglés
como lengua materna, debiendo, consecuentemente, establecerse la comunicación con el
agente en esta lengua.
Además, una nueva ventaja de su empleo es el aumento de la visión internacional del
proyecto, así como su integración con numerosas herramientas semánticas, la mayoría de
ellas construidas en base al inglés. Con ello, la mejora y posible adaptación de este
desarrollo a otros entornos, cobra una probabilidad de materialización mayor.
La finalidad última de todo proyecto (viable) ha de ser su funcionalidad y novedad,
por tanto, éste cumple con ambos requisitos.
1.3 OBJETIVOS
En este apartado se exponen los objetivos principales del proyecto, divididos en dos
grupos. En primer lugar se van a listar los objetivos de índole general que se pretenden
conseguir, para, a continuación indicar los más específicos y técnicos.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 23 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
1.3.1 OBJETIVOS GENERALES
El principal objetivo que pretende alcanzar el proyecto se basa en la
elaboración satisfactoria de un chatbot que, a través de la interactuación con el
usuario, sea capaz de proporcionarle una ayuda en el estudio de la asignatura sobre
la que esté basado el desarrollo. El bot tratará de atender sus peticiones de la
manera más aproximada posible, realizando un análisis exhaustivo de las distintas
unidades lingüísticas empleadas por el usuario en la elaboración de su pregunta.
Para responder a las citadas necesidades, ha de realizarse un estudio de las
tecnologías que permitan adaptarse a ellas, por lo que se tratará de emplear las más
actuales y adecuadas de las existentes en el mercado.
Si bien el proyecto estará plenamente orientado a la asignatura sobre la que se
fundamenta, conformará una base consolidada para una fácil adaptación a nuevos
requerimientos. Todo ello, unido a su novedad y escasa competencia, se espera que
propicie que este prototipo parta con la ventaja de poder ser trasladado a otros
entornos para su aplicación.
1.3.2 OBJETIVOS ESPECÍFICOS
Los objetivos específicos que pretende alcanzar este sistema se han
subdividido, a su vez, en tres secciones:
1.3.2.1 DE CARA A LA APLICACIÓN
La aplicación pretende comprender lo que el usuario expresa y
demanda. Este objetivo es de imprescindible cumplimiento, dado que
es la base sobre la que se cimenta el desarrollo.
Una vez que haya comprendido lo que se le está diciendo, debe
elaborar una respuesta con sentido, y que realmente responda a lo
solicitado.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 24 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Tener conocimiento inequívoco acerca de la página o páginas de los
apuntes que puedan estar relacionadas con el contenido por el que ha
preguntado el usuario.
Tener constancia de la evolución del alumno en el curso, y llevar a
cabo las acciones necesarias en función de ella.
Ofrecer un interfaz atractivo para el usuario.
1.3.2.2 DE CARA AL USUARIO
Resolver las dudas que se le planteen acerca de los contenidos y el
programa de la asignatura.
Proponer ejercicios que se relacionen con lo preguntado para ayudarle
a afianzar conceptos.
Reforzar su proceso de aprendizaje.
1.3.2.3 DE CARA AL DESARROLLO
Emplear las tecnologías que mejor se adapten a las necesidades del
proyecto.
Garantizar la integración del sistema en plataformas e-Learning [ver
Anexo A Vocabulario Técnico].
Garantizar la integración con el máximo número de plataformas y
navegadores.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 25 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
1.4 METODOLOGÍA
El proyecto se ha desarrollado en base a un Modelo de Ciclo de Vida en Espiral. Se
han ejecutado una serie de ciclos con las mismas fases, aumentando la funcionalidad del
desarrollo y tratando los aspectos susceptibles de mejora en cada uno de ellos, dando lugar,
por tanto, a un producto ampliado con respecto al obtenido en el ciclo anterior.
Gracias a este modelo, se permite llevar a cabo un análisis de riesgos con el que se
evalúa de manera más completa el proceso, y se va evolucionando el sistema de forma
consistente.
Las etapas que conforman un ciclo se corresponden con las fases de especificación
de requisitos, evaluación de alternativas y análisis de riesgos, planificación del desarrollo,
implementación y, por último, pruebas y validación.
Un modelo gráfico de dichas etapas se muestra a continuación:
Ilustración 1 - Modelo de ciclo en espiral
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 26 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Dentro de estas fases se desarrollan una serie de actividades:
- Especificación de requisitos
Recopilar información del tema a tratar.
Investigar los antecedentes de la propuesta.
Determinar los requisitos a cubrir o mejorar.
Analizar las posibles restricciones temporales y de alcance, teniendo en
cuenta que, frecuentemente, incrementar el alcance aumenta el tiempo.
- Arquitectura: Evaluación de alternativas y Análisis de Riesgos
Validación de los requisitos definidos.
Elección de la arquitectura interna y externa más adecuada para el sistema.
Evaluar las distintas alternativas de desarrollo que cubran los requisitos
especificados.
Identificar posibles riesgos que puedan poner en peligro el desarrollo del
proyecto, incluyendo su descripción, la estrategia escogida para su
tratamiento, así como el plan para llevarla a cabo.
- Organización
Describir las labores a desempeñar por cada uno de los puestos de trabajo
del equipo de trabajo interviniente en el proyecto.
Declarar los paquetes de trabajo en los que quedan encuadradas todas las
tareas que deben acometerse.
Definir el número de horas invertidas en el desarrollo y la planificación
temporal de cada actividad.
Establecer las tareas de control del progreso del proyecto.
- Diseño
Analizar las características particulares de la arquitectura escogida.
Definir el diseño de la base de datos.
Presentar el diseño del interfaz gráfico con el que interactuará el usuario.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 27 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
- Implementación
Verificación del diseño definido.
Perfilar el diálogo, en base a la información que se recopiló en la primera
fase. Establecer las preguntas y expresiones que el usuario puede emplear en
la conversación con el agente, así como las respuestas proporcionadas por el
mismo.
Realizar una batería de pruebas que validen el funcionamiento del sistema.
1.5 RESTRICCIONES
Actualmente, los principales usos que se da a los chatbots están relacionados con la
exploración de datos en la red, la atención de clientes en sitios web comerciales (compras y
comercio electrónico), las enciclopedias interactivas, la administración de canales de IRC1
actuando como moderadores (con capacidad, incluso, para expulsar y banear usuarios), o la
exploración de correo electrónico.
El campo de la educación, desde el enfoque de la facilitación del aprendizaje por
medio de un agente virtual que interactúe con el alumno, no se encuentra aún explotado.
Esto, a la vez que una gran ventaja, supone una limitación, entre otras circunstancias, por
la falta de material bibliográfico que documente de manera completa y concisa el
desarrollo de este tipo de proyectos.
Asimismo, crear un chatbot que pueda participar en una conversación de manera
totalmente flexible es altamente complicado. De hecho, los más avanzados no tienen un
‘grado de humanidad’ del 100%; al ser presentados en concursos, la mayoría de ellos son
reconocidos como bots y no como humanos.
Hoy en día, los Robots Virtuales no han llegado a ser desarrollados en su totalidad;
no existe el “agente perfecto”. Los creados hasta el momento no cuentan aún con la
aceptación total por parte de los expertos. Sin embargo, varias empresas de elevado
1 Se le llama IRC (Internet Relay Chat) a una red de comunicación en tiempo real, similar al Messenger, en
la que se puede hablar con un grupo de usuarios al mismo tiempo.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 28 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
prestigio, como IBM, se encuentran trabajando sobre la concepción de los mismos, y
esperan evolucionarlos hasta lograr una mejora considerable de sus prestaciones.
La plataforma de e-Learning en la que se integre el sistema debe ofrecer
compatibilidades con la instalación de este tipo de aplicaciones.
En este Proyecto NO se utiliza AIML para interpretar el lenguaje por los siguientes
motivos:
No existe una plataforma estandarizada que permita el funcionamiento del
código AIML (Lenguaje de Marcas de la Inteligencia Artificial, cuya
descripción puede consultarse en el Anexo Vocabulario Técnico). Para
utilizarlo, es imprescindible el empleo de HTML, Program D ó E, y acceder al
sitio web pandorabots [2.1.3.1 Pandorabots].
AIML es un lenguaje muy rígido. Realiza matcheos exactos, es decir, el
usuario debe ingresar exactamente la frase que el bot tiene almacenada en su
base de conocimientos, de manera que para comprender al usuario el agente
debería tener indicadas todas formas y expresiones posibles que el usuario
podría utilizar.
AIML sólo permite el uso de wildcars o comodines (*) que acepten cualquier
cadena intermedia entre las que verdaderamente reconoce en una sección de la
frase de entrada.
AIML no soporta la aceptación de variantes adicionales de entrada, como
pueden ser:
- Palabras de diez letras.
- Sólo dígitos.
- Sólo signos.
AIML no permite operar con el valor ingresado en la entrada por el usuario.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 29 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
CAPÍTULO 2
ESTADO DEL ARTE
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 30 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
ESTADO DEL ARTE
El papel que la tecnología ha desempeñado para con el hombre se fundamenta en el
desarrollo de medios a partir de los cuales se posibilita la realización de tareas de una
forma práctica y sencilla.
La evolución reciente en términos tecnológicos aumenta la capacidad de dichos
medios, dotándoles de una inteligencia artificial que aproxima su comportamiento al
generalmente ejercido por el ser humano. Dicha inteligencia distingue varios tipos de
procesos válidos para la obtención de resultados racionales, entre los que destacan dos de
ellos por su relación con la base sobre la que se cimentan los chatbots: la ejecución de una
respuesta predeterminada para cada entrada, y la búsqueda del estado requerido dentro del
conjunto de estados producidos en función de la entrada recibida.
Cabe mencionar que para la puesta en práctica de estas dos aptitudes es
imprescindible la labor de tratamiento del lenguaje natural, debido a su concordancia con
la lingüística computacional, aspecto que será descrito a continuación.
2.1 PROCESAMIENTO DEL LENGUAJE NATURAL
Por lenguaje natural se entiende una forma de comunicación a través de los distintos
lenguajes humanos (castellano, inglés, alemán, etc.) que permite el intercambio de ideas o
percepciones entre personas, y entre personas y máquinas.
Dicho medio se caracteriza por ser impreciso y ambiguo. La imprecisión (o variación
lingüística) hace referencia a la posibilidad de utilizar diferentes palabras para expresar una
misma idea; la ambigüedad aparece cuando una misma palabra permite más de una
interpretación. De ahí la importancia del conocimiento compartido entre los que se
comunican.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 31 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
El Procesamiento del Lenguaje Natural (en adelante PLN), concebido en este
contexto, se define como el reconocimiento y utilización de la información expresada en
lenguaje humano a través del uso de sistemas informáticos. Esta área de investigación se
aplica en la actualidad en diferentes actividades como son la traducción automática,
sistemas de recuperación de información, elaboración automática de resúmenes, interfaces
en lenguaje natural, etc. Si bien en los últimos años se han realizado avances
espectaculares, los fundamentos teóricos del PLN se encuentran todavía en estado de
desarrollo.
Con ello, el tratamiento del lenguaje natural (en adelante TLN) por medio del
ordenador se basa en la formulación e investigación de medios eficaces
computacionalmente para la comunicación mediante el empleo de lenguajes naturales.
TLN no trata de la comunicación por medio de lenguajes naturales de una
forma abstracta, sino del diseño de mecanismos eficaces computacionalmente
para comunicarse, que se puedan ejecutar por medio de programas que
simulen la comunicación.
Este punto caracteriza al TLN como un área de la Inteligencia Artificial separada de
la lingüística tradicional y otras disciplinas que abarcan el estudio de los lenguajes
naturales. Sin embargo, sí guarda relación con otras dos disciplinas: la lingüística y la
psicología cognitiva.
La lingüística se ocupa de los modelos estructurales, formales y generales de los
lenguajes naturales. Dichos prototipos captan las regularidades del lenguaje y presentan
generalizaciones lo más apropiadas lingüísticamente, sin tener en cuenta la eficacia
computacional.
La psicología cognitiva se centra en el modelado del uso de lenguaje, buscando
siempre una confirmación del mismo con resultados experimentales. Los modelos se
enfocan no sólo a la comprensión del lenguaje de por sí, sino a aspectos generales
cognitivos humanos y a la organización de la memoria. El lenguaje natural sirve sólo de
medio para estudiar estos fenómenos.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 32 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
2.1.1. LINGÜÍSTICA COMPUTACIONAL
El tratamiento y modelado del lenguaje natural es una cuestión muy
importante en cualquier sistema inteligente que manipule y trabaje con modelos
específicos de conocimiento. No obstante, la complejidad implícita en dicho
tratamiento del lenguaje comporta limitaciones en los resultados y, por tanto,
aplicaciones en áreas de conocimiento concretas y con un uso restringido del
lenguaje.
Por definición [Sido, 2001], el término lingüística computacional es la ciencia
que trata de los modelos computacionales del lenguaje natural y de cómo hacer
entender a los ordenadores los idiomas humanos. Se puede comprender que éste sea
un problema complejo de resolver, debido a la riqueza interpretativa que ofrece
cualquier idioma medianamente complicado que utilice giros lingüísticos, frases
hechas, refranes, tópicos o incluso palabras con significado distinto dependiendo de
las modas, niveles culturales, o simplemente rangos de edad. El problema principal
de la lingüística computacional es, por tanto, la manera de trasladar el lenguaje
natural cotidiano, asociado a un idioma, al entendimiento del ordenador.
Los orígenes de la lingüística computacional pueden ubicarse en los finales de
la Segunda Guerra Mundial, cuando distintos equipos científico-técnicos de Estados
Unidos y la Unión Soviética comenzaron a trabajar en diversos proyectos para
elaborar programas de traducción entre el inglés y el ruso: los servicios de
inteligencia y las fuerzas armadas de ambos países tenían un interés especial en
esos proyectos y, por ese motivo, fueron los principales inversionistas durante
mucho tiempo. Cuando la Inteligencia Artificial apareció en la década de los
sesenta, la lingüística computacional se convirtió en una rama de la misma, tratando
con el nivel de comprensión humano y la producción de los lenguajes naturales.
Para traducir de un lenguaje a otro, se observó que era necesario entender la
sintaxis de ambos lenguajes, al menos en el nivel morfológico (la sintaxis de las
palabras), y las frases enteras. Para entender la sintaxis, se debe comprender la
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 33 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
semántica del vocabulario y la pragmática del lenguaje. Lo que empezó como un
esfuerzo para traducir textos se convirtió en una disciplina encargada de entender
cómo representar y procesar el lenguaje natural individual usando herramientas
informáticas.
La lingüística computacional se ha dividido en dos ramas [Uszkoreit, 2009]:
Lingüística computacional teórica
Basa sus temas de trabajo en la lingüística teórica y en la ciencia
cognitiva. Los aportes de la psicología cognitiva, en especial de la
psicolingüística, también son de especial relevancia, y han dado como
resultado la aparición de una nueva ciencia, la psicolingüística
computacional. Su objetivo es dar una explicación del funcionamiento del
lenguaje en alguno de sus niveles: fonético, morfológico, sintáctico,
semántico, y pragmático.
Insumos de la lingüística computacional teórica se observan en el desarrollo
de distintos lenguajes de programación utilizados en la IA, como PROLOG.
Lingüística computacional aplicada
Es una vertiente de la lingüística computacional con una evidente
orientación tecnológica, lo que ha provocado que, con frecuencia, nos
refiramos a ella con nombres como ingeniería lingüística o tecnología del
lenguaje humano. Se centra en los aspectos prácticos que se puedan derivar
de la simulación de la conducta lingüística con medios informáticos. Su
objetivo es crear productos informáticos que incorporen algún componente
en el que intervenga el lenguaje, ya sea oral o escrito.
Cabe destacar que el uso de técnicas computacionales procedentes
especialmente de la IA, no aportarían soluciones adecuadas sin una concepción
profunda del fenómeno lingüístico. Por otra parte, las gramáticas utilizadas para el
tratamiento del lenguaje han evolucionado hacia modelos más adecuados para un
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 34 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
tratamiento computacional. Por lo tanto, sería conveniente ahondar en los diferentes
niveles en que se estructura el lenguaje natural, que son los siguientes:
Fonética.
Morfología.
Sintaxis.
Semántica.
Pragmática.
La fonética es la rama de la lingüística que se ocupa de la producción y
percepción de los sonidos asociados a la pronunciación de las palabras que
componen una lengua. En la fonética computacional, los principales problemas que
surgen guardan relación con los sistemas encargados del análisis y síntesis del
habla, los cuales no realizan una perfecta de comprensión de palabras al utilizar
programas de reconocimiento de voz.
La morfología tiene como objetivo detectar la relación existente entre las
unidades mínimas que forman una palabra, tal y como puede ser el reconocimiento
de prefijos o sufijos. Este nivel de análisis mantiene una estrecha relación con el
léxico, en el cual se incluye la información morfológica, la otorgación de una
categoría gramatical a los vocablos (género, número, etc.), irregularidades
sintácticas y la representación del significado. Un analizador léxico crea tokens2 de
una secuencia de caracteres de entrada, los cuales son procesados por el analizador
sintáctico para construir la estructura de datos. Precisamente los problemas de la
morfología computacional están relacionados con el desarrollo de estos sistemas de
análisis y síntesis morfológica, cuyos módulos son difíciles de construir.
La sintaxis tiene como función etiquetar cada uno de los componentes
sintácticos que aparecen en la oración y analizar cómo las palabras se combinan
para formar construcciones gramaticalmente correctas. El resultado de este proceso
2 Conjunto de caracteres con los que se forman las sentencias del lenguaje, y que pueden ser tratados como
una unidad sintáctica.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 35 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
consiste en generar la estructura correspondiente a las categorías sintácticas
formadas por cada una de las unidades léxicas que aparecen en la oración.
Computacionalmente, el desarrollo de un analizador sintáctico o parser3 es bastante
complejo, especialmente para aquellos idiomas que no tienen un método de
formulación de sentencias determinado y único, como sucede con el castellano.
El propósito de la semántica consiste en ser capaz de conocer el significado
de las palabras e interpretar el sentido que adoptan en una sentencia concreta. Sin
embargo, las técnicas de representación del significado no han obtenido los
resultados deseados, y numerosas cuestiones continúan sin encontrar soluciones
satisfactorias. Definir el significado no es una tarea sencilla, fundamentalmente por
la polisemia, y es fácil dar lugar a diversas interpretaciones por la complejidad de
asociar determinadas palabras dentro de determinados contextos.
Una de las herramientas más utilizadas en el procesamiento semántico
computacional es WordNet4, base conceptual anotada en diferentes lenguas, que
contiene una gran red semántica compuesta por todas las unidades léxicas y las
relaciones que puedan derivarse entre ellas (sinonimia, compartición de la misma
raíz gramatical, etc.). Es decir, WordNet pretende ser un modelo léxico-conceptual
para todos aquellos hablantes de las lenguas de las que dispone.
3 Parte de un compilador que transforma los textos de entrada en un árbol de derivación que facilita su
análisis. 4 http://wordnet.princeton.edu/
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 36 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Ilustración 2 - Ejemplo de aplicación de WordNet
La forma en que WordNet estructura la información es a través de los
llamados synsets, o conjunto de sinónimos. Como consecuencia, en la red WordNet
se establecen relaciones entre conceptos, no entre palabras, por lo que se asume que
un concepto quedará definido por el conjunto de formas léxicas que sirven, en el
contexto apropiado, para representarlo por medio del lenguaje.
Asimismo, existe una red de synsets estructurada jerárquicamente en cuatro
grupos, denominados categorías abiertas: verbos, adverbios, nombres y adjetivos,
guardando cada uno relaciones específicas con los restantes, como pueden ser:
Sinonimia. Es la relación más básica de WordNet, y común a todos los
grupos. Representa la semejanza de significados entre determinadas
palabras, como ascender y subir.
Antonimia. Relación semántica común a todos los grupos establecida
entre palabras que poseen significados totalmente contrarios, como
húmedo y seco, útil en WordNet para organizar los significados de
adjetivos y adverbios.
Hiperonimia e hiponimia. Es una relación semántica transitiva entre
synset que organiza el significado de los nombres bajo estructuras
jerárquicas. Esta relación aparece cuando el significado de una palabra
(hiperónimo) está totalmente incluido en el significado de otra palabra
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 37 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
más específica (hipónimo). Por ejemplo, árbol es hiperónimo de
sauce.
Meronimia. Es una relación semántica no-simétrica entre los
significados de dos palabras dentro del mismo campo semántico.
Como dedo, que forma parte de mano.
Implicación. Es específica de los verbos, y aparece cuando una acción
es consecuencia de otra acción anterior; por ejemplo, divorciarse
implica haberse casado anteriormente.
De esta manera, los synsets se organizan en diferentes árboles jerárquicos, en
cuya raíz se halla el de significado más genérico.
Por último, la pragmática se centra en el análisis de las relaciones entre la
oración y el mundo externo, es decir, de contextualizarlas. Por ejemplo, indicar “Es
pobre pero honesto” suele implicar un contraste, no especificado en el enunciado,
entre pobreza y honestidad. Se trata de uno de los niveles de análisis más
complejos, siendo la finalidad del mismo el incorporar al análisis semántico la
aportación significativa que pueden hacer los participantes, la evolución del
discurso o información presupuesta. Sin embargo, dado que el problema que
presenta la semántica no está aún resuelto, carecería de sentido ascender a este nivel
de análisis del lenguaje, pues plantea un problema en todo su conjunto.
2.1.2. ANTECEDENTES DE LA LINGÜÍSTICA COMPUTACIONAL
El tema de estudio planteado está altamente relacionado con la lingüística
computacional. Como se ha podido comprobar, la lingüística computacional a nivel
teórico se centra en la sintaxis, la semántica, el discurso, o la generación de
lenguaje; mientras que a nivel práctico, aborda tareas como la programación
automática, traducción automática, la comprensión de una señal acústica, la
enseñanza asistida por ordenador o el desarrollo satisfactorio de bots
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 38 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
conversacionales, siendo estos dos últimos aspectos los puntos en los que se basa
este trabajo.
Jordán, [Jordán, 2005], introduce un breve estado del arte relacionado con la
lingüística computacional y su evolución a lo largo del tiempo.
Los trabajos iniciales según este estudio se realizaron entre 1950 y 1965,
tratando principalmente los siguientes temas:
Traducción automática: En este ámbito, las primeras traducciones se
realizaron palabra por palabra, por lo cual se puede suponer el poco
éxito obtenido. En Estados Unidos un comité asesor para el
tratamiento automático del lenguaje recomendó la retirada de
financiación a este tipo de proyectos.
Gramática transformacional: Las estructuras sintácticas de Chomsky
[Chomsky, 1957], indicaban que las oraciones de un lenguaje natural
no se pueden generar con significado por medio de una máquina de
estados finitos, o por una gramática de contexto libre. La autonomía
de la sintaxis sugería que una comprensión de la sintaxis o estructura
de oraciones en lenguaje natural solamente se puede lograr
fundándose en una base gramatical sin considerar las propiedades
(significados) en el mundo real de los términos que se discuten.
Extracción de información: Se realizan los primeros estudios
referentes a la estructura, análisis, búsqueda y acceso a la información.
Durante los años 1960 y 1970, los intereses de las investigaciones acerca de
la lingüística computacional se centraron, por un lado, en los sistemas de pregunta y
respuesta, diseñados para dialogar con una base de datos primitiva, y, por otro, en la
resolución de problemas, diseñando programas capaces de comunicarse con
personas en lenguaje natural, en un dominio restringido. En estos años aparecen
también sistemas de consultas médicas, como el caso del sistema ELIZA
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 39 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
[Weizenbaum, 1966] creado en 1966 por Joseph Weizenbaum, y del que se hablará
detalladamente más adelante.
Durante este mismo periodo, en concreto entre los años 1965 y 1970 se
desarrollaron investigaciones teóricas relacionadas con la dependencia conceptual,
gramática de casos, semántica de procedimientos y redes semánticas.
En los años 70 aparecieron dos proyectos que captaron la atención de
investigadores de Inteligencia Artificial. El primero es el sistema SHRDLU,
desarrollado por Terry Winograd [Winograd, 1972], del Instituto Tecnológico de
Massachusetts. Este sistema suministra un interfaz de lenguaje natural al brazo de
un robot acerca de un conjunto de objetos que aparecen en pantalla y los
movimientos que puede realizar con ellos. Este sistema fallaría en dominios más
amplios.
Ilustración 3 - Esquema de funcionamiento del sistema SHRDLU
Otro sistema desarrollado en ésta época es el llamado LUNAR de William
Woods [Woods, 1972]. Este Proyectose deriva de trabajos realizados sobre
semántica de procedimientos. Proporciona a geólogos lunares un interfaz en
lenguaje natural que permite acceder a una base de datos de rocas lunares. En la
primera fase se transformaba un análisis sintáctico utilizando una gramática ATN
(redes de transición aumentadas) y un diccionario de 3.500 palabras.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 40 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Durante estos años, y hasta 1984, las aplicaciones estuvieron dirigidas hacia
las interfaces de bases de datos, enseñanza asistida por ordenador, ofimática,
programación automática y tratamiento de textos científicos.
A partir del año 1984 y hasta hoy en día la tendencia está encaminada hacia
las implementaciones independientes del dominio, es decir, aumentar la
portabilidad, permitir a los usuarios que realicen trabajos a medida, o que el sistema
se adapte asimismo para un usuario o para un dominio de diálogo. En estos años se
ha retomado el interés por la traducción automática, apareciendo numerosos
sistemas de traducción como por ejemplo el programa Babylon, creado en 1997 por
una compañía israelí del mismo nombre, y que permite la traducción hasta en 50
idiomas diferentes.
En el ámbito teórico actualmente se está tratando el análisis y formalismo
gramatical, la búsqueda sin determinismo y los lenguajes gramaticalmente
incorrectos, siendo el tema de la semántica uno de los más relevantes en este
aspecto, abordando temas asociados con el entendimiento y la representación del
significado de expresiones en lenguaje natural.
2.1.3. TÉCNICAS EMPLEADAS EN EL PROCESAMIENTO DEL
LENGUAJE NATURAL
La complejidad asociada al lenguaje natural cobra especial relevancia cuando
se necesita recuperar información textual [Baeza-Yates, 1999] que satisfaga la
necesidad de información de un usuario. Por tanto, en el área de Recuperación de
Información Textual (Information Retrieval o IR), las técnicas del PLN son muy
utilizadas [Allan, 2000], tanto para facilitar la descripción del contenido de los
documentos, como para representar la consulta formulada por el usuario, y ello, con
el objetivo de comparar ambas descripciones y presentar al usuario aquellos
documentos que satisfagan en mayor grado su necesidad de información [Baeza-
Yates, 2004].
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 41 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
El procesamiento de textos consta de las siguientes etapas:
Preprocesado. Los documentos se preparan para su parametrización,
eliminando aquellos elementos considerados superfluos.
Parametrización. Consiste en realizar una cuantificación de los
términos que contiene un documento.
Naturalmente, numerosas técnicas son utilizadas para la recuperación de este
tipo de información, sin embargo sólo algunas son mencionadas en función de su
frecuencia de uso [Brants, 2003]:
Eliminación de cabeceras y etiquetas o stripping, propias de XML.
Normalización. Consiste en homogeneizar el contenido del texto, lo
cual afecta a la consideración de los términos en mayúscula o
minúscula, el control de determinados parámetros como cantidades
numéricas o fechas, o a la eliminación de palabras vacías mediante la
aplicación de listas de palabras función (preposiciones, artículos, etc.).
Stemming. Hace referencia a la reducción de todas las palabras
pertenecientes a la misma familia gramatical son convertidas a su raíz,
de manera que disminuye, así, el tamaño del vocabulario y mejora, en
consecuencia, la capacidad de almacenamiento de los sistemas, así
como el tiempo de procesamiento de los documentos. Sin embargo,
hay excepciones donde el rendimiento es menor tras la reducción,
dado que en ocasiones no se agrupan palabras que deberían estarlo, o
viceversa, y se muestran como iguales palabras que realmente son
distintas.
Detección de N-Gramas. Se trata de identificar aquellas palabras que
suelen aparecer juntas (nombres propios, palabras compuestas, etc.)
con el fin de tratarlas como una única unidad.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 42 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Detección de palabras vacías o Stopwords. Se denomina así a
aquellas palabras de escaso valor semántico que son detectadas y
eliminadas en el análisis de un texto, lo cual incrementa el
rendimiento del sistema.
Etiquetado gramatical (conocido también por su nombre en inglés,
Part-Of-Speech Tagging, POST). Programa encargado de asignar a
cada una de las palabras del texto su categoría gramatical, destacando
su capacidad de actuar tanto en base a la definición de la palabra como
al contexto en que aparece. Su modo de operación utiliza algoritmos
que asocian, de entre un total de 150 etiquetas descriptivas, la
correspondiente a cada uno de los términos; por ejemplo, NN
identifica al sustantivo común, mientras que NP identifica al
sustantivo propio.
Ilustración 4 - Ejemplo de etiquetado gramatical
Los métodos de aprendizaje de este tipo de programas son variados, y
cobran mayor importancia al tratar el problema de la ambigüedad,
dado que cuando aparecen varias palabras ambiguas juntas, las
posibilidades se multiplican. Sin embargo, se puede calcular la
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 43 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
probabilidad de cada secuencia de posibles etiquetados y seleccionar
aquélla con mayor valor. El etiquetador CLAWS (Lancaster
University) [Leech, 1994] emplea este sistema y consigue un
porcentaje de aciertos en el rango 93-95%. También son destacables
Stanford long linear part of speech tagger [Toutanova, 2000], y
Struggart tree tagger [Schmid, 1994]. Este último es bastante más
preciso que los anteriores, y está disponible en multitud de idiomas
como español, alemán, chino, italiano, ruso, o francés. La salida de
este tree tagger es un fichero de texto que contiene las palabras
además de las correspondientes etiquetas para cada una de ellas, lo
que le hace constar de un formato de salida más entendible y fácil de
manipular.
Frases compuestas. Se encargan de introducir unidades compuestas
en el lugar de tokens individuales. La técnica utilizada es SMART
[Buede, 1993], y se basa en recoger parejas de palabras adyacentes
con un solo significado semántico, para luego utilizar todas aquellas
parejas que tengan una frecuencia mayor que un umbral previamente
definido. En la práctica suele emplearse una combinación de tokens
individuales con tokens emparejados, dado que los individuales
podrían considerar palabras que no deberían ser consideradas (por
ejemplo Nueva, en Nueva York); y los emparejados pueden derivar en
grandes fallos con pequeñas variaciones (por ejemplo, si la consulta
del usuario es B.Obama, los documentos que contengan B.H.Obama
no coincidirían con la consulta solicitada).
Divisiones de frases compuestas. Muchas lenguas forman palabras
simplemente añadiendo otras en el proceso productivo, tal y como
ocurre con el alemán, el finés, el holandés o el sueco. La división de
las palabras compuestas en estos idiomas, cuyo beneficio neto suele
ser positivo, sin embargo, debería mejorar la calidad del resultado. Un
algoritmo sencillo para realizar estas divisiones es considerar todas las
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 44 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
demás palabras pertenecientes al léxico como posibles partes. Chen
[Chen, 2002] encontró una mejora del 4-13% para el holandés. No
obstante, lo óptimo sería la determinación automática de la mejor
división dependiendo de la consulta realizada.
Fragmentación y análisis sintáctico superficial. Esta técnica se
encarga de separar palabras de una oración en unidades básicas, como
sintagmas nominales o verbales. Uno de los mejores sistemas que
utiliza esta técnica fue creado por Kudoh y Matsumoto [Kudoh, 2000],
basado en el soporte vectorial, el cual obtiene una precisión del
95,77%.
Desambiguación del sentido de las palabras. Se trata del proceso de
decidir el sentido de una palabra en función del contexto en que es
utilizada. Cuando esta técnica es empleada por los Sistemas de
Recuperación de Información, los términos son reemplazados por lo
que verdaderamente indican. Voorhees [Voorhees, 1993] comprobó
que la precisión en el inglés descendía entre un 5 y un 17% empleando
este método. El factor que lo provocaba era la dificultad para
averiguar el sentido real de la palabra en una consulta corta.
2.2 INTELIGENCIA ARTIFICIAL EN EL PROCESAMIENTO DEL
LENGUAJE NATURAL
La Inteligencia Artificial es considerada una rama de la computación y relaciona un
fenómeno natural con una analogía artificial a través de programas. La IA puede ser
tomada como ciencia si se enfoca hacia la elaboración de programas basados en
comparaciones con la eficiencia del hombre, contribuyendo a un mayor entendimiento del
conocimiento humano.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 45 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
A través de la Inteligencia Artificial se han desarrollado los sistemas expertos, los
cuales pueden imitar la capacidad mental del hombre. Además, son capaces de relacionar
reglas de sintaxis del lenguaje natural sobre la base de la experiencia, para más adelante
realizar juicios acerca de un problema, cuya solución se logra con mejores criterios y más
rápidamente que lo haría el ser humano. En la medicina, por ejemplo, tiene gran utilidad al
acertar el 85 % de los casos de diagnóstico.
La IA tiene, además del ya descrito lenguaje natural, un campo relacionado
directamente con el desarrollo de un chatbot: el aprendizaje automático, el cual estudia el
aprendizaje de nuevos conocimientos de forma automática por parte de los programas de
ordenador.
Asimismo, gracias a la IA puede realizarse un tratamiento inteligente de la
información, es decir, ésta puede ser procesada y recuperada de las bases de datos que la
almacenan de forma que el tiempo empleado en ello se minimice.
2.3 ROBOT VIRTUAL
Un robot virtual es aquél que funciona dentro del ordenador, haciendo uso de la
capacidad de procesamiento del mismo, ya sea como medio de comunicación con las
personas (caso de los Chatbots), para ejecutar órdenes, o controlar diversos periféricos
externos.
La ventaja de un robot virtual es, en primer lugar su capacidad de procesamiento, la
cual sobrepasa con creces la de cualquier robot mecánico. Por otro lado, el código del
robot es multiplataforma, es decir, puede ser utilizado en cualquier ordenador, lo cual es
fundamental en tiempos en que la conectividad y la comunicación entre ordenadores son
imprescindibles.
Una de las tendencias con más futuro de la robótica virtual es la utilización de
chatbots para ofrecer servicios y poder atender las dudas y necesidades de los usuarios por
medio de Internet. Este diálogo se establece mediante el empleo del lenguaje natural, y
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 46 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
puede llevarse a cabo a través de mensajes instantáneos, foros, correo electrónico, o,
incluso, por voz, utilizando el teléfono.
Cabe destacar que el robot virtual siempre tiene tras de sí lo que se conoce como
botmaster, esto es, la persona encargada de la creación de su personalidad y de su inclusión
en el mundo real a través de cualquiera de los medios señalados anteriormente.
Algunas de las funciones que se pueden acometer con un robot virtual son las
siguientes:
Ingresar en el mundo de la Inteligencia Artificial.
Crear robots que respondan preguntas de soporte al usuario. Por ejemplo,
empresas que tienen un sitio web y pretenden responder a las preguntas de los
usuarios.
Construir una personalidad virtual que interactúe con todo tipo de usuarios.
Controlar cualquier programa, e incluso los hogares, de forma remota,
pudiendo configurar el robot tanto desde un ordenador como desde un
dispositivo móvil.
Recibir órdenes en lenguaje natural.
Interactuar con humanos a través de programas de mensajería como Microsoft
Messenger, AOL Messenger, o IRC.
Tener asociado un avatar, es decir, una animación, en ocasiones multimedia,
que dote de mayor realismo a la interacción con el robot.
2.4 AGENTE INTELIGENTE
Un agente inteligente es una entidad capaz de percibir su entorno, procesar tales
percepciones y responder o actuar de manera racional, es decir, de manera correcta y
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 47 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
tendiendo a maximizar un resultado esperado. En este contexto, la racionalidad es la
característica que dota de dicha capacidad al agente.
Un agente inteligente puede ser una entidad física o virtual. Si bien el término suele
hacer referencia a agentes artificiales en el campo de la Inteligencia Artificial, los animales
y el propio hombre también quedan encuadrados bajo su definición.
Cuando se habla de agente virtual suele aludirse a una entidad de software que consta
de un propósito específico. Los agentes tienen sus propias ideas sobre las tareas a ejecutar.
Con objetivos concretos se distinguen los agentes de las aplicaciones multifunción, que son
típicamente más pequeñas [Hayes-Roth, 1995].
Los agentes inteligentes, como sistemas de IA, deben exhibir las siguientes
características [Kasabov, 1998]:
Aprender nuevos problemas e incrementar normas de solución.
Capacidad de adaptación en línea y en tiempo real.
Ser capaz de analizar condiciones en términos de comportamiento, el error y
el éxito.
Aprender y mejorar a través de la interacción con el medio ambiente
(realización).
Aprender rápidamente de grandes cantidades de datos.
Deben estar basados en memoria de almacenamiento masivo, y la posterior
recuperación de dicha capacidad.
El mayor problema a la hora de desarrollar un agente inteligente surge al diseñar su
“personalidad”, ya que se debe procurar que ésta sea original, inteligente, entretenida, y
capaz. Sin embargo, la conducta de un agente rara vez es la óptima. La razón es sencilla:
calcular el óptimo de un criterio de un modo suficientemente bueno como para ser
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 48 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
considerado razonable, es muy difícil cuando en el problema planteado concurren
múltiples restricciones, o directamente cuando dicho criterio es complicado de definir con
precisión.
2.4.1 SISTEMAS TUTORES INTELIGENTES (STI)
Los STI comenzaron a desarrollarse en los años ochenta, con la idea de poder
impartir el conocimiento utilizando alguna forma de inteligencia para poder asistir
y guiar al estudiante en su proceso de aprendizaje. Se buscó emular el
comportamiento de un tutor humano, es decir, modelar el sistema de forma que
pudiera adaptarse al comportamiento del estudiante, identificando la forma en que
éste resuelve un problema, a fin de poder brindarle ayudas cognitivas cuando lo
requiera.
Un tutor inteligente, por lo tanto, “es un sistema de software que utiliza
técnicas de inteligencia artificial (IA) para representar el conocimiento e
interactúa con los estudiantes para enseñárselo” [VanLehn, 1988]. Una nueva
definición describe los STI como “sistemas que modelan la enseñanza, el
aprendizaje, la comunicación y el dominio del conocimiento del especialista y el
entendimiento del estudiante sobre ese dominio” [Wolf, 1984]. “Un sistema que
incorpora técnicas de IA (Inteligencia Artificial) a fin de crear un ambiente que
considere los diversos estilos cognitivos de los alumnos que utilizan el programa”
[Giraffa, 1997].
El objeto actual de las investigaciones se centra en proveer una alternativa al
tutor humano, si éste carece de tiempo para dedicárselo a los estudiantes, o bien si
aquéllos buscan aprender de forma autónoma.
Sin embargo, se ha observado que la mayor parte de los STI no presentan el
nivel esperado de racionalidad, fundamentalmente debido a la dificultad para el
modelado del funcionamiento de la mente humana, más allá de la aplicación de las
técnicas de programación más avanzadas.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 49 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
2.4.2 AGENTE CONVERSACIONAL O CHATBOT
Como ya se ha especificado en el vocabulario específico de la materia [ver
Anexo A Vocabulario Técnico] un agente conversacional o Chatbot es un programa
diseñado para simular una conversación inteligente, generalmente, con uno o más
humanos. En la actualidad, se dota a estos agentes de diversos usos, siendo los más
representativos:
Chatbot de ventas. Da a conocer el precio de los productos y las
distintas ofertas.
Chatbot auxiliar. Se encuentran en sitios web que ofertan productos y
servicios.
Chatbot informador. Se le considera el sustituto de los manuales de
instrucciones, especialmente en páginas webs que constan de amplios
contenidos, y en programas de cierto nivel de complejidad.
Chatbot de entretenimiento. Como su propio nombre indica, este tipo de
Chatbot se centra únicamente en proporcionar entretenimiento, por
medio del establecimiento de una conversación.
Aportación en Internet
Los sistemas conversacionales en Internet tienen en la actualidad una
mayor proyección, especialmente en sitios web comerciales. Dichos
sistemas, además de estar capacitados para dialogar con clientes y resolver
dudas sobre los contenidos de la web, se están convirtiendo en un sustituto
perfecto de los métodos tradicionales de venta a través de Internet,
fundamentalmente de los menús que tratan de explicar los detalles sobre
algún producto o servicio específico que la página brinda.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 50 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Hoy en día, contener un agente capaz de atender a los usuarios en
todo momento desde un sitio web, resulta altamente práctico y además
propone una interacción más adecuada para lograr los propósitos de la
página [Russell, 2002].
Aportación educativa
Por otro lado, gracias al experimento Mago de Oz5, se investigó la
posibilidad de fusionar los agentes conversacionales con los ya
mencionados Sistemas Tutores Inteligentes, concluyéndose que este
Proyectoconduciría al desarrollo de mejores técnicas de negociación para
los Chatbots, así como avances en el llamado Modelo Abierto del
Estudiante6, lo cual conllevaría una amplia aplicación en escuelas,
universidades y demás escenarios de aprendizaje.
2.4.3 ANTECEDENTES DE LA PROPUESTA
Los proyectos de investigación referentes a sistemas programados para
comunicarse a través del lenguaje natural tuvieron como padre a Joseph
Weizenbaum, cuyos estudios llevaron a la creación de ELIZA, que, si bien no fue el
primer agente inteligente, se erigió como plataforma de la tecnología Chatbot, y
base de las posteriores creaciones [Dmoz, 2006].
ELIZA (1964 – 1966)
Surgió con el objetivo de simular a un experto en psicología. Analizaba las
oraciones de entrada, creando una respuesta asociada a las cadenas de entrada,
previa descomposición de las mismas. Esto, sin duda, dotaba al usuario de una
5 Investigación de interacción humano-ordenador en donde sujetos determinados se someten a la interacción
con un sistema de ordenador, el cual piensan que es autónomo, sin embargo está siendo controlado a
escondidas por otro sujeto: el mago en cuestión.
6 En el contexto tecnológico, significa una representación de las creencias que el sistema tiene acerca del
estudiante y es, por lo tanto, una representación abstracta del estudiante en el sistema.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 51 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
sensación de haber sido escuchado. Sin embargo, la conversación no se iba
almacenando en memoria, lo que inevitablemente conllevaba una disminución del
realismo del programa.
Además, tendía a repetir palabras con mucha frecuencia, lo cual mostraba que
el sistema no disponía de una alta racionalidad [Navarro, 1997].
Weizenbaum, durante el desarrollo, identificó la dificultad de almacenar
unidas todas las palabras con las que emular una conversación en la que poder
dialogar sobre distintas materias [Weizenbaum, 1966]. Su solución fue dividir este
almacén en distintos módulos, lo que permitiría al Chatbot cambiar arbitrariamente
de temas [Navarro, 1997].
A.L.I.C.E. – Aritificial Linguistic Internet Computer Entity (1995)
Un proyecto que mejora ampliamente el tratamiento de las palabras y el
funcionamiento de ELIZA [A.L.I.C.E. AI Foundation, 2006], fue A.L.I.C.E.
Es un multigalardonado Chatbot cuya estructura y cerebro es open source7.
Las técnicas empleadas para establecer las conversaciones se basan en el
reconocimiento de patrones de texto y en el análisis de la semántica de las frases, la
gramática y la ortografía, proporcionando a A.L.I.C.E. la capacidad de interpretar el
sentido de las oraciones dependiendo de su contexto [Shah. 2005].
Su arquitectura se basa en dos módulos específicos: el intérprete del
lenguaje AIML, y el almacén de datos AIML [Rusell, 1995]. Las etiquetas AIML
establecen categorías de las posibles preguntas y expresiones que el usuario puede
manifestar, y, de esta manera, se determinan las respuestas que mejor se ajusten a
ellas.
Una notable diferencia de A.L.I.C.E. con respecto a ELIZA, es que AIML
provee de una estructura única a partir de la cual puede accederse a sus bases de
conocimiento, permitiendo, así, recuperar e insertar texto en A.L.I.C.E. [A.L.I.C.E.
AI Foundation, 2006].
7 Cualquier persona tiene el derecho de usar, modificar y redistribuir su código libremente.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 52 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Pese a ser un sistema viable y experimentado, cabe destacar que, hasta
ahora, no ha sido aplicado en ningún entorno comercial.
Ilustración 5 - A.L.I.C.E.
Cleverbot (1988)
Fue creado por el científico de IA Rollo Carpenter. En el primer decenio de
su existencia, tras su invención en el año 1988, Cleverbot tenía millares de
conversaciones con Carpenter y sus asociados. Desde su publicación en la red, en
1997, hay más de 65 millones de conversaciones.
Cleverbot es considerado una inteligencia artificial conservadora adaptiva.
Tomó parte en una Prueba de Turing formal al lado de personas en el festival
Techniche 2011, organizado en el instituto técnico IIT Guwahati, India. Cleverbot
fue calificado de ser 59,3% humano, una marca mucho más alta de lo esperado,
sobre todo teniendo en cuenta que los participantes humanos consiguieron
únicamente un 63,3%.
Elbot (2001)
Elbot es un Chatbot creado en 2001 por Fred Roberts, empleando para ello el
Procesamiento del Lenguaje Natural.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 53 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Elbot ha conseguido numerosos galardones desde su creación, destacando la
obtención del premio Loebner para la inteligencia artificial en 2008, en la que logró
convencer a tres de los doce jueces que lo interrogaron de que era indistinguible de
un ser humano.
Como Elbot, la mayoría de los Chatbots modernos dedicados al comercio,
han sido desarrollados con la tecnología Lingubot.
Ilustración 6 - Elbot
PhiliPa (2003)
PhiliPa fue diseñado por Niki Lambropoulos, con el fin de responder a las
dudas de los estudiantes desde foros de discusión. Este chatbot es capaz de informar
y preguntar a los estudiantes acerca de cuestiones relacionadas con el curso, sus
objetivos, hábitos y tiempo de estudio, cómo aprender online, o cómo poder
comunicarse con sus tutores.
PhiliPa se integró en la plataforma Moodle8, facilitando al instructor la
introducción en el bot de nueva información a medida que avanza el curso
académico.
8 Sistema de gestión de cursos, de distribución libre, que ayuda a los educadores a crear comunidades de
aprendizaje en línea.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 54 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Está programado en PHP, basándose en AIML, utilizando la tecnología
AJAX.
Akinator (2007)
Akinator es un juego alojado en la red basado en una serie de preguntas
mediante las cuales el genio (Akinator) puede determinar el personaje en que está
pensado el usuario. Evidentemente, se trata de un programa fundamentado en la
Inteligencia Artificial, capaz de encontrar y aprender las mejores cuestiones que
puede realizar al usuario.
Fue creado por tres programadores franceses en 2007, consiguiendo la
popularidad en 2008, según constató Google Trends.
El genio realiza un total de veinte preguntas, que pueden ser respondidas
afirmativa o negativamente, con las que establece un límite sobre el personaje
potencial en que el usuario está pensando. Tras finalizar la ronda de preguntas,
Akinator presenta su solución al usuario que, en un gran porcentaje de ocasiones, es
la correcta. En caso de no ser así en tres rondas consecutivas, el programa solicita al
usuario que introduzca el nombre del personaje, con el objetivo de expandir sus
conocimientos.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 55 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Ilustración 7 - Akinator
2.4.4 LINGUBOT
Lingubot ofrece entornos de desarrollo sofisticados permitiendo la
construcción de agentes conversacionales inteligentes con un comportamiento y
objetivos complejos. En Lingubot, tanto las palabras como la estructura gramatical
de la entrada introducida por el usuario, son comparadas con patrones
personalizados. De esta manera, se facilita el desarrollo de un modelo del usuario,
el cual se utiliza en conjunción con el contexto conversacional y las palabras
específicas del diálogo para determinar la respuesta del Chatbot.
Asimismo, las respuestas pueden proveer de una conversación más realista e
inteligente al usuario, por medio de la lectura (y escritura) de los sistemas externos
(bien base de datos, bien página web) en los que se va guardando un historial de la
conversación.
Hoy en día la evolución se está adentrando en un momento donde las
tecnologías tales como Lingubot pueden, a través de amplias estructuras sintácticas
desarrolladas para el procesamiento del lenguaje natural y el uso de métodos
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 56 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
complejos de estructuración de información, empezar a mostrar un comportamiento
que los usuarios interpretarán como propios de ser humano.
2.4.5 PANDORABOTS
Pandorabots es un sitio web open source que, gratuitamente, permite a los
usuarios desarrollar y publicar sus propios chatbots. Actualmente, aloja alrededor
de 166.000 botmasters9 y 200.000 creaciones, realizadas en numerosos idiomas.
Aproximadamente 1.4 billones de interacciones conversacionales han tenido lugar
entre clientes y pandorabots, sin embargo, este número se incrementa con una gran
rapidez.
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.
9 Término utilizado para describir un individuo o sistema responsable del mantenimiento de bots.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 57 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
CAPÍTULO 3
ESPECIFICACIÓN DE
REQUISITOS
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 58 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
ESPECIFICACIÓN DE REQUISITOS
En este capítulo, correspondiente a la primera fase del ciclo de vida en espiral, se
abordan los diferentes requisitos que describen de manera completa el comportamiento del
sistema que se va a desarrollar. Incluye un conjunto de casos de uso, también llamados
requisitos funcionales, que detallan todas las interacciones que el usuario tendrá con el
software. Además de ello, la Especificación de Requisitos contiene una serie de requisitos
no funcionales (o complementarios), los cuales imponen restricciones en el diseño o la
implementación, en función del cumplimiento de los correspondientes estándares de
calidad.
Para la determinación satisfactoria de los requisitos a cubrir o mejorar, ha sido
necesario llevar a cabo las siguientes actividades:
Recopilar información del tema a tratar.
Investigar los antecedentes de la propuesta.
Analizar las posibles restricciones de tiempo y alcance, teniendo en cuenta
que, frecuentemente, incrementar el alcance aumenta el tiempo.
Una vez finalizados los aspectos anteriores, se procede a definir los citados
requisitos, clasificados según su propósito.
3.1. REQUISITOS FUNCIONALES
Llevar a cabo una comunicación sincrónica, en tiempo real, entre el alumno
y el bot a través de Internet.
Comprender lo que el usuario consulta.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 59 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Elaborar la respuesta proporcionando la información que el usuario solicite
sobre la asignatura.
Contestar prácticamente de manera exclusiva a las cuestiones que guarden
relación con la materia.
Contar con respuestas base, en caso de que el usuario no concrete ninguna
cuestión relacionada con la materia.
Orientar al alumno hacia la formulación correcta y específica de su
pregunta.
Cambiar la imagen del avatar del bot en función del contenido hacia el que
haya evolucionado la conversación. Por ejemplo, se mostrará contento al
haber servido de ayuda, triste al no comprender lo que se le pregunta, y
enfadado cuando el usuario muestre una conducta poco adecuada.
Fijar un tiempo de expiración de la sesión, de manera que, si no se observa
respuesta del usuario, se dará por finalizada su sesión.
Detectar un posible comportamiento incorrecto por parte del alumno, como
consecuencia del empleo de palabras malsonantes o inapropiadas.
Estar capacitado para hacer efectiva la expulsión del usuario de la
plataforma en caso de que sea necesario.
Realizar un seguimiento de la evolución del alumno durante el curso. Esto
quiere decir que si, por ejemplo, el alumno suspende un examen de la
asignatura, cuando se conecte a la plataforma se le hará un recordatorio de
la materia que debería revisar.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 60 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
3.2. REQUISITOS NO FUNCIONALES
Esta solución ha sido diseñada para ser instalada y operada desde la red,
basándose en una arquitectura Cliente – Servidor.
El sistema debe ser accesible por parte de los usuarios finales desde sus
ordenadores particulares, sin necesidad de encontrarse dentro de las
instalaciones del centro educativo.
El sistema debe ser ejecutable desde casi cualquier plataforma y casi
cualquier navegador.
La aplicación debe poder integrase en plataformas de e-Learning.
El acceso al sistema sólo estará permitido para los alumnos que cursen la
asignatura Procesadores del Lenguaje.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 61 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
CAPÍTULO 4
ARQUITECTURA
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 62 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
ARQUITECTURA
La arquitectura de todo proyecto informático puede entenderse como la disposición
conjunta y ordenada de elementos software y hardware para cumplir con una determinada
función. Evidentemente, la combinación de arquitecturas muy distintas e inconsistentes
deriva en la obtención de un proyecto ingobernable, tanto o más cuanto mayor sea la
envergadura del mismo.
Resulta imprescindible conocer la arquitectura de un sistema para poder dotarlo de
las funcionalidades que se precisen y realizar modificaciones futuras sin que se perjudique
su consistencia.
Por ello, para la elección de una arquitectura adecuada para este Proyecto, han de
considerarse los siguientes aspectos:
El usuario ha de conectarse al sistema, el cual estará albergado en una
plataforma e-Learning.
La flexibilidad es una necesidad fundamental. El sistema que se instaurará
destaca por su carencia de estatismo. Por un lado, las bases de datos
actualizarán constantemente su contenido; por otro, el prototipo debe poder
ser trasladado a otros entornos para su aplicación.
Las funcionalidades futuras con que se dote a la configuración de la
arquitectura han de ser consistentes con el sistema actual.
La especialización, es decir, la división de los problemas en sus partes
constituyentes. Este aspecto facilitará la elaboración del sistema, debido a
que la resolución de las partes individuales será abordada de forma
separada, reduciéndose la complejidad, y acelerándose el proceso de
ensamblaje de software.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 63 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
A continuación se va a proceder a describir la arquitectura del sistema tanto a nivel
interno como externo. La diferencia entre ambos radica en el grado de alcance al que hacen
referencia. Mientras que a nivel externo se definen todos los elementos, componentes o
sistemas que intervienen en la implantación del mismo, a nivel interno se describen las
unidades funcionales que permiten la ejecución de las diferentes funcionalidades.
4.1 ARQUITECTURA EXTERNA
Como se ha especificado anteriormente, la arquitectura externa refleja el alcance del
proyecto dentro del ámbito de todos aquellos elementos hardware que han de estar
presentes en la implantación del sistema.
Se instaura la arquitectura Cliente-Servidor, la cual responde a un modelo de
aplicación en que las tareas se reparten entre el proveedor de recursos, el servidor, y el
demandante, el cliente.
El cliente se erige como la parte activa de la relación, estando diseñado con la
asunción de recibir respuesta por cada petición que realice. El servidor, fracción pasiva, se
encarga de procesar dichas peticiones y enviar una respuesta a las mismas, orientando
siempre su actuación hacia la maximización de la eficiencia.
Además de la repartición de la capacidad de proceso, destacan las ventajas de tipo
organizativo como consecuencia de la centralización de la gestión de la información y la
separación de responsabilidades, lo que facilita y clarifica el sistema.
Esta arquitectura es propia de la mayoría de los servicios accedidos por Internet,
característica de este sistema, en el cual el usuario debe conectarse a la plataforma e-
Learning, alojada en la red, donde se alberga el chatbot.
La implantación de dicha arquitectura, desde un punto de vista general, tiene lugar de
la manera en que queda recogida por la siguiente ilustración:
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 64 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Los diferentes elementos que componen la arquitectura externa del sistema son los
siguientes:
Cliente. Se corresponde con el usuario que comienza la interacción con el
sistema. Dicho cliente será alumno de la asignatura Procesadores de
Lenguaje, y accederá a la plataforma de e-Learning en la que esté alojado el
chatbot. Una vez conectado, introducirá sus credenciales para acceder al
sistema. Aceptados éstos, su función como parte de la arquitectura se basará
en consultar al bot todas sus dudas acerca de la materia.
Plataforma e-Learning. El término e-Learning engloba procesos de
enseñanza-aprendizaje por medio de Internet. Una plataforma contenedora de
esa modalidad ofrece ambientes de aprendizaje diseñados e integrados en un
Cliente
w
Servidor
web
Plataforma
e-learning
BBDD
Ilustración 8 - Arquitectura externa del sistema
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 65 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
entorno privado, dotado de las herramientas necesarias para el aprendizaje y el
mejor seguimiento de la evolución del alumno. Generalmente, estos espacios
virtuales suelen ser del tipo Web 2.0 [ver Anexo A Vocabulario Técnico], cuya
principal característica es su completo enfoque al usuario final. Se trata de
entornos innovadores que generan colaboración entre usuarios, pudiendo estos
publicar información o realizar cambios en los datos.
Este concepto aplicado a la educación va íntimamente ligado al uso de
estrategias metodológicas, apoyadas en técnicas para la construcción de un
conocimiento de manera colectiva, teniendo como punto álgido la interacción
entre profesores o compañeros. Y, en este punto, destaca la aportación de la
tecnología chatbot.
Servidor web. Se trata del servidor encargado de gestionar las peticiones
realizadas por el cliente desde el sitio web en el que se aloja el chatbot.
Con una alta probabilidad, dicho servidor estará contenido dentro del propio
centro educativo, como consecuencia de los avances en conectividad y la gran
disponibilidad de banda ancha. Esto es posible gracias a Apache, uno de los
mejores y el más utilizado entre los servidores Web existentes. Apache se ha
labrado una gran reputación entre los servidores web gracias a su gran
estabilidad y confiabilidad, además del destacable aporte del grupo de
voluntarios con el que cuentan, destinados a planear y desarrollar todo lo
relativo a la plataforma.
Base de datos. Es el soporte de almacenamiento del sistema. Entre sus
registros, contará con la información relacionada con el acceso de usuarios al
sistema, el dominio de conocimiento del chatbot (apuntes de la asignatura
Procesadores del Lenguaje) y el procedimiento para reconocer los patrones
introducidos por el usuario en la entrada.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 66 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
4.2 ARQUITECTURA INTERNA
La arquitectura interna describe el alcance del proyecto dentro del ámbito de las
unidades funcionales programadas para la ejecución de las diferentes funcionalidades.
Se ha escogido la aplicación del patrón Modelo Vista Controlador (MVC), descrito
por primera vez en 1979 por Trygve Reenskaug [Reenskaug, 1979], entonces trabajando en
Smalltalk en laboratorios de investigación de Xerox. La implementación original está
descrita por Steve Burbeck [Burbeck, 1987] en Programación de Aplicaciones en
Smalltalk-80(TM): Cómo utilizar Modelo Vista Controlador.
Gracias a este modelo, se separará la lógica de negocio de la interfaz del usuario,
facilitando de esta manera la evolución por separado de ambos aspectos, e incrementando
la reutilización y la flexibilidad de la aplicación.
La lógica del interfaz va a cambiar con más frecuencia que la información
almacenada en la base de datos (lógica de negocio), de manera que este diseño impedirá
que, si hay necesidad de modificar el interfaz, haya que cambiar trabajosamente los datos
asociados.
Otras ventajas que el empleo de este patrón proporciona son la posibilidad de contar
con varias vistas para un mismo modelo, y el empleo de un mecanismo de configuración
de componentes mucho más tratable que el puramente basado en eventos (el modelo podría
verse como una representación estructurada del estado de la interacción).
Los elementos que conforman el patrón, Modelo, Vista y Controlador, se detallan a
continuación.
4.2.1 MODELO
Es responsable de acceder a la capa de almacenamiento de datos y de
comunicarse con el Controlador para, una vez establecida la conexión con la base
de datos, llevar a cabo las operaciones indicadas por éste. Además, se encarga de
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 67 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
definir las reglas de negocio, las cuales transforman la información contenida en
dichas bases de datos, delimitando la funcionalidad del sistema.
Asimismo, el Modelo lleva un registro del conjunto de vistas y controladores
de los que consta el sistema, que en la mayoría de las ocasiones suele ser numeroso.
Cabe destacar que, en caso de que se esté ante un Modelo activo, notificará a las
vistas los cambios que pueda producir en los datos algún agente externo, como
podría ser el caso de un proceso batch que actualizara los datos.
Ilustración 9 - Patrón MVC. Modelo
4.2.2 VISTA
La Vista es la encargada de recibir los datos del Modelo y mostrarlos al
usuario, es decir, se corresponde con el interfaz gráfico por medio del cual se
produce la interacción usuario-máquina.
Además, cuenta con un registro en el que se incluye cuál es su controlador
asociado.
Pueden dar servicio de actualización, para que sea convocado por el
Controlador o el Modelo (en este último caso si se trata de un modelo activo que
informa de los cambios en los datos producidos por otros agentes).
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 68 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
En este proyecto, la Vista se corresponde con el interfaz gráfico de acceso a la
plataforma y al del propio chatbot, alojado en la web, el cual se irá actualizando
conforme avance la dinámica pregunta-respuesta.
Ilustración 10 - Patrón MVC. Vista
4.2.3 CONTROLADOR
El Controlador es responsable de recibir los eventos de entrada y contener
reglas que definan la gestión de cada uno de ellos. Un ejemplo de regla podría ser:
“Si llega el Evento A, entonces ejecutar la Acción B”. Esta acción puede suponer
realizar peticiones al Modelo o la Vista, siendo una posible petición la llamada a la
función Actualizar().
En este Proyecto, el Controlador se encarga de tratar los eventos (entradas del
usuario) que se produzcan en el interfaz gráfico.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 69 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Ilustración 11 - Patrón MVC. Controlador
Las etapas que siguen a todo desarrollo basado en este patrón se recogen en este
Diagrama de Secuencia:
Ilustración 12 - Diagrama de secuencia
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 70 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
1. El evento es introducido por el usuario.
2. El Controlador recibe el evento y lo traduce en una petición al Modelo o,
directamente, a la Vista.
3. El Modelo, si es necesario, llama a la Vista para llevar a cabo su actualización.
4. Para actualizarse, la Vista puede solicitar datos al Modelo; operación gestionada
por el Controlador.
5. El Controlador recibe el control.
4.3 EVALUACIÓN DE ALTERNATIVAS
En este apartado se despliega un método para la evaluación de las alternativas
software que se presentan para el desarrollo de este sistema, de entre las que pueden cubrir
los requisitos especificados. Asimismo, se procede con la identificación de posibles riesgos
que puedan surgir durante el proceso de implementación.
Al evaluar diferentes alternativas, cada una de ellas debe ser descrita y analizada por
separado. Es poco probable que exista una sola alternativa técnica capaz de ofrecer una
solución satisfactoria, de manera que todas las opciones han de ser estudiadas
cuidadosamente.
La descripción de las alternativas, por tanto, recogerá los detalles específicos de cada
una de ellas, y un resumen de las razones para ser aceptada (pros) o rechazada (contras)
como posible solución.
4.3.1 SISTEMA GESTOR DE BASE DE DATOS (SGBD)
Como se ha especificado anteriormente, la arquitectura está apoyada en una
base de datos, la cual, entre sus registros, contará con la información relacionada
con el acceso de usuarios al sistema, el dominio de conocimiento del chatbot
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 71 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
(apuntes de la asignatura Procesadores del Lenguaje) y el procedimiento para
reconocer los patrones introducidos por el usuario en la entrada.
Este medio de almacenamiento será accedido por el Modelo del patrón MVC,
según las operaciones indicadas por el Controlador.
A la hora de optar por un SGBD que dé soporte a todos los datos que se
requieren, se presentan diversas opciones, entre las que destacan tres: Microsoft
Access, Oracle, y MySQL.
4.3.1.1 MICROSOFT ACCESS
Microsoft Access es un sistema de gestión de bases de datos relacionales para
los sistemas operativos Microsoft Windows, desarrollado por Microsoft y orientado
a ser usado en un entorno personal o en pequeñas organizaciones. Es un
componente de la suite ofimática Microsoft Office. Permite crear ficheros de bases
de datos relacionales que pueden ser fácilmente gestionadas por una interfaz gráfica
simple. Además, estas bases de datos pueden ser consultadas por otros programas.
Access permite manipular los datos en forma de tablas (formadas por filas y
columnas), crear relaciones entre ellas, consultas para buscar la información que se
necesita, formularios para ver, agregar y actualizar los datos de las tablas, informes
para presentar la información, y páginas de acceso a datos para ver, actualizar o
analizar los datos de la base de datos desde Internet o desde una intranet10
.
Ilustración 13 - Logotipo Access
10
Red privada que Internet usó como arquitectura elemental. Se trata de una red interna construida usando
los protocolos TCP/IP, que pueden ejecutarse en muchas de las plataformas de hardware y en proyectos por
cable.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 72 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
4.3.1.2 ORACLE
Oracle es un sistema de gestión de base de datos objeto-relacional
desarrollado por Oracle Corporation. Entre los datos que maneja se encuentran los
tradicionales (INTEGER, VARCHAR, NUMBER, etc) y algunos más complejos
tipo multimedia (imágenes, mapas, video clips, audio clips, etc).
Se considera a Oracle como uno de los sistemas de bases de datos más
completos, destacando su soporte de transacciones, estabilidad, escalabilidad y
soporte multiplataforma.
Ilustración 14 - Logotipo Oracle
Otros de sus rasgos más característicos son los controles de acceso,
autorización (todos los usuarios están autenticados por la base de datos) y
concurrencia, los modos de recuperación ante fallos, y su Diccionario de Datos
(incluye todas las tablas, vistas y packages de la base de datos).
De esta manera, las principales funcionalidades aportadas por Oracle son:
- Soporte y tratamiento de una gran cantidad de datos (GB).
- Soporte para multitud de usuarios accediendo concurrentemente a
datos.
- Seguridad de acceso a los datos, restringiendo dicho acceso a las
necesidades de cada usuario.
- Integridad referencial en su estructura de base de datos.
- Conectividad entre las aplicaciones de los clientes en sus puestos
de trabajo y el servidor de datos Oracle (soporte estructura
cliente/servidor).
- Conectividad entre bases de datos remotas.
- Portabilidad.
- Compatibilidad.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 73 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
4.3.1.3 MySQL
MySQL es un sistema de gestión de bases de datos relacional, multihilo y
multiusuario. Asimismo, se adapta a múltiples sistemas operativos (es
multiplataforma), y está desarrollado en C y C++, habiendo sido probado en un
amplio rango de compiladores.
MySQL AB, enero de 2008 es una subsidiaria de Sun Microsystems y ésta a
su vez de Oracle Corporation desde abril de 2009, desarrolla MySQL como
software libre en un esquema de licenciamiento dual. Por un lado, se ofrece como
software libre bajo la licencia GPL de la GNU; por otro, puede adquirirse una
versión comercial que únicamente se diferencia de la anterior en el soporte técnico
que la acompaña y la posibilidad de integrar el gestor en un software propietario
(las empresas que requieren incorporarlo a productos privados necesitan una
licencia especial para ello).
MySQL es utilizando con asiduidad en aplicaciones web, como Drupal o
phpBB, así como en diversas plataformas (Linux, Windows-Apache-MySQL-PHP,
Perl o Python). Sin embargo, su popularidad como aplicación web está sobre todo
ligada a PHP, que a menudo aparece combinado con MySQL.
Inicialmente, MySQL carecía de algunos elementos esenciales (ya suplidos)
en toda base de datos relacional, como son la integridad referencial11
y la integridad
de la información. Este inconveniente, sin embargo, no frenó la atracción de los
nuevos desarrolladores de webs dinámicas hacia este SGBD, fundamentalmente por
su simplicidad.
Ilustración 15 - Logotipo MySQL
11
Garantiza que una entidad (fila o registro) siempre se relaciona con otras entidades existentes en la base de
datos. Implica que en todo momento dichos datos sean correctos, sin repeticiones innecesarias, o datos
perdidos.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 74 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Entre las características más destacables de MySQL se encuentran:
- Velocidad y robustez.
- Portabilidad entre sistemas, con posibilidad de trabajar en
diferentes plataformas y sistemas operativos.
- Implementación multihilo.
- Sistema de contraseñas y gestión de usuarios flexible,
garantizando la seguridad en los datos.
- Rapidez en los joins, utilizando un multi-join de un paso
optimizado.
- Sistema de reserva de memoria muy rápido basado en threads.
- Replicación.
- Utilización de tablas hash en memoria, empleadas como tablas
temporales.
- Suporte para una gran cantidad de tipos diferentes de datos en
las columnas.
4.3.1.4 COMPARATIVA Y ELECCIÓN
Microsoft Access no se considera un sistema gestor completo, sino una base
de datos simple, dado que ofrece limitaciones en cuanto a la posibilidad de tener
muchos usuarios operando concurrentemente, la capacidad de almacenamiento (ha
de ser menor de 2GB) y la velocidad de consulta, además de ofrecer una falta de
consistencia y estabilidad. Estas características suponen puntos completamente
negativos, que se contraponen con la necesidad imperiosa del buen funcionamiento
de bases de datos requerido para este proyecto.
Oracle ofrece grandes prestaciones, sin embargo en este sistema no va a ser
necesario trabajar con un número demasiado elevado de registros ni de conexiones
simultáneas, lo cual, unido a su principal inconveniente: ser un gestor de pago,
incita a la elección de otra alternativa.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 75 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
MySQL permite realizar consultas a una gran velocidad, lo que hace de él uno
de los gestores de mayor rendimiento. Igualmente, ofrece un bajo coste de
tratamiento, facilidad de configuración e instalación, baja probabilidad de
corrupción de datos, y una gran seguridad, además de ser completamente gratuito.
Soporta perfectamente las necesidades de almacenamiento del proyecto. Este
gestor, efectivamente, disminuiría el riesgo que atañería a un posible bajo
rendimiento de la BBDD.
Por tanto, MySQL es el SGBD escogido.
4.3.2 INTERFAZ GRÁFICO
El interfaz es un programa creado para permitir la interacción usuario-
máquina, utilizando para ello un conjunto de imágenes y objetos gráficos para
representar la información y las acciones disponibles en el interfaz, además de dotar
al diseño de un mayor realismo.
Naturalmente, el interfaz gráfico supone el punto más importante de cara al
usuario del desarrollo del sistema. Por tanto, requiere un estudio minucioso de
todos sus aspectos, definiendo con precisión cada una de las funcionalidades de las
que conste, así como su modo de comunicación con los restantes puntos de la
arquitectura (fundamentalmente las bases de datos). De esta manera, deben
evaluarse las alternativas tecnológicas que se presentan en función del grado de
cumplimiento de los aspectos anteriores.
Cabe destacar la correspondencia existente entre el interfaz y la Vista del
patrón MVC.
Cuatro tecnologías se erigen como opciones para el desarrollo del interfaz
gráfico: ASP, JSP, PHP y LINGUBOT.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 76 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
4.3.2.1 ASP
Active Server Pages, más conocido como ASP, es una tecnología de
Microsoft “del lado del servidor” para páginas web generadas dinámicamente, que
ha sido comercializada como anexo a IIS12
.
ASP trata de ser solución para un modelo de programación rápida,
permitiendo utilizar diversos componentes ya desarrollados, como algunos
controles ActiveX13
, y otros considerados “del lado del servidor” tales como
CDNOTS, que permite la interacción de los scripts con el servidor SMTP14
que
integra IIS.
Una de las características más destacables de ASP es la facilidad de que dota
a la programación web, presentando objetos integrados como, por ejemplo, un
objeto de sesión basada en cookies, que va almacenando las variables pese al paso
de una página a otra.
Ciertamente, ASP puede considerarse una mezcla entre una página HTML y
un programa que da como resultado una página HTML que es enviada al cliente por
medio de su navegador, tal y como se muestra en la siguiente imagen:
12
Internet Information Services o IIS es un servidor web y un conjunto de servicios diseñados para el sistema
operativo Microsoft Windows.
13 Pequeños bloques empleados para la creación de programas que se pueden usar para crear aplicaciones
distribuidas que funcionen a través de Internet empleando navegadores web.
14 Simple Mail Transfer Protocol o SMTP (Protocolo Simple de Transferencia de Correo), es un protocolo de
la capa de aplicación, basado en textos utilizados para el intercambio de mensajes de correo electrónico entre
ordenadores u otros dispositivos.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 77 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Ilustración 16 - Esquema de funcionamiento de ASP
La principal ventaja del ASP es que se puede detectar el navegador del cliente
a la hora de realizar una petición, determinando, en consecuencia, la versión de
HTML que éste soporta. Asimismo, es un lenguaje liviano, muy fácil de programar
y presenta una gran sencillez a la hora de conectar con bases de datos.
Por el contrario, ASP limita su funcionamiento exclusivamente al empleo de
IIS, o lo que es lo mismo, de Microsoft Windows, además de alguna dificultad en
cuanto a estructuración de la programación; en una página ASP puede incluirse
cualquier clase de código: HTML plano, scripts, texto, etc., sin haber distinción
formal entre el contenido de una página y su comportamiento.
ASP.NET
Su framework más evolucionado y considerado su sucesor, ASP.NET, está
construido sobre el Common Language Runtime15
, permitiendo a los
programadores construir sitios web dinámicos, aplicaciones web y servicios XML,
facilitando, asimismo, la creación de páginas con AJAX.
15
El Common Language Runtime o CLR (entorno en tiempo de ejecución de lenguaje común) es el
encargado de compilar una forma de código intermedio llamada Common Intermediate Language (CIL)
dando lugar al código de máquina nativo, por medio de un compilador en tiempo de ejecución.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 78 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
El principal motivo de su creación fue el de resolver las limitaciones ASP y
posibilitar el desarrollo de software como servicio.
ASP.NET no sólo ha sustituido satisfactoriamente a ASP, sino que se ha
constituido como una de las opciones más demandadas a la hora de crear
aplicaciones web.
Ilustración 17 - Logotipo ASP.net
4.3.2.2 JSP
JavaServer Pages (JSP) es una tecnología que permite generar contenido
dinámico para web con programación en Java, en forma de documentos HTML o
XML fundamentalmente. Como todo contenido Java, ha sido desarrollado por Sun
Microsystems
Para la utilización de código Java, JSP permite el empleo de scripts. Además,
JSP se considera una manera alternativa y simplificada de construir servlets16
,
siendo toda página JSP capaz de realizar todas las funciones de un servlet, y
viceversa.
En JSP las páginas se crean de manera a como se crean en el ya citado ASP o
en PHP (del que se hablará en el próximo subapartado). Se generan archivos con
extensión .jsp que incluyen, dentro de la estructura de etiquetas HTML, las
sentencias Java a ejecutar en el servidor. Antes de que dichos archivos sean
funcionales, el motor JSP lleva a cabo una fase de traducción de esa página en un
servlet, implementado en un archivo class (Byte codes de Java). Esta fase de
16
Objeto diseñado para ofrecer contenido dinámico desde un servidor web, generalmente HTML.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 79 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
traducción se lleva a cabo habitualmente cuando se recibe la primera solicitud de la
página .jsp, aunque existe la opción de precompilar el código para evitar ese tiempo
de espera la primera vez que un cliente solicita la página.
El rendimiento de una página JSP es el mismo que tendría el servlet
equivalente, ya que el código es compilado como cualquier otra clase Java. Tanto
servlet como página JSP se ejecutan en una máquina virtual Java, lo cual permite
que, en principio, se puedan usar en cualquier tipo de ordenador, siempre que exista
una máquina virtual Java para él. Cada servlet o JSP se ejecuta en su propia hebra,
es decir, en su propio contexto; pero no se comienza a ejecutar cada vez que recibe
una petición, sino que persiste de una petición a la siguiente, de forma que no se
pierde tiempo en invocarlo (cargar programa + intérprete). Su persistencia le
permite tener un buen desempeño y ejecutar sus funciones (conexión a bases de
datos o manejo de sesiones, por ejemplo) de forma más eficiente que otras
tecnologías web que ejecutan el código de una manera puramente interpretada (al
hablar de JSP se habla de un lenguaje compilado).
Una nueva ventaja de JSP frente a otros lenguajes es el empleo de Java, que
permite crear clases para el manejo de la lógica de negocio y el acceso a datos de
manera minuciosa, lo cual admite la separación por niveles de las aplicaciones web,
siendo el archivo JSP el encargado de generar un documento HTML.
Otra ventaja es que JSP hereda la portabilidad de Java, y es posible ejecutar
las aplicaciones en múltiples plataformas sin cambios. Es común, incluso, que los
desarrolladores trabajen en una plataforma y que la aplicación termine siendo
ejecutada en otra.
Ilustración 18 - JSP de Java
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 80 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
4.3.2.3 PHP
PHP, de acrónimo recursivo (PHP Hypertext Preprocessor), es un lenguaje de
programación interpretado, diseñado, al igual que los dos lenguajes anteriores, para
la creación de páginas web dinámicas. Fue creado en 1994 por Rasmus Lerdorf,
habiendo delegado en la actualidad su gestión a “The PHP Group”.
PHP es utilizado principalmente para la interpretación realizada “del lado del
servidor”, aunque también puede emplearse desde una interfaz de línea de
comandos o en la creación de otros tipos de programas incluyendo aplicaciones con
interfaz gráfico, usando las bibliotecas correspondientes para ello.
Este lenguaje, que permite incrustar PHP dentro del código HTML, es el
server-side más utilizado por los desarrolladores de aplicaciones web. Una
característica de su programación es que no requiere declaración de tipos de
variables.
El modo más habitual de operar con PHP es ejecutarlo en un servidor web, el
cual toma el código PHP como entrada y crea una web de salida a partir de él. De
este modo, el código fuente escrito en PHP es invisible al navegador y al cliente, ya
que es el servidor el encargado de su ejecución, convirtiéndose la programación en
segura y confiable.
El funcionamiento de las páginas PHP alojadas en un servidor es, por tanto, el
siguiente:
- El navegador del cliente solicita el documento PHP.
- El servidor recoge la solicitud y localiza el documento, lanza el intérprete
de PHP y ejecuta su código.
- El intérprete genera el resultado en HTML, siendo devuelto al servidor
para que lo transfiera al cliente.
- El resultado se muestra en el navegador del cliente.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 81 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
PHP soporta la conexión a diferentes tipos de servidores de bases de datos:
Oracle, MySQL, ODBC, Firebird o Microsoft SQL Server, siendo particularmente
sencilla su interacción con MySQL. Asimismo ofrece compatibilidad con la gran
mayoría de los servidores web y sistemas operativos, como Windows, Linux o Mac
OS, por lo que se trata de un lenguaje multiplataforma.
Otra de sus grandes ventajas es su similariedad con la sintaxis de lenguajes de
programación estructurada, como C y PERL, lo cual permite a los nuevos
programadores de PHP aprender el lenguaje rápidamente.
PHP posee una amplia documentación en su sitio web oficial, estando todas
las funciones del sistema explicadas y ejemplificadas en un único archivo de ayuda.
Además, es open source, por lo que se presenta como una alternativa de fácil acceso
para todos los usuarios.
Para concluir, cabe destacar que PHP presenta una serie de funciones que
facilita el desarrollo de multitud de tareas prácticas y útiles para el desarrollo web,
como son las siguientes:
- Gestión de bases de datos. PHP incluye interfaces de acceso a la mayoría
de bases de datos comerciales (realizándose la conexión con las de
sistemas Microsoft mediante ODBC).
- Envío de correo electrónico. Permite enviar mensajes con texto simple,
sin formato, o con formato HTML desde una página web a una dirección
de correo electrónico, con posibilidad de definir los valores típicos del
envío (dirección de procedencia, asunto del mensaje, etc.).
- Gestión de archivos. Es posible la eliminación, creación, modificación y
traslado de archivos, además de transferencias FTP (File Transfer
Protocol) entre sistemas conectados a una red TCP (Transmission
Control Protocol).
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 82 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Ilustración 19 - Logotipo PHP
4.3.2.4 LINGUBOT
Como fue indicado en el apartado 2.1.3.1 Lingubot ofrece entornos de
desarrollo orientados a la construcción de agentes conversacionales inteligentes.
Lingubot asienta las bases de desarrollo de los agentes, en las cuales el
programador realiza las variaciones que considera oportunas para orientar su
chatbot hacia el dominio de conocimiento deseado.
Gracias a Lingubot se consigue que los agentes, a través de amplias
estructuras sintácticas desarrolladas para el procesamiento del lenguaje natural y el
uso de métodos complejos de estructuración de información, empiecen a mostrar un
comportamiento que los usuarios interpretarán como propios de ser humano.
Para ello, cuenta con conexión a bases de datos, en las cuales se almacenan
las palabras específicas del diálogo con el usuario, y un historial de la conversación.
4.3.2.5 COMPARATIVA Y ELECCIÓN
Como es obvio, a la hora de decantarse por una tecnología u otra, han de
tenerse en cuenta aquellos aspectos y características de las mismas que afecten al
desarrollo del proyecto.
La primera de ellas es la gratuidad. Al emprender un proyecto informático, y
fundamentalmente si se trata de un Proyecto Fin de Carrera, el coste de desarrollo
es un aspecto muy importante. En este sentido, tanto JSP como PHP son de libre
acceso, mientras que ASP.NET y Lingubot requieren pago por licencia.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 83 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
La segunda hace referencia a la facilidad para integración con plataformas e-
Learning, entorno al que se adherirá el sistema. En este aspecto, sólo PHP presenta
una fácil unificación en este tipo de plataformas. En ASP este proceso es altamente
complejo (destaca que la plataforma e-Learning desarrollada por la Universidad
Pontificia Comillas, SIFO, Sistema Integral de Formación On-line, haya sido
desarrollada en ASP), al igual que ocurre con JSP y Lingubot.
Otro punto importante es la sencilla integración con herramientas de
procesado del Lenguaje Natural, como POSTS, PARSERS o analizadores
morfológicos (Flex, utilizado para tratar los eventos producidos en el interfaz), algo
que sólo cumplen PHP y JSP.
Uno de los objetivos del desarrollo del proyecto es poder ejecutarlo desde
cualquier plataforma y navegador para, así, aumentar su grado de acercamiento a
potenciales usuarios. Tanto PHP como JSP y LINGUBOT cubren este aspecto.
Un resumen de las características evaluadas y las tecnologías que las soportan
se recoge en la siguiente tabla:
CARACTERÍSTICAS
GRATUIDAD
INTEGRACIÓN PLATAFORMAS E-LEARNING
INTEGRACIÓN HERRAMIENTAS PROCESADO DEL LN
INDEPENDENCIA SISTEMA OPERATIVO
INDEPENDENCIA NAVEGADOR
Tabla 1 - Resumen características evaluadas y tecnologías que las soportan
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 84 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Por tanto, habría que decantarse entre JSP y PHP.
Una ventaja que presenta JSP frente a los demás es que es un lenguaje
compilado (los restantes son interpretados). Este hecho hace que sea típicamente
diez veces más rápido que ellos.
Por otro lado, si bien PHP no obliga a quien lo usa a seguir una determinada
metodología a la hora de programar (muchos otros lenguajes tampoco lo hacen),
aun haciéndolo, el programador puede aplicar en su trabajo cualquier técnica de
programación o de desarrollo que le permita escribir código ordenado, estructurado
y manejable. Un ejemplo de ello son los numerosos desarrollos que en PHP se han
hecho utilizando el patrón Modelo Vista Controlador (elegido para este desarrollo),
ya que PHP comulga completamente con esta metodología.
Además de ello, una característica fundamental de cara a las pretensiones de
este proyecto, es la facilidad de integración con las plataformas de e-Learning. Lo
cual, decanta claramente la balanza a favor de PHP. Además, su rendimiento es
verdaderamente bueno y destaca por su conectividad con MySQL, motor de base de
datos elegido.
Por tanto, PHP es la tecnología elegida.
4.3.3 TRATAMIENTO DE LOS EVENTOS PRODUCIDOS EN EL
INTERFAZ
Por los mismos motivos expresados en el punto anterior, PHP será la
tecnología empleada para el tratamiento de los eventos producidos en el interfaz, es
decir, las cadenas de entrada introducidas por el usuario.
Sin embargo, para analizar la cadena morfológicamente se requiere una
herramienta precisa de procesamiento del Lenguaje Natural, y poder descomponer
así la cadena de entrada para su correcto entendimiento. Por sus características
particulares, acordes a las necesidades del Proyecto, Flex ha sido el elegido.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 85 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
4.3.3.1 FLEX
Flex17
es una herramienta de análisis morfológico diseñada para generar
escáneres, es decir, programas que reconocen patrones léxicos en un texto. Es
gratuita, y creada por el proyecto GNU18
.
Flex es capaz de reconocer las expresiones regulares previamente definidas,
según la descripción del escáner a generar, en la cadena de entrada, la cual divide
en tokens19
para su correcto análisis.
Este programa evalúa un fichero de entrada de instrucciones y genera un
analizador morfológico de acuerdo a las especificaciones. Las reglas de
reconocimiento tienen la estructura [patrón]-[acción], o lo que es lo mismo, si se
reconoce en la cadena de entrada alguno de los patrones establecidos, se ejecutará
la acción que se detalle a continuación, escrita en código C. Esa acción puede
conllevar el inicio de un nuevo estado.
La organización del código Flex se divide por estados, los cuales determinan
la estructura lógica de la cadena introducida. De acuerdo a ello, las palabras de la
cadena de entrada van transitando de estado a estado.
Por ejemplo, si se habla de fechas determinadas por la expresión regular:
/[0-9]{2}\/[0-9]{2}[0-9]{2}\/[0-9]{2}/
(Se usa como separador de la expresión regular el carácter "/", por
tanto, los caracteres "/" propios del formato de fecha tienen que ir protegidos
mediante la contrabarra ("\"). El {2} de la expresión indica que se tienen dos
dígitos).
17
http://flex.sourceforge.net/ 18
www.gnu.org 19
Un token, también llamado componente léxico, es una cadena de caracteres que tiene un significado
coherente dentro de un lenguaje de programación, siendo un identificador, palabra reservada, constante
numérica o literal, etc. del mismo.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 86 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Los estados construidos obligarán a que, por cada dos dígitos introducidos,
deba encontrarse una barra ‘/’, habiendo seis dígitos y tres barras en total.
Flex es una herramienta utilizada para la construcción de compiladores. Con
este propósito, según va encontrando identificadores en el flujo de entrada, los
almacena en una tabla de símbolos, la cual contiene información adicional como el
tipo de dato y la localización de la variable en memoria.
Ilustración 20 - Logotipo de GNU
4.4 ARQUITECTURA ESPECÍFICA
Una vez habiendo definido las Arquitecturas Externa e Interna, así como las
tecnologías que se emplearán en la implantación de cada una, se muestra una imagen que
recoge el tránsito de información y el lugar físico (cliente o servidor) en el que se
desarrollan cada una de las operaciones a llevar a cabo.
Como se puede apreciar en la figura, el cliente web consta de dos partes
fundamentalmente, el interfaz y la sección de validación de entrada. Para implementar el
estilo del interfaz se han empleado HTML5, CSS y J-Query.
El módulo de validación de entrada emplea AJAX, JQuery y Javascript, para la
actualización asíncrona de la vista, y es el encargado de enviar la pregunta al servidory
esperar su respuesta. La funcionalidad aportada por AJAX es vital para este tipo de
sistemas; ya que permite realizar cambios sobre la página sin necesidad de recargarla de
nuevo, lo que aumenta la interactividad, velocidad y usabilidad del sistema.
El servidor web contiene tres partes fundamentalmente, el módulo de análisis de
pregunta, programado en PHP, el algoritmo de respuesta, programado con el analizador
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 87 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
morfológico Flex, y una base de datos de términos construida a través de una ontología de
términos de la asignatura.
Un pequeño resumen de las tecnologías empleadas para el desarrollo de este sistema
quedan recogidas por la siguiente ilustración:
Ilustración 21 – Arquitectura específica
4.5 ANÁLISIS DE RIESGOS
La metodología de Ciclo de Vida en Espiral escogida para el desarrollo del Proyecto
permite llevar a cabo un análisis de riesgos con el que se evalúa de manera más completa
el proceso, y se va evolucionando el sistema de forma consistente.
Asegurar el éxito de un proyecto suele implicar saber tomar las decisiones correctas
en el momento oportuno, y saber medir las consecuencias de dichas decisiones, teniendo
conciencia de que la mayoría de las soluciones implican riesgo. De hecho, a medida que se
SERVIDOR WEB CLIENTE WEB
Validación de entrada
Interfaz
Análisis de la pregunta
Algoritmo de respuesta
Base de Datos
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 88 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
añaden requerimientos y se incrementa la complejidad tecnológica de los proyectos,
aumenta el nivel de riesgo de los mismos.
Comúnmente, el riesgo se define como la posibilidad de materialiazción de una
amenaza, siendo ésta la ocurrencia de un evento con un impacto negativo para el sistema.
Los principales riesgos que pueden poner en peligro el desarrollo del proyecto, así
como las estrategias escogidas para su tratamiento, son los siguientes:
RIESGO DESCRIPCIÓN ESTRATEGIA PLAN
R1
Cambio de requerimientos Mitigar el riesgo
Elección de una arquitectura que
soporte modificaciones sin que la
consistencia del sistema se vea
afectada
R2 Baja calidad del sistema Mitigar el riesgo
Elección de una tecnología de
calidad y que responda a las
necesidades
R3
Bajo rendimiento de la BBDD Mitigar el riesgo
Elección de un SGBD acorde a las
exigencias de rendimiento del
sistema
R4 Falta de experiencia en el uso
de las tecnologías de desarrollo Mitigar el riesgo Plan de formación en la tecnología
R5 Entorno nuevo de desarrollo,
con escasas referencias Aceptar el riesgo
Comienzo temprano del desarrollo,
a fin de resolver a tiempo los
problemas que puedan surgir
R6 Posibilidad de no entregar
dentro de plazo el Proyecto Evitar el riesgo
Modificar el tiempo de
planificación del proyecto y reducir
el asignado a ciertas actividades.
Tabla 2 - Principales riesgos del Proyecto
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 89 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
CAPÍTULO 5
DISEÑO
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 90 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
DISEÑO
En este capítulo se abordan los detalles del proceso de diseño del sistema, una vez
escogida la Arquitectura de la que consta, teniendo en cuenta sus características
particulares.
Por un lado, se explicará el diseño de la base de datos, con las tres divisiones de las
que se consta: la primera ejerce como almacén de los patrones claves a identificar en la
entrada del usuario; la segunda, consta de las cuestiones en que los alumnos han fallado en
anteriores exámenes de la asignatura, así como de la información de acceso de los alumnos
a la plataforma (nombre de usuario y contraseña); la última, recopila la información
correspondiente a la materia de la asignatura sobre la que se basa el sistema, Procesadores
del Lenguaje.
Por otro lado, se presentará el diseño del interfaz gráfico con el que interactuará el
usuario.
5.1 DISEÑO DE LA BASE DE DATOS
En este apartado se procede a describir las tres divisiones presentes en la base de
datos. Son consideradas de forma disjunta debido a su total independencia. Conviene
recordar que su contenido estará en inglés.
A continuación se muestra el Modelo Relacional de la base de datos, el cual muestra
con total evidencia la independencia existente entre la mayoría de las tablas:
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 91 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
5.1.1 SECCIÓN DE PATRONES CLAVE
La sección de patrones clave tiene como objetivo almacenar las palabras y
expresiones que permiten orientar la conversación hacia un entorno comprensible
por el bot. Se trata de términos presentes en toda conversación típica, ajenos a los
conceptos propios de la materia académica. Normalmente, suelen ser los iniciadores
de conversación, por lo que, se entiende, se encontrarán en las primeras entradas
introducidas por el usuario.
En este ámbito, se presentan varias tablas, completamente independientes
unas de otras, que no guardan relación entre sí.
Buy SmartDraw!- purchased copies print this
document without a watermark .
Visit www.smartdraw.com or call 1-800-768-3729.
Ilustración 22 - Modelo Relacional de la base de datos
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 92 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Saludos
Contiene palabras y expresiones utilizadas típicamente para saludar.
Tiene una sola columna, el propio saludo, clave de la tabla. Por tanto,
para su detección, debe existir una correspondencia literal entre lo
introducido por el usuario y la expresión almacenada.
- Ejemplo de contenido: hi, hello, hi there.
Tabla 3 - Estructura de Saludos
Estados
Contiene expresiones utilizadas para conocer cómo se encuentra el
interlocutor. Tiene una sola columna, estado, clave de la tabla. Por
tanto, para su detección, debe existir una correspondencia literal entre
lo introducido por el usuario y la expresión almacenada.
- Ejemplo de contenido: how are you doing, how are you, how are
getting on.
Tabla 4 - Estructura de Estados
Insultos
Contiene insultos, así como palabras y expresiones malsonantes. Tiene
una sola columna, insulto, clave de la tabla. Por tanto, para su
detección, debe existir una correspondencia literal entre lo introducido
por el usuario y la expresión almacenada.
- Ejemplo de contenido: asshole, jerk, stupid.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 93 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Tabla 5 - Estructura de Insultos
Información
Contiene la información que el chatbot debe conocer sobre sí mismo y
la asignatura. Su clave es la columna número, identificador de la
respuesta.
Destaca que, para ciertas repuestas, el sistema abre un pop-up con el
documento que las certifica. Por ejemplo, si el usuario pregunta que en
qué aula tendrá lugar el próximo examen de la asignatura, el chatbot
añadirá a su respuesta el documento con toda la información acerca del
examen.
La estructura de la tabla es la siguiente:
Tabla 6 - Estructura de Información
- numero es el identificador de la respuesta.
- pregunta contiene los pronombres interrogativos que
conducen a la formulación de la clase de pregunta.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 94 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
- pclave1, pclave2, pclave3 contienen palabras claves
encontradas en la entrada, asociadas a una determinada
respuesta.
- respuesta contiene la contestación a la pregunta, ya
comprendida.
- documento contiene el directorio donde se almacena la
imagen que certifica la respuesta dada.
Este método de almacenamiento de la información otorga mayor
flexibilidad al modo de formulación de preguntas; no debe existir
correspondencia literal entre lo formulado y lo almacenado en la base
de datos, simplemente ha de existir la consonancia con ciertas palabras
de la entrada.
5.1.2 SECCIÓN DE INFORMACIÓN DEL ALUMNO
La sección de información del alumno contiene la información relacionada
con el alumno que el sistema necesita para su correcto funcionamiento. Se
requieren, por un lado, los datos de acceso al sistema de los alumnos; por otro, la
las cuestiones en que los alumnos han fallado en anteriores exámenes de la
asignatura.
Usuarios
Contiene los usuarios que están identificados en el sistema, así como
sus respectivas contraseñas. Tiene dos columnas idusuario, clave de la
tabla y clave extranjera, y password.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 95 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Tabla 7 - Estructura de Usuarios
Esta tabla, por medio de idusuario se mantiene relacionada con la tabla
Exámenes; el alumno identificado en el sistema podrá tener materia que
debería revisar.
Exámenes
Tabla, completada por el profesor de la asignatura, que almacena los
contenidos en los que cada usuario ha fallado en los exámenes de la
asignatura, en los cuales, por tanto, debería de hacer especial incisión.
Además, incluye el número de página de los apuntes en los que se
encuentran dichos contenidos, para poder mostrárselos al realizarle el
recordatorio.
La clave principal la conformarán idusuario, identificador del usuario,
y numDiapositiva, número de la diapositiva, debido a que un mismo
alumno puede tener distintos conceptos que revisar, depositados en
distintas diapositivas.
Tabla 8 - Estructura de Exámenes
De este modo, se tienen dos tablas relacionadas entre sí, según muestra el
siguiente Modelo Relacional, por el que se deduce que un usuario podrá tener de 0
a ∞ contenidos que revisar.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 96 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Ilustración 23- Modelo relacional Usuarios-Exámenes
5.1.3 SECCIÓN DE CONTENIDOS DE LA ASIGNATURA
Esta sección es responsable del almacenamiento del contenido de la
asignatura académica. El modo de almacenamiento y referencia a la misma resulta
imprescindible para hacer una búsqueda eficaz, en términos de tiempo, y positiva, en
términos de consecución de respuesta a la pregunta del usuario.
Únicamente contiene una tabla, constituida a través de una ontología de
términos de la asignatura, explicada a continuación:
Diapositivas
Tiene por clave principal id, identificador de cada registro. La
estructura de la tabla es la siguiente:
Tabla 9 - Estructura de Diapositivas
- id es el identificador del registro.
- diapo almacena el número de la diapositiva que debe
mostrarse.
Buy SmartDraw!- purchased copies print this
document without a watermark .
Visit www.smartdraw.com or call 1-800-768-3729.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 97 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
- pclave es un conjunto de palabras clave que se asocian con el
contenido de la diapositiva.
- pregunta contiene un pronombre interrogativo que marca el
modo en que se puede preguntar por dichas palabras clave.
- respuesta almacena la respuesta asociada a las palabras clave
y el pronombre interrogativo empleado por el alumno.
Este método de almacenamiento de la información, al igual que ocurría
con el de la tabla Información, otorga mayor flexibilidad al modo de
formulación de preguntas, ya que tampoco debe existir correspondencia
literal entre lo formulado y lo almacenado en la base de datos, sino
consonancia con ciertas palabras de la entrada.
5.2 MODELO DE INTERFAZ
Al tratarse de un sistema interactivo, el desarrollo del interfaz cobra especial
relevancia, puesto que es el medio de contacto entre el usuario y la máquina. Por tanto,
deben definirse con detalle todos y cada uno de los aspectos que lo conforman,
garantizando, además de su funcionalidad, el cumplimiento de los siguientes
requerimientos:
Facilidad de comprensión y uso.
Diseño ergonómico mediante la colocación estudiada de los componentes
visuales (botones, imágenes, mensajes de texto y barras de desplazamiento),
evitando la ambigüedad y garantizando un claro flujo visual.
Las operaciones serán rápidas, con efectos inmediatos.
Buen uso de la tipografía y el tratamiento del color.
Estética cuidada. Si bien no es el primer objetivo (no por no ser bonito un
interfaz deja de funcionar)
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 98 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Una vez esclarecidos los puntos anteriores, se presenta el modelo de interfaz del
sistema.
El primer módulo se corresponde con la ventana de acceso a la plataforma. Debe
tener un diseño orientado a la sencillez y facilidad de uso. No se proporcionará la opción
de darse de alta a la plataforma, dado que sólo los alumnos de la asignatura, los cuales
contarán ya con su información de acceso, podrán incorporarse a la misma. Esto, queda
recogido en la Ilustración 24.
Ilustración 24 - Ventana de acceso al chatbot
Una vez que se produce la verificación de los credenciales del usuario, aparecerá la
ventana principal del sistema, la del propio chatbot. En ella, se producirá toda la
comunicación con el alumno.
El primer aspecto que destaca ante el usuario es el avatar gráfico que representa al
bot. Este, cambiará su imagen en función del contenido hacia el que haya evolucionado la
conversación, constando de un total de 9 imágenes distintas.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 99 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Ilustración 25 - Conjunto de imágenes que puede mostrar el bot
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 100 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Además de la imagen, se cuenta con otros cuatro elementos gráficos:
Un área de texto en el que puede leerse la conversación pregunta/respuesta
mantenido con el sistema.
Un scrollbar o barra de desplazamiento, que permiten desplazar el
contenido del área de texto hacia un lado u otro, con el fin de poder
visualizar todo su contenido.
Un campo de texto, donde el usuario introduce su consulta.
Un botón, a través del cual el alumno envía la consulta al sistema.
Ilustración 26 - Conversación con el chatbot
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 101 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
CAPÍTULO 6
IMPLEMENTACIÓN
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 102 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
IMPLEMENTACIÓN
En este capítulo se abordan los detalles del proceso de implementación del sistema,
tras haber realizado su diseño, así como las pruebas realizadas para comprobar su correcto
funcionamiento.
Como contenido fundamental de esta sección, se presentarán los diferentes módulos
que componen el núcleo central de desarrollo, cimentados sobre la Arquitectura
anteriormente descrita, detallando sus funciones principales y funcionamiento, así como el
modo en que se logra su interconexión.
Asimismo, se hará un amplio pero concreto recorrido de los aspectos y técnicas de
desarrollo exclusivas de este Proyecto, las cuales le otorgan su distinción y particularidad.
6.1 CARACTERÍSTICAS DEL BOT
Antes de comenzar con la especificación técnica del desarrollo, y para comprender
en mayor medida los motivos de los métodos de implementación empleados, se describirán
algunas de las características que definen el comportamiento del chatbot.
Naturalmente, todo chatbot es creado con un objetivo, y está especializado en un
ámbito concreto. Como se ha especificado anteriormente, éste tendrá como dominio de
conocimiento una asignatura académica, Procesadores del Lenguaje. Este conocimiento,
tendrá como idioma nativo el inglés; consecuentemente, la comunicación con el mismo ha
de realizarse en esta lengua.
Cabe destacar que el bot responderá únicamente a cuestiones que versen sobre la
asignatura; es decir, estará completamente ceñido a la materia, salvo alguna honrosa
excepción, propia de todo chatbot. Éstos, comúnmente, tienen la capacidad de responder a
preguntas, consideradas de baja prioridad, acerca de conocimientos que deben tener sobre
sí mismos. “¿Quién es tu creador?”, “¿Dónde vives?” o “¿Cómo te llamas?”, son algunas
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 103 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
de las preguntas, “extraoficiales”, que este sistema podrá contestar al usuario que se las
formule.
Un punto importante en el desarrollo de este sistema consiste en otorgar flexibilidad
y realismo al proceso de comunicación con el chatbot; para ello, se opta por utilizar
diferentes estrategias:
Dar ilusión de estar escuchando. Para ello se incluyen subcadenas de la
entrada del usuario en la respuesta.
Admitir ignorancia. El programa reconoce no saber la respuesta a algunas
preguntas.
Realizar un adecuado cambio de tema. Arrastrar al usuario hacia la
conversación que el bot quiere, en lugar de ser él quien la elija.
Reconocer cuando el usuario divaga y no formula una pregunta orientada a
conocer algo sobre la materia, instándole a hacerlo.
Una funcionalidad añadida al simple procedimiento de pregunta-respuesta es que el
bot, cuando reconoce una pregunta sobre la disciplina que debe resolver al usuario, además
de proporcionarle la correspondiente respuesta, recurre a la página de los apuntes de la
asignatura en la que se verifica la contestación ofrecida, mostrándosela por pantalla. Este
hecho, evidentemente, refuerza la explicación proporcionada y, de alguna manera, sirve
como referencia visual al alumno.
Otro aspecto a tener en cuenta es el seguimiento que se realizará de la evolución del
alumno durante el curso. El sistema conocerá la materia que necesita revisar, haciéndole un
recordatorio de manera automática.
Asimismo, la conversación se da por finalizada cuando el alumno se despide del
chatbot.
Una vez conocidas estas características generales, se puede comenzar a detallar las
condiciones más específicas de desarrollo.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 104 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
6.2 MÓDULOS
Como se dejó constancia en la especificación de la arquitectura, el sistema contará
con varios módulos, especializados cada uno en una función concreta, y comunicados
según recoge la siguiente imagen:
6.2.1 INTERFAZ
A través del interfaz se produce la interacción del usuario con el sistema; se
trata del elemento virtual que identifica visualmente a la aplicación. Un recorrido
más amplio de las características del mismo se realiza en el Capítulo 6 [ver 6.2
Modelo de interfaz].
SERVIDOR WEB CLIENTE WEB
Ilustración 27 - Arquitectura específica
Validación de entrada
Interfaz
Análisis de la pregunta
Algoritmo de respuesta
Base de Datos
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 105 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
6.2.2 VALIDACIÓN DE ENTRADA
El módulo de Validación de Entrada se encarga de dar la bienvenida al
usuario al sistema, y realizar una primera consulta en base de datos, para comprobar
si el usuario debería repasar contenidos de la asignatura en función de los
resultados obtenidos en sus exámenes. En caso de que así sea, se le mostrará la
siguiente pantalla, donde se le indicará que sus resultados obtenidos no han sido
demasiado buenos, y que debería revisar los conceptos recogidos en las ventanas
que aparecen a su derecha:
Ilustración 28 - Propuesta de revisión de contenidos
En caso de que el alumno no tenga contenidos que repasar, será felicitado:
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 106 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Ilustración 29 - Felicitación por los resultados académicos
Este módulo, además, tiene como objetivo enviar la pregunta al servidor
(previa validación de la misma), donde se analizará, y esperar la respuesta,
incluyéndola, tras ser recibida, al final del área de texto.
Este módulo, albergado en el cliente, utiliza AJAX para recargar los
contenidos de la página de manera dinámica y aumentar, así, su funcionalidad.
La validación de la entrada se realiza eliminando de ella los símbolos y
caracteres que puedan dificultar su comprensión por los siguientes módulos que la
traten (?, !, [, ], etc.), según su equivalencia con los correspondientes códigos
ASCII.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 107 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
6.2.3 ANÁLISIS DE LA PREGUNTA
El módulo de Análisis de la Pregunta, íntegramente programado en PHP y
albergado en el servidor web, tiene como objetivo, y como su propio nombre
indica, analizar el contenido de la entrada del usuario, para detectar en ella los
patrones iniciales coincidentes con el contenido de las tablas Saludos, Estados,
Insultos, e Información de la base de datos, según recoge el apartado [ver 5.1.1
Sección de patrones clave].
Cuando el usuario introduce la expresión, es enviada por el módulo de
Validación de Entrada al servidor, donde queda recogida por el módulo de Análisis
de la Pregunta, el cual, separa cada una de las palabras de la misma en un vector,
para proceder, a continuación con su comparación con las tablas anteriores. La
contrastación con cada una de ellas se realiza de manera independiente, por lo que
dichos procedimientos pueden considerarse sub-módulos dentro del análisis.
// Eliminación de caracteres ASCII sobrantes
for($a = 33; $a < 48; $a++)
{
$texto = str_replace($a,"",$texto);
}
for($a = 58; $a < 65; $a++)
{
$texto = str_replace($a,"",$texto);
}
for($a = 91; $a < 97; $a++)
{
$texto = str_replace($a,"",$texto);
}
for($a = 123; $a < 255; $a++)
{
$texto = str_replace($a,"",$texto);
}
Ilustración 30 - Fragmento de código donde se eliminan los caracteres ASCII
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 108 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
El primer sub-módulo que entra en acción es el que contrasta la información
con la tabla de Insultos. El sistema se encarga de detectar palabras malsonantes en
la pregunta, y de proporcionar una respuesta adecuada a las circunstancias. Se
pretende mantener una conversación en un ambiente respetuoso y cordial, de
manera que lo primero que se vigila es el cumplimiento de esta pauta.
Esta unidad contabiliza el número de ocasiones en que el alumno ha hecho
uso de este tipo de vocabulario, hasta un máximo permitido de tres. En la primera
de ellas, le informa de la prohibición del empleo de dichos términos. En la segunda,
le advierte de que, en caso de una nueva repetición, se le expulsará de la aplicación.
Si tal caso tiene lugar, se le informa de su expulsión y se procede con ella.
Esta funcionalidad viene reflejada por la siguiente imagen:
Ilustración 31 – Submódulo de insultos
/*******************************************************/
/*
/* SUBMÓDULO DE INSULTOS
/*
/*******************************************************/
$sql = "SELECT * FROM tacos WHERE ";
for($a = 0; $a < count($texto1); $a++)
{
if($texto1[$a] != '')
{
if($a != 0)$sql .= 'OR ';
$sql .= "TACOS LIKE '".$texto1[$a]."'";
}
}
$result=mysql_query($sql,$conn);
$query = mysql_fetch_array($result);
$resultado=$query[0];
/* ETCÉTERA */
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 109 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Ilustración 32 - Secuencia de insultos
Una vez pasado el filtro impuesto por el primer sub-módulo, se procede a
comprobar si el usuario ha saludado. En caso afirmativo, el bot hará lo propio,
dándole la bienvenida.
El sistema, asimismo, tiene contabilizadas el número de ocasiones en las que
el usuario saluda, de manera que, en caso de realizarlo más de una vez, le recordará
que ya lo hizo previamente, animándole a formular una pregunta relacionada con la
asignatura.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 110 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
/*****************************************************/
/*
/* SUBMÓDULO DE SALUDO Y BIENVENIDA
/*
/*****************************************************/
$sql = "SELECT * FROM saludos";
// METE TODO EN UNA MATRIZ Y COMPARA CON LA CADENA DE
ENTRADA PARA VER SI COINCIDE
$result=mysql_query($sql,$conn);
$row=mysql_fetch_array($result);
$flag=0;
$cadenabd="";
while ($row)
{
$row[0]=strtolower($row[0]);
$cadenabd=$row[0];
$cadenabd=explode(" ", $cadenabd);
for ($j=0; $j< count($cadenabd);$j++)
{
for($a = 0; $a < count($texto1); $a++)
{
$texto1[$a]=strtolower($texto1[$a]);
if(strcmp($cadenabd[$j],$texto1[$a])==0)
{
$flag=1;
}
}
}
$row=mysql_fetch_array($result);
}
mysql_free_result($result);
if($flag==1)
{
$cont=LeerFicheroInsultos(1); //Lee el fichero por
donde ha pasado para decirle el número de veces que
ha saludado
/* ETCÉTERA */
Ilustración 33 - Submódulo de saludo y bienvenida
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 111 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
El tercer sub-módulo que analiza la entrada es el de Estados, el cual se
encarga de dar respuesta a preguntas destinadas a conocer cómo se encuentra el bot,
cuál es su estado.
Por último, el sub-módulo de Información finaliza el análisis. Su objetivo es
contestar cuestiones básicas sobre el propio chatbot (quién te creó, dónde vives,
etc.) y la asignatura (cuáles son la hora y aula del próximo examen, cuál es
despacho de tutorías, quién es el profesor de la asignatura, etc.
Destaca que, para ciertas repuestas, el sistema abre un pop-up con el
documento que las certifica. Por ejemplo, si el usuario pregunta que en qué aula
tendrá lugar el próximo examen de la asignatura, el chatbot añadirá a su respuesta
el documento con toda la información acerca del examen.
Ilustración 34 - Pregunta por el aula en la que tendrá lugar el examen
Para ser capaz de responder a esta amplia variedad de preguntas, se analiza la
presencia de un pronombre interrogativo y de una serie de palabras clave que deben
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 112 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
aparecer junto a él. Una muestra de ello es que, para comprender que se le está
preguntado por la hora del examen y elaborar consecuente respuesta, se deberá
encontrar el pronombre interrogativo what, junto con la palabra time y la palabra
exam.
En caso de que ninguno de los sub-módulos anteriores hayan sido capaces de
proporcionar una respuesta adecuada (siempre que la pregunta cubra las
características propias de ellos), la entrada pasará íntegra al Algoritmo de
Respuesta, que analizará de una manera más profunda la composición de la misma.
En caso de que alguno haya dado respuesta a la entrada, se enviará al
Algoritmo de Respuesta las restantes palabras de la cadena, puesto que las
anteriores ya han sido validadas.
El modo de envío de la cadena al Algoritmo de Respuesta será a través de un
fichero lecturaflex.txt, añadiendo a la cadena el carácter ‘#’, el cual indicará el fin
de la entrada.
$texto=$texto.= '#'; //se concatena el # al final
// Se abre el fichero en modo escritura
$DescriptorFichero = fopen("lecturaflex.txt","w");
fputs($DescriptorFichero,$texto);
// Se cierra el fichero
fclose($DescriptorFichero);
Ilustración 35 - Fragmento de código donde se concatena el carácter '#' y se envía la cadena al
Algoritmo de Respuesta
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 113 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
6.2.4 ALGORITMO DE RESPUESTA
Cuando se habla de Algoritmo de Respuesta se quiere hacer referencia,
fundamentalmente, a aquéllas respuestas académicas extraídas de los apuntes de la
asignatura que el bot proporciona al alumno.
Dicho Algoritmo ha sido desarrollado en Flex, cuyo funcionamiento y
organización general se explican a continuación.
6.2.4.1 FUNCIONAMIENTO Y ORGANIZACIÓN GENERAL DE FLEX
El analizador morfológico arranca con la invocación de la función yylex()
desde el main del programa, generando un código C lex.yy.c .Este código se
compila para obtener un ejecutable, el cual lee un fichero de texto y, en función de
los patrones y las instrucciones codificadas, genera un fichero de salida con los
resultados finales del analizador morfológico.
Ilustración 36 - Esquema de ficheros en Flex
Los ficheros Flex tienen una estructura interna específica, así como una
extensión .lex. La estructura más simplificada está dividida en tres partes. La
primera consiste en la definición de las librerías C y de la cabecera del programa.
La segunda contiene el conjunto de reglas y estados que compondrán el analizador
léxico; mientras que la tercera se compone del main del código C y de otras
funciones complementarias.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 114 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Ilustración 37 - Estructura interna de un fichero Flex
Las secciones de definiciones y funciones complementarias se copian
completamente a un fichero en la compilación del .lex, por tanto, si existen errores
en alguna de las dos partes, éstos no serán notificados hasta dicha compilación.
Cada sección empieza con los símbolos %{ y termina con los
correspondientes }%, como puede comprobarse en la ilustración 38.
%{
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<time.h>
// Declaración de funciones
void despedida(char *, int);
void agradecimiento(char *);
/* ETC. */
// VARIABLES
int switch_despedida = 0;
/* ETC. */
FILE *fcontador;
/* ETC. */
%}
Ilustración 38 - Ejemplo de sección de definiciones
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 115 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
La sección de reglas define el comportamiento que tendrá el analizador léxico
una vez haya sido invocado por el main. En esta área, se declaran el conjunto de
patrones que serán reconocidos como tokens.
Esta declaración permite la implementación de un autómata finito como
consecuencia del cambio de un estado a otro en función del token procesado por el
sistema. Para crear dicho autómata, es necesaria la previa definición de los estados,
a través del comando %s.
Una vez definidos los estados, las transiciones entre los mismos se producen
por medio del comando BEGIN, el cual determina el siguiente estado del autómata
(que puede ser el actual), en función del token procesado. Como ya se especificó en
apartado 4.3.3.1 Flex, las reglas de reconocimiento tienen la estructura [patrón]-
[acción], o lo que es lo mismo, si se reconoce en la cadena de entrada alguno de los
patrones establecidos, se ejecutará la acción que se detalle a continuación.
/*Estados*/
%s OTRO
%s CLAVE
%s AGRADECIMIENTO
%s PREGUNTA
%s INTERMEDIO
Ilustración 39 - Ejemplo de definición de estados en Flex
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 116 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
La llamada Zona de Usuario contiene el resto de rutinas que permiten el
control del analizador morfológico. En ella, el main ha de incluir la llamada al
analizador (yylex() ), así como la apertura y cierra de los ficheros de entrada y
salida.
Por último, el comando flex nombre_del_fichero.lex ejecutado sobre la
ventana de comandos, compila el fichero Flex, mostrando los errores cometidos en
la programación del código Flex. En caso de ausencia de fallos, se creará un fichero
.c, el cual será recompilado por medio de un compilador de lenguaje C. En este
caso, se ha empleado MinGW Studio como software compilador, el cual es también
gratuito y propiedad del proyecto GNU.
<CLAVE>{mOtro} {
// Almacenar en fichero
fprintf(fclave, "%s ",yytext);
fprintf(fclave, "correcto ");
bbdd = 1;
BEGIN(INTERMEDIO);
}
int main( )
{
// Declaración de variables
// Apertura de ficheros
// Operaciones
yylex();
// Cierre de ficheros
}
Estado actual Patrón detectado Acción a ejecutar
Próximo estado al
que se transita
Ilustración 40 - Formato de una regla en Flex
Ilustración 41 - Zona de Usuario en Flex
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 117 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
6.2.4.2 FUNCIONAMIENTO Y ORGANIZACIÓN ESPECÍFICA DEL ALGORITMO
DE RESPUESTA
El Algoritmo se inicializa con la lectura del fichero de entrada, denominado
lecturaflex.txt, el cual será creado por el módulo de Análisis de la pregunta, por
cada entrada del usuario.
Las palabras que este sistema reconocerá como patrones son las siguientes:
Conceptos propios y específicos de la materia educativa.
Términos que determinen lo que el usuario quiere saber de los
conceptos de la materia (función, tipos, etc.).
Pronombres interrogativos que conduzcan a la formulación de la
clase de pregunta (qué, cuál, etc.). También se admiten los modal
verbs o verbos modales del inglés (could, can, etc.) en este ámbito.
Palabras y expresiones utilizadas típicamente para despedirse.
Vocablos empleados para expresar agradecimiento.
Expresiones para referenciar coloquialmente al interlocutor.
La definición de dichos patrones queda reflejada por la siguiente ilustración:
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 118 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Con el fin de realizar una correcta clasificación de las preguntas realizadas
por el usuario, que ayude a su mejor tratamiento y comprensión, se lleva a cabo su
catalogación según tipo y prioridad.
De alta prioridad. Son aquellas consultas que contienen patrones
considerados clave por el sistema.
De baja prioridad. Aquellas relacionadas con los conocimientos
que el robot debe tener acerca de él mismo, como los mencionados
anteriormente.
De orientación. Se proporcionan cuando no se encuentran las
consultas ingresadas, con el objetivo de orientar al alumno hacia lo
que desea saber realmente (¿Qué quieres saber de…? – ‘What do
you want to know about…?’, ¿Te refieres a…? – ‘Do you
mean…?’).
Si el sistema detecta que el usuario divaga, y formula preguntas que no
guardan relación con el contenido educativo ni con aquellas que pueda haber
mClave lexical"\ "analyzer|Lexycal"\
"analyzer|compiler|lexical|lexical|token|tokens|rules|patterns|lexeme|le
xemes|pattern ,etc.
mOtro functions|functions|error|errors|types ,etc.
mPreguntas what|how|why|when|who|can|could ,etc.
mDespedida goodbye|bye|see"\ "you|good"\ "night|take"\ "care|best"\
"wishes|good"\ "to"\ "have"\ "seen"\ "you"\ "again ,etc.
mAgrad thank"/ "you |thanks |thankfully|thankfull |grateful ,etc.
mReferencia friend|robot|man|dude|mate|teacher ,etc.
Ilustración 42 - Definición de los patrones de reconocimiento
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 119 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
respondido el módulo Análisis de la Pregunta, el sistema le comunicará su
intención de recibir cuestiones relacionadas con la materia.
Ilustración 43 - Divagación por parte del usuario
Estructura de frase
Las distintas estructuras de frase que el sistema reconoce y admite
como válidas son las siguientes:
Pronombre interrogativo + concepto propio de la materia
Ejemplo: What is a token?
Pronombre interrogativo + término que determine lo que el
usuario quiere saber del concepto + concepto propio de la
materia
Ejemplo: What are the types of parsers?
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 120 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Pronombre interrogativo + concepto propio de la materia +
término que determine lo que el usuario quiere saber del
concepto
Ejemplo: Could you give me one quadruple example?
Término que determine lo que el usuario quiere saber del
concepto + concepto propio de la materia
Ejemplo: Tell me the functions of the syntactical analysis.
Concepto propio de la materia + término que determine lo que
el usuario quiere saber del concepto
Ejemplo: I want to know about the syntactical analysis and its
errors.
Concepto propio de la materia + pronombre interrogativo
Ejemplo: Panic mode. What is?
Concepto propio de la materia + pronombre interrogativo +
término que determine lo que el usuario quiere saber del
concepto
Ejemplo: Syntactical analysis. What are its functions?
Además, se incluye un caso especial. Puede incluirse en la entrada
únicamente un concepto propio de la materia. El sistema pedirá al usuario
que concrete qué quiere saber acerca de dicho concepto, y esperará a recibir
la contestación del usuario. Es decir, se almacenará un histórico de lo
cuestionado en la iteración anterior [ver 6.3.4.3 Estados]. La conversación
se desarrollaría así:
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 121 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Ilustración 44 - Muestra de uso del histórico
Entre cualquiera de los términos de cada una de las estructuras anteriores
pueden introducirse los vocablos de despedida, agradecimiento y referencia
coloquial al interlocutor, tal y como muestran los siguientes ejemplos:
- How works the semantic analysis, dude?
- Could you tell me, dude, how works the semantic analysis?
- Dude, how works the semantic analysis?
- Could you give me one quadruple example? Goodbye.
- Bye and tell me what a parser is.
- I want to know what a token is. Thank you for everything.
En caso de que la entrada no concuerde con ninguna de las estructuras
indicadas, el sistema ejecutará la función formulaPregunta, explicada más adelante
[ver capítulo 6.2.3.2 Funciones más relevantes codificadas].
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 122 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Estructuras anidadas
El sistema admite la formulación de cualquier número de preguntas en la
misma entrada, permitiéndose la introducción de varias estructuras anidadas, de
las especificadas anteriormente.
Algunos ejemplos podrían ser:
- Could you tell me how works the semantic analysis and what is a
token?
- What is a quadruple and how works the semantic analysis?
Pudiendo incluir, también, los vocablos de despedida, agradecimiento y
referencia coloquial al interlocutor entre cualquiera de los términos.
Ficheros de apoyo al desarrollo
Dado que se necesitan numerosas variables que gestionar a lo largo de la
conversación con el usuario, que cada entrada supone una ejecución independiente
de Flex, y que éste no admite un manejo de sesiones tan simple como las de HTTP,
es necesario emplear una serie de ficheros que deben irse actualizando. Éstos son:
contador.txt
Almacena el número de frases que el usuario ha dicho a lo largo de la
conversación. Se utiliza fundamentalmente para saber cuándo la conversación
ha sido demasiado corta. Cada vez que se detecta una palabra finalizada con el
carácter ‘#’, indicador de fin de frase, se aumenta en uno el contador.
Su apertura se realiza en modo r+, que permite lectura y escritura, debiendo
existir previamente el fichero. Su contenido inicial ha de ser 0.
fcontador = fopen("contador.txt", "r+")
Ilustración 45 - Apertura de contador.txt
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 123 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
fclave.txt
Almacena todas las claves contenidas en la cadena de entrada, las cuales serán
contrastadas con el contenido de la base de datos.
Además, puede contener otros tres términos:
- correcto, indica que las palabras contenidas antes de él conforman
una pregunta formulada correctamente.
- nada, implica la detección de un pronombre interrogativo que no
forma parte de la pregunta acerca de la asignatura, por tanto, en la
posterior lectura del fichero, se ignorarán las claves situadas antes
de la palabra nada, comenzando el análisis con las claves
contenidas a continuación.
- esperar, cuando se incluye en la entrada únicamente un concepto
propio de la materia y el sistema tenga que esperar a la siguiente
entrada del usuario para poder realizar la búsqueda en base de
datos.
Su apertura se realiza en modo w+, para lectura y escritura, creándose el
fichero si no existe, o sobrescribiéndolo en caso de que exista.
fcomprobar.txt
Indica si es necesario tener en cuenta la información almacenada en fclave en
la iteración anterior para realizar la búsqueda en la base de datos.
Si está vacío o contiene ‘1’ implica que no es necesaria la información anterior
para realizar la búsqueda en base de datos. Sin embargo, en caso de que su
contenido sea ‘0’, sí se tendrá en cuenta.
Su apertura se realiza en modo r+, que permite lectura y escritura, debiendo
existir previamente el fichero, aunque esté vacío.
fclave = fopen("fclave.txt", "w+")
Ilustración 46 - Apertura de fclave.txt
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 124 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
fimagen.txt
Contiene la ruta de la imagen del avatar que se debe mostrar en función de la
pregunta dada por el usuario.
Si el usuario divaga, se mostrará cansado; si formula una pregunta
correctamente sobre la asignatura, se mostrará contento; y si formula varias
seguidas, se mostrará aún más contento.
Su apertura se realiza en modo w, para escritura, creándose el fichero si no
existe, o sobrescribiéndolo en caso de que exista.
frespuesta.txt
Almacena la respuesta dada para el sistema cuando el usuario no formula una
pregunta relacionada con la asignatura. Puede estar vacío si se da caso opuesto.
Su apertura se realiza en modo w+, para lectura y escritura, creándose el
fichero si no existe, o sobrescribiéndolo en caso de que exista.
Estados
La organización del código Flex queda dividida por estados, los cuales
determinan la estructura lógica de la cadena introducida. De acuerdo a ello, las
palabras de la cadena de entrada van transitando de estado a estado.
frespuesta = fopen("frespuesta.txt", "w+")
fimagen = fopen("fimagen.txt", "w")
fcomprobar = fopen("fcomprobar.txt", "r+")
Ilustración 47 - Apertura de fcomprobar.txt
Ilustración 48 - Apertura de fimagen.txt
Ilustración 49 - Apertura de frespuesta.txt
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 125 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Una muestra de ello es el hecho de que las transiciones controlen que la
estructura de la entrada presente en primer lugar, por ejemplo, un pronombre
interrogativo, después un término que determine lo que el usuario quiere saber de
los conceptos de la materia y, por último, el concepto propio de la materia al que
quiera referenciar. Evitando, con ello, que el usuario realice una pregunta con falta
de concordancia.
En caso de que la pregunta presente dicha falta de concordancia, el sistema
le instará a formularla de manera lógica.
Cabe destacar que el hecho de que el sistema haya sido desarrollado en
inglés ayuda notablemente a disminuir el número de estados, ya que la estructura de
formulación de preguntas es mucho más parametrizable y estricta que la del
castellano.
A continuación se detallarán cada uno de los estados que componen el
código Flex.
INITIAL
Es el estado por el que se inicia el análisis de la entrada, dividida por palabras.
Ha de cumplir, entre otras, con las siguientes funciones:
- Dirigir la ejecución hacia los correspondientes estados en función del
token recibido:
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 126 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Ilustración 50 - Autómata del estado INITIAL
- Actualizar el contenido del fichero fcomprobar.txt.
- Controlar cuándo el usuario no formula una pregunta correcta.
- Controlar si el usuario agradece cuando el sistema le ha proporcionado
ya información.
- Aumentar el contador de contador.txt si finaliza en él la entrada.
- Elaborar una respuesta cuando el usuario no pregunte nada acerca de la
asignatura.
- Almacenar dicha respuesta en frespuesta.txt cuando finalice la cadena
de entrada.
PREGUNTA
Sus funciones son las siguientes:
- Dirigir la ejecución hacia los correspondientes estados en función del
token recibido:
Buy SmartDraw!- purchased copies print this
document without a watermark .
Visit www.smartdraw.com or call 1-800-768-3729.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 127 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Ilustración 51 - Autómata del estado PREGUNTA
Cuando se reciba una clave se transitará:
- Al estado Clave, si la pregunta que ha realizado nada tiene
que ver con la asignatura, y realizar en dicho estado el
tratamiento de la clave.
- Al estado Intermedio, si la pregunta se ha formulado
correctamente y, por tanto, ya se tiene una búsqueda
satisfactoria en base de datos.
Si vuelve a recibirse un pronombre interrogativo, sustituye al anterior.
- Llevar un contador del número de palabras que transcurren entre la
aparición del pronombre interrogativo y la siguiente clave y, si es
mayor que 3, considerarla ajena a la asignatura.
- Detectar cuándo se ha formulado una pregunta correctamente.
- Aumentar el contador de contador.txt si finaliza en él la entrada.
- Actualizar el contenido del fichero fcomprobar.txt.
- Elaborar una respuesta cuando el usuario no pregunte nada acerca de la
asignatura.
Buy SmartDraw!- purchased copies print this
document without a watermark .
Visit www.smartdraw.com or call 1-800-768-3729.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 128 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
- Almacenar dicha respuesta en frespuesta.txt cuando finalice la cadena
de entrada.
OTRO
Entre sus funciones destacan:
- Dirigir la ejecución hacia los correspondientes estados en función del
token recibido:
Ilustración 52 - Autómata del estado OTRO
Si vuelve a recibirse un término englobado en mOtro, sustituye al
anterior.
- Detectar cuándo se ha formulado una pregunta correctamente.
- Detectar, en una estructura anidada, la posible formulación errónea de
las preguntas.
- Aumentar el contador de contador.txt si finaliza en él la entrada.
- Elaborar una respuesta cuando el usuario no pregunte nada acerca de la
asignatura.
Buy SmartDraw!- purchased copies print this
document without a watermark .
Visit www.smartdraw.com or call 1-800-768-3729.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 129 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
- Almacenar dicha respuesta en frespuesta.txt cuando finalice la cadena
de entrada.
CLAVE
Entre sus funciones destacan:
- Dirigir la ejecución hacia los correspondientes estados en función del
token recibido:
Ilustración 53 - Autómata del estado CLAVE
Cuando se reciba un pronombre interrogativo se transitará:
- Al estado Clave, si la pregunta se ha formulado
correctamente.
- Al estado Initial, si la pregunta no se ha formulado
correctamente.
Si vuelve a recibirse un pronombre interrogativo, sustituye al anterior.
- Detectar cuándo se ha formulado una pregunta correctamente.
- Aumentar el contador de contador.txt si finaliza en él la entrada.
- Conocer cuándo el usuario no dice nada significativo acerca de la clave.
- Actualizar el contenido del fichero fcomprobar.txt.
Buy SmartDraw!- purchased copies print this
document without a watermark .
Visit www.smartdraw.com or call 1-800-768-3729.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 130 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
- Elaborar una respuesta cuando el usuario no pregunte nada acerca de la
asignatura.
- Almacenar dicha respuesta en frespuesta.txt cuando finalice la cadena
de entrada.
INTERMEDIO
Es el estado al que se transita después de la formulación correcta de una
pregunta, es decir, cuando existe una estructura anidada de preguntas
realizadas.
Cumple con las mismas funciones de Initial
Ilustración 54 - Autómata del estado INTERMEDIO
Elaboración de la respuesta
Al finalizar el análisis de la cadena, se devuelve el control al motor PHP,
donde se comienza una búsqueda en base de datos de la posible correspondencia
entre el contenido de ésta y la del fichero fclave.txt.
La tabla Contenidos, sobre la que se realiza la búsqueda, está constituida a
través de una ontología de términos de la asignatura en función de la diapositiva de
Buy SmartDraw!- purchased copies print this
document without a watermark .
Visit www.smartdraw.com or call 1-800-768-3729.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 131 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
los apuntes a la que hacen referencia, lo cual otorga una dosis visible de
Inteligencia Artificial. Con este método, no es necesario indicarle al sistema todas
las formas y expresiones posibles con las que el usuario puede hace referencia a una
pregunta concreta, sino que únicamente se requiere la manifestación de ciertas
palabras clave, de las que se realiza su composición de lugar.
Cada diapositiva contiene una serie de palabras clave, asociadas de manera
unívoca, en su conjunto, a ella.
Al realizar la búsqueda en base de datos por medio de dichas palabras, podrá
existir una concordancia total de las palabras clave a una diapositiva concreta, o no.
En caso de que dicha concordancia sea total, se elaborará la correspondiente
respuesta a lo preguntado y, además, se abrirá un pop-up que muestre la diapositiva
que certifique la respuesta dada.
Ilustración 55 - Respuesta textual + Pop up
Sin embargo, si la concordancia es parcial, habiendo varias diapositivas
involucradas en el proceso, se realizará una operación denominada de máxima
coincidencia, asignando un porcentaje que simbolice el grado de pertenencia de la
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 132 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
pregunta a cada una de las diapositivas. La que alcance el mayor valor, será la que
se ofrecerá como respuesta, preguntando, tras ello, al usuario, si ha obtenido
contestación a lo que realmente quería saber.
En algunas ocasiones, el usuario no será específico con lo que desea saber de
un determinado concepto. En respuesta a ello, el sistema tratará de orientarle hacia
la correcta determinación de sus intereses, utilizando sentencias como ‘What do
while ($row)
{
$row[2]=strtolower($row[2]);
// Se compara cada fila con todas las palabras del vector de
palabras (de la pregunta)
// Se empieza por la palabra clave 1
$row[2]=trim($row[2]); //Quitar blancos al principio y al final
$cadenabd=explode(" ",$row[2]);
// Bucle doble para comparar los dos vectores de palabras
for ($j=0; $j< count($cadenabd);$j++)
{
for($a = 0; $a < count($aux1); $a++)
{
$aux1[$a]=strtolower($aux1[$a]);
if(strcmp($cadenabd[$j],$aux1[$a])==0)
$contador++;
}
if($contador>$coincidencias)
{
$coincidencias=$contador;
$rowaux=$row; // Se guarda el registro en una
estructura auxiliar
}
$row=mysql_fetch_array($result);
$contador=0;
}
Ilustración 56 - Cálculo del factor de máxima coincidencia
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 133 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
you want to know about…?’, para que el usuario concrete, por ejemplo, functions o
types.
Ilustración 57 - Orientación de la pregunta del usuario
En conclusión, la respuesta final, se elaborará de tres modos:
Si tras finalizar el análisis de la cadena por Flex, el fichero
fclave.txt está vacío, la respuesta será la que se encuentre en
frespuesta.txt: el usuario no ha preguntado nada acerca de la
asignatura.
Si tanto el fichero fclave.txt como el frespuesta.txt tienen
contenido, la respuesta será la concatenación de ambas: el
usuario ha formulado una pregunta relacionada con la materia y,
además, ha incluido contenido adicional; por ejemplo, un
agradecimiento, una despedida, o una nueva pregunta mal
formulada.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 134 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Si sólo tiene contenido fclave.txt, la respuesta será la
proporcionada tras la consulta a la base de datos: el usuario se
ha limitado a preguntar por la asignatura.
Cuando el sistema haya elaborado una respuesta adecuada a lo solicitado, la
enviará al cliente web, donde el módulo de Validación de Entrada la dispondrá en
el área de texto como contestación del chatbot a lo demandado por el usuario.
6.2.4.3 FUNCIONALIDADES EXTRAS
Un punto importante en el desarrollo de este sistema consiste en otorgar la
toda la flexibilidad y todo el realismo que sea posible al proceso de comunicación
con el chatbot; para ello, además de todas las funcionalidades que se han ido
detallando a lo largo de este documento, se presentan otras, quizá más detallistas,
pero que le otorgan ese punto de autenticidad necesario.
El sistema es capaz de advertir la hora del día en que se está
produciendo la conversación, e incluir referencias sobre lo
temprano o tarde que es, así como despedirse con ‘Buenas noches’
en caso de superar una determinada hora.
Detectar e incluir referencias amistosas a su interlocutor en la
respuesta.
Conocer la duración de la conversación y, en caso de que el alumno
desee finalizarla con prontitud, le comunica su asombro y le
pregunta si no desea resolver ninguna duda adicional.
Dar respuesta a dos o más preguntas incluidas en la misma cadena
de entrada. En caso de que una de ellas no corresponda a nada
comprensible por el sistema, se le comunicará al usuario junto con
la respuesta a la pregunta válida.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 135 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Controlar el número de veces que el alumno se despide en la misma
cadena, para evitar el sistema emitir más de una despedida.
Dar respuesta a todas las secciones de la cadena de entrada. Por
ejemplo, si la entrada es Hello, how are you? I want to know what
is a token; la respuesta incluirá la bienvenida, cómo está, y la
definición de token.
Controlar el número de veces que el alumno se despide en la misma
cadena, para evitar el sistema emitir más de una despedida.
Responder a las muestras de agradecimiento por parte del alumno,
siempre que tenga motivos reales para ello (que el sistema le haya
resuelto una duda). En caso de que agradezca sin motivo, se le
preguntará el por qué de su agradecimiento e instará a que formule
algo cuya respuesta realmente pueda agradecer.
Ofrecer de forma automática al alumno ejercicios que ayuden a
afianzar los conceptos por los que pregunta.
Contabilizar el número de palabras que transcurren entre dos
palabras clave mencionadas, para analizar si realmente guardan
relación entre sí. En caso de que este número sea superior a una
determinada cantidad, lo cual invita a pensar la no relación entre
claves, se escribe en el fichero la sentencia “nada”, indicando que
dichas palabras nada tienen que ver.
6.2.4.4 FUNCIONES MÁS RELEVANTES CODIFICADAS
En este apartado se presentan extractos del código, con algunas de las
funciones más relevantes que le permiten al bot ofrecer algunas de las
funcionalidades anteriormente descritas.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 136 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
La función despedida se encarga de capturar la hora del sistema, y elaborar
una respuesta de despedida acorde al momento horario, incluyendo la posibilidad
de despedirse con ‘Good night’ cuando la conversación tiene lugar entre las 21 h. y
las 6 h.
void despedida(char* r, int switch_despedida)
{
/* ----CÓDIGO INTERMEDIO ---- */
// Se captura la hora del sistema; si es de noche el bot
podrá despedirse también con buenas noches
time_t t2 = time(NULL);
horaSistema = localtime(&t2);
hora = horaSistema->tm_hour;
// Se inicializa la semilla time en 0
srand(time(NULL));
/* ----CÓDIGO INTERMEDIO ---- */
if (hora>=21 || hora<=6)
{
// Número aleatorio entre 0 y 7 (para aumentar la
probabilidad de que se diga "Buenas noches")
numero = rand()%8;
}
else
{
// Número aleatorio entre 0 y 3
numero = rand()%4;
}
/* --- MÁS CÓDIGO --- */
Ilustración 58 - Función despedida
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 137 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
La función agradecimiento añade su respuesta a las palabras de
agradecimiento mostradas por el usuario al haber sido resuelta una duda.
void agradecimiento(char* agra)
{
int num;
// Se inicializa la semilla time en 0
srand(time(NULL));
// Número aleatorio entre 0 y 3
num = rand()%4;
if (switch_agradecimiento==0)
{
switch (num)
{
case 0:
strcpy (agra, "You are welcome. ");
break;
case 1:
strcpy (agra, "Thanks to you. ");
break;
case 2:
strcpy (agra, "Don´t mention it. ");
break;
case 3:
strcpy (agra, "No worries. ");
break;
}
}
else
strcpy (agra, "It is not necessary more
thanks. ");
}
Ilustración 59 - Función agradecimiento
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 138 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
La función especificar se emplea cuando el usuario ha señalado su intención
de conocer algo sobre una palabra clave, pero sin embargo no ha sido capaz de
especificar qué. Mediante esta función, se le pregunta qué es lo que desea saber
acerca de dicha palabra clave.
void especificar (char *r, char * cadena)
{
int longitud = strlen (cadena);
char ultima = cadena[longitud-1];
char p[50];
if (ultima == '#')
cadena[longitud-1] = '\0';
if (bbdd==0)
{
strcpy(p,"What do you want to know about ");
}
else
{
strcpy(p, "and what do you want to know about ");
}
strcat (p, cadena);
strcat (p, "? ");
strcpy (r, p);
// Envía la ruta de la imagen a PHP
fprintf (fimagen, "../vista/imagenes/3.jpg");
}
Ilustración 60 - Función especificar
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 139 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
La función formulaPregunta es utilizada cuando el sistema comprueba que el
usuario está divagando y no formula ninguna pregunta relacionada con el contenido
de la asignatura. Con esta función se le reclama hacerlo mediante tres expresiones
distintas: ‘What do you want to know?’, ‘Could you ask me something specific,
please?’, y ‘Please, be serious. Ask me something about the subject’.
void formulaPregunta (char * cad)
{
int num;
// Se inicializa la semilla time en 0
srand(time(NULL));
// Número aleatorio entre 0 y 2
num= rand()%3;
switch (num)
{
case 0:
strcpy (cad, "What do you want to know? ");
break;
case 1:
strcpy (cad, "Could you ask me something
specific, please? ");
break;
case 2:
strcpy (cad, "Please, be serious. Ask me
something about the subject ");
}
// Envía la ruta de la imagen a PHP
fprintf (fimagen, "../vista/imagenes/3.jpg");
}
Ilustración 61 - Funcíon formulaPregunta
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 140 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
6.3 PRUEBAS Y VALIDACIÓN
Para finalizar correctamente el proceso de implantación se ha realizado una batería
de pruebas cuyo objetivo es comprobar el funcionamiento real del sistema, procurando la
evolución racional de la conversación.
Estas pruebas se clasifican en dos grupos: unitarias y conjuntas.
6.3.1 PRUEBAS UNITARIAS
El sistema ha sido desarrollado por módulos, cuyo funcionamiento ha sido
comprobado de manera individual.
Interfaz gráfico
Las pruebas se realizan desde el lado del cliente, sin necesidad de
emplear ningún framework. Se ha simulado la interacción entre un
usuario y el servidor web, la correcta navegación dentro de la
aplicación, así como para detectar problemas propios del diseño del
interfaz visual de la misma.
Validación de entrada
Las pruebas, también realizadas del lado del cliente, han tenido como
objetivo principal comprobar la correcta eliminación de símbolos y
caracteres que dificulten su comprensión por los siguientes módulos;
además de verificar la correcta comunicación (envío y recepción de
pregunta/respuesta) con el servidor.
Análisis de la pregunta
En primer lugar, se comprueba la correcta separación de las palabras
de entrada y su almacenamiento en un vector. A continuación, se
verifica la conexión con la base de datos, contrastando dicho vector
con el contenido de las tablas Saludos, Estados, Insultos e
Información.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 141 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Algoritmo de respuesta
Se ha comprobado el reconocimiento de la cadena de entrada, el
correcto tratamiento de la misma por los distintos estados, el buen uso
del contador de palabras intermedias, la anidación de varias preguntas,
el conocimiento de las palabras clave empleadas en la iteración
anterior y la escritura pertinente de los distintos ficheros.
En la elaboración de la respuesta se comprueba la conexión y el
resultado satisfactorio de las consultas con la base de datos.
Estas son algunas de las cadenas verificadas:
CADENAS
Palabra cualquiera#
Referencia#
Could you tell me what is a token, dude#
What is a token and how are you#
Token# (siguiente) Its functions#
Token# (siguiente) What is#
What is a token and bye#
What is a token and bye dude#
What is a token thanks and bye#
Dude what is a token and bye#
What is a token dude and lalalala#
What is a token dude and bye#
Thanks#
Tell me the functions of token and what you are going to do this evening#
Tell me the functions of token and what are the types of token#
How I´m tired and dude tell me what is a token and the functions of lexical
Analyzer#
Token functions and functions of nothing and errors of lexical#
Tabla 10 - Cadenas probadas
6.3.2 PRUEBAS CONJUNTAS
Comprobar el rendimiento del sistema.
Cotejar la comunicación entre los distintos módulos.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 142 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
CAPÍTULO 7
ORGANIZACIÓN
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 143 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
ORGANIZACIÓN
En relación a la organización que se ha seguido para el desarrollo del proyecto, es
necesario indicar una serie de puntos, claves para la consecución satisfactoria de los hitos
marcados.
En este capítulo se hará mención de la estructura organizativa del equipo de trabajo
interviniente en el proyecto, la descripción de las labores desempeñadas en cada uno de los
puestos de trabajo, la declaración de los paquetes de trabajo en que quedan encuadradas
todas las tareas acometidas, el responsable de cada uno de ellos, el número de horas
invertidas en su desarrollo, la planificación temporal de cada actividad, y las tareas de
control del progreso del proyecto.
7.1 ORGANIGRAMA DEL EQUIPO DE TRABAJO
El siguiente organigrama muestra los diferentes participantes en el desarrollo del
proyecto, su relación jerárquica, y el grado de responsabilidad existente entre ellos.
En la parte superior del organigrama se encuentra el Director del Proyecto,
encargado de dirigir y asesorar al alumno en su trabajo. Dicha relación se encuentra
supervisada por el Coordinador de Proyecto, encargado de controlar la adecuación del
proyecto a las especificaciones exigidas y su ritmo de desarrollo.
El conjunto de tareas realizadas por el alumno serán planificadas y gestionadas por él
mismo, en su labor de Jefe de Proyecto. Tres roles adicionales serán, también, adquiridos
por él: Analista, Diseñador y Programador del sistema.
Estas descripciones vienen recogidas gráficamente en el siguiente organigrama:
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 144 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Ilustración 62 - Organigrama del equipo de trabajo
Una descripción más detallada de cada uno de los puestos de trabajo se incluye a
continuación.
7.1.1 COORDINADOR
El Coordinador es la figura responsable de la calificación de los proyectos
que coordina. Alguna de las tareas que debe llevar a cabo son:
Buscar proyecto y director para los alumnos.
Concretar la definición del proyecto.
Recoger solicitudes de alumnos para cada proyecto.
Impartir una asignatura académica con objeto de realizar un
seguimiento de los alumnos y proyectos.
Comunicarse con el alumno para supervisar ritmo e incidencias.
Recoger y evaluar el proyecto finalizado, rechazando los que no
alcancen un determinado nivel o presenten defectos de forma.
Finalizado el proyecto, el alumno entregará al Coordinador un ejemplar
visado por su Director de Proyecto, junto con un resumen.
Celia Gómez Róspide
Celia Gómez Róspide
Cristina Puente Águeda Director
Jefe de proyecto
Consultor Analista Programador
Coordinador
David Contreras
Bárcena
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 145 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Calificar a los alumnos y sus proyectos.
7.1.2 DIRECTOR
La labor del Director del proyecto consiste, fundamentalmente, en conseguir
que el alumno presente un PFC de calidad, cumpliendo, para ello, con las siguientes
actividades:
Dirigir y asesorar al alumno en su trabajo.
Orientar al alumno hacia la consecución de los objetivos.
Ayudar al alumno desde el punto de vista técnico y funcional.
Supervisar el cumplimiento de los plazos marcados en la planificación.
Corregir y calificar el Proyecto.
7.1.3 JEFE DE PROYECTO
El alumno, en su labor de Jefe de su propio Proyecto, tendrá como tareas
principales:
Planificar, gestionar y supervisar las diferentes actividades que se
realizarán para el desarrollo del proyecto.
Tener un seguimiento del grado de avance del desarrollo manteniendo
reuniones con el Director.
Dar parte al Coordinador del nivel de progreso del proyecto en
momentos pactados del desarrollo del mismo.
Realizar un análisis de riesgos tras cada vuelta del Ciclo de Vida en
Espiral.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 146 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Determinar cada una de las tareas a realizar, así como su planificación y
tiempo de desarrollo.
Llevar a cabo un control de la calidad del trabajo realizado.
Redactar la memoria que documente el desarrollo del proyecto.
7.1.4 ANALISTA
El alumno, en su función de analista, habrá de mostrar capacidad de
abstracción y análisis, requiriéndole conocimientos relacionados con las técnicas de
análisis de sistemas de información. Tendrá como objetivos:
Analizar exhaustivamente el trabajo que se debe llevar a cabo, es decir,
entender los requerimientos reales del proyecto (Especificación de
Requisitos).
Realizar el Análisis de Riesgos.
Llevar a cabo una Evaluación de alternativas, con el propósito de cubrir
los requisitos con las soluciones informáticas que mejor se adapten a
ellos.
Elaborar la Planificación del desarrollo.
7.1.5 DISEÑADOR
El alumno, como encargado del diseño del sistema, deberá:
Realizar un estudio del análisis anterior.
Establecer los patrones de diseño.
Elaborar el diseño de la solución.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 147 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
7.1.6 PROGRAMADOR
Las tareas a llevar a cabo por el alumno en su faceta de programador serán:
Desarrollar los módulos de programación establecidos.
Realizar pruebas del sistema elaborado hasta el momento.
Optimizar el código todo lo que sea posible.
7.2 ESTRUCTURA DE DIVISIÓN DEL TRABAJO (EDT)
El organigrama de la Estructura de División del Trabajo (EDT) ofrece una división
lógica del proyecto en niveles sucesivos con aumento del detalle de información. Gracias a
esta segmentación, se facilita realizar estimaciones de tiempo, coste y recursos más
ajustadas a la realidad, así como monitorizar el grado de avance del proyecto. Asimismo,
cada tarea queda asociada exclusivamente a su correspondiente de nivel superior, evitando,
con ello, superposición de objetivos y esfuerzos.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 148 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Ilustración 63 - Estructura de División del Trabajo (EDT)
- PROYECTO FIN DE CARRERA -
AGENTE VITUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
[WP 1]
Gestión del Proyecto
[WP 1.1] Documentación
[WP 2]
Control del Proyecto
[WP 2.1]
Informes de Seguimiento
[WP 3]
Desarrollo del Sistema
[WP 3.1]
Análisis
[WP 3.1.1]
Analizar Especificación
Requisitos
[WP 3.1.2]
Definición Arquitectura
[WP 3.1.3]
Evaluación Alternativas
[WP 3.1.4]
Análisis de Riesgos
[WP 3.1.5]
Planificación del Desarrollo
[WP 3.2]
Diseño
[WP 3.3]
Programación
[WP 3.3.1]
Almacenamiento Información
[WP 3.3.1.1]
BBDD Patrones
[WP 3.3.1.2]
BBDD Contenidos Asignatura
[WP 3.3.2]
Tratamiento Información
[WP 3.3.3]
Interfaz Gráfico
[WP 3.3.3.1]
Acceso y Registro
[WP 3.3.3.2]
Visualización Contenido
[WP 3.3.3.3]
Comunicación Interna
[WP 4]
Pruebas y Optimización
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 149 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
El desarrollo del proyecto se divide en cuatro fases: una de Gestión, en la que se
acomete la documentación de la memoria que recoge toda la información del proyecto; una
de Control, en la que se llevan a cabo informes de seguimiento para llevar constancia del
grado de avance del desarrollo general del proyecto; una, más ramificada, dedicada al
Desarrollo técnico del Sistema; y la última, dedicada a realizar Pruebas que comprueben el
buen funcionamiento del desarrollo y tratar de Optimizar el resultado obtenido.
La sección de Desarrollo ha sido subdividida en tres módulos, con objeto de alcanzar
una representación lo más precisa y específica posible del proceso de desarrollo. El
primero de dichos módulos tiene como objetivo la creación de las bases de datos sobre las
que se apoya el sistema; el segundo comprende la implementación del código orientado al
tratamiento de la información entrante y saliente; y, por último, el tercero se centra en el
desarrollo del interfaz gráfico con el que interactuará el usuario.
Una explicación más detallada del Desarrollo técnico del Sistema fue recogida en el
siguiente Capítulo 6 de este documento, Implementación.
7.3 DISTRIBUCIÓN DE TRABAJO
La división de las tareas realizada en la EDT permite elaborar con mayor precisión la
distribución del trabajo de los participantes en el desarrollo de proyecto. En ella, además,
se incluye el número de horas asignadas a la elaboración de cada actividad, tal y como se
muestra en la siguiente tabla:
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 150 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Alumno Total
ID %horas Tarea Coordinador Director Jefe proyecto Analista Diseñador Programador h/tarea
[WP 1] 28% Gestión del
Proyecto 2 5 93
100
[WP 1.1] 28% Documentación 2 5 93
100
[WP 2] 17% Control del Proyecto 4 18 38
60
[WP 2.1] 17% Informes de Seguimiento 4 18 38
60
[WP 3] 51% Desarrollo del
Sistema
12 23 19 44 86
184
[WP 3.1] 8% Análisis
7 7 16
30
[WP 3.1.1] 1%
Analizar Especificación de
Requisitos
1 1 3
5
[WP 3.1.2] 2% Definición
Arquitectura
2 2 4
8
[WP 3.1.3] 3% Evaluación de Alternativas
2 2 6
10
[WP 3.1.4] 1% Análisis de Riesgos
1 1 2
4
[WP 3.1.5] 1% Planificación del
Desarrollo
1 1 1
3
[WP 3.2] 11% Diseño
5 5
30
40
[WP 3.3] 22% Programación
11 3 14 86 79
[WP 3.3.1] 3% Almacenamiento de
la información
2 3 2 4 11
[WP 3.3.1.1] 2% BBDD de Patrones
1 2 1 3 7
[WP 3.3.1.2] 1%
BBDD de Contenidos de la
Asignatura
1 1 1 1
4
[WP 3.3.2] 17% Tratamiento de la
información
5
5 50 60
[WP 3.3.3] 12% Interfaz Gráfico
4
7 32 43
[WP 3.3.3.1] 2% Acceso y Registro
1
1 6 8
[WP 3.3.3.2] 7% Visualización de
Contenido
2
3 20 25
[WP 3.3.3.3] 3% Comunicación
Interna
1
3 6 10
[WP 4] 4% Pruebas y
Optimización
3
12 15
Total h/Persona 6 35 157 19 44 98 359 Tabla 11 - Asignación de horas/hombre
La realización del Proyecto conlleva un total de 359 horas, dato que se extrae de la
tabla 11. De ellas, 318 han sido invertidas entre el Jefe de Proyecto, el Programador, el
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 151 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Diseñador y el Analista, mientras que las 41 restantes han sido completadas entre el
Coordinador y el Jefe de Proyecto.
Como dato a destacar, la actividad de ‘Programación’ es de la que consta de más
tiempo de desarrollo, siendo ‘Tratamiento de la información’ la tarea general de mayor
duración.
7.4 PLANIFICACIÓN DEL TRABAJO
A continuación se muestra un Diagrama de Gantt en el que se muestra cómo se ha
planificado el desarrollo de cada una de las tareas individuales.
Ilustración 64 - Planificación del trabajo
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 152 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
7.5 CONTROL DEL PROYECTO
El control de este proyecto se ha llevado a cabo englobando la capacidad de
conocimiento, anticipación, corrección y evaluación, para poder así identificar posibles
desviaciones o irregularidades, y mejorar la implantación del chatbot. Es algo va más allá
de las meras tareas operativas.
De esta manera, algunos aspectos extraordinarios que se han contemplado en el
control para garantizar un mejor entorno de desarrollo son los siguientes:
Estilos de dirección
Hace referencia a la relación entre el Director del Proyecto y el Alumno.
Una buena comunicación entre ellos, dirimiendo los asuntos importantes
mediante intercambios de opiniones, sin imposiciones, dentro de un ambiente
distendido, favorecerá la consecución positiva del objetivo común.
Elaboración de informes de estado
Se elaboran informes regulares de seguimiento del proyecto, con objeto
de controlar el cumplimiento de los plazos previstos, y especificar las acciones
correctivas correspondientes ante la identificación de desviaciones.
Etapas satisfactorias/insatisfactorias
Se procede a la evaluación de cada una de las actividades realizadas
hasta el momento para comprobar un funcionamiento y rendimiento
satisfactorios.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 153 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
CAPÍTULO 8
CONCLUSIONES Y
TRABAJOS FUTUROS
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 154 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
CONCLUSIONES Y TRABAJOS FUTUROS
8.1 CONCLUSIONES
Con el desarrollo de este proyecto se ha obtenido un sistema capaz de interactuar con
el usuario con dos características diferenciales respecto de los sistemas vistos en el estado
del arte [ver capítulo 3. Estado del arte].
I. Está orientado al entorno educativo, con capacidad para responder preguntas
sobre una asignatura académica, proporcionándole al alumno la información
que le solicita acerca de la misma, tanto acerca de su temario como de su
programa.
El chatbot, de esta manera, se convierte en un complemento al profesor, nunca
un sustituto, mediante el cual el alumno puede reforzar sus conocimientos de la
materia. Como se ha mencionado, el sistema no se ha constituido con objeto de
reemplazar la profesión del educador, dado que, posiblemente, la tecnología no
consiga transmitir cultura de una manera tan íntegra.
II. La respuesta que muestra no es simplemente textual, también adjunta un
documento que contrasta la contestación ofrecida.
El hecho de recurrir a las páginas de los propios apuntes de la asignatura,
además de reforzar la explicación proporcionara, sirve, de alguna manera,
como referencia visual al alumno, y le ubica en la sección de la materia que se
relaciona con la cuestión por él formulada.
Además de ellas, a lo largo del proceso de desarrollo se han obtenido otras
conclusiones relacionadas con el mundo de los agentes virtuales:
El usuario no disfruta en una conversación mantenida con una máquina.
Por tanto, los chatbots han de desarrollarse de tal modo que sean capaces de
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 155 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
imitar el comportamiento humano, dando la impresión de ser inteligentes y hacer
creer a su interlocutor que está hablando con otra persona. En caso contrario, el
usuario desespera por no ser comprendido y no haber podido resolver sus dudas.
El mejor método de comprensión empleado por un chatbot es el análisis de
los patrones de diálogo empleados por su interlocutor humano. Existen
chatbots que obligan a la inserción textual de una serie de términos en la entrada
para su comprensión, lo cual, ofrece una gran ventaja y dos grandes desventajas.
La ventaja es la completa ausencia de error en la respuesta ofrecida, dado que, si
reconoce de manera literal la entrada del usuario, se le devolverá una respuesta
predeterminada. Una desventaja, naturalmente, aparece cuando el usuario no
introduce textualmente la cadena que el bot reconoce, impidiéndole, así, la
comprensión del texto. La segunda desventaja atañe al gran tamaño que debe
presentar su base de datos en caso de querer atender positivamente el mayor
número de solicitudes posible.
El análisis por patrones independientes, tiene un mayor riesgo de fallo en la
contestación, pero se ve compensado por la flexibilidad para la formulación de
preguntas y la minimización de la capacidad de almacenamiento requerida que
ofrece.
Cuanto más te aproximas, más te puedes equivocar. Un análisis minucioso y
detallado de la entrada del usuario conlleva una mayor probabilidad de fallo en
la respuesta ofrecida. Conviene, por tanto, establecerse en un nivel que equilibre
la capacidad de comprensión con la correcta resolución de lo preguntado.
Elaborar un chatbot de uso específico a partir de un diseño de uso general
limita el desarrollo. La gran diferencia entre el propósito de un chatbot
genérico y uno orientado a temas específicos radica en que, mientras el primero
ha de cubrir un mayor repertorio de contenidos y ofrecer un grado de
interactuación más elevado, el segundo tiene un dominio de conocimiento
limitado a sus especificaciones y no pretende abarcar una conversación más allá
de tales términos.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 156 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Por tanto, el tomar como base un diseño general conlleva una amplia reducción
de contenidos, además de la adicional dificultad asociada a la comprensión del
código sobre el que se haya construido el anterior desarrollo.
8.2 TRABAJOS FUTUROS
Los trabajos futuros relacionados con este proyecto atañen, por un lado, a la
posibilidad de mejora y ampliación de los aspectos ofrecidos en el propio desarrollo, y, por
otro, a la adaptación del sistema a nuevos requerimientos y entornos.
8.2.1 AMPLIACIÓN DEL DESARROLLO
Algunos de los contenidos que podrían completar el actual desarrollo, y con
ello, ampliar su funcionalidad, son los siguientes:
Tener un historial de conversación con los distintos usuarios, y
con ello realizar un seguimiento de los mismos en función de las
preguntas realizadas, reforzando aquellos temas por los que pregunte
más.
Analizar la nota obtenida por cada alumno en los exámenes,
añadiendo comentarios positivos o negativos a la conversación en
función de la misma.
Introducir un módulo con mayor carácter conversacional de
reflexión, que recoja la impresión del alumno sobre todos los aspectos
relacionados con la asignatura: modo de impartición, contenidos más
difíciles, etc., así como proposiciones de mejora.
Añadir una encuesta de evaluación del servicio prestado por el
sistema, y conocer, así, el grado de satisfacción del alumno, además
de los aspectos a corregir o perfeccionar.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 157 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
8.2.2 ADAPTACIÓN A NUEVOS REQUERIMIENTOS Y ENTORNOS
El sistema, teniendo en cuenta su vinculación a ámbitos específicos, presenta
la particularidad de adaptación a nuevos requerimientos, como pueden ser:
Otras asignaturas académicas. Pudiendo crear un chatbot adaptado a
cada una de ellas.
Así como a nuevos entornos de explotación, requiriendo algunos una
fiabilidad total, tales como:
Mundo empresarial. Construyendo un agente orientado a la
presentación de la firma a los usuarios de su página web, realizando
dicha transmisión de conocimientos de una forma más atractiva.
Por otro lado, las empresas ofrecen a sus nuevos empleados un plan de
formación inicial denominado “kit de bienvenida”. Al finalizar este
periodo de formación, al nuevo empleado se le asignará un consultor
que le sirva de soporte y guía para su integración y futura actuación
para con el cliente. Por tanto, un chatbot ajustado a tales necesidades
optimizaría la calidad de la formación inicial proporcionada a sus
empleados, y, además, permitiría a las empresas ahorrar en costes,
dado que podría sustituir la figura del consultor de soporte a tiempo
total.
Asimismo, desde el punto de vista externo, al finalizar un proyecto
para un cliente, un agente virtual podría servir, también, como
herramienta de soporte al propio cliente en la etapa de post-
implantación, solventándole, a su vez, todas las dudas que tenga
acerca del producto desarrollado y su empleo, suponiendo un nuevo
ahorro en el proceso de transferencia de conocimiento.
Medicina. Tratando de dar un diagnóstico en función de los síntomas
presentados por el paciente.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 158 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Y, en definitiva, a todos aquellos ámbitos que puedan explorarse
por medio de la pauta pregunta/respuesta.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 159 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
CAPÍTULO 9
BIBLIOGRAFÍA
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 160 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
BIBLIOGRAFÍA
[A.L.I.C.E. AI Foundation, 2006] A.L.I.C.E. AI Foundation (2006). AIML: Artificial
Intelligence Markup Language.
[Allan, 2000] Allan, J. (2000). NLP for IR - Natural Language Processing for Information
Retrieval. http://citeseer.ist.psu.edu/308641.html [consultado 26-2-2007].
[Baeza-Yates, 1999] Baeza-Yates, R. and Ribeiro-Neto, Berthier. (1999). Modern
information retrieval. Addison-Wesley Longman.
[Baeza-Yates, 2004] Baeza-Yates, R. (2004). Challenges in the Interaction of Information
Retrieval and Natural Language Processing. in Proc. 5 th International Conference on
Computational Linguistics and Intelligent Text Processing (CICLing 2004), Seoul , Corea.
Lecture Notes in Computer Science vol. 2945, pages 445-456, Springer.
[Burbeck, 1987] Burbeck, S. (1987). Programación de Aplicaciones en Smalltalk-80(TM):
Cómo utilizar Modelo Vista Controlador.
[dmoz, 2006]. dmoz (2006). Open Directory Project Computers. Aritificial Inteligence.
Natural language. Chatterbots.
[Guédez, 1990]. Guédez, V. (2006). Educación y Proyecto Histórico Pedagógico.
[Hayes-Roth, 1995] Hayes-Roth, B. (1995). An Architecture for Adaptive Intelligent
Systems.
[Kasabov, 1998] Kasabov, N. (1998). Advanced Neuro-Fuzzy Engineering for Building
Intelligent Adaptive Information Systems in Fuzzy Systems Design: Social and
Engineering Applications. L.Reznik, V.Dimitrov and J.Kacprzyk (eds) Heidelberg,
Physica-Verlag.
[Navarro, 2007] Navarro, D. (1997). ELIZA y Computer Power and Human Reason. Red
Científica.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 161 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
[Reenskaug, 1979], Trygve Reenskaug, 1979. Xerox PARC technical note December 1979.
[Russell, 2002] Russell, R. (2002). Language Use, Personality and True Conversational
Interfaces. Artificial Intelligence and Computer Science. University of Edinburgh.
[Rusell and Norving, 1995]. Russell, S. and Norving, P. (1995). Artificial Inteligence: A
Modern Aproach, Prentice Hall. Opper Saddle River, Upper Saddle River, NJ.
[Shah. 2005]. Shah, H (2005). A.L.I.C.E.- an ACE in Digitaland. Ph.D. Thesis. Harrow
School of Computer Science, University of Westminster.
[VanLehn, 1988] VanLehn, K. (1998). Student Modelling. M. Polson. Foundations of
Intelligent Tutoring systems. Hillsdale. N.J. Lawrence Erlbaum Associates, 55-78.
[Velásquez Córdoba, 2007], Velásques Córdoba, L.F. (2007), Compromiso y
trascendencia de la educación. Revista electrónica de Psicología Social. FUNLAM.
[Weizenbaum, 1966]. Weizenbaum, J. (1966). A computer program for the study of natural
language communications betweem man and machine. Communications of the ACM.
[Wolf, 1984] WOLF, B. (1984). Context Dependent Planning in a Machine Tutor. Ph.D.
Dissertation, University of Massachusetts, Amherst, Massachusetts.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 162 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
ANEXO A
VOCABULARIO TÉCNICO
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 163 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
VOCABULARIO TÉCNICO
BOT
Un bot (abreviatura de robot) es un programa informático que realiza funciones muy
diversas, imitando el comportamiento de un humano.
CHATBOT
Un Chatbot puede definirse como un programa diseñado para simular mantener una
conversación con una persona, la cual suele realizarse por medio del teclado; si bien en los
últimos años se han desarrollado modelos que emplean programas conversores de texto a
sonido. Este hecho dota, indudablemente, de mayor realismo a la interacción con el
usuario, el cual se involucra en mayor medida en la conversación.
Con este mismo objetivo, los Chatbots existentes incorporan, generalmente, un
avatar o representación gráfica que los identifica visualmente.
Para llegar a establecer una conversación, han de utilizarse frases que sean
fácilmente comprensibles y coherentes. No obstante, la mayoría de los bots
conversacionales no consiguen comprender completamente lo que se dice. En su lugar,
tienen en cuenta las palabras o expresiones de su interlocutor que reconocen como patrones
clave. Frente a estos patrones, el bot tiene preparadas de antemano una serie de respuestas.
De esta manera, es capaz de seguir una conversación con más o menos lógica, pero sin
saber realmente de qué se está hablando de forma concreta.
Claves en la comprensión
Para que el bot comprenda lo que su interlocutor le dice hay que tener en
cuenta estudios que se han realizado acerca de lo que dice la gente, es decir, qué
características presentan las conversaciones humanas. De hecho, una de las
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 164 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
disciplinas de la IA explica la propia naturaleza del comportamiento como una
composición del proceso mental y la comunicación entre individuos.
Además de lo que se dice, hay que analizar cómo se dice. Otra disciplina de
la IA, no podía ser de otra manera, se encarga del estudio del lenguaje natural. Más
específicamente, analiza la forma en que está estructurado el lenguaje humano, y
trata de explicarlo por medio de modelos teóricos y matemáticos.
Claves en la elaboración de la respuesta
La forma de responder de la mayoría de los chatbots es simple y
prácticamente no ha cambiado desde la aparición del que es considerado el padre
de esta tecnología, ELIZA: el programa busca patrones en la entrada del usuario y
responde con salidas predeterminadas, siempre que el patrón coincida.
Generalmente, suele emplearse una clasificación de las posibles preguntas,
para orientar mejor las respuestas hacia ella, empleando estrategias en la
elaboración de las mismas con el objetivo de mostrar una mayor sensación de
realismo (como pudiera ser imitar el ritmo de escritura de una persona al mostrar la
respuesta).
PLATAFORMA E-LEARNING
El término e-learning engloba procesos de enseñanza-aprendizaje por medio de
Internet. Una plataforma contenedora de esa modalidad ofrece ambientes de aprendizaje
diseñados e integrados en un entorno privado, dotado de las herramientas necesarias para el
aprendizaje y el mejor seguimiento de la evolución del alumno.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 165 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
AIML
AIML es una extensión del lenguaje XML, desarrollado por el Dr. Richard
Wallace y la comunidad de código abierto Alicebot entre los años 1995 y 2000.
Fue diseñado específicamente para ayudar en la creación de la primera
entidad chatbot informática de lenguaje artificial online, A.L.I.C.E, de manera que está
especializado en la creación de agentes software con lenguaje natural.
WEB 2.0
La Web 2.0, término acuñado en 2004 por Tim O’Reilly, hace referencia a la
segunda generación en la historia del desarrollo de la tecnología Web, representando la
evolución de las aplicaciones tradicionales hacia aplicaciones web enfocadas hacia el
usuario final. Más que una tecnología, la Web 2.0 puede considerarse una actitud.
Esta actitud viene marcada por un enfoque de las aplicaciones hacia el usuario final,
creando comunidades de usuarios y servicios tales como redes sociales o blogs, los cuales
fomentan la colaboración y el intercambio ágil y eficaz de información.
En sus orígenes, internet se planteó como un sistema unidireccional y estático, con
páginas en HTML que apenas eran susceptibles de actualización y que no interactuaban
con el usuario. Sin embargo, en 2004, la creación constante de nuevas aplicaciones y sitios
con sorprendentes funcionalidades, dio la pauta para la Web 2.0 Conference, en la cual se
dejó constancia de la evolución que el mundo web estaba sufriendo.
Dicha evolución se hace patente con la actitud bidireccional entre internet y usuarios;
internet brinda al usuario información, pero también éste expone en él sus propios
contenidos (textos, imágenes, vídeos).
Algunas de las tecnologías que dan vida a un proyecto Web 2.0 son las siguientes:
- Separación de contenido del diseño con uso de hojas de estilo.
- AJAX.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 166 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
- Flash, Flex o Lazlo.
- Ruby on Rails para páginas web con contenidos dinámicos.
- Proliferación de las redes sociales.
- Empleo de URL sencillas para facilitar la ubicación del usuario.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 167 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
ANEXO B
ESTIMACIÓN ECONÓMICA
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 168 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
ESTIMACIÓN ECONÓMICA
En este apartado se describe la estimación de los gastos asociados al desarrollo del
Proyecto. Para ello, se deben considerar dos aspectos. El primero abarca la valoración
económica de los materiales empleados, el segundo, el coste derivado de las horas
trabajadas por parte del personal involucrado en la realización del Proyecto.
Recursos materiales
No es necesario el desembolso en material físico ni tecnológico para este
desarrollo.
Recursos humanos
En la realización de este Proyecto participan una serie de personas desde
diferentes perspectivas, agrupadas en coordinación, dirección, y desarrollo.
Para realizar una correcta valoración, se ha dispuesto una tabla en la que se
indican la estimación de las tarifas, en euros, de los distintos participantes, en
función del número de horas que han dedicado. Un mejor desglose de las horas
asignadas a cada uno de los roles queda dispuesto en el apartado [5.3
Distribución de trabajo].
Finalmente, se recoge el número total de horas, así como el presupuesto final
calculado.
ROL HORAS TARIFA (€/H) TOTAL (€)
COORDINADOR DEL PROYECTO 6 75 450
DIRECTOR DEL PROYECTO 35 65 2.275
JEFE DE PROYECTO 157 60 9.420
ANALISTA 19 45 855
DISEÑADOR 44 35 1.540
PROGRAMADOR 98 35 4.410
TOTAL RECURSOS HUMANOS: 18.950
Tabla 12- Costes recursos humanos
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 169 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
A continuación, se presenta una distribución del porcentaje del coste destinado
a tareas de coordinación y dirección, frente al consignado para el desarrollo en
sí:
Ilustración 65 - Distribución del gasto en recursos humanos
Del total de 18.950 € destinado a gasto en personal, un 86% (16.225 €)
corresponden a desarrollo, mientras que el 14% (2.725 €) se destinan a
coordinación y dirección.
Por tanto, dado que el único coste directo imputable al Proyecto es el de Recursos
Humanos, el coste final estimado de su desarrollo es de 18.950 €.
86%
14%
Distribución del gasto en RRHH
Desarrollo
Coordinación y Dirección
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 170 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
ANEXO C
MANUAL DE USUARIO
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 171 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
MANUAL DE USUARIO
Este apartado pretende ofrecer un manual que sirva como guía al usuario para su
orientación durante el uso de la aplicación. Se trata de un documento de comunicación
técnica, que contendrá tanto fragmentos escritos como imágenes asociadas, trazado de
manera específica pero sencilla.
A. INTRODUCCIÓN
La aplicación a usar consiste en un Agente Virtual o chatbot, cuyo dominio de
conocimiento se corresponde con el temario de una asignatura académica,
Procesadores del Lenguaje, impartida en la ETSI ICAI en 4º curso de Ingeniería
Informática.
A través de la comunicación con el mismo, el alumno podrá transmitirle
cualquier duda acerca de la materia (facilitándole, de esta manera, su aprendizaje), así
como del programa de la asignatura, pudiendo conocer los detalles sobre el profesor
que la imparte, horarios y aulas de examen, y todo tipo de información relacionada.
Además de ello, el sistema tendrá constancia de la progreso del alumno a lo
largo del curso, y le transmitirá, de manera automática, los contenidos en los que el
necesite hacer especial incisión para su favorable evolución en la asignatura.
B. CONDICIONES DE USO
Para el uso satisfactorio del sistema, resulta imprescindible cumplir con
determinadas actitudes.
Se trata de un chat específico, evite emitir preguntas no relacionadas con
la materia académica, así como la formulación de cuestiones largas y
poco precisas.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 172 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
La comunicación se desarrollará en inglés.
No se deberán hacer uso de las contracciones propias de la lengua, ya que,
en algunos casos, no serán comprendidas.
La aplicación ha sido instalada para su empleo en entornos educativos, de
manera que promueve y exige el respeto y el uso de un lenguaje correcto
y educado, evitando insultos, ofensas y faltas de respeto, además de
cuidar la ortografía y procurar la formulación gramaticalmente correcta de
las preguntas.
El chatbot responderá casi exclusivamente a cuestiones relacionadas con
la asignatura, tanto acerca de su temario como del programa (quién es el
profesor, cuándo será el próximo examen, etc.). Las restantes preguntas
que sabrá responder guardan relación con aquellos conocimientos que el
propio chatbot ha de tener sobre sí mismo (quién te ha creado, dónde
vives, etc.).
No trate de buscar y provocar el fallo del sistema, pues, naturalmente,
errores habrá. Limítese, simplemente, a solucionar sus dudas sobre la
asignatura en cuestión.
C. REQUISITOS INICIALES
El uso de la aplicación está exclusivamente destinado a los alumnos que cursen la
asignatura Procesadores del Lenguaje en el correspondiente centro educativo. Dichos
alumnos tendrán un nombre de usuario y contraseña, que se corresponderá con el de
acceso a los contenidos del Portal Web de la Universidad (suministrados al alumno tras
su matriculación en el centro), mediante los cuales se les permitirá el ingreso al sistema
chatbot.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 173 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
D. ACCESO AL SISTEMA
En primer lugar, el alumno deber acceder a la página web de la
Universidad.
Una vez ahí, debe entrar a su zona personal, donde se encuentren las
asignaturas que cursa, y acceder a Procesadores del Lenguaje.
Dentro de los contenidos de la asignatura aparecerá la opción “Iniciar
chatbot”, sobre la cual deberá pulsar.
La primera ventana que se le abrirá, le solicitará la introducción de sus
credenciales: nombre de usuario y contraseña, de la forma en que recoge
la siguiente ilustración:
Ilustración 66 – Introducción de credenciales
En caso de olvido de la contraseña o cualquier tipo de problema con el acceso, se
deberá contactar con el departamento de la Universidad encargado de gestionar dichos
aspectos de la web.
En el caso de
www.upcomillas.es, un
ejemplo sería: 200702460
La contraseña será personal
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 174 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
E. VENTANA PRINCIPAL
Una vez que se produce la verificación de los credenciales del usuario,
aparecerá la ventana principal del sistema, la del propio chatbot. En ella será donde se
mantendrá la conversación con el alumno.
El primer aspecto que destaca ante el usuario es el avatar gráfico que
representa al bot. Este, cambiará su imagen en función del contenido hacia el que
evolucione la conversación, constando de un total de 9 imágenes distintas.
Por ejemplo, se muestra contento al haber servido de ayuda, triste al no
comprender lo que se le pregunta, y enfadado cuando el usuario tiene una conducta
poco adecuada.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 175 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Ilustración 67 - Conjunto de imágenes que puede mostrar el chatbot
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 176 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Además de la imagen, se cuenta con otros cuatro elementos gráficos:
Un área de texto en el que puede leerse la conversación pregunta/respuesta
mantenido con el sistema.
Un scrollbar o barra de desplazamiento, que permiten desplazar el
contenido del área de texto hacia un lado u otro, con el fin de poder
visualizar todo su contenido.
Un campo de texto, donde el usuario introduce su consulta.
Un botón, a través del cual el alumno envía la consulta al sistema.
Área de texto Scrollbar
Campo de texto Botón
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 177 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
F. MODO DE USO
Para iniciar la conversación, el usuario debe escribir su consulta en el campo de
texto habilitado para ello, y pulsar el botón Enviar, situado a la derecha de dicho
campo, o bien el botón intro.
Acto seguido, el sistema le devolverá su respuesta, procurando ajustarse lo
máximo posible a los contenidos exigidos.
Para continuar con la conversación, bastará con que el usuario siga repitiendo
el mismo procedimiento y prosiga escribiendo sus consultas y enviándolas al sistema.
Para poner fin a la conversación, el usuario tendrá que despedirse, emitiendo
para ello alguna palabra o expresión que así lo indique.
G. TIPOS DE CONSULTAS Y EXPRESIONES QUE EL SISTEMA
RESPONDE
Saludos.
Ejemplos: Hello, hi, hi there.
Preguntas para conocer el estado del chatbot.
Ejemplos: How are you doing, How are you, How are getting on.
Preguntas orientadas a obtener información personal sobre el chatbot y
sobre el programa de la asignatura:
Ejemplos: Who is your designer, Where do you live, What time will the
exam start.
Consultas sobre los conceptos propios y específicos de la materia educativa.
Ejemplos: What is a token, What are the functions of lexical analyzer.
UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERÍA EN INFORMÁTICA 2011-2012
CELIA GÓMEZ RÓSPIDE 178 AGENTE VIRTUAL INTELIGENTE DE
AYUDA AL APRENDIZAJE
Vocablos empleados para expresar agradecimiento y para referenciar
coloquialmente al interlocutor.
Despedidas.
Ilustración 68 - Ejemplos de posibles conversaciones
H. CAUSAS DE EXPULSIÓN DEL SISTEMA
El alumno podrá ser expulsado del sistema por dos razones:
Si pasan 2 minutos sin que el usuario haya enviado ninguna consulta.
Si el usuario utiliza palabras o expresiones malsonantes en tres ocasiones
durante el transcurso de la conversación.