AGENTE VIRTUAL INTELIGENTE DE AYUDA AL …CELIA GÓMEZ RÓSPIDE 2 AGENTE VIRTUAL INTELIGENTE DE...

178
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

Transcript of AGENTE VIRTUAL INTELIGENTE DE AYUDA AL …CELIA GÓMEZ RÓSPIDE 2 AGENTE VIRTUAL INTELIGENTE DE...

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.