106
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA Proyecto de Fin de Grado en Ingeniería Informática Desarrollo de un chatbot que ofrezca información relativa a la UNED y a los diferentes estudios que ofrece. Alberto Martínez Montenegro Dirigido por: Elena Gaudioso Vázquez Curso: 2019-2020 Convocatoria de Junio

Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA

Proyecto de Fin de Grado en Ingeniería Informática

Desarrollo de un chatbot que ofrezca información relativa a

la UNED y a los diferentes estudios que ofrece.

Alberto Martínez Montenegro

Dirigido por: Elena Gaudioso Vázquez

Curso: 2019-2020 Convocatoria de Junio

Page 2: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation
Page 3: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Desarrollo de un chatbot que ofrezca información relativa a

la UNED y a los diferentes estudios que ofrece.

Proyecto de Fin de Grado en Ingeniería Informática

de modalidad específica

Realizado por: Alberto Martínez Montenegro

Dirigido por: Elena Gaudioso Vázquez

Fecha de lectura y defensa: ……………………………………………

Page 4: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation
Page 5: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

A Ana, por su apoyo incondicional

Page 6: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation
Page 7: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Resumen 7

Resumen – Palabras clave

Resumen.

Los chatbots son programas informáticos con los que es posible mantener una

conversación, ofrecen respuestas automatizadas generadas a partir de los mensajes que

reciben de su interlocutor. Mantener una conversación con un chatbot puede tener

múltiples propósitos: solicitar que se realice una acción, averiguar una determinada

información o incluso mantener una charla similar a la que podríamos mantener con

otra persona.

Para que un usuario pueda mantener una conversación exitosa con un chatbot,

ha de utilizar frases concisas y coherentes. Esto es debido a que los chatbots no

comprenden el contexto de la conversación tal y como hacemos los humanos. En lugar

de esto, procesan las palabras contenidas en los mensajes que reciben de su

interlocutor, para generar una respuesta o bien emitir una contestación preparada de

antemano. De esta forma, el chatbot puede seguir una conversación de una forma

normal, pero esto no implica que llegue a comprender o procesar el intercambio total

de información que se produce.

Un chatbot debe tener un propósito, es decir, la información que facilita debe

estar enmarcada dentro de un determinado contexto. El contexto del chatbot

desarrollado para este Proyecto de Fin de Grado (PFG), es ofrecer información relativa

a la UNED, debido a la gran dispersión de información disponible en la web sobre los

estudios impartidos en esta universidad.

En el sitio web https://infouned.es, que se ha creado específicamente para este

PFG, puede encontrarse, además de otros vínculos de interés, una interfaz de chat

integrada que permite conversar directamente con el chatbot.

Para este PFG, se ha creado un chatbot mediante el desarrollo de una aplicación

en el lenguaje de programación Java. Para poder realizar el despliegue de dicha

aplicación, se ha instalado y configurado un servidor GNU/Linux en una placa

computadora Raspberry Pi 4. Este servidor está conectado a internet de forma

ininterrumpida, de manera que puede atender las peticiones de los usuarios que, a

través de diferentes canales, solicitan entablar una conversación con la aplicación Java

utilizando técnicas de Inteligencia Artificial.

Page 8: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Resumen 8

Palabras clave.

Chatbot, Asistente virtual, Inteligencia artificial, Aprendizaje automático, Procesamiento

del lenguaje natural, Facebook, Messenger, Telegram.

Page 9: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Abstract 9

Title – Abstract - Keywords

Title.

Development of a chatbot that offers information about UNED and the different

studies offered.

Abstract.

Chatbots are computer programs that offer automated responses to questions

from the users simulating a conversation. A conversation with a chatbot may have

multiple purposes: request to carry out an action, find out certain information or even

simulate an actual human conversation.

In order to have a successful conversation with a chatbot, users have to use

concise and coherent phrases. This is due chatbots do not understand the context of the

conversation as humans do. Instead, they process the words contained in the messages

they receive from their interlocutor, to generate a response or to issue a response

prepared in advance. In this way, the chatbot can follow a conversation in a normal way,

but this does not imply that it comes to understand or process the total exchange of

information that occurs.

A chatbot must have a purpose, that is, the information it provides must be

framed within a certain context. The context of the chatbot developed for this project is

to offer information related to UNED, due to the great dispersion of information

available on the Internet about the courses taught at this university.

On the website https://infouned.es, which has been created specifically for this

project, it can be found, in addition to other links of interest, an integrated chat interface

that allows a direct interaction with the chatbot.

For this project, a chatbot has been created by developing an application in the

Java programming language. In order to deploy this application, a GNU/Linux server has

been installed and configured on a Raspberry Pi 4 computer board. This server is

connected to the Internet uninterruptedly, so that it can meet the requests of users

who, through different channels, will ask to start a conversation with the Java

application using Artificial Intelligence techniques.

Page 10: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Abstract 10

Keywords:

Chatbot, Virtual assistant, Artificial intelligence, Machine Learning, Natural language

processing, Facebook, Messenger, Telegram.

Page 11: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Ínidice 11

Índice

1. Introducción ........................................................................................................ 13

1.1. Definición de objetivos............................................................................. 15

1.2. Estructura de la Memoria. ....................................................................... 16

2. Chatbots en la actualidad ..................................................................................... 17

2.1 Tipos de chatbots. ..................................................................................... 17

2.1.1 Chatbots según su medio de interacción. ......................................... 17

2.1.2 Chatbots según el tipo de inteligencia artificial. ............................... 18

2.1.3 Chatbots según su función................................................................. 19

2.2 Clasificación del chatbot InfoUNED. ......................................................... 20

3. Desarrollo del sistema.......................................................................................... 23

3.1 Metodología de desarrollo, fases del trabajo y fechas de realización. .... 24

3.2 Instalación del hardware ........................................................................... 27

3.3 Configuración del servidor. ....................................................................... 28

3.3.1 Sistema operativo instalado. ............................................................. 28

3.3.2 Instalación del software necesario para el funcionamiento de la

aplicación Java del chatbot. .................................................................................... 29

3.3.3 Creación de la base de datos. ............................................................ 31

3.4 Desarrollo de la aplicación Java del chatbot. ............................................ 33

3.4.1 Modelado de clases, responsabilidades y colaboraciones. ............... 33

3.5 Enlace con las plataformas ........................................................................ 41

3.5.1 Enlace de la aplicación con la plataforma Telegram ......................... 41

3.5.2 Enlace de la aplicación con la plataforma Facebook Messenger ...... 44

3.5.3 Enlace de la aplicación con el sitio web. ............................................ 50

4. Estrategias de Inteligencia Artificial ..................................................................... 53

4.1 Aprendizaje automático. ........................................................................... 53

4.1.1 Funcionamiento del clasificador. ....................................................... 53

Page 12: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Índice 12

4.1.2 Construcción del clasificador en Weka. ............................................. 56

4.2 Procesamiento del lenguaje natural ......................................................... 66

5. Casos prácticos .................................................................................................... 73

5.1 Información genérica. ............................................................................... 73

5.2 Estadísticas de titulaciones y asignaturas. ................................................ 76

5.3 Guías de las titulaciones y asignaturas ..................................................... 80

6. Conclusiones, mejoras y trabajos futuros ............................................................. 83

6.1 Principales contribuciones. ....................................................................... 83

6.2 Conclusiones personales. .......................................................................... 84

6.3 Mejoras. .................................................................................................... 85

6.4 Trabajos futuros. ....................................................................................... 85

Bibliografía .............................................................................................................. 87

Referencias ......................................................................................................... 87

Enlaces web ........................................................................................................ 87

Lista de figuras y tablas ............................................................................................ 91

Figuras ................................................................................................................. 91

Tablas .................................................................................................................. 92

Lista de siglas, abreviaturas y acrónimos .................................................................. 93

Anexo A - Estructura de las tablas de la base de datos ............................................. 95

Anexo B - Documentación de las clases .................................................................. 101

Paquete es.infouned.principal .......................................................................... 101

Paquete es.infouned.aprendizajeAutomatico .................................................. 101

Paquete es.infouned.baseDeDatos .................................................................. 102

Paquete es.infouned.conversacion .................................................................. 102

Paquete es.infouned.enlaces ............................................................................ 102

Paquete es.infouned.estructurasDeDatos........................................................ 103

Paquete es.infouned.estudios .......................................................................... 103

Paquete es.infouned.procesamientoLenguajeNatural..................................... 104

Paquete es.infouned.solicitudesInformacionBBDD.......................................... 104

Paquete es.infouned.utilidades ........................................................................ 105

Paquete es.infouned.test.................................................................................. 106

Page 13: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

1. Introducción 13

Capítulo 1

- Introducción -

Debido a la creciente popularidad de los chatbots, ha surgido la creencia

generalizada de que son tecnología emergente, aparecida en los últimos años como

resultado de los avances en inteligencia artificial. Sin embargo, el origen de los chatbots

se remonta al año 1966, cuando se creó en el MIT (Instituto de Tecnología de

Massachusetts) el primer chatbot, al que se le llamó “Elizza”.

En las siguientes décadas se crearon chatbots que tuvieron bastante repercusión:

▪ En 1972, la Universidad de Stanford creó el chatbot “Parry”, una versión

mejorada de “Elizza”.

▪ En 1981, el programador británico Rollo Carpenter creó el chatbot

“Jabberwacky”, el primer chatbot que usaba bases de datos estáticas.

▪ En 1992, la empresa Creative Labs lanzó el chatbot “Dr.Sbaitso”, una aplicación

para el sistema operativo MS-DOS. Este chatbot intentaba imitar las respuestas que

podría dar un psicólogo.

▪ En 1995, el programador estadounidense Richard Wallace lanzó la primera

versión funcional del popular chatbot “Alice”. Fue reescrito al lenguaje de

programación Java en 1998 y pasó a ser software de código abierto.

“Success in creating AI would be the biggest

event in human history. Unfortunately, it might

also be the last, unless we learn how to avoid

the risks.”

Stephen Hawking, físico teórico, astrofísico y

cosmólogo.

Page 14: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

1. Introducción

14

A pesar de que los chatbots que se han citado eran programas muy avanzados

para su época, la popularidad de los chatbots se disparó cuando en 2011 la empresa

Apple anunció que incluiría un asistente virtual llamado “Siri” en su famosa gama de

teléfonos móviles. La principal función de este asistente era la de ejercer de chatbot

conversacional, podía realizar las operaciones solicitadas por el usuario manteniendo

una conversación personal con él, además la conversación fluía mediante voz en lugar

de texto. La calidad de “Siri” acompañada de la campaña de marketing que Apple le

dedicó, hicieron que, a día de hoy, sea el chatbot más conocido, incluso por personas

que no están relacionadas con el mundo de la tecnología.

Las compañías más importantes del sector tecnológico no tardaron en lanzar sus

propios chatbots con funciones de asistente virtual:

• La empresa Microsoft lanzó el chatbot asistente virtual “Cortana” en 2014, y al

año siguiente lo incluyó en su nuevo sistema operativo Windows 10.

• La empresa de comercio electrónico Amazon lanzó Alexa en 2014, un chatbot

asistente virtual cuya principal novedad es su compatibilidad con el altavoz

inteligente Amazon Echo.

• Por último, la empresa Google Inc. lanzó en 2016 Google Assistant, que al igual

que Alexa era compatible con un altavoz inteligente diseñado por su propia

compañía, Google Home.

En la actualidad, gracias a los avances de la inteligencia artificial, los chatbots se

han convertido en herramientas clave para muchas empresas y entidades tecnológicas.

Diferentes ramas de la inteligencia artificial, como el aprendizaje automático o el

procesamiento del lenguaje natural, permiten el desarrollo de chatbots que van mucho

más allá de responder con una serie de respuestas preestablecidas. Por este motivo, se

ha popularizado el uso de este tipo de aplicaciones para todo tipo de empresas, de forma

que cualquier tipo de negocio (tiendas online, restaurantes, hoteles, etc.) puede

contratar a una empresa de software para el desarrollo de un chatbot que realice las

operaciones necesarias o facilite la información deseada.

Debido a la creciente demanda de chatbots por parte de todo tipo de empresas,

el desarrollo de chatbots personalizados para el negocio se ha convertido en un sector

muy importante dentro del desarrollo de aplicaciones. El objetivo de este proyecto es

adquirir y poner en práctica los conocimientos necesarios para el desarrollo de este tipo

de aplicaciones, que sin duda serán cruciales en los próximos años en el mundo del

desarrollo de software.

Al igual que muchos de los chatbots citados en los párrafos anteriores, el chatbot

creado es un asistente virtual. Dado que está diseñado para ofrecer información sobre

los estudios impartidos en la UNED, se le ha asignado el nombre “InfoUNED”.

Page 15: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

1. Introducción

15

1.1. Definición de objetivos.

Para la creación del chatbot, se ha optado por diseñar un sistema completo dentro de

un hardware propio, esto ha permitido tener un control total sobre todos los elementos

para poder configurarlos de forma óptima. Los objetivos principales que se fijaron para

la creación de dicho sistema son los siguientes:

• Instalar y configurar un servidor GNU/Linux en una placa computadora

Raspberry Pi 4 [1], que permita el despliegue de aplicaciones Java que puedan

estar continuamente en ejecución e interactuando con Internet. Se ha elegido

este hardware por varias razones: bajo coste, bajo consumo eléctrico, y

rendimiento. En [2] puede consultarse una comparativa del coste, consumo y

rendimiento entre el primer modelo de Raspberry Pi y otros dispositivos capaces

de ejecutar sistemas operativos complejos.

• Desarrollar una aplicación Java que ejerza de chatbot. Esta aplicación debe

atender las peticiones que se hacen al servidor cuando un usuario intenta

conversar con el chatbot, y debe emitir la respuesta correspondiente. La

aplicación debe reunir los siguientes requisitos:

o Debe permitir que los usuarios envíen peticiones al servidor a través de

estos tres canales:

▪ La aplicación de mensajería Facebook Messenger [3].

▪ La aplicación de mensajería Telegram [4].

▪ Un sitio web convencional.

o Debe contar una capa de abstracción que le permita procesar los

mensajes entrantes de la misma forma sea cual sea el canal que usa el

usuario para enviarlos, evitando así tener que crear subprogramas o

aplicaciones adicionales para interactuar con las diferentes plataformas

que usan los usuarios.

• Crear un sitio web que contenga una interfaz de chat integrada que permita

conversar directamente con el chatbot. Para este objetivo será necesario instalar

Apache [5] en el servidor. Apache es un servidor HTTP que permitirá la ejecución

de código PHP además de otras funcionalidades.

• Crear de una base de datos en la que el chatbot pueda consultar toda la

información que le sea necesaria. El sistema gestor de bases de datos usado será

MariaDB [6]. Se ha elegido este sistema gestor de bases de datos por estar

basado en el popular lenguaje MySQL y además contar con licencia GPL [7].

• Crear un clasificador mediante técnicas de aprendizaje automático que

catalogue los mensajes que envíen los usuarios. Para el desarrollo del clasificador

Page 16: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

1. Introducción

16

se ha utilizado el software Weka [8] debido a su amplia aplicación en programas

Java y a la documentación disponible.

1.2. Estructura de la Memoria.

La memoria de este PFG se estructura de la forma expuesta en los siguientes

puntos:

• En el capítulo 2 se realiza un análisis de la situación actual en lo referente al

desarrollo de chatbots. Se citan los tipos de chatbot más frecuentes en la

actualidad y los chatbots más populares de cada tipo. También se resume

brevemente las funcionalidades principales de cada uno de ellos.

• En el capítulo 3 se describe el desarrollo de la aplicación. Se comienza

describiendo la metodología de desarrollo utilizada en el apartado 3.1, en él se

aportan varias tablas con las fechas más relevantes en la realización del proyecto.

A continuación, en los apartados 3.2 y 3.3 se explican las acciones realizadas para

llevar a cabo la creación y configuración del servidor dónde está alojada la

aplicación. Por último, en los apartados 3.4 y 3.5 se describe el desarrollo de la

aplicación creada y la forma en la que se han creado los enlaces con las diferentes

plataformas.

• En el capítulo 4 se describen las estrategias de inteligencia artificial empleadas

en el desarrollo al desarrollar la aplicación. El capítulo está centrado en las dos

ramas de la inteligencia artificial que se han tocado al realizar el proyecto, el

aprendizaje automático y el procesamiento del lenguaje natural.

• En el capítulo 5 se describen una serie de casos prácticos en los que se exponen

las diferentes respuestas que es capaz de ofrecer el chatbot ante diferentes

consultas de los usuarios.

• En el capítulo 6 se extraen las principales conclusiones, también se citan las

posibles mejoras aplicables al proyecto y los trabajos futuros para los que se

podría tomar como base la aplicación creada.

• Por último, se incluyen los anexos A y B. En el anexo A, se muestra la estructura

de todas las tablas que componen la base de datos, mientras que en el anexo B

se explican las funciones de todas las clases y los métodos que implementan.

Page 17: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

2. Chatbots en la actualidad 17

Capítulo 2

- Chatbots en la actualidad -

En este capítulo se realizará un análisis sobre el estado actual en lo referente al

desarrollo de chatbots. Para esto, se citarán los tipos de chatbots existentes en la

actualidad y se resumirán las características principales de cada tipo. También se hará

un análisis sobre cómo estaría clasificado el chatbot creado según los dichos tipos.

2.1 Tipos de chatbots.

Debido a la gran variedad de chatbots existentes, y las diferentes estrategias de

programación utilizadas para su desarrollo, no existe una clasificación estándar

reconocida por la comunidad tecnológica. En [9] puede consultarse un artículo de una

empresa a la vanguardia del desarrollo de chatbots. En él se hace referencia a la

inexistencia de una “guía de tipos de chatbot” y se hace una clasificación utilizando

criterios similares a los de este capítulo. La clasificación realizada está centrada en

clasificar los chatbots desde los tres puntos de vista que resultan más lógicos e intuitivos:

según su medio de interacción, según el tipo de inteligencia artificial empleada y según

su función.

2.1.1 Chatbots según su medio de interacción.

Catalogar a los chatbots según el método que utiliza el usuario para comunicarse con

ellos produce la clasificación más sencilla, podríamos catalogarlos en tres grupos:

• Chatbots basados en texto plano: Tal y como se explica en el capítulo 4 de [KD18],

los mensajes en texto plano son el elemento más común en la comunicación de

los chatbots. El grupo de chatbots basados en texto plano se distingue por poder

interaccionar con el usuario utilizando únicamente este tipo de mensajes. No se

dispone de imágenes, sonidos ni la posibilidad de respuestas seleccionables.

Debido la facilidad de incluir elementos audiovisuales en las plataformas de

mensajería actuales, este tipo de chatbots es cada vez es menos frecuente. En

[10] puede conversarse con el chatbot “Anna”, un chatbot orientado a la

Page 18: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

2. Chatbots en la actualidad

18

investigación cuyo objetivo es mantener una conversación emulando a un

interlocutor humano. Dado que el chatbot no tiene fines comerciales y el interés

sólo radica en las frases de la conversación, es adecuado que se base en texto

plano.

• Chatbots que combinan el texto con botones y/o elementos audiovisuales:

Aunque el texto sigue siendo el elemento base de la comunicación de este tipo

de chatbots, se sirven de herramientas como botones de respuesta o emoticonos

para dar fluidez a la conversación. Algunos también pueden procesar, en mayor

o menor profundidad, audio e imágenes. En [11] se puede consultar un artículo

que trata el tema de los chatbots en el contexto de las redes sociales y el apoyo

a los estudiantes. En este contexto es importante que sea fácil y rápido

interactuar con el chatbot, por lo que se hace adecuado el uso de botones y

elementos audiovisuales.

• Chatbots basados en mensajes de voz: Estos chatbots basan sus conversaciones

en mensajes de voz. La ventaja de esto es que la interacción por voz es mucho

más cómoda para el usuario, ya que no tiene que teclear e incluso puede

conversar mientras realiza otras actividades. Por otro lado, la audición artificial

es propensa a fallos si el emisor no vocaliza bien o si hay ruido de fondo en el

ambiente, por lo que el riesgo de recibir un mensaje erróneo suele ser mayor

que utilizando la interacción por texto. En [12] se analiza el funcionamiento de

un chatbot basado en voz. En él se mide la eficiencia y el rendimiento del chatbot,

así como la precisión y consistencia de sus respuestas.

2.1.2 Chatbots según el tipo de inteligencia artificial.

Las estrategias de inteligencia artificial que se utilizan en el desarrollo de un

chatbot influyen de forma directa en sus capacidades y en el tipo que de conversación

que se tendrá con él. Si catalogamos a los chatbots según las estrategias de inteligencia

artificial que implemente, podemos distinguir entre estos tres grupos:

• Chatbots cognitivos: Estos chatbots son capaces de adaptarse a la conversación

de tal forma que parecen interpretar la intención del usuario, llegando incluso a

ofrecer una conversación muy similar a la que ofrecería un agente humano que

atendiese las consultas del usuario. Están basados en el aprendizaje automático

y en el procesamiento del lenguaje natural. Este tipo de chatbots deben tener

cierta capacidad de aprendizaje, lo normal es que se consiga mediante técnicas

de aprendizaje automático. Para llevar a cabo dicho aprendizaje automático, se

parte de un fichero de entrenamiento con datos fiables de los que se pueda

extraer información relevante para el chatbot. Usando técnicas como árboles de

decisión, máquinas de vectores de soporte o redes bayesianas se construye y se

entrena el modelo de aprendizaje automático, que no es más que un archivo que

Page 19: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

2. Chatbots en la actualidad

19

el chatbot usará para tomar las decisiones correspondientes. Una técnica muy

utilizada en los últimos años es el Deep Learning (o aprendizaje profundo), una

rama del aprendizaje automático que usa redes neuronales para el

procesamiento de información. El chatbot irá aprendiendo a base de los errores

que cometa según vaya interactuando con los usuarios. En [13] se propone la

implementación de un chatbot con tecnologías cognitivas para mejorar los

servicios de soporte académico dentro de las universidades, capaz de percibir,

razonar y actuar basándose en sus percepciones. Esta propuesta define un

chatbot diseñado para simular una conversación con una persona, entender lo

que escribe y ser capaz de responder de forma acertada.

• Chatbots de ITR (Respuesta de Interacción de Texto): Estos chatbots también son

conocidos como “dumb chatbots” o “chatbots tontos”. No requieren de técnicas

de inteligencia artificial si no que siguen una lógica secuencial, haciendo uso de

botones o enlaces predefinidos. Tienen la ventaja de ser más fáciles de

programar y tener siempre controlado el rumbo de la interacción. Su

inconveniente consiste en que el usuario tiene unas posibilidades limitadas a la

hora de comunicarse con ellos, pudiendo únicamente seleccionar las opciones

disponibles. En [14] se encuentra el enlace web a un ejemplo de chatbot ITR de

la empresa Buoy Health, Inc. Mediante una conversación guiada, este chatbot

permite la identificación de enfermedades a partir de síntomas sin necesidad de

que el usuario tenga que redactar frases.

• Chatbots de “Word-spotting”: Se basan en el reconocimiento de palabras clave

para ofrecer una determinada respuesta preconfigurada en función de ellas. Su

inconveniente es que se centran en dichas palabras claves ignorando el contexto,

la intención del usuario y otras palabras de interés que pudiese haber en el

mensaje. En el artículo académico enlazado en [15] se detalla el desarrollo de un

chatbot “Word-spotting” para la gestión de desastres relacionados con el agua.

El chatbot utiliza un algoritmo de búsqueda difusa para analizar el texto que

ingresa el usuario y una tabla de palabras clave para hacer coincidir las palabras

ingresadas con la información almacenada en la base de datos.

2.1.3 Chatbots según su función

Dado que los chatbots pretenden simular la conversación que tendríamos con

un agente humano, podrían introducirse en prácticamente cualquier sector de la

industria, desarrollando funciones de todo tipo. A continuación, se enumeran algunas

de las principales funciones para las que son utilizados los chatbots en la actualidad, y

que nos permiten catalogarlos.

• Chatbots informativos: Son chatbots que tienen acceso a una gran cantidad de

información sobre un determinado tema, y son capaces de responder a las

Page 20: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

2. Chatbots en la actualidad

20

preguntas o solicitudes del usuario haciendo uso de ella. En la referencia [16] se

puede consultar una publicación que explica el desarrollo de un chatbot de este

tipo, que ofrece información sobre el calendario académico escolar a los

estudiantes.

• Comercio online: Estos chatbots pueden guiar al usuario en un proceso de

compra o transacción electrónica. Pueden incluso llegar incluso a ofrecer la

posibilidad de realizar pedidos o transacciones directamente en la conversación

sin que el usuario tenga que realizar ese trámite por el método clásico. En el

artículo [17] se analiza un chatbot orientado al comercio electrónico. El chatbot

del artículo tiene como objetivo vender productos físicos, digitales y también

servicios. Opera a través de la plataforma de mensajería Telegram y sistema de

gestión de contenidos WordPress.

• Captación de clientes: Este tipo de chatbots, ofertan a los clientes el producto de

la empresa a la que pertenecen, pudiendo incluso ocuparse de parte o de la

totalidad de los trámites administrativos derivados de una venta exitosa. Como

ejemplo de este tipo de chatbots, se enlaza en [18] una versión de demostración

de un chatbot de captación de posibles clientes para invertir en el mercado de

valores, de la empresa Tars Technologies Inc.

• Servicio de atención al cliente. Se encargan de mantener una conversación con

el cliente en relación a la posventa de un determinado artículo o servicio. Suelen

ser capaces de identificar el número de pedido o transacción que el cliente les

facilite para poder ofrecer ayuda de una forma más precisa. El artículo [19]

describe el desarrollo de un chatbot entrenado mediante Deep Learning que

ofrece un servicio de posventa a los usuarios a través de redes sociales.

• Soporte técnico: Estos chatbots cuentan con la información técnica necesaria de

un determinado producto o proceso. Usan esa información para ayudar al

usuario con algún problema que ha tenido al usar el producto o servicio o para

resolver dudas que le puedan surgir. En [20] se enlaza un proyecto publicado en

la plataforma GitHub bajo licencia Apache 2.0 [21]. El proyecto consiste en un

chatbot que puede ser entrenado para ofrecer distintos tipos de soporte, como

averías en productos electrónicos o incidencias técnicas en aplicaciones para

dispositivos inteligentes.

2.2 Clasificación del chatbot InfoUNED.

A continuación, se clasificará la aplicación creada según los diferentes tipos que

se han detallado en los apartados anteriores.

Según el medio de interacción, el chatbot creado se encuadraría dentro de los

chatbots que combinan el texto con botones. La aplicación creada hace uso de los

Page 21: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

2. Chatbots en la actualidad

21

botones en ciertas situaciones, por ejemplo, si se requiere una respuesta del usuario de

la cual son conocidas las posibles opciones que hay. El objetivo de esto es que el usuario

no tenga que escribir la respuesta en texto y pueda hacerlo con una simple selección. En

la figura 2.1 puede observarse la implementación de los botones en la interfaz móvil de

la plataforma Telegram.

Figura 2.1 Uso de los botones en la plataforma Telegram

Además del uso de botones, el chatbot creado también utiliza elementos que no son

texto plano, por ejemplo, hipervínculos que enlazan con páginas web o ficheros pdf.

El chatbot creado usa un modelo de aprendizaje automático para catalogar los mensajes

de entrada que recibe del usuario. Este modelo se entrena mediante ficheros de texto

que contienen posibles mensajes de entrada que podría emitir el usuario y la

clasificación correcta que tendrían. Dado que el chatbot está capacitado para

“aprender”, y la calidad de la conversación que ofrece será mayor cuanto más se entrene

el modelo de aprendizaje automático, podemos encuadrarlo en la categoría de chatbots

cognitivos.

En cuanto a la clasificación según su función, el chatbot creado estaría claramente

encuadrado en la categoría de chatbots informativos, ya que su función es simplemente

responder con información o enlaces a las preguntas del usuario, sin guiarlo por ningún

proceso.

Page 22: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

2. Chatbots en la actualidad

22

Page 23: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

23

Capítulo 3

- Desarrollo del sistema -

Este capítulo está centrado en las actividades que se han realizado durante el

desarrollo del sistema. En la figura 3.1 se muestra un esquema que pretende ofrecer

una visión general del sistema creado.

Figura 3.1 Esquema del sistema creado

Page 24: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

24

El objetivo de este capítulo es definir las acciones llevadas a cabo para la creación

del sistema de la figura 3.1.

En el apartado 3.1 se describe la metodología de desarrollo utilizada y se aportan

varias tablas con las fechas más relevantes en la realización del proyecto. Los apartados

3.2 y 3.3 se centran en la creación y configuración del servidor dónde está alojada la

aplicación. Por último, en los apartados 3.4 y 3.5 se describe el desarrollo de la aplicación

creada y la forma en la que se han creado los enlaces con las diferentes plataformas.

3.1 Metodología de desarrollo, fases del trabajo y

fechas de realización.

A la hora de diseñar las aplicaciones más comunes en el marco de desarrollo de

software (gestión de negocios e instituciones, aplicaciones web, etc.) se hace sencillo

distinguir, en mayor o menor medida, los objetivos que deben cumplir, cómo será la

interacción con el usuario final y qué clases principales deben ser creadas. Sin embargo,

en el desarrollo de un chatbot estos elementos no son tan evidentes como en el

desarrollo de otras aplicaciones.

Debido a las causas descritas en el párrafo anterior, la metodología empleada en

el desarrollo de este proyecto es la Metodología de Prototipo. Al utilizar esta

metodología, se crea un prototipo de chatbot operativo rápidamente. A partir de ahí, en

base a la evaluación y la comunicación con la directora del proyecto, se van añadiendo

las funcionalidades necesarias y corrigiendo los errores.

En la figura 3.2 pueden observarse las diferentes etapas que componen esta

metodología:

Page 25: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

25

Figura 3.2 Etapas del Modelo de Prototipos

La metodología se basa en la creación rápida de prototipos funcionales (aunque

incompletos), centrándose en aquellos aspectos del software que serán visibles para el

cliente o el usuario final. A partir de ahí, se irán identificando las diferentes necesidades

de la aplicación, que será la base para la creación del siguiente prototipo.

Teniendo en cuenta las características del proyecto, y la metodología de

desarrollo escogida para el mismo, se ha dividido el desarrollo en las siguientes fases:

• Fase de investigación preliminar: En esta fase se recopila información para

conocer la situación actual en lo referente al desarrollo de chatbots y estimar el

alcance del proyecto.

• Fase de diseño y desarrollo de la aplicación: Esta es la fase en la que se

desarrollan y se van evaluando los prototipos. En esta fase también se debe ir

redactando la información de los avances que se vayan haciendo. Esta fase

consta de la creación de tres prototipos:

o Prototipo de chatbot 1: Creación de un chatbot operativo, al que se le

pueden enviar mensajes y que debe responder a los mismos con una

respuesta preestablecida que no varía, aunque se reciban mensajes

diferentes. Debe estar operativo para todos los canales de acceso que se

ha decidido implementar.

o Prototipo de chatbot 2: Este prototipo consiste en un chatbot que

responde a los mensajes en función de la consulta contenida en ellos.

Faltarán funcionalidades por implementar y puede que proporcione

respuestas que no son correctas.

Page 26: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

26

o Prototipo de chatbot 3: Es el prototipo final, un chatbot al que se le han

añadido todas las funcionalidades y que proporciona las respuestas

correctas a las solicitudes de información del usuario.

• Fase de preparación de documentación: Fase en la que se reúne toda la

documentación redactada para componer la memoria final del proyecto.

En las tablas 3.1, 3.2, 3.3, 3.4 y 3.5 pueden observarse las diferentes actividades

realizadas en cada una de las fases, así como las fechas en las que se realizaron. Las

tablas recogen los avances desde septiembre de 2019, que fue cuando comenzó la

investigación sobre el proyecto.

FASE INICIAL

Actividades Fecha de

inicio Fecha de fin

Recabar toda la información necesaria sobre el desarrollo de chatbots. 02/09/2019 22/09/2019

Analizar las API que ofrecen diferentes compañías como WhatsApp, Facebook o Telegram para facilitar la integración de chatbots con sus servicios. Para descartarlas o confirmarlas para su integración.

23/09/2019 29/09/2019

Contactar con la Oficina del Tratamiento de la Información de la UNED para solicitar ficheros que contengan información sobre los estudios impartidos.

30/09/2019 01/10/2019

En base a todo lo anterior, decidir el alcance del proyecto, y las funcionalidades mínimas que ofrecerá.

02/10/2019 06/03/2020

Tabla 3.1 Actividades de la fase inicial del desarrollo

FASE DE DESARROLLO DEL PROTOTIPO 1

Actividades Fecha de inicio Fecha de fin

Análisis, diseño, implementación y validación. 07/10/2019 14/12/2019

Pruebas de integración. 15/12/2019 21/12/2019

Pruebas de validación. 22/12/2019 25/12/2019

Entrega del prototipo a la directora. 26/12/2019 26/12/2019

Tabla 3.2 Actividades de la fase de desarrollo del prototipo 1

Page 27: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

27

FASE DE DESARROLLO DEL PROTOTIPO 2

Actividades Fecha de inicio Fecha de fin

Análisis, diseño, implementación y validación. 27/12/2019 26/03/2020

Pruebas de integración. 27/03/2020 04/04/2020

Pruebas de validación. 05/04/2020 07/04/2020

Entrega del prototipo a la directora. 08/04/2020 08/04/2020

Tabla 3.3 Actividades de la fase de desarrollo del prototipo 2

FASE DE DESARROLLO DEL PROTOTIPO 3

Actividades Fecha de inicio Fecha de fin

Análisis, diseño, implementación y validación. 09/04/2020 18/05/2020

Pruebas de integración. 19/05/2020 21/05/2020

Pruebas de validación. 22/05/2020 24/05/2020

Entrega del prototipo a la directora. 25/05/2020 25/05/2020

Tabla 3.4 Actividades de la fase de desarrollo del prototipo 3

FASE DE PREPARACIÓN DE DOCUMENTACIÓN

Actividades Fecha de

inicio Fecha de

fin

Composición de la memoria a partir de la documentación redactada. 26/05/2020 31/05/2020

Tabla 3.5 Actividades de la fase de preparación de documentación

3.2 Instalación del hardware

Tal y como se comentó en la sección de objetivos, el hardware utilizado consiste

en una placa computadora Raspberry Pi 4 [1]. En la tabla 3.6 se indican las

especificaciones técnicas de la misma.

Page 28: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

28

Raspberry Pi 4 modelo B

Procesador Broadcom BCM2711B0, quad-core Cortex-A72

Frecuencia de reloj 1,5 GHz

GPU VideoCore VI 500 MHz

Memoria principal 4GB LPDDR4-3200

Conectividad inalámbrica Wi-Fi 2,4GHz / 5GHz IEEE 802.11.b/g/n/ac

Bluetooth 5.0, BLE

Conectividad de red Gigabit Ethernet

Tabla 3.6 Especificaciones técnicas Raspberry Pi 4 modelo B

El hardware estará en todo momento conectado mediante cable ethernet a un

router doméstico. Dados los objetivos establecidos para este proyecto, que se han

citado en los apartados anteriores, este hardware se ha considerado suficiente para la

creación del servidor GNU/Linux sobre el que se hace el despliegue de software. Otras

opciones como utilizar un equipo más potente o alquilar un servidor cloud fueron

descartadas por ofrecer un rendimiento innecesario para este proyecto.

3.3 Configuración del servidor.

En los siguientes puntos se detalla el software instalado en el servidor que

permitirá que la aplicación java creada para el chatbot pueda ejecutarse de forma

correcta en el sistema.

3.3.1 Sistema operativo instalado.

El sistema operativo escogido para instalar en la Raspberry Pi 4 ha sido Raspbian

[22], concretamente la versión “Lite”, que no cuenta con interfaz gráfica, ya que está

pensada para usar la Raspberry Pi como servidor. Raspbian es una distribución del

sistema operativo GNU/Linux basado en Debian, es el sistema operativo más popular

para Raspberry Pi 4 y por lo tanto el que mayor soporte tiene por parte de la comunidad

de usuarios de esta placa computadora.

Al no contar con interfaz gráfica, todas las operaciones realizadas para la

configuración del servidor se han realizado por línea de comandos utilizando la

Page 29: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

29

aplicación PuTTY [23]. En el momento de escribir este documento, la versión del sistema

operativo es Raspbian 10 (Buster), tal y como se puede observar en la figura 3.3.

Figura 3.3 Identificación de la versión del S.O. mediante línea de comandos.

3.3.2 Instalación del software necesario para el funcionamiento de

la aplicación Java del chatbot.

La aplicación Java creada para el chatbot se ha desarrollado en un equipo de

escritorio con el IDE Eclipse [24]. Para cada prototipo generado, se ha exportado el

proyecto entero con todas sus dependencias a un archivo .jar y se ha transferido a la

Raspberry Pi para su ejecución. Para que la aplicación pueda ejecutarse correctamente,

han tenido que realizarse las siguientes de operaciones previas en el servidor:

• Crear un directorio para la instalación del .jar y los archivos necesarios que la

aplicación necesite leer o escribir, se deberán asignar los permisos necesarios en

cada directorio para evitar conflictos de lectura/escritura. Para este tipo de

operaciones que requieren navegar por los directorios del servidor, se ha usado

el programa WinSCP [25]. En la figura 3.4, se muestra una captura del fichero .jar

localizado en su directorio de ejecución junto con los demás archivos necesarios

para la correcta ejecución de la aplicación.

Page 30: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

30

Figura 3.4 Directorio de instalación de la aplicación Java del chatbot

• Hacer que la aplicación Java del chatbot se ejecute al inicio del sistema: Es

importante que la aplicación se ejecute siempre al inicio del sistema, para evitar

que la aplicación deje de funcionar si se produce un reinicio inesperado, o hay

un corte de alimentación eléctrica. Para lograr esto se ha añadido una línea al

fichero /etc/rc.local del servidor Linux, que hace que se ejecute el comando

necesario para iniciar la aplicación cuando finaliza el arranque del servidor.

• Instalar el JRE (Java Runtime Enviroment): El JRE es el conjunto de aplicaciones y

librerías necesarias para poder usar una aplicación Java. Dado que la aplicación

creada se importará en un archivo .jar desde el equipo de desarrollo, es

necesario que el servidor pueda ejecutar aplicaciones Java desde este tipo de

archivos.

• Instalar MariaDB: Tal y como se comentó en la sección de objetivos, MariaDB [6],

es el sistema gestor de bases de datos escogido para la aplicación, por estar

Page 31: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

31

basado en el lenguaje MySQL [26] y contar con licencia GPL [7]. Es necesario

instalarlo y configurarlo en el servidor Linux para poder crear una base de datos.

• Instalar Apache: Apache [5] es un servidor HTTP que permite la ejecución de

código PHP además de otras funcionalidades. Además de permitir que el sitio

web https://infouned.es funcione correctamente, es necesario para la ejecución

de código PHP.

• Instalar phpMyAdmin: phpMyAdmin [27] es una herramienta escrita en PHP que

permite administrar sistemas gestores de bases de datos basados en MySQL a

través de páginas web. La creación de la base de datos y sus distintas tablas se

ha realizado mediante la interfaz de esta aplicación.

3.3.3 Creación de la base de datos.

Para la creación de la base de datos, se han utilizado registros de los últimos años

con estadísticas sobre los diferentes estudios de la UNED. Para obtenerlos, se contactó

con la Oficina del Tratamiento de la Información [28] haciendo una petición a través de

su página web. La petición fue atendida rápidamente facilitando varias hojas de cálculo

que contenían grandes cantidades de información.

El primer paso para la creación de la base de datos ha sido crear la propia base

de datos y sus diferentes tablas desde phpMyAdmin. Desde esta aplicación pueden

definirse cómodamente los campos que tendrá cada tabla, las relaciones entre los

mismos y la configuración de las claves primarias. Toda esta información puede

consultarse en cualquier momento desde https://infouned.es/phpmyadmin, con el

usuario de solo lectura “equipo” cuya contraseña es “docente”.

En la figura 3.5 puede observarse la interfaz de la aplicación web phpMyAdmin,

a la izquierda puede verse que el nombre que se le ha dado a la base de datos y los

nombres de las diferentes tablas que la componen. A la derecha figuran los datos

técnicos y los números de versión del servidor de base de datos y del servidor web.

Page 32: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

32

Figura 3.5 Interfaz principal de la aplicación web phpMyAdmin

A continuación, se enumeran las diferentes tablas de la base de datos y su

funcionalidad. En el Anexo A de esta memoria se analiza en profundidad cada tabla,

indicando los tipos, claves, descripciones y otros datos de interés sobre cada campo de

las mismas.

• La tabla INFORMACION_GENERICA contiene cadenas largas de texto enlazadas a

un identificador. Estas cadenas son usadas por el chatbot en algunas situaciones

en las que decide que puede dar una respuesta estándar preestablecida.

• Las tablas MATRICULADOS_ASIGNATURAS y MATRICULADOS_TITULACIONES

contienen registros anuales del número de alumnos matriculados en cada

estudio.

• La tabla PRECIOS_TITULACIONES contiene los precios por crédito ECTS de cada

una de las titulaciones.

• Tanto la tabla RENDIMIENTO_ACADEMICO_ASIGNATURAS como la tabla

RENDIMIENTO_ACADEMICO_TITULACIONES contienen registros anuales sobre

Page 33: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

33

estadísticas como la nota media o la tasa de aprobados, de una asignatura o

titulación en un determinado año.

• Las tablas TOTAL_ASIGNATURAS y TOTAL _TITULACIONES contienen los

identificadores y nombres de todas las asignaturas y titulaciones.

3.4 Desarrollo de la aplicación Java del chatbot.

En esta sección se describirán los aspectos más relevantes sobre el desarrollo de

la aplicación Java que se ejecuta en el servidor y es la encargada de gestionar la actividad

del chatbot.

3.4.1 Modelado de clases, responsabilidades y colaboraciones.

Es importante señalar que, dada la naturaleza de la aplicación, únicamente

existirá un caso de uso, conversar. Aunque existen tres actores diferentes, su rol sólo se

diferencia en la plataforma de acceso que utilizan para conversar con el chatbot. En la

figura 3.6 puede observarse el diagrama de casos de uso de la aplicación.

Figura 3.6 Casos de uso de la aplicación

Esto ha provocado que haya sido especialmente difícil construir un modelo de

clases, no sólo por la existencia de un único caso de uso, sino porque las entidades que

forman el conjunto de clases que componen el código fuente de la aplicación, no están

claras desde un principio.

Page 34: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

34

En primer lugar, se muestra a continuación el modelo de dominio de la aplicación

en la figura 3.7. Se han omitido los campos y métodos de las clases, ya que son muy

numerosos y dificultarían la lectura del modelo. Si el lector desease consultar dichos

campos y métodos puede hacerlo en el Anexo B de esta memoria.

Figura 3.7 Modelo de dominio de la aplicación

El modelo de dominio de la figura 3.7 fue tomado como punto de partida en el

desarrollo de la aplicación. Su función es intentar definir clases que serán necesarias en

Page 35: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

35

el sistema y las relaciones entre las mismas. Todas las clases que aparecen en el modelo

de dominio de la figura 3.7 fueron finalmente creadas a la hora de programar la

aplicación y las relaciones finales también se corresponden con las de la figura. Aunque

el código final de la aplicación está compuesto por muchas más clases y relaciones, su

estructura principal la forman las que aparecen en el modelo, por lo que serán

consideradas como las más importantes.

En el Anexo B de esta memoria se hace un análisis descriptivo de las más de 50

clases de la aplicación, sin embargo, los siguientes párrafos estarán centrados sólo en

las clases más importantes. En los siguientes párrafos se explicará a grandes rasgos el

funcionamiento de la aplicación, usando tarjetas CRC de dichas clases.

La clase principal de la aplicación del chatbot es la clase Main, su función es

inicializar todos los componentes que hacen que el chatbot funcione. Cuando se inicia

la aplicación, se ejecuta el método principal de la clase, que creará la clase Configuracion

e iniciará los enlaces con todas las plataformas de acceso. En la tabla 3.7 se muestra su

tarjeta CRC.

Main

Responsabilidades Colaboradores

Crear Configuracion Configuracion

Iniciar el enlace con la plataforma Facebook EnlaceFacebook

Iniciar el enlace con la plataforma Telegram EnlaceTelegram

Iniciar el enlace con la plataforma web. EnlaceWeb

Tabla 3.7 Tarjeta CRC de la clase Main

Los enlaces con la plataforma iniciados se encargarán de establecer

comunicación con las diferentes plataformas, usando la clase Conversacion para obtener

las respuestas que deben facilitar. Estos enlaces podrán obtener una conversación

existente o bien crear una nueva instancia de Conversacion. En la tabla 3.8 se muestra

la tarjeta CRC de las clases de enlace.

Page 36: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

36

EnlaceFacebook, EnlaceTelegram y EnlaceWeb

Responsabilidades Colaboradores

Obtener conversación previa Conversacion

Crear nueva conversación

Recibir mensajes desde la plataforma (Facebook, Telegram o web)

Incorporar mensajes a la conversación

Obtener respuesta de la conversación

Enviar respuesta a la plataforma (Facebook, Telegram o web)

Tabla 3.8 Tarjetas CRC de la clases de enlace.

La clase Configuracion, que es creada por el método principal de la clase Main,

se encarga de crear, contener y facilitar todas las herramientas necesarias para que

funcione el chatbot. Estas herramientas no son más que instancias de las demás clases

principales del sistema. En la tabla 3.9 se muestra su tarjeta CRC.

Configuracion

Responsabilidades Colaboradores

Crear, contener y facilitar una colección de conversaciones Conversacion

Crear, contener y facilitar una conexión a la base datos ConexionBaseDeDatos

Crear, contener y facilitar un clasificador Clasificador

Crear, contener y facilitar un procesador del lenguaje natural ProcesadorLenguajeNatural

Tabla 3.9 Tarjeta CRC de la clase Configuracion

Las clases ConexionBaseDeDatos, Clasificador y ProcesadorLenguajeNatural son

las clases instanciadas por la clase Configuracion. El objetivo es que Configuracion

proporcione instancias de estas clases cuando sean requeridas por otros componentes

de la aplicación para llevar a cabo su cometido.

La clase ConexionBaseDeDatos facilita un enlace con la base datos y permite

ejecutar consultas SQL. En la tabla 3.10 se muestra su tarjeta CRC.

ConexionBaseDeDatos

Responsabilidades Colaboradores

Proporcionar un enlace con la base de datos. SolicitudInformacion

Permitir la ejecución de consultas SQL.

Tabla 3.10 Tarjeta CRC de la clase ConexionBaseDeDatos

La clase Clasificador se encarga de clasificar frases en texto plano, usando un

modelo de aprendizaje automático pre-entrenado. Dispone de un método llamado

Page 37: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

37

clasificarInstancia() que recibe como parámetro de entrada una cadena de texto y

devuelve el nombre del grupo en el que se ha catalogado a esa cadena. En el capítulo 4

se hace un análisis en profundidad sobre esta estrategia de clasificación. En la tabla 3.11

se muestra la tarjeta CRC de la clase Clasificador.

Clasificador

Responsabilidades Colaboradores

Clasificar cadenas de texto usando un modelo de aprendizaje automático pre-entrenado.

Frase

Tabla 3.11 Tarjeta CRC de la clase Clasificador

La clase ProdesadorLenguajeNatural se encarga de utilizar la librería Java

CoreNLP [29] de la Universidad de Stanford. Esta librería permite extraer diversa

información de las cadenas de texto utilizando técnicas de procesamiento de lenguaje

natural, como detección de frases, etiquetado gramatical o reconocimiento de

entidades nombradas. En la tabla 3.12 se muestra su tarjeta CRC.

ProcesadorLenguajeNatural

Responsabilidades Colaboradores

Detectar y separar frases. Frase

Reconocer entidades nombradas.

Realizar el etiquetado gramatical

Tabla 3.12 Tarjeta CRC de la clase ProcesadorLenguajeNatural

La clase Conversacion se encarga de proporcionar una respuesta en forma de

cadena de texto cuando se le solicita. Para obtener dicha respuesta, utiliza los mensajes

almacenados, los estudios aludidos y otras clases relacionadas. Es importante el dato de

que cada conversación tiene un identificador único, que le permite al usuario en todo

momento recuperar el flujo de la conversación. Este identificador ha de ser facilitado

por la clase de enlace correspondiente. En la tabla 3.13 se muestra la tarjeta CRC de la

clase Conversacion.

Conversacion

Responsabilidades Colaboradores

Crear, contener y facilitar una colección de mensajes Mensaje

Crear, contener y controlar el CallBack Estudio

Ofrecer una respuesta acorde al estado actual de la conversación. CallBack

DecisionUnitaria

Tabla 3.13 Tarjeta CRC de la clase Conversacion

La clase Mensaje simboliza un mensaje entrante que un determinado usuario

envía al chatbot. Se encarga de aplicar las operaciones necesarias para transformar el

Page 38: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

38

texto entrante procedente del usuario en una colección de clases Frase. En la tabla 3.14

se muestra su tarjeta CRC.

Mensaje

Responsabilidades Colaboradores

Transformar mensajes del usuario en instancias de la clase Frase Frase

Crear, contener y facilitar una colección de frases.

Tabla 3.14 Tarjeta CRC de la clase Mensaje

La clase Frase simboliza una frase individual perteneciente a un mensaje. Alberga

varios elementos además del texto de la frase, como las entidades que se aluden en ella,

las etiquetas gramaticales, su clasificación, etc. En la tabla 3.15 se muestra su tarjeta

CRC.

Frase

Responsabilidades Colaboradores

Contener y facilitar elementos relativos a una frase de un mensaje, tales como su texto, o su clasificación.

Tabla 3.15 Tarjeta CRC de la clase Frase

La clase Estudio, simboliza una un determinado estudio ofrecido por la UNED.

Los estudios son aludidos en algunos mensajes de una conversación, de esta forma la

clase SolicitudInformacion, que será descrita en los próximos párrafos, puede utilizarlos

para componer respuestas o consultas SQL. En la tabla 3.16 se muestra la tarjeta CRC de

la clase Estudio.

Estudio

Responsabilidades Colaboradores

Contener y facilitar diversos datos relativos al estudio que simboliza, como su nombre o su identificador en la base de datos.

SolicitudInformacion

Tabla 3.16 Tarjeta CRC de la clase Estudio

Es importante añadir que la clase Estudio es una clase abstracta que no puede

ser instanciada, sus subclases Titulacion, Asignatura y AsignaturaBorrosa serán las que

manejen las instancias de tipo Estudio. En la figura 3.8 puede observarse el esquema de

herencia de dichas clases.

Page 39: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

39

Figura 3.8 Subclases de la clase abstracta Estudio

Las clases Asignatura y Titulacion simbolizan los estudios a cuyo nombre hace

referencia. La clase AsignaturaBorrosa se usa en los casos en los que el sistema ha

detectado un nombre de asignatura ambiguo, por ejemplo “Estadística” o “Mecánica”,

que podrían referirse a varias asignaturas de distintas titulaciones. El sistema puede

transformar una instancia de esta clase a una instancia de la clase Asignatura si

mediante las respuestas del usuario consigue averiguar a qué titulación pertenece.

Cuando se necesita una información muy concreta por parte del usuario, o la

información que ha facilitado es ambigua, se usa la clase CallBack. La clase CallBack

permite dejar una conversación a la espera de una respuesta concreta del usuario,

cuando el usuario emite dicha respuesta, la clase CallBack lo detectará y realizará las

operaciones que sean necesarias para generar una respuesta. En la tabla 3.17 se

muestra su tarjeta CRC.

CallBack

Responsabilidades Colaboradores

Permitir dejar una conversación a la espera de una respuesta concreta. SolicitudInformacion

Detectar la respuesta esperada y realizar las acciones correspondientes.

Tabla 3.17 Tarjeta CRC de la clase CallBack

Tal y como se ha comentado, la clase Conversacion tiene todos los elementos

necesarios (mensajes, frases, estudios aludidos, etc.) para generar una respuesta. Para

tomar la decisión de qué tipo de respuesta generar, se usa la clase DecisionUnitaria. Esta

clase, usará todos los datos acumulados en Conversacion para decidir qué tipo de

respuesta ofrecer. En la tabla 3.18 se muestra su tarjeta CRC.

Page 40: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

40

DecisionUnitaria

Responsabilidades Colaboradores

Tomar los datos de la conversación actual para decidir el tipo de respuesta a ofrecer.

SolicitudInformacion

Tabla 3.18 Tarjeta CRC de la clase DecisionUnitaria

La clase SolicitudInformacion es la que se encarga de generar las cadenas de

texto finales que componen las respuestas del chatbot. Usa la conexión a la base de

datos para obtener de ella la información que sea precisa para generar la respuesta. En

la tabla 3.19 se muestra su tarjeta CRC.

SolicitudInformacion

Responsabilidades Colaboradores

Generar las cadenas de texto finales que componen las respuestas del chatbot. ConexionBaseDeDatos

Tabla 3.19 Tarjeta CRC de la clase SolicitudInformacion

Es importante añadir que la clase SolicitudInformacion es una clase abstracta que

no puede ser instanciada. Las subclases que manejan las instancias de tipo

SolicitudInformacion pueden observarse en la figura 3.9.

Figura 3.9 Subclases de la clase abstracta SolicitudInformacion

Todas estas subclases deben implementar el método abstracto

generarCadenaRespuesta(), cada una tiene una implementación diferente para el

mismo. Esto permite personalizar las operaciones realizadas y las cadenas de texto de

respuesta dependiendo del tipo de información que se solicite.

Page 41: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

41

3.5 Enlace con las plataformas

La aplicación Java creada está preparada para interactuar con tantas plataformas

como sean implementadas. Lo único que debe hacerse, es crear una clase de enlace que

haga uso del resto de clases del sistema, tal y como se ha explicado en el apartado

anterior para las clases EnlaceTelegram, EnlaceFacebook y EnlaceWeb.

La dificultad de esto reside en que cada una de estas clases de enlace deberá

usar sus propias estrategias de comunicación para poder llegar a interactuar con la

plataforma objetivo. En los siguientes puntos se describen las acciones que han sido

necesarias para enlazar la aplicación creada con cada una de las tres plataformas con las

que interactúa el chatbot.

3.5.1 Enlace de la aplicación con la plataforma Telegram

La plataforma Telegram pone a disposición de los programadores una API [30]

que permite una fácil comunicación con los chatbots creados en su plataforma. Esta API

es una interfaz basada en HTTP, por lo que hay que crear las funciones necesarias en el

lenguaje de programación que se esté utilizando para que se comunique con la

plataforma Telegram a través de este protocolo. Por suerte, en la propia página web de

la API, se enlazan librerías para los diferentes lenguajes de programación con el objetivo

de crear una capa de abstracción para la comunicación.

El primer paso para crear un chatbot en la plataforma Telegram es registrar un

bot en la plataforma. Dicho bot consiste en una cuenta especial que no requiere un

número de teléfono adicional para ser configurada, al contrario de lo que requeriría una

cuenta estándar de Telegram. Esta cuenta especial sirve como una interfaz para el

código que se ejecuta en la aplicación Java creada. Para crearla, es necesario entablar

una conversación con un bot de la propia plataforma Telegram, llamado BotFather [31],

al cual se le debe solicitar la creación de nuestro bot mediante una serie de comandos.

En la figura 3.10, se muestra la conversación completa que se debe tener para

que BotFather cree la cuenta especial de bot.

Page 42: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

42

Figura 3.10 Conversación necesaria para la creación de una cuenta bot en Telegram

Page 43: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

43

Tal y como puede observarse en la figura, BotFather nos facilita un token que se

utilizara como herramienta de autentificación. Este token ha de ser utilizado por la

aplicación que controla la cuenta bot creada, con él demostrará que está autorizada a

gestionar el bot. La función de esto es que ninguna aplicación pueda tener acceso a los

mensajes ni al control del chatbot a no ser que conozca dicho token. Por seguridad, el

token que se muestra en la figura ha sido cambiado.

Una vez se dispone del token de autentificación, se debe crear un enlace entre

el lenguaje de programación que usa (en este caso Java), y la interfaz HTTP de la API de

Telegram. Esto podría crearse desde cero a partir de la documentación que ofrece la

API, pero en la propia página enlazan una librería para Java con muy buena reputación,

la librería Telegram Bot Java Library [32] que cuenta con licencia MIT [33], por lo que se

ha decidido utilizarla.

Con la librería integrada en nuestro sistema, sólo tenemos que crear una

subclase para la clase abstracta TelegramLongPollingBot e implementar sus métodos

abstractos. Hay dos métodos abstractos que se encargan de la autentificación del bot

mediante su nombre de usuario y el token obtenido de BotFather y otro que se encarga

de controlar el flujo de mensajes. Esta subclase no es otra que la clase EnlaceTelegram

que se describió en apartados anteriores. En la figura 3.11 puede observarse lo sencillo

que resulta implementar dichos métodos.

Page 44: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

44

Figura 3.11 Implementación de los métodos abstractos de TelegramLongPollingBot

La librería también permite obtener fácilmente un identificador único para cada

conversación, ya que invocando al método correspondiente se puede obtener el

identificador de la conversación de Telegram de una forma totalmente segura. Este

identificador de Telegram es único para cada conversación en la plataforma, con lo cual,

es perfectamente válido para usarlo como identificador de conversación en la aplicación

Java del chatbot.

Una vez realizadas estas operaciones, el proyecto estará directamente integrado

con Telegram mediante la clase de enlace.

3.5.2 Enlace de la aplicación con la plataforma Facebook

Messenger

El procedimiento a seguir para realizar un enlace con la plataforma Facebook

Messenger es similar a lo hecho con Telegram: es necesario registrar una “cuenta

Page 45: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

45

especial” en su plataforma para obtener un token de autentificación y después usar ese

token en el código fuente de la aplicación Java creada. Sin embargo, conseguir esos

objetivos no es tan sencillo como ocurría con la plataforma Telegram.

El primer paso para construir el enlace deseado es crear una página de Facebook,

ya que cualquier bot que utilice Messenger ha de estar enlazado a una de estas páginas.

Lo siguiente es crear una aplicación de Facebook. La plataforma Facebook for

Developers [34] ofrece una serie de herramientas para desarrolladores que permiten la

creación de aplicaciones que interactúen con sus plataformas (Facebook, Messenger,

Instagram, etc.). Una vez creada la aplicación en Facebook for Developers, podemos

comenzar la configuración a través de su interfaz web. Esta interfaz se muestra en la

figura 3.12.

Figura 3.12 Interfaz web de Facebook for Developers

Para realizar la configuración de Messenger para la aplicación es necesario realizar dos

acciones:

Page 46: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

46

• Enlazar la página de Facebook y la aplicación creadas: Al realizar este enlace se

habilita la posibilidad de generar un token de autentificación para la mensajería

de la página.

• Crear un Webhook: Los Webhooks son herramientas que permiten recibir

notificaciones HTTP en tiempo real sobre los cambios que se produzcan en

determinados objetos de la plataforma Facebook. Debe crearse un Webhook

que pueda redirigir los mensajes que entren a través de Messenger a un

determinado recurso web.

En la figura 3.13, puede verse la configuración hecha sobre la aplicación InfoUNED.

Figura 3.13 Configuración de la aplicación Facebook InfoUNED

Page 47: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

47

En el caso de Telegram, bastaba con enlazar los tokens obtenidos al crear la

aplicación a la librería que se ejecuta en el código fuente de la aplicación Java. La

plataforma Facebook es algo más exigente, obliga a que el usuario tenga operativo un

servidor HTTP que esté preparado para interactuar con Messenger. En la figura 3.13

puede observarse que el recurso web introducido en la URL de devolución de llamada

es https://tunnel.infouned.es. Facebook impone como requisito que se use el protocolo

HTTPS.

Tal y como se indicó en la introducción de esta memoria, se ha creado el sitio

web https://infouned.es para poder interactuar con el chatbot vía web. Se ha

aprovechado dicho sitio web para crear el subdominio https://tunnel.infouned.es y

alojar en ahí el servidor HTTP que Facebook requiere.

Facebook no enlaza de forma oficial librerías para los diferentes lenguajes de

programación que proporcionen una capa de abstracción para la comunicación con sus

plataformas. Aún así, tras la correspondiente investigación, se decidió utilizar la librería

Racter, del sitio web dedicado al desarrollo de aplicaciones Clivern [35], que cuenta con

licencia Apache 2.0 [21].

Esta librería utiliza el servidor HTTP Jetty Server de Java [36] para crear un

servidor en http://localhost que se encargue de manejar la comunicación con el bot de

Facebook Messenger que se haya referenciado en el código fuente. El problema

principal que ha presentado esta configuración consiste en que el servidor HTTP local

que crea la librería, funciona a través del protocolo HTTP mientras que Facebook obliga

a que el flujo de información hacia el Webhook sea mediante HTTTPS. Para solucionar

este problema, se ha configurado un host virtual en Apache que actúa de túnel inverso

permitiendo la conversión de información entre ambos protocolos. En la figura 3.14 se

muestra la configuración del host virtual de Apache que permite realizar este proceso.

Page 48: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

48

Figura 3.14 Configuración del host virtual de Apache

El esquema del flujo de la información final para la comunicación con la

plataforma Facebook es de la figura 3.15.

Page 49: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

49

Figura 3.15 Esquema del flujo de la información con la plataforma Facebook

El último paso es crear una clase de enlace para interactuar con la librería Racter.

En esta ocasión, no es necesario implementar ningún método abstracto, simplemente

se debe crear un objeto de clase BotPlatform aportando en su constructor el token de

autentificación y el identificador de la aplicación. Una vez creado, ya es posible invocar

las funciones de la librería que son necesarias para la comunicación.

La clase BotPlatform permite invocar un método que devuelve el identificador

de la conversación de Messenger de forma segura. Este identificador de Messenger es

único para cada conversación en la plataforma, con lo cual, es perfectamente válido para

usarlo como identificador de conversación en la aplicación Java del chatbot.

Tras realizar las configuraciones comentadas, se tendrá operativo el enlace de la

plataforma Facebook Messenger con la aplicación Java creada.

Page 50: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

50

3.5.3 Enlace de la aplicación con el sitio web.

Tal y como se ha comentado en los apartados anteriores, para el proyecto se ha

creado el sitio web https://infouned.es, cuya función principal es ofrecer una interfaz

que permita conversar con el chatbot desde el propio sitio.

El diseño de esta interfaz de conversación es muy sencillo, la comunicación con

la aplicación Java se produce de la siguiente forma:

1. Cuando el usuario abre la página web, se comprueba si ya existen coockies con

su identificador de sesión, si no existen, se genera una cadena alfanumérica

aleatoria y se crean con ella las coockies de sesión. El identificador de sesión tiene

la finalidad de actuar como identificador único de conversación en la aplicación

Java.

2. Cuando se pulsa el botón de envío de mensaje, se invoca a la función Javascript

enviarMensaje(). Se pasan como parámetros el texto del mensaje y el

identificador único del usuario.

3. La función enviarMensaje() se comunica con un sencillo script PHP, que a su vez

se comunica con la aplicación Java creada mediante el uso de sockets. En la figura

3.16 se puede observar que el script PHP es bastante simple.

Figura 3.16 Script PHP para la comunicación entre la web y la aplicación.

Page 51: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

51

4. Mediante el uso de la técnica AJAX, la función enviarMensaje() puede actualizar

el historial de chat con la respuesta del chatbot sin necesidad de recargar la

página.

La clase EnlaceWeb implementada en la aplicación Java, está escuchando de

forma ininterrumpida en el puerto 4568 a la espera de peticiones de comunicación a

través de socket. En la figura 3.17 se muestra su implementación.

Figura 3.17 Implementación de la clase EnlaceWeb

Como puede observarse, cada vez que la aplicación detecta un mensaje entrante

a través del socket, la ejecución continúa en un nuevo hilo de ejecución. Esto se ha

realizado de esta forma para evitar la concurrencia, de forma que cuando llega un

mensaje, se delega su gestión en un nuevo hilo de ejecución y el proceso original puede

continuar atendiendo otros mensajes de inmediato. En los demás enlaces no fue

necesario realizar esta operación porque ya estaba implementada en las propias

librerías.

Page 52: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

3. Desarrollo del sistema

52

Page 53: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

4. Estrategias de Inteligencia Artificial

53

Capítulo 4

-Estrategias de Inteligencia Artificial-

En este capítulo se explican las estrategias de inteligencia artificial utilizadas al

desarrollar la aplicación. El capítulo está centrado en las dos ramas de la inteligencia

artificial que se han tocado al realizar el proyecto, el aprendizaje automático y el

procesamiento del lenguaje natural.

En el caso del aprendizaje automático, se ha realizado un clasificador mediante

el entrenamiento de un modelo. Este clasificador se usa para catalogar las frases que se

reciben del usuario y poder generar una respuesta apropiada.

En el caso del procesamiento de lenguaje natural, se hace uso de la librería

CoreNLP [29] de la Universidad de Stanford. Es importante aclarar que la librería se

utiliza para unos objetivos muy concretos, que son la detección de entidades

nombradas, la detección y separación de frases y el etiquetado gramatical. Por lo tanto,

en este proyecto sólo se usa la componente léxica del procesamiento del lenguaje

natural, quedando excluidas la sintáctica, la semántica y la pragmática.

4.1 Aprendizaje automático.

Tal y como se ha indicado en la introducción de este capítulo, los modelos

creados mediante aprendizaje automático tienen un único objetivo: construir un

clasificador que pueda catalogar los mensajes del usuario en ciertos grupos.

4.1.1 Funcionamiento del clasificador.

En este apartado se explicará el funcionamiento del clasificador a la hora de

catalogar los mensajes. En la tabla 4.1 se muestran los distintos grupos en los que se

puede catalogar un mensaje.

Page 54: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

4. Estrategias de Inteligencia Artificial

54

Grupo Descripción Ejemplos

Saludo Mensaje de un usuario hace notar su presencia mediante un saludo o expresión.

"Hola", "Buenas tardes".

Despedida Mensaje de un usuario en el que manifiesta su intención de finalizar la conversación.

"Adiós", "Hasta otra".

Solicitud de información de contacto

Mensaje en el que el usuario solicita información sobre cómo contactar con la UNED.

"¿Cómo me pongo en contacto con vosotros?", "¿Cuál es vuestra dirección de correo electrónico?"

Solicitud de información de matrícula

Mensaje en el que el usuario solicita información sobre el proceso de matriculación.

"¿Cuál es el link de la matrícula online?", "¿Cómo me matriculo?"

Solicitud de estadísticas de rendimiento

Mensaje en el que el usuario solicita estadísticas concretas sobre alguna titulación o asignatura.

"¿Cuál es el porcentaje de sobresalientes en Psicología?", ¿Cuál es la asignatura más difícil de primer curso del Grado en Criminología?

Solicitud de número de matriculados

Mensaje en el que el usuario solicita el número de matriculados de una titulación o asignatura.

"¿Cuánta gente se matricula de Psicología?", "¿Hay mucha gente matriculada este año en la asignatura Programación Orientada a Objetos?".

Solicitud de precios Mensaje en el que el usuario solicita los precios de una titulación.

"¿Qué precio tiene el máster en ingeniería informática?", "¿Es muy caro estudiar derecho?"

Solicitud de guía de estudio

Mensaje en el que el usuario solicita información general de una titulación o asignatura, o la guía de estudio de la misma.

"¿De qué trata la carrera de Historia del Arte?", "Quiero la guía de la asignatura Psicología del pensamiento".

Solicitud información del CUID

Mensaje en el que el usuario solicita información sobre el CUID.

"¿Qué idiomas se pueden estudiar en la UNED?", "¿Cuánto cuesta estudiar en el CUID?"

Tabla 4.1 Grupos de clasificación para los mensajes entrantes.

A los mensajes que no puedan ser catalogados en ninguno de estos grupos, se

les responderá con un texto preestablecido que indica cómo deben expresarse las

consultas de forma correcta.

Existen varios tipos de algoritmos en los que basar un clasificador para la

catalogación de texto. En los últimos años, los algoritmos basados en Naive Bayes[37],

máquinas de soporte vectorial [38] y regresión logística [39] se han convertido en los

más utilizados por la comunidad tecnológica para la clasificación de texto. El motivo de

esto es que su implementación es sencilla y ofrecen buenos resultados de clasificación

incluso cuando los datos de entrenamiento non demasiado grandes. En [40] se puede

consultar un artículo con una comparativa en la que figuran entre otros estos tres

algoritmos. Tras examinar este artículo y otros similares, se ha decidido utilizar el

algoritmo Naive Bayes como base del clasificador, ya que es el que mejores estadísticas

de clasificación correcta ofrece para datos de entrenamiento con pocas instancias. El

motivo de que haya pocas instancias de entrenamiento es que, en el caso concreto del

Page 55: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

4. Estrategias de Inteligencia Artificial

55

clasificador del chabot, se clasifican frases cortas, mientras que lo habitual es obtener

las instancias de entrenamiento de artículos completos formados por miles palabras.

Tal y como se ha explicado en el párrafo anterior, el creado es un clasificador

bayesiano ingenuo (Naive Bayes). Para crear un clasificador de estas características, se

ha tomado como base la exposición del capítulo 6.4 de [GIB06], aunque, como se

explicará a continuación, ha sido necesario realizar algunas modificaciones. El concepto

probabilístico del que se parte es el famoso teorema de Bayes, cuya fórmula es la

siguiente:

𝑃(𝐴|𝐵) =𝑃(𝐵|𝐴)𝑃(𝐴)

𝑃(𝐵)

• 𝑃(𝐴) es la probabilidad a priori de que ocurra A (de forma independiente).

• 𝑃(𝐵) es la probabilidad a priori de que ocurra B (de forma independiente).

• 𝑃(𝐴|𝐵) es la probabilidad a posteriori de que ocurra A dado B.

• 𝑃(𝐵|𝐴) es la probabilidad a posteriori de que ocurra B dado A.

Para comprender cómo funciona el clasificador, haremos una pequeña

adaptación de la fórmula a nuestro caso concreto, explicando las variables que

intervienen:

𝑃(𝑥|𝑦1, … , 𝑦𝑛) =𝑃(𝑦1, … , 𝑦𝑛|𝑥)𝑃(𝑥)

𝑃(𝑦1, … , 𝑦𝑛)

Donde:

• 𝑥 es el nombre del grupo al que pertenece el mensaje (Saludo, Despedida, etc.)

• 𝑦1, … , 𝑦𝑛 es un vector de palabras, cada una de sus componentes contiene una

palabra en concreto. Por ejemplo, con el mensaje “Hola a todos” tendríamos 𝑦 =

{′Hola', ′a', ′todos'}.

• Dado que es un clasificador ingenuo, se asume que las componentes del vector

𝑦, son independientes entre ellas.

Imaginemos que el chatbot recibe el mensaje “Hola a todos”. Dado ese suceso,

el clasificador quiere calcular la probabilidad a posteriori de que el grupo al que

pertenece el mensaje sea Saludo. Tendríamos lo siguiente:

𝑃(𝑆𝑎𝑙𝑢𝑑𝑜|{′Hola', ′a', ′todos'}) =𝑃({′Hola', ′a', ′todos'}|𝑆𝑎𝑙𝑢𝑑𝑜)𝑃(𝑆𝑎𝑙𝑢𝑑𝑜)

𝑃({′Hola', ′a', ′todos'})

Para realizar el cálculo, el clasificador, debe obtener los valores de las probabilidades:

Page 56: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

4. Estrategias de Inteligencia Artificial

56

• 𝑃(𝑆𝑎𝑙𝑢𝑑𝑜): Esta probabilidad se obtiene en base al número de grupos que hay

y a las palabras que forman parte de los mismos. Cuantas más palabras formen

parte de las instancias de un grupo, mayor probabilidad a priori tendrá ese grupo.

• 𝑃({′Hola', ′a', ′todos'}): Esta probabilidad se obtiene en base al total de palabras

que forman parte de las instancias del total de grupos y las veces que estas se

repitan.

• 𝑃({′Hola', ′a', ′todos'}|𝑆𝑎𝑙𝑢𝑑𝑜): Esta probabilidad se obtiene en base a las

palabras de las instancias del grupo Saludo. Si las palabras ′Hola', ′a' y ′todos' se

repiten mucho en las instancias de Saludo esta probabilidad será alta.

El clasificador calculará también las probabilidades 𝑃(𝐷𝑒𝑠𝑝𝑒𝑑𝑖𝑑𝑎|{′Hola', ′a', ′todos'}),

𝑃(𝑆𝑜𝑙𝑖𝑐𝑖𝑡𝑢𝑑 𝑑𝑒 𝑖𝑛𝑓𝑜𝑟𝑚𝑎𝑐𝑖ó𝑛 𝑑𝑒 𝑐𝑜𝑛𝑡𝑎𝑐𝑡𝑜|{′Hola', ′a', ′todos'}) y así sucesivamente

hasta haber calculado la probabilidad a posteriori para cada grupo. El mensaje será

clasificado en el grupo que maximice la probabilidad siempre y cuando supere cierto

umbral.

4.1.2 Construcción del clasificador en Weka.

A continuación, se explicarán los pasos a seguir para construir en Weka el

clasificador descrito en el apartado anterior. En primer lugar, se muestra en la figura 4.1

la estructura del fichero de entrenamiento.

Page 57: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

4. Estrategias de Inteligencia Artificial

57

Figura 4.1 Fragmento del fichero de entrenamiento

En la figura 4.1 puede observarse un fragmento del fichero de entrenamiento, el

fichero completo está compuesto por muchas más instancias. En él se definen dos

atributos, el primero es la cadena de texto de la instancia de entrenamiento y el segundo

el grupo en el que estaría clasificada.

Para crear el clasificador, se debe abrir el software Weka y cargar el fichero de

entrenamiento desde la interfaz, tal y como se muestra en la figura 4.2.

Page 58: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

4. Estrategias de Inteligencia Artificial

58

Figura 4.2 Carga del fichero de entrenamiento en Weka

A continuación, en la pestaña Classify, se debe establecer un clasificador de tipo

FilteredClassifier. Hay dos elementos importantes a la hora de realizar la configuración:

• El tipo de clasificador es NaiveBayes: Tal y como se describió en el apartado de

funcionamiento, el concepto probabilístico detrás del clasificador está basado en

el teorema de Bayes.

• El tipo de filtro es StringToWordVector: Las cadenas de texto de entrenamiento

han de ser transformadas a un formato que pueda ser fácilmente interpretado

por Weka para construir el clasificador. El filtro StringToWordVector transforma

las cadenas de texto a vectores de palabras. Cada componente del vector

corresponde a una posible palabra dentro del vocabulario total del fichero de

entrenamiento, el valor de la componente será el número de repeticiones de la

misma.

En la figura 4.3 puede apreciarse como se establecen los elementos comentados en

los párrafos anteriores.

Page 59: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

4. Estrategias de Inteligencia Artificial

59

Figura 4.3 Configuración del clasificador en Weka

Una vez establecido el clasificador y el filtro, ya se puede comenzar el

entrenamiento. En primer lugar, se muestra en la figura 4.4 la evaluación del clasificador

obtenida usando como fichero de evaluación el propio fichero de entrenamiento.

Page 60: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

4. Estrategias de Inteligencia Artificial

60

Figura 4.4 Evaluación del clasificador usando el fichero de entrenamiento como evaluación

En la parte superior puede observase un resumen de las instancias

correctamente clasificadas y los porcentajes de error, en la parte media encontramos la

exactitud en la clasificación de cada grupo y en la parte inferior la matriz de confusión.

A continuación, podemos ver esa información organizada en tablas. En la tabla 4.2

pueden verse las estadísticas de clasificación de instancia y en la tabla 4.3 la matriz de

confusión.

Fichero de evaluación independiente

Número de instancias de entranamiento 931

Número de instancias de evaluación 931

Instancias correctamente clasificadas 899 / 96,5628%

Instancias clasificadas incorrectamente 32/ 3,4372%

Error medio absoluto 0,0374

Tabla 4.2 Evaluación del modelo usando el fichero de entrenamiento como evaluación

Page 61: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

4. Estrategias de Inteligencia Artificial

61

Matriz de confusión usando

el fichero de entrenamiento

como evaluación

Clasificadas como

saludo despedida Informa

cion Contacto

Informa cion

Matricula

Solicitud Estadistica Rendimient

o

solicitud Matricu

lados

Solicitud Precios

Titulacion

Solicitud Guia

Solicitud CUID

saludo 107 0 0 0 4 0 0 0 0

despedida 2 57 0 0 1 1 1 0 0

informacion Contacto

0 0 77 0 3 0 0 1 0

informacion Matricula

0 0 1 92 2 0 0 1 0

solicitudEstadistica Rendimiento

0 0 0 2 242 0 0 0 0

solicitud Matriculados

0 0 0 0 5 56 0 0 0

solicitudPrecios Titulacion

0 0 0 0 6 0 90 0 0

solicitudGuia 0 0 0 0 1 0 0 90 1

solicitudCUID 0 0 0 0 0 0 0 0 88

Tabla 4.3 Matriz de confusión usando el fichero de entrenamiento como evaluación

Como puede observarse, el porcentaje de acierto es muy alto, pero esto es

debido a que se está evaluando el modelo con las mismas instancias usadas para el

entrenamiento, con lo cual las estadísticas pueden resultar demasiado optimistas. La

información que aportan estos datos es que el modelo predice bien al menos instancias

similares a las de entrenamiento.

En la figura 4.5 se muestran los mismos resultados utilizando como método de

evaluación la validación cruzada con 10 pliegues. Esto significa que se dividen las

instancias en 10 grupos, en cada uno de ellos se hace una división de las instancias en

dos grupos: uno reducido para la evaluación y uno amplio para el entrenamiento. Se

ejecuta el algoritmo una vez por cada pliegue para generar el modelo. Por último, se

hace una ejecución final para evaluar el modelo generado a partir de los pliegues con

todas las instancias.

Page 62: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

4. Estrategias de Inteligencia Artificial

62

Figura 4.5 Evaluación del clasificador usando validación cruzada con 10 pliegues

De nuevo, puede observarse la exactitud en la clasificación de cada grupo y la

matriz de confusión. A continuación, podemos ver esa información organizada en tablas.

En la tabla 4.4 pueden verse las estadísticas de clasificación de instancia y en la tabla 4.5

la matriz de confusión.

Evaluación cruzada con 10 pliegues

Número de instancias de entrenamiento 931

Número de instancias de evaluación 931

Instancias correctamente clasificadas 811 / 87,1106%

Instancias clasificadas incorrectamente 120/ 12,8894%

Error medio absoluto 0,0547

Tabla 4.4 Evaluación del modelo usando validación cruzada con 10 pliegues

Page 63: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

4. Estrategias de Inteligencia Artificial

63

Matriz de confusión usando validación cruzada

con 10 pliegues

Clasificadas como

saludo despedida Informa

cion Contacto

Informa cion

Matricula

Solicitud Estadistica Rendimient

o

solicitud Matricu

lados

Solicitud Precios

Titulacion

Solicitud Guia

Solicitud CUID

saludo 88 0 1 4 15 0 2 1 0

despedida 4 33 0 2 21 0 1 1 0

informacion Contacto

0 0 70 1 7 0 0 2 1

informacion Matricula

0 0 2 87 4 0 0 3 0

solicitudEstadistica Rendimiento

0 0 0 2 241 0 1 0 0

solicitud Matriculados

0 0 0 1 9 51 0 0 0

solicitudPrecios Titulacion

0 0 0 0 17 0 79 0 0

solicitudGuia 0 0 0 0 10 0 0 80 2

solicitudCUID 0 0 0 3 1 1 0 1 82

Tabla 4.5 Matriz de confusión utilizando validación cruzada con 10 pliegues

La reducción en el porcentaje de acierto es significativa, esto es debido a que

existen ciertos grupos de instancias que tienden a ser cruciales, y si no son forman parte

de las instancias de entrenamiento, el modelo no podrá predecir correctamente

instancias similares. Este problema se vería mitigado si se contase con un fichero de

entrenamiento que constase con más instancias, de forma que fuesen cuales fuesen los

grupos generados, las instancias de entrenamiento siempre serían suficientes para

generar un modelo robusto.

Por último, en la figura 4.6 se muestran los resultados utilizando como fichero

de test un archivo independiente que contiene instancias con preguntas habituales que

se le harían al chatbot, pero que no forman parte del fichero de entrenamiento. Dicho

fichero puede ser consultado en [41].

Page 64: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

4. Estrategias de Inteligencia Artificial

64

Figura 4.6 Evaluación del clasificador usando como test un fichero independiente

A continuación, podemos ver esa información organizada en tablas. En la tabla

4.6 pueden verse las estadísticas de clasificación de instancia y en la tabla 4.7 la matriz

de confusión.

Fichero de evaluación independiente

Número de instancias de entrenamiento 931

Número de instancias de evaluación 58

Instancias correctamente clasificadas 58 / 100%

Instancias clasificadas incorrectamente 0/ 0%

Error medio absoluto 0,0226

Tabla 4.6 Evaluación del modelo usando un fichero de evaluación independiente

Page 65: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

4. Estrategias de Inteligencia Artificial

65

Matriz de confusión usando

un fichero de evaluación

independiente

Clasificadas como

saludo despedida Informa

cion Contacto

Informa cion

Matricula

Solicitud Estadistica Rendimient

o

solicitud Matricu

lados

Solicitud Precios

Titulacion

Solicitud Guia

Solicitud CUID

saludo 3 0 0 0 0 0 0 0 0

despedida 0 1 0 0 0 0 0 0 0

informacion Contacto

0 0 7 0 0 0 0 0 0

informacion Matricula

0 0 0 2 0 0 0 0 0

solicitudEstadistica Rendimiento

0 0 0 0 25 0 0 0 0

solicitud Matriculados

0 0 0 0 0 8 0 0 0

solicitudPrecios Titulacion

0 0 0 0 0 0 4 0 0

solicitudGuia 0 0 0 0 0 0 0 4 0

solicitudCUID 0 0 0 0 0 0 0 0 4

Tabla 4.7 Matriz de confusión usando el fichero de evaluación independiente

Dado que las 58 instancias del fichero de evaluación independiente consisten en

consultas habituales que se le harían al chatbot, es normal que la predicción sea del

100%, ya que el modelo está entrenado a partir de instancias similares a dichas

consultas.

Lo único que se debe hacer a continuación, es exportar el modelo como un

archivo “.model” que será cargado por la aplicación Java cuando el sistema se inicie. Con

esto, el clasificador implementado en la clase ClasificadorNaiveBayes estará listo para

funcionar.

Page 66: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

4. Estrategias de Inteligencia Artificial

66

4.2 Procesamiento del lenguaje natural

El procesamiento del lenguaje natural (más conocido por sus siglas en inglés NLP)

[42], es una rama de la inteligencia artificial que investiga la forma de comunicar a las

personas con las máquinas mediante el análisis del lenguaje humano. Para ello se

utilizan técnicas en las que se programan algoritmos que procesan y analizan el texto (o

cualquier otra forma de expresar el lenguaje), para intentar obtener una compresión

computacional de lo que contiene. En [49] se puede consultar un artículo académico en

el que se realiza un análisis del significado, los niveles y las componentes del

procesamiento del lenguaje natural. Existen cuatro componentes en el procesamiento

del lenguaje natural:

• Análisis léxico: Consiste en analizar las palabras que componen la oración

examinada. De este análisis se obtienen etiquetas gramaticales y unidades

léxicas compuestas que pueden ser procesadas individualmente según los

objetivos del usuario.

• Análisis sintáctico: Consiste en analizar la estructura de las oraciones, teniendo

en cuenta la gramática del lenguaje empleado.

• Análisis semántico: Consiste en analizar el significado de las oraciones para lograr

interpretar el mensaje que quieren transmitir.

• Análisis pragmático: Consiste en analizar el contexto de las oraciones para poder

interpretar las emociones del lector, e incluso lenguaje figurado como ironías o

metáforas.

El procesamiento del lenguaje natural en este proyecto tiene tres objetivos concretos:

la detección y separación de frases, el etiquetado gramatical, y la detección de entidades

nombradas. Para cumplir estos objetivos únicamente será necesario el uso de la

componente léxica.

Para aplicar un análisis léxico a los mensajes que recibe el chatbot, se hace uso

de la librería Stanford Core NLP de la Universidad de Stanford [29]. En el sitio web de la

librería, hay varios modelos pre-entrenados en diferentes idiomas, dependiendo del

modelo descargado tendremos diferentes funcionalidades disponibles.

Page 67: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

4. Estrategias de Inteligencia Artificial

67

Figura 4.7 Funcionalidades disponibles según el idioma del modelo utilizado

Como puede observarse en la figura 4.7, la librería nos permite hacer uso

de las siguientes funcionalidades:

• Tokenización: Consiste en el aislamiento de cada palabra o símbolo ortográfico

(token) de un mensaje, atribuyéndole un índice que indica su posición.

• División de oraciones: Consiste en detectar y aislar cada una de las oraciones

contenidas en un mensaje.

• Etiquetado gramatical (conocido también por su nombre en inglés, part-of-

speech tagging, POS tagging o POST): Consiste en etiquetar cada token con su

categoría gramatical (artículo, preposición, verbo, etc.)

• Reconocimiento de entidades nombradas (NER por sus siglas en inglés): Esta

técnica permite extraer las entidades de interés para la aplicación que están

contenidas en el mensaje, como titulaciones, asignaturas, parámetros

estadísticos, etc. Aunque pueda parecer que es una operación sencilla, no lo es,

ya que el sistema requiere detectar miles de posibles entidades, algunas

parcialmente coincidentes, por lo que es necesario establecer un método de

orden de prioridades.

A continuación, se muestran dos capturas de la ejecución de una de las clases de

la aplicación que son utilizadas para las pruebas unitarias, en ella se comprueba el

correcto funcionamiento de las funcionalidades de procesamiento del lenguaje natural.

Se usará una frase simple de ejemplo para poder apreciar el resultado obtenido de usar

la librería CoreNLP. En primer lugar, en la figura 4.8, se muestra el código ejecutado.

Page 68: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

4. Estrategias de Inteligencia Artificial

68

Figura 4.8 Test para comprobar el correcto funcionamiento de CoreNLP

Figura 4.9 Resultado del test de funcionamiento de CoreNLP

Como puede observarse en la figura 4.9, el reconocimiento de entidades

nombradas, además de detectar nombres de personas o lugares, también es usado para

detectar los diferentes estudios que se imparten en la UNED. Además de la detección,

también aporta datos de utilidad como el tipo de estudio (asignatura o titulación) y el

identificador para su localización en la base de datos.

Page 69: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

4. Estrategias de Inteligencia Artificial

69

La librería CoreNLP incluye por defecto un fichero de detección de entidades

nombradas (fichero NER) para el idioma español. En [43] puede consultarse el archivo

completo. En este archivo se encuentran 51000 instancias que etiquetan las entidades

a detectar, según lo que representen (lugares, personas, cargos, etc.). En la figura 4.4 se

puede comprobar cómo se hace uso de esto, etiquetando la palabra “Galicia” como

CITY/COUNTRY o la palabra “UNED” como ORGANIZATION. La estructura del archivo

consiste en separar cada instancia en una línea diferente, en cada línea se separan con

una tabulación los cuatro elementos que forman la instancia. Estos elementos son los

siguientes:

• Término a detectar: Es un grupo formado por una o más palabras que hay que

localizar dentro de la cadena de texto analizado. La coincidencia debe ser exacta.

• Etiqueta: En este campo se almacena el texto con el que será etiquetado el

término en caso de ser localizado (ciudad, individuo, profesión, etc.).

• Grupo al que pertenece la etiqueta: Grupo al que pertenece el término

localizado. (lugares, cargos etc.).

• Prioridad: Nivel de prioridad del término. Puede darse el caso de que en alguna

instancia el término a detectar esté contenido dentro del término a detectar de

otra, o incluso de que el término a detectar sea el mismo en ambas. Para

solucionar este inconveniente, el término detectado será el que mayor prioridad

tenga. Por defecto, el nivel de prioridad es igual al número de palabras del

término.

Para que la detección de estudios sea posible, se ha generado un fichero NER a partir de

los estudios que almacena la base de datos del chatbot. El fichero tiene la misma

estructura que el fichero NER de CoreNLP comentado en el párrafo anterior. En [44] se

puede consultar el fichero completo, compuesto por 5090 instancias.

En la tabla 4.8 puede observarse la forma en la que se han generado las líneas

del fichero NER de estudios a través de tres ejemplos. A cada estudio se le asignan varias

nomenclaturas. Estas nomenclaturas son las formas a través de las cuales se podrá hacer

referencia al estudio al conversar con el chatbot. Cada una de estas nomenclaturas

genera una instancia distinta para el fichero NER. Con esto se consigue que a la hora de

conversar con el chatbot se pueda aludir un estudio utilizando diferentes combinaciones

de palabras.

Page 70: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

4. Estrategias de Inteligencia Artificial

70

Estudio Tipo

Nomenclatura (Palabras necesarias

para aludir al estudio en una conversación)

Prioridad Línea generada

en el fichero

MÁSTER UNIVERSITARIO

EN FÍSICA MÉDICA Titulación

master universitario

en fisica medica 8

master universitario en fisica medica INFOUNED_TITULACION_2153 INFOUNED_ENTITY 8

master en fisica medica

8 master en fisica medica INFOUNED_TITULACION_2153 INFOUNED_ENTITY 8

master de fisica medica

8 master de fisica medica INFOUNED_TITULACION_2153 INFOUNED_ENTITY 8

FUNDAMENTOS FÍSICOS DE LA

INFORMÁTICA

Asignatura

fundamentos fisicos

de la informatica 7

fundamentos fisicos de la informatica INFOUNED_ASIGNATURA_1531056 INFOUNED_ENTITY 7

fundamentos fisicos

7 fundamentos fisicos INFOUNED_ASIGNATURA_1531056 INFOUNED_ENTITY 7

fisica 5 fisica INFOUNED_ASIGNATURA_1531056 INFOUNED_ENTITY 5

GRADO EN PSICOLOGÍA

Titulación

grado en psicologia

8 grado en psicologia INFOUNED_TITULACION_6201 INFOUNED_ENTITY 8

psicologia 6 psicologia INFOUNED_TITULACION_6201 INFOUNED_ENTITY 6

Tabla 4.8 Construcción de las instancias del fichero NER de estudios

Otra característica que puede observarse en la tabla 4.8, es la ausencia de

acentos, letras mayúsculas y caracteres especiales en las nomenclaturas y en las líneas

generadas. Esto es debido a que el chatbot realiza diversas operaciones sobre los

mensajes entrantes antes de aplicar el procesamiento del lenguaje natural, entre estas

operaciones se encuentran la conversión a letras minúsculas de todo el texto y la

eliminación de acentos y caracteres especiales.

Las prioridades se asignan de la bajo las siguientes reglas:

• El valor de las prioridades de las instancias de estudio está comprendido entre 5

y 8, para otorgar cierta ventaja a estas instancias sobre las instancias comunes

del fichero NER original

Page 71: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

4. Estrategias de Inteligencia Artificial

71

• Las titulaciones cuya nomenclatura conste de una sola palabra tienen una

prioridad de 6, el resto tienen una prioridad de 8.

• Las asignaturas cuya nomenclatura conste de una sola palabra tienen una

prioridad de 5, el resto tienen una prioridad de 7.

Con estas prioridades se consiguen ciertos objetivos a la hora de detectar términos, por

ejemplo, que el término “Psicología” por sí solo haga referencia a la titulación de Grado

en Psicología y no a ciertas asignaturas que también tengan esa nomenclatura, o que el

término “Psicología del Pensamiento” haga referencia a la asignatura con ese nombre y

no a la titulación de Grado en Psicología.

Una vez generado el fichero NER de estudios, se combina con el fichero NER

original de la librería CoreNLP, no se requiere ninguna operación adicional ya que como

se ha comentado, tienen la misma estructura. En [45] puede consultarse el fichero NER

combinado, que consta de 56090 instancias.

Durante la creación de dicho archivo, también se han tenido que solventar

problemas de ambigüedad, ya que existen asignaturas que, pese a ser diferentes, tienen

el mismo nombre. Para resolver esa ambigüedad se creado la clase AsignaturaBorrosa,

que fue brevemente comentada en el apartado 3.4.1. En la figura 4.10 puede verse un

fragmento del fichero NER combinado del que se habló en el párrafo anterior.

Figura 4.10 Fragmento del fichero NER combinado

Las asignaturas comunes, sólo tienen un identificador en su etiqueta

INFOUNED_ASIGNATURA_XXXXXX, mientras que las que tienen un nombre que puede

hacer referencia a varias asignaturas diferentes, tienen varios identificadores separados

por guiones bajos. Por ejemplo, la asignatura “Mecánica Analítica” situada en la línea

54052 es una asignatura común, mientras que “Mecánica Cuántica” de la línea 54053,

podría hacer referencia a la asignatura con identificador 61044075 o la con identificador

1073016. Cuando el chatbot detecta una asignatura ambigua, le solicita al usuario que

indique la titulación a la que pertenece, para así averiguar cuál es finalmente el

identificador correcto.

Al iniciar la aplicación Java, la librería CoreNLP lee el fichero NER combinado y

almacena en la memoria RAM las estructuras de datos necesarias para efectuar las

búsquedas deseadas. La información relativa a las frases detectadas, entidades aludidas,

Page 72: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

4. Estrategias de Inteligencia Artificial

72

y etiquetas gramaticales, es almacenada en instancias de la clase Frase, de forma que

sus clases colaboradoras puedan hacer uso de esa información cuando lo necesiten.

Page 73: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

5. Casos prácticos 73

Capítulo 5

-Casos prácticos-

En este capítulo se analiza la información que puede ofrecer el chatbot a las

diferentes cuestiones que los usuarios de envíen. Aunque las figuras que se muestran

están tomadas desde la plataforma Telegram, las respuestas que da el chatbot serán las

mismas independientemente de la plataforma de comunicación usada, tal y cómo se ha

explicado en los capítulos anteriores.

5.1 Información genérica.

Las respuestas de tipo información genérica, son respuestas preestablecidas que

están guardadas en la base de datos. Como no están referidas a estudios concretos, no

es necesario componer consultas SQL complejas ni generar un texto de respuesta

personalizado, simplemente el chatbot responde con el texto que está guardado en la

base de datos.

Hay varias respuestas de tipo información genérica que el chatbot puede ofrecer:

• Saludo: El saludo del chatbot sirve como presentación e intenta que el usuario

comprenda el tipo de información que es posible facilitar. En la figura 5.1 puede

observarse un ejemplo de este tipo de respuesta.

Page 74: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

5. Casos prácticos

74

Figura 5.1 Respuesta a un mensaje de saludo.

• Despedida: Cuando el chatbot detecta que el usuario quiere finalizar la

conversación, responde con un mensaje de despedida. En la figura 5.2 puede

observarse un ejemplo de este tipo de respuesta.

Figura 5.2 Respuesta a un mensaje de despedida

• Información de contacto: Si el usuario pregunta algo relativo a las formas de

contactar con la UNED, se le facilitará el enlace correspondiente tras preguntarle

el tipo de información concreta que quiere. En la figura 5.3 puede observarse un

ejemplo de este tipo de respuesta.

Page 75: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

5. Casos prácticos

75

Figura 5.3 Respuesta a un mensaje de información de contacto

• Información sobre cómo realizar la matrícula: Si se detecta que el usuario está

preguntando algo relacionado con el proceso de matrícula, se le facilitará el

enlace de la matriculación online. En la figura 5.4 puede observarse un ejemplo

de este tipo de respuesta.

Figura 5.4 Respuesta a un mensaje de información de matrícula

• Información sobre el Centro Universitario de Idiomas (CUID): Si se detecta que el

usuario está preguntando algo relacionado con el CUID, se le facilitará el enlace

Page 76: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

5. Casos prácticos

76

correspondiente tras preguntarle el tipo de información concreta que quiere. En

la figura 5.5 puede observarse un ejemplo de este tipo de respuesta.

Figura 5.5 Respuesta a un mensaje de información sobre el CUID

5.2 Estadísticas de titulaciones y asignaturas.

Tal y como se explicó en el capítulo 4, el chatbot puede detectar titulaciones,

asignaturas y parámetros estadísticos nombrados en el mensaje. Según la clasificación

del mensaje del usuario y los parámetros estadísticos detectados en él, el chatbot puede

ofrecer diversa información sobre estadísticas.

• Solicitud de precios: El chatbot puede facilitar los precios por crédito ECTS de

una titulación, la cual, obviamente, debe ser aludida en el mensaje. En la figura

5.6 puede observarse un ejemplo de este tipo de respuesta.

Page 77: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

5. Casos prácticos

77

Figura 5.6 Respuesta a un mensaje de información sobre precios

• Solicitud de estadísticas de rendimiento: El usuario puede preguntar por ciertas

estadísticas de rendimiento de las titulaciones y asignaturas. La aplicación

buscará en la base de datos los registros de los últimos años sobre dichas

estadísticas. Las estadísticas sobre las que se pueden preguntar son:

o Para las titulaciones: Nota media, valoración estudiantil, tasa de éxito,

duración media, número de nuevos estudiantes, créditos matriculados

por los estudiantes, créditos matriculados, créditos superados, créditos

reconocidos, número de estudiantes egresados, tasa de abandono,

porcentaje de éxito en las diferentes convocatorias (Febrero, Junio,

Septiembre y Diciembre), número de exámenes por estudiante, edad

media global, edad media de hombres, edad media de mujeres,

porcentaje de hombres, porcentaje de mujeres, porcentaje de alumnos

extranjeros y las tasas de suspensos, aprobados, notables, sobresalientes

y matrículas de honor.

o Para las asignaturas: Nota media, valoración estudiantil, tasa de éxito, y

las tasas de suspensos, aprobados, notables, sobresalientes y matrículas

de honor. En las figuras 5.7 y 5.8 pueden observarse dos ejemplos de este

tipo de respuesta, en la primera, la pregunta hace referencia a una

asignatura mientras que en la segunda hace referencia a una titulación.

Page 78: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

5. Casos prácticos

78

Figura 5.7 Respuesta a un mensaje sobre estadísticas de una asignatura

Figura 5.8 Respuesta a un mensaje sobre estadísticas de una titulación

• Solicitud de estadísticas de rendimiento por ranking: El usuario puede preguntar

cuáles son los estudios que tienen mayores o menores tasas de un determinado

parámetro estadístico. En la figura 5.9 puede observarse un ejemplo de este tipo

de respuesta.

Page 79: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

5. Casos prácticos

79

Figura 5.9 Respuesta a un mensaje sobre estadísticas por ranking

• Solicitud de estadísticas de rendimiento por ranking con filtros: Igual que la

anterior solicitud, pero especificando un filtro, por ejemplo, pertenecer a un

determinado curso o cuatrimestre. En la figura 5.10 puede observarse un

ejemplo de este tipo de respuesta.

Page 80: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

5. Casos prácticos

80

Figura 5.10 Respuesta a un mensaje sobre estadísticas por ranking con filtros

5.3 Guías de las titulaciones y asignaturas

Este tipo de respuestas facilitan un enlace a la guía de estudio de la titulación o

asignatura que se haya aludido. El enlace conduce directamente a la guía de estudio

generada en formato pdf, no la versión web.

Para generar el enlace no es necesario ni siquiera acceder a la base datos, un

algoritmo lo compondrá a partir del identificador y el nivel de estudios de la titulación o

asignatura aludida. En la figura 5.11 puede observarse un ejemplo de este tipo de

respuesta.

Page 81: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

5. Casos prácticos

81

Figura 5.11 Respuesta a mensaje de petición de guía de estudio

Page 82: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

5. Casos prácticos

82

Page 83: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

6. Conclusiones 83

Capítulo 6

-Conclusiones, mejoras y trabajos futuros-

En este último capítulo se expondrán las principales contribuciones de este

proyecto y las conclusiones personales. También se comentará las posibles mejoras

aplicables y las posibilidades que ofrece la reutilización del código de la aplicación creada

para desarrollar otros tipos de chatbots en trabajos futuros.

6.1 Principales contribuciones.

Las principales aportaciones de este proyecto al área del desarrollo de chatbots

son las siguientes:

• Creación de un servidor GNU/Linux en una placa computadora Raspberry Pi 4

que permite el despliegue de la aplicación Java que controla el chatbot. Aunque

no es habitual utilizar dicho hardware para este tipo de proyectos, existen varios

trabajos, como por ejemplo [46], que también lo hacen.

• Desarrollo de un chatbot asistente virtual que facilita información relativa a los

estudios impartidos en la UNED. El chatbot creado puede ofrecer información

general sobre la UNED o información concreta sobre estadísticas de las

titulaciones y asignaturas impartidas. En el capítulo 2 se han referenciado

trabajos similares que tratan el tema de los chatbots en la educación, sin

embargo, no se ha encontrado ningún trabajo en el que se desarrolle un chatbot

que facilite una información sobre los estudios impartidos en una institución de

una forma similar a lo que hace el chatbot de este proyecto.

• Diseño de una aplicación capaz de interactuar con múltiples plataformas de

acceso. Tal y como se ha explicado en el capítulo 3, la aplicación Java que

controla el chatbot está diseñada para interactuar con varias plataformas y

pensada para que sea sencillo añadir plataformas nuevas en un futuro. Este

modelo de gestión no es el habitual, los trabajos que se han referenciado en el

Page 84: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

6. Conclusiones

84

capítulo 2 sólo ofrecen comunicación con una plataforma, o bien requieren la

creación de aplicaciones adicionales para dar servicio a nuevas plataformas.

• Creación de una base de datos que contiene estadísticas de los últimos años

sobre los estudios impartidos en la UNED. Tal y como se ha comentado en los

párrafos anteriores, no se han encontrado trabajos que traten el desarrollo de

chatbots en los que se construya una base de datos que permita ofrecer

estadísticas sobre estudios.

• Aplicación de modelos de aprendizaje automático y procesamiento de lenguaje

natural. Se emplea el aprendizaje automático para la clasificación de mensajes y

el procesamiento del lenguaje natural para la separación de frases, etiquetados

gramaticales y reconocimiento de entidades normales. La combinación de estas

dos ramas de la inteligencia artificial en el desarrollo de chatbots es algo

frecuente, y se ha podido comprobar en las referencias hechas en el capítulo 2.

6.2 Conclusiones personales.

La realización de este proyecto me ha servido para investigar en profundidad el

mundo de los chatbots. Durante la investigación he descubierto lo importantes que son

los chatbots en la actualidad, y viendo su creciente popularidad en los últimos años y

cómo la comunidad de investigadores se está volcando en proyectos que los involucra,

seguro que en los próximos años esta popularidad continuará al alza.

Para lograr finalizar el desarrollo de este proyecto he tenido que trabajar en

áreas muy diversas, desde la instalación y configuración de un servidor GNU/Linux hasta

el uso del aprendizaje automático. Con todo lo que he aprendido trabajando en esas

diversas áreas, he acabado por darme cuenta de que la elección que tomé al escoger

este tema para el proyecto no pudo ser más acertada.

He podido comprobar que los chatbots son aplicaciones ideales para el uso de

estrategias de inteligencia artificial. Yo nunca había utilizado el aprendizaje automático

directamente en ninguna de las aplicaciones que había programado en el pasado, y

realizando este proyecto he aprendido a implementar un clasificador con Weka. Sin

duda eso es lo que más valoro de este proyecto de cara al futuro: el hecho de construir

un fichero de entrenamiento, entrenar un modelo en Weka y después usarlo en la

aplicación, me parece algo tremendamente útil que sin duda volveré a utilizar en futuros

proyectos, ya sean personales, profesionales o académicos.

Page 85: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

6. Conclusiones

85

6.3 Mejoras.

Las principales mejoras que incluiría en el proyecto estarían relacionadas con los

ficheros de entrenamiento del clasificador. Con los ficheros de entrenamiento actuales

el chatbot ofrece unas respuestas correctas en la mayoría de los casos, pero en

ocasiones falla si el usuario redacta su pregunta de una forma poco habitual. Si se

contase con unos ficheros de entrenamiento que tuviesen, por ejemplo, millones de

frases y no contuviesen errores de clasificación, la corrección de las respuestas ofrecidas

por el chatbot se acercaría al 100%, y serían poco frecuentes las situaciones en las que

el usuario no obtendría la respuesta deseada.

En la misma línea, también mejoraría la detección de entidades nombradas del

procesamiento del lenguaje natural. Para mejorarlas habría que aportar nuevos posibles

nombres para las titulaciones, asignaturas y parámetros estadísticos, de forma que

fuesen detectados incluso si el usuario hace referencia a ellos mediante un nombre poco

habitual, o los escribe de forma incorrecta.

También es destacable lo sencillo que sería que el chatbot trabajase en un idioma

diferente. Sólo habría que traducir algunos de los textos alojados en la base de datos,

los ficheros de entrenamiento del modelo de aprendizaje automático y el fichero de

detección de entidades nombradas. Las modificaciones en el código fuente serían

mínimas.

Otra mejora que se hace evidente es la inclusión de más plataformas que

permitan interactuar con el chatbot. Dado que el código fuente de la aplicación está

preparado para una fácil inclusión de nuevas clases de enlace con otras plataformas,

sólo habría que obtener o crear una librería que enlace con la API de la plataforma

objetivo. Seguramente la aplicación de mensajería WhatsApp [47] y la plataforma de

chat Kik [48] serían las siguientes en ser incluidas.

6.4 Trabajos futuros.

La aplicación creada para este proyecto ha sido programada siguiendo la filosofía

de código limpio descrita en el famoso libro [MA09]. Gracias a esto, el código es

altamente reutilizable y modificable, lo que facilita su adaptación a otros proyectos para

desarrollar diferentes tipos de chatbots.

Los cambios requeridos para adaptar el código y transformar la aplicación en un

chatbot con una finalidad diferente, como un asistente de compras para el comercio

electrónico, o un chatbot de captación de clientes, no requerirían grandes cambios en

el código fuente. La mayor parte de los cambios estarían relacionados con la sustitución

Page 86: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

6. Conclusiones

86

de la base de datos por una acorde a la finalidad, y el uso de unos ficheros de

entrenamiento diferentes en el modelo de aprendizaje automático.

A continuación, se enumeran algunas de las posibles líneas de trabajo futuro:

• Ofrecer la posibilidad de que el usuario o administrador modifique el

comportamiento del chatbot en tiempo de ejecución, pudiendo alterar

parámetros como forma de expresarse del chatbot, su funcionalidad, o las

emociones que transmite.

• Integrar la interacción con archivos, de forma que el chatbot pueda enviar y

recibir fotografías, vídeos o ficheros de cualquier tipo para procesarlos según

corresponda.

• Usar el aprendizaje automático para entrenar al chatbot con grandes ficheros de

texto como libros o sitios web, y ver qué tipo de acciones se pueden llevar a cabo

con los modelos creados a partir de ellos.

• Crear un chatbot que pueda realizar acciones complejas, como registrarte en una

página web, o realizar la compra de un artículo simplemente interactuando con

el usuario.

Page 87: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Bibliografía 87

Bibliografía

Referencias

[KD18] Rashid Khan, Anik Das. Build Better Chatbots. Ed. Apress. India 2018.

[GIB06] Jesús González Boticario, Pedro Isasi Viñuela, Daniel Borrajo Millán. Aprendizaje

automático. Ed. Sanz y Torres. Madrid 2006.

[BB96] Gilles Brassard, Paul Bratley. Fundamentals of Algorithmics. Ed. Prentice-Hall.

Estados Unidos 1996.

[MA09] Robert C. Martin. Clean Code: A Handbook of Agile Software Craftsmanship. Ed.

Prentice-Hall. Estados Unidos 2009.

Enlaces web

[1] Raspberry Pi: https://www.raspberrypi.org/

[2] Energy Efficient Computing: A Comparison of Raspberry PI with Modern Devices:

https://www.researchgate.net/publication/298790432_Energy_Efficient_Computing_

A_Comparison_of_Raspberry_PI_with_Modern_Devices

[3] Facebook Messenger: https://www.messenger.com/

[4] Telegram: https://telegram.com.es/

[5] Apache: https://www.apache.org/

[6] MariaDB: https://mariadb.org/

[7] GLP: https://www.gnu.org/licenses/gpl-3.0.html

[8] Weka: https://www.cs.waikato.ac.nz/ml/weka/

[9] Discovering The Types of Chat Bots: https://blog.ubisend.com/discover-

chatbots/types-of-chat-bots (Último acceso: 17/06/2020)

Page 88: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Bibliografía

88

[10] ANNA, an AIML Chatbot:

https://pandorabots.com/pandora/talk?botid=fd5c287f1e357db6 (Último acceso:

17/06/2020)

[11] Chatbots en redes sociales para el apoyo oportuno de estudiantes universitarios

con síntomas de trastorno por déficit de la atención con hiperactividad:

http://www.scielo.org.ar/scielo.php?script=sci_arttext&pid=S1850-

99592018000200007&lang=es

[12] Towards an efficient voice-based chatbot:

https://ieeexplore.ieee.org/abstract/document/7428450

[13] Asistente virtual académico utilizando tecnologías cognitivas de procesamiento de

lenguaje natural: https://revistas.elpoli.edu.co/index.php/pol/article/view/1701/1414

[14] Buoy Health, Inc. Symptom cheker chatbot:

https://www.buoyhealth.com/symptom-checker/ (Último acceso: 17/06/2020)

[15] Ask Diana: A Keyword-Based Chatbot System for Water-Related Disaster

Management: https://www.mdpi.com/2073-4441/11/2/234/htm

[16] Development of a chatbot for informing students of the schedule:

https://www.researchgate.net/publication/340685740_Development_of_a_chatbot_f

or_informing_students_of_the_schedule

[17] Design and Implementation of a chatbot for e-commerce:

https://www.researchgate.net/publication/324731232_Design_and_Implementation_

of_a_chatbot_for_e-commerce

[18] Popular Chatbot Templates in the Finance & Banking Industry or for Lead

Generation Use-case: https://hellotars.com/chatbot-templates/lead-

generation/r1ic9I/stock-brokers-chatbot (Último acceso: 17/06/2020)

[19] A New Chatbot for Customer Service on Social Media:

https://www.researchgate.net/publication/313204805_A_New_Chatbot_for_Custome

r_Service_on_Social_Media

[20] Ldulcic chatbot: https://github.com/ldulcic/chatbot (Último acceso: 17/06/2020)

[21] Licencia Apache 2.0: https://www.apache.org/licenses/LICENSE-2.0

[22] Raspbian: https://www.raspbian.org/

[23] PuTTY: https://www.putty.org/

[24] Eclipse: https://www.eclipse.org/

Page 89: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Bibliografía

89

[25] WinSCP: https://winscp.net/eng/docs/lang:es

[26] MySQL: https://www.mysql.com/

[27] phpMyAdmin: https://www.phpmyadmin.net/

[28] Oficina del Tratamiento de la Información:

https://app.uned.es/evacal/rendac.aspx

[29] Stanford CoreNLP: https://stanfordnlp.github.io/CoreNLP/

[30] Telegram Bot API: https://core.telegram.org/bots/api

[31] Telegram BotFather: https://telegram.me/BotFather

[32] Telegram Bot Java Library: https://github.com/rubenlagus/TelegramBots

[33] Licencia MIT: https://www.mit.edu/~amini/LICENSE.md

[34] Facebook for developers: https://developers.facebook.com/

[35] Clivern Racter: https://github.com/Clivern/Racter (Último acceso 17/06/2020)

[36] Java Jetty server: https://www.eclipse.org/jetty/

[37] Clasificador bayesiano ingenuo:

https://es.wikipedia.org/wiki/Clasificador_bayesiano_ingenuo

[38] Máquinas de vectores de soporte:

https://es.wikipedia.org/wiki/M%C3%A1quinas_de_vectores_de_soporte

[39] Regresión logística:

https://es.wikipedia.org/wiki/Regresi%C3%B3n_log%C3%ADstica

[40] Multi-Class Text Classification Model Comparison and Selection:

https://towardsdatascience.com/multi-class-text-classification-model-comparison-

and-selection-5eb066197568 (Último acceso 17/06/2020)

[41] Fichero de evaluación independiente: https://infouned.es/fichero-evaluacion-

independiente.txt

[42] Procesamiento natural del lenguaje - Natural language processing:

https://es.qwe.wiki/wiki/Natural_language_processing

[43] Fichero de NER original: https://infouned.es/fichero-ner-original.txt

[44] Fichero de NER estudios: https://infouned.es/fichero-ner-estudios.txt

[45] Fichero de NER combinado: https://infouned.es/fichero-ner-combinado.txt

Page 90: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Bibliografía

90

[46] A Smart Home Automation Via Facebook Chatbot and Raspberry Pi:

https://ieeexplore.ieee.org/abstract/document/8448761

[47] WhatsApp: https://www.whatsapp.com/?lang=es

[48] Kik: https://www.kik.com/

[49] Natural Language Processing: State of The Art, Current Trends and Challenges:

https://www.researchgate.net/publication/319164243_Natural_Language_Processing

_State_of_The_Art_Current_Trends_and_Challenges

Page 91: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Lista de figuras y tablas 91

Lista de figuras y tablas

Figuras

Figura 2.1 Uso de los botones en la plataforma Telegram ........................................... 21

Figura 3.1 Esquema del sistema creado ........................................................................ 23

Figura 3.2 Etapas del Modelo de Prototipos ................................................................. 25

Figura 3.3 Identificación de la versión del S.O. mediante línea de comandos. ............ 29

Figura 3.4 Directorio de instalación de la aplicación Java del chatbot ......................... 30

Figura 3.5 Interfaz principal de la aplicación web phpMyAdmin .................................. 32

Figura 3.6 Casos de uso de la aplicación ....................................................................... 33

Figura 3.7 Modelo de dominio de la aplicación ............................................................ 34

Figura 3.8 Subclases de la clase abstracta Estudio ........................................................ 39

Figura 3.9 Subclases de la clase abstracta SolicitudInformacion .................................. 40

Figura 3.10 Conversación necesaria para la creación de una cuenta bot en Telegram 42

Figura 3.11 Implementación de los métodos abstractos de TelegramLongPollingBot 44

Figura 3.12 Interfaz web de Facebook for Developers ................................................. 45

Figura 3.13 Configuración de la aplicación Facebook InfoUNED .................................. 46

Figura 3.14 Configuración del host virtual de Apache .................................................. 48

Figura 3.15 Esquema del flujo de la información con la plataforma Facebook ............ 49

Figura 3.16 Script PHP para la comunicación entre la web y la aplicación. .................. 50

Figura 3.17 Implementación de la clase EnlaceWeb ..................................................... 51

Figura 4.1 Fragmento del fichero de entrenamiento .................................................... 57

Figura 4.2 Carga del fichero de entrenamiento en Weka ............................................. 58

Figura 4.3 Configuración del clasificador en Weka ....................................................... 59

Figura 4.4 Evaluación usando el fichero de entrenamiento como evaluación ............. 60

Figura 4.5 Evaluación del clasificador usando validación cruzada con 10 pliegues ...... 62

Figura 4.6 Evaluación del clasificador usando como test un fichero independiente ... 64

Figura 4.7 Funcionalidades disponibles según el idioma del modelo utilizado ............ 67

Figura 4.8 Test para comprobar el correcto funcionamiento de CoreNLP ................... 68

Figura 4.9 Resultado del test de funcionamiento de CoreNLP ..................................... 68

Figura 4.10 Fragmento del fichero NER combinado ..................................................... 71

Figura 5.1 Respuesta a un mensaje de saludo. ............................................................. 74

Figura 5.2 Respuesta a un mensaje de despedida ........................................................ 74

Page 92: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Lista de figuras y tablas

92

Figura 5.3 Respuesta a un mensaje de información de contacto ................................. 75

Figura 5.4 Respuesta a un mensaje de información de matrícula ................................ 75

Figura 5.5 Respuesta a un mensaje de información sobre el CUID .............................. 76

Figura 5.6 Respuesta a un mensaje de información sobre precios .............................. 77

Figura 5.7 Respuesta a un mensaje sobre estadísticas de una asignatura ................... 78

Figura 5.8 Respuesta a un mensaje sobre estadísticas de una titulación ..................... 78

Figura 5.9 Respuesta a un mensaje sobre estadísticas por ranking ............................. 79

Figura 5.10 Respuesta a un mensaje sobre estadísticas por ranking con filtros .......... 80

Figura 5.11 Respuesta a mensaje de petición de guía de estudio ................................ 81

Tablas

Tabla 3.1 Actividades de la fase inicial del desarrollo ................................................... 26

Tabla 3.2 Actividades de la fase de desarrollo del prototipo 1 ..................................... 26

Tabla 3.3 Actividades de la fase de desarrollo del prototipo 2 ..................................... 27

Tabla 3.4 Actividades de la fase de desarrollo del prototipo 3 ..................................... 27

Tabla 3.5 Actividades de la fase de preparación de documentación............................ 27

Tabla 3.6 Especificaciones técnicas Raspberry Pi 4 modelo B ...................................... 28

Tabla 3.7 Tarjeta CRC de la clase Main.......................................................................... 35

Tabla 3.8 Tarjetas CRC de la clases de enlace. .............................................................. 36

Tabla 3.9 Tarjeta CRC de la clase Configuracion ........................................................... 36

Tabla 3.10 Tarjeta CRC de la clase ConexionBaseDeDatos ........................................... 36

Tabla 3.11 Tarjeta CRC de la clase Clasificador ............................................................. 37

Tabla 3.12 Tarjeta CRC de la clase ProcesadorLenguajeNatural ................................... 37

Tabla 3.13 Tarjeta CRC de la clase Conversacion .......................................................... 37

Tabla 3.14 Tarjeta CRC de la clase Mensaje .................................................................. 38

Tabla 3.15 Tarjeta CRC de la clase Frase ....................................................................... 38

Tabla 3.16 Tarjeta CRC de la clase Estudio .................................................................... 38

Tabla 3.17 Tarjeta CRC de la clase CallBack .................................................................. 39

Tabla 3.18 Tarjeta CRC de la clase DecisionUnitaria ..................................................... 40

Tabla 3.19 Tarjeta CRC de la clase SolicitudInformacion .............................................. 40

Tabla 4.1 Grupos de clasificación para los mensajes entrantes. .................................. 54

Tabla 4.2 Evaluación del modelo usando fichero de entrenamiento como test .......... 60

Tabla 4.3 Matriz de confusión usando el fichero de entrenamiento como evaluación 61

Tabla 4.4 Evaluación del modelo usando validación cruzada con 10 pliegues ............. 62

Tabla 4.5 Matriz de confusión utilizando validación cruzada con 10 pliegues ............. 63

Tabla 4.6 Evaluación del modelo usando un fichero de evaluación independiente .... 64

Tabla 4.7 Matriz de confusión usando el fichero de evaluación independiente .......... 65

Tabla 4.8 Construcción de las instancias del fichero NER de estudios ......................... 70

Page 93: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Lista de siglas, abreviaturas y acrónimos 93

Lista de siglas, abreviaturas y acrónimos

WEKA

Waikato Environment for Knowledge Analysis

CRC

Class-Responsibility-Collaborator (Clase-Responsabilidad-Colaboración)

UML

Unified Modeling Language (Lenguaje de Modelado Unificado)

GPL

General Public License (Licencia Pública General)

MIT

Massachusetts Institute of Technology (Instituto Tecnológico de Massachusets)

Page 94: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Lista de siglas, abreviaturas y acrónimos

94

Page 95: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Anexo A. Estructura de las tablas de la base de datos 95

Anexo A

-Estructura de las tablas de la base de datos-

En este anexo, figuran las tablas que muestran la estructura de todas las tablas

que componen la base de datos de la aplicación.

Nombre de la tabla: INFORMACION_GENERICA

# Nombre de columna Tipo Cotejamiento Nulo Clave Comentarios

1 ID_INFORMACION_GENERICA varchar(100) utf8mb4_general_ci No PRIMARIA Identificador único de registro.

2 TEXTO_INFORMACION_GENERICA longtext utf8mb4_general_ci No - Texto que el chatbot usará como respuesta.

Nombre de la tabla: MATRICULADOS_ASIGNATURAS

# Nombre Tipo Cotejamiento Nulo Clave Comentarios

1 CURSO_ACADEMICO varchar(11) utf8mb4_general_ci No PRIMARIA Año del curso académico al que el registro pertenece.

2 NOMBRE_NIVEL_ESTUDIOS varchar(50) utf8mb4_general_ci No - Nombre del nivel de estudios.

3 ID_TITULACION int(11) No PRIMARIA Identificador único de la titulación.

4 ID_ASIGNATURA varchar(11) utf8mb4_general_ci No PRIMARIA Identificador único de la asignatura.

5 NUMERO_MATRICULADOS int(11) No - Número de alumnos matriculados.

Nombre de la tabla: MATRICULADOS_TITULACIONES

# Nombre Tipo Cotejamiento Nulo Clave Comentarios

1 CURSO_ACADEMICO varchar(11) utf8mb4_general_ci No PRIMARIA Año del curso académico al que el registro pertenece.

2 NOMBRE_NIVEL_ESTUDIOS varchar(50) utf8mb4_general_ci No - Nombre del nivel de estudios.

3 ID_TITULACION int(11) No PRIMARIA Identificador único de la titulación.

4 NUMERO_MATRICULADOS int(11) No - Número de alumnos matriculados.

Page 96: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Anexo A. Estructura de las tablas de la base de datos

96

Nombre de la tabla: PRECIOS_TITULACIONES

# Nombre Tipo Cotejamiento Nulo Clave Comentarios

1 ID_TITULACION int(11) No PRIMARIA Identificador único de la titulación.

2 NOMBRE_TITULACION varchar(112) utf8mb4_general_ci No - Nombre de la titulación

3 EUROSPORCREDITO_MATRICULA1 decimal(5,2) No - Precio en euros por cada crédito ECTS la primera vez que el alumno se matricula de una asignatura.

4 EUROSPORCREDITO_MATRICULA2 decimal(5,2) No - Precio en euros por cada crédito ECTS la segunda vez que el alumno se matricula de una asignatura.

5 EUROSPORCREDITO_MATRICULA3 decimal(5,2) No - Precio en euros por cada crédito ECTS la tercera vez que el alumno se matricula de una asignatura.

6 EUROSPORCREDITO_MATRICULA4 decimal(5,2) No - Precio en euros por cada crédito ECTS la cuarta y posteriores veces que el alumno se matricula de una asignatura.

Nombre de la tabla: RENDIMIENTOS_ACADEMICO_ASIGNATURAS

# Nombre Tipo Cotejamiento Nulo Clave Comentarios

1 CURSO_ACADEMICO varchar(9) utf8mb4_general_ci No PRIMARIA Año del curso académico al que el registro pertenece.

2 ID_TITULACION int(11) No PRIMARIA Identificador único de la titulación.

3 NOMBRE_ASIGNATURA varchar(188) utf8mb4_general_ci Sí - Nombre de la asignatura.

4 ID_ASIGNATURA varchar(11) utf8mb4_general_ci No PRIMARIA Identificador único de la asignatura.

5 CREDITOS_ASIGNATURA decimal(5,1) Sí - Número de créditos ECTS que de la asignatura.

6 CUATRIMESTRE varchar(7) utf8mb4_general_ci Sí - Cuatrimestre en el que se imparte la asignatura.

7 CURSO varchar(15) utf8mb4_general_ci No PRIMARIA Curso en el que se imparte la asignatura.

8 CREDITOS_MATRICULADOS decimal(6,1) Sí - Suma de los créditos ECTS totales de todos los alumnos que se han matriculado de la asignatura.

9 CREDITOS_EVALUADOS decimal(6,1) Sí - Suma de los créditos ECTS totales de todos los alumnos que se han presentado a las pruebas finales de la asignatura.

10 CREDITOS_SUPERADOS decimal(6,1) Sí - Suma de los créditos ECTS totales de todos los alumnos que han superado la asignatura.

11 PORCENTAJE_TASA_EVALUACION decimal(5,2) Sí - Porcentaje de alumnos alumnos que se han presentado a las pruebas finales de la asignatura.

12 PORCENTAJE_TASA_EXITO decimal(5,2) Sí - Porcentaje de alumnos que han superado la asignatura.

13 NOTA_MEDIA decimal(4,2) Sí - Nota media de los alumnos que han superado la asignatura.

14 PORCENTAJE_TASA_SUSPENSOS decimal(5,2) Sí - Porcentaje de alumnos que han suspendido la asignatura.

15 PORCENTAJE_TASA_APROBADOS decimal(5,2) Sí - Porcentaje de alumnos que han superado la asignatura con una calificación de aprobado.

16 PORCENTAJE_TASA_NOTABLES decimal(5,2) Sí - Porcentaje de alumnos que han superado la asignatura con una calificación de notable.

17 PORCENTAJE_TASA_SOBRESALIENTES decimal(5,2) Sí - Porcentaje de alumnos que han superado la asignatura con una calificación de sobresaliente.

18 PORCENTAJE_TASA_MATRICULAS_

DE_HONOR decimal(5,2) Sí -

Porcentaje de alumnos que han superado la asignatura con una calificación de matrícula de honor.

19 PORCENTAJE_TASA_EXITO_EXAMENES_

REALIZADOS decimal(5,2) Sí -

Porcentaje de exámenes aptos respecto al total de exámenes realizados.

20 VALORACION_ESTUDIANTIL decimal(5,2) Sí - Valoración media recibida por la asignatura en las encuestas de satisfacción de los estudiantes.

Page 97: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Anexo A. Estructura de las tablas de la base de datos

97

Nombre de la tabla: RENDIMIENTOS_ACADEMICO_TITULACIONES

# Nombre Tipo Cotejamiento Nulo Clave Comentarios

1 CURSO_ACADEMICO varchar(11) utf8mb4_general_ci No PRIMARIA Año del curso académico al que el resitro pertenece.

2 ID_TITULACION int(11) No PRIMARIA Identificador único de la titulación.

3 NOMBRE_NIVEL_ESTUDIOS varchar(50) utf8mb4_general_ci Sí - Nombre del nivel de estudios.

4 RAMA varchar(60) utf8mb4_general_ci Sí - Nombre de la rama a la que pertenecen los estudios.

5 NUMERO_MATRICULADOS int(11) Sí - Número de alumnos matriculados e.n la titulación

6 MATRICULA_EQUIVALENTE_TC_45_CREDITOS int(11) Sí - Número de alumnos maticulados en más de 45 créditos ECTS de la titulación.

7 NUMERO_ESTUDIANTES_NUEVOS int(11) Sí - Numero de estudiantes nuevos en la titulación.

8 CREDITOS_MATRICULA_ESTUDIANTES

_NUEVOS int(11) Sí -

Número de créditos ECTS en los que se han matriculado los estudiantes nuevos.

9 CREDITOS_MATRICULA_PRIMERA_VEZ int(11) Sí - Número de créditos ECTS empleados en primeras matrículas.

10 CREDITOS_MATRICULA_SEGUNDA_VEZ int(11) Sí - Número de créditos ECTS empleados en segundas matrículas.

11 CREDITOS_MATRICULA_TERCERA_VEZ int(11) Sí - Número de créditos ECTS empleados en terceras matrículas.

12 CREDITOS_MATRICULADOS int(11) Sí - Número de créditos ECTS en los que se han matriculado el total de estudiantes.

13 CREDITOS_EVALUADOS int(11) Sí - Número de créditos ECTS que han sido evaludos.

14 CREDITOS_SUPERADOS int(11) Sí - Número de créditos ECTS que han sido superados.

15 TASA_RENDIMIENTO decimal(5,2) Sí - Tasa de rendimiento de la titulación.

16 TASA_EXITOS decimal(5,2) Sí - Porcentaje de estudiantes que han superado la asignatura.

17 TASA_EVALUACION decimal(5,2) Sí -

Porcentaje de estudiantes que se han presentado a las pruebas finales de la asignatura.

18 TASA_DE_RENOVACION_DEL_TITULO decimal(5,2) Sí - Tasa de renovación del título de la titulación.

19 CREDITOS_RECONOCIDOS int(11) Sí - Número de créditos ECTS superados mediante reconocimiento.

20 MEDIA_CREDITO_RECONOCIDO_

POR_ESTUDIO decimal(5,2) Sí -

Media de créditos ECTS reconocidos respecto al total de créditos ECTS matriculados.

21 NOTA_MEDIA decimal(5,2) Sí - Nota media de la titulación.

22 PORCENTAJE_SUSPENSOS decimal(5,2) Sí - Porcentaje de suspensos respecto al total de calificaciones de la titulación.

23 PORCENTAJE_APROBADOS decimal(5,2) Sí - Porcentaje de aprobados respecto al total de calificaciones de la titulación.

Page 98: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Anexo A. Estructura de las tablas de la base de datos

98

24 PORCENTAJE_NOTABLES decimal(5,2) Sí - Porcentaje de notables respecto al total de calificaciones de la titulación.

25 PORCENTAJE_SOBRESALIENTES decimal(5,2) Sí - Porcentaje de sobresalientes respecto al total de calificaciones de la titulación.

26 PORCENTAJE_MATRICULAS_DE_HONOR decimal(5,2) Sí - Porcentaje de matrículas de honor respecto al total de calificaciones de la titulación.

27 NUMERO_TOTAL_ESTUDIANTES_

EGRESADOS int(11) Sí -

Número total de estudiantes egresados.

28 NUMERO_HOMBRES_EGRESADOS int(11) Sí - Número total de hombres egresados.

29 NUMERO_MUJERES_EGRESADAS int(11) Sí - Número total de mujeres egresadas.

30 NOTA_MEDIA_GLOBAL_EGRESADOS decimal(5,2) Sí - Nota media global de los estudiantes egresados.

31 NOTA_MEDIA_EGRESADOS_HOMBRES decimal(5,2) Sí - Nota media global de los hombres egresados.

32 NOTA_MEDIA_EGRESADOS_MUJERES decimal(5,2) Sí - Nota media global de los mujeres egresados.

33 DURACION_MEDIA decimal(5,2) Sí - Duración media de la titulación expresada en años.

34 PORCENTAJE_APROBADOS_EGRESADOS decimal(5,2) Sí - Porcentaje de calificaciones de aprobado de los alumnos egresados.

35 PORCENTAJE_NOTABLES_EGRESADOS decimal(5,2) Sí - Porcentaje de calificaciones de notables de los alumnos egresados.

36 PORCENTAJE_SOBRESALIENTES_EGRESADOS decimal(5,2) Sí - Porcentaje de calificaciones de sobresalientes de los alumnos egresados.

37 PORCENTAJE_MATRICULAS_DE_

HONOR_EGRESADOS decimal(5,2) Sí -

Porcentaje de calificaciones de matrículas de honor de los alumnos egresados.

38 TASA_RECONOCIMIENTO decimal(5,2) Sí - Porcentaje de créditos EXTS reconocidos.

39 TASA_EXITO_EXAMENES_REALIZADOS decimal(5,2) Sí - Porcentaje de exámenes superados respecto al total.

40 TASA_ABANDONO decimal(5,2) Sí - Tasa de abandono de la titulación.

41 TASA_EGRESO decimal(5,2) Sí - Tasa de egreso de la titulación.

42 TASA_EFICIENCIA_EGRESADOS decimal(5,2) Sí - Tasa de eficiencia de los alumnos egresados.

43 NUMERO_EXAMENES_REALIZADOS int(11) Sí - Número de exámenes realizado en la titulación.

44 NUMERO_EXAMENES_APTOS int(11) Sí - Número de exámenes realizados calificados como aptos.

45 PORCENTAJE_ESTUDIANTES_

0_EXAMENES decimal(5,2) Sí -

Porcentaje de estudiantes que no han realizado ningún examen.

46 PORCENTAJE_ESTUDIANTES_

1_EXAMENES decimal(5,2) Sí -

Porcentaje de estudiantes que han realizado un examen.

47 PORCENTAJE_ESTUDIANTES_

2_EXAMENES decimal(5,2) Sí -

Porcentaje de estudiantes que han realizado dos exámenes.

48 PORCENTAJE_ESTUDIANTES_

3_EXAMENES decimal(5,2) Sí -

Porcentaje de estudiantes que han realizado tres exámenes.

Page 99: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Anexo A. Estructura de las tablas de la base de datos

99

49 PORCENTAJE_ESTUDIANTES_

4_EXAMENES decimal(5,2) Sí -

Porcentaje de estudiantes que han realizado cuatro exámenes.

50 PORCENTAJE_ESTUDIANTES_

5_EXAMENES decimal(5,2) Sí -

Porcentaje de estudiantes que han realizado cinco exámenes.

51 NUMERO_EXAMENES_REALIZADOS_

PRUEBAS_FEBRERO int(11) Sí -

Número de exámenes realizados en las pruebas de Febrero.

52 NUMERO_EXAMENES_APTOS_

PRUEBAS_FEBRERO int(11) Sí -

Número de exámenes realizados calificados como aptos en las pruebas de Febrero.

53 NUMERO_EXAMENES_REALIZADOS_

PRUEBAS_JUNIO int(11) Sí -

Número de exámenes realizados en las pruebas de Junio.

54 NUMERO_EXAMENES_APTOS_

PRUEBAS_JUNIO int(11) Sí -

Número de exámenes realizados calificados como aptos en las pruebas de Junio.

55 NUMERO_EXAMENES_REALIZADOS_

PRUEBAS_SEPTIEMBRE int(11) Sí -

Número de exámenes realizados en las pruebas de Septiembre.

56 NUMERO_EXAMENES_APTOS_

PRUEBAS_SEPTIEMBRE int(11) Sí -

Número de exámenes realizados calificados como aptos en las pruebas de Septiembre.

57 NUMERO_EXAMENES_REALIZADOS_

PRUEBAS_SEPTIEMBRE_RESERVA int(11) Sí -

Número de exámenes realizados en las pruebas de Septiembre reserva.

58 NUMERO_EXAMENES_APTOS_PRUEBAS_

SEPTIEMBRE_RESERVA int(11) Sí -

Número de exámenes realizados calificados como aptos en las pruebas de Septiembre reserva.

59 NUMERO_EXAMENES_REALIZADOS_

PRUEBAS_DICIEMBRE int(11) Sí -

Número de exámenes realizados en las pruebas de Diciembre.

60 NUMERO_EXAMENES_APTOS_

PRUEBAS_DICIEMBRE int(11) Sí -

Número de exámenes realizados calificados como aptos en las pruebas de Diciembre.

61 PORCENTAJE_DE_EXITO_

EXAMENES_FEBRERO decimal(5,2) Sí -

Porcentaje de éxamenes superados en la convocatoria de Febrero.

62 PORCENTAJE_DE_EXITO_

EXAMENES_JUNIO decimal(5,2) Sí -

Porcentaje de éxamenes superados en la convocatoria de Junio.

63 PORCENTAJE_DE_EXITO_ EXAMENES_SEPTIEMBRE

decimal(5,2) Sí - Porcentaje de éxamenes superados en la convocatoria de Septiembre.

64 PORCENTAJE_DE_EXITO_EXAMENES_

SEPTIEMBRE_RESERVA decimal(5,2) Sí -

Porcentaje de éxamenes superados en la convocatoria de Septiembre reserva.

65 PORCENTAJE_DE_EXITO_EXAMENES_

DICIEMBRE decimal(5,2) Sí -

Porcentaje de éxamenes superados en la convocatoria de Diciembre.

66 NUMERO_EXAMENES_

POR_ESTUDIANTE int(11) Sí -

Promedio de exámenes realizados por estudiante.

67 EDAD_MEDIA_GLOBAL decimal(5,2) Sí - Ediad media global del total de estudiantes.

68 EDAD_MEDIA_HOMBRES decimal(5,2) Sí - Edad media global de los hombres.

69 EDAD_MEDIA_MUJERES decimal(5,2) Sí - Edad media global de las mujeres.

70 EDAD_MEDIA_NO_NACIONALES decimal(5,2) Sí - Edad media global de los alumnos extranjeros.

71 PORCENTAJE_HOMBRES decimal(5,2) Sí - Porcentaje de hombres de la titulación.

Page 100: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Anexo A. Estructura de las tablas de la base de datos

100

72 PORCENTAJE_MUJERES decimal(5,2) Sí - Porcentaje de mujeres de la titulación.

73 PORCENTAJE_UNION_EUROPEA decimal(5,2) Sí - Porcentaje de estudiantes de la Unión Europea de la titulación.

74 PORCENTAJE_NO_NACIONALES decimal(5,2) Sí - Porcentaje de alumnos extranjeros.

75 PORCENTAJE_EGRESADOS_VS_

PRIMERA_MATRICULA decimal(5,2) Sí -

Porcentaje de alumnos egresados respecto a alumnos de primer año.

76 VALORACION_ESTUDIANTIL decimal(5,2) Sí - Valoración estudiantil de los estudiantes.

77 VALORACION_EGRESADOS decimal(5,2) Sí - Valoración estudiantil de los estudiantes egresados.

78 VALORACION_PDI decimal(5,2) Sí - Valoración por parte de miembros del personal docente e investigador.

Nombre de la tabla: TOTAL_ASIGNATURAS

# Nombre Tipo Cotejamiento Nulo Clave Comentarios

1 ID_TITULACION int(11) No PRIMARIA Identificador único de la titulación a la que pertenece la asignatura.

2 ID_ASIGNATURA varchar(10) utf8mb4_general_ci No PRIMARIA Identificador único de la asignatura.

3 CREDITOS_ASIGNATURA decimal(3,1) Sí - Créditos ECTS de la asignatura.

4 NOMBRE_ASIGNATURA varchar(188) utf8mb4_general_ci No - Nombre de la asignatura.

Nombre de la tabla: TOTAL_TITULACIONES

# Nombre Tipo Cotejamiento Nulo Clave Comentarios

1 ID_TITULACION int(11) No PRIMARIA Identificador único de la titulación.

2 NOMBRE_TITULACION varchar(120) utf8mb4_general_ci No - Nombre de la titulación.

3 NIVEL_ESTUDIOS_TITULACION varchar(100) utf8mb4_general_ci No - Nivel de estudios de la titulación.

4 FACULTAD_ESCUELA varchar(100) utf8mb4_general_ci Sí - Facultad a la que pertenece la titulación.

Page 101: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Anexo B. Documentación de las clases 101

Anexo B

-Documentación de las clases-

En este anexo se describen todos los paquetes Java que componen la aplicación.

Se explica brevemente su función y se aportan tablas en las que figuran la totalidad de

las clases e interfaces que componen cada paquete, así como la descripción de las

mismas.

Paquete es.infouned.principal

Es el paquete principal de la aplicación, contiene la clase Main y su clase

directamente relacionada Configuracion.

Clases Descripción

Configuracion Clase que simboliza la configuración del sistema.

Main Clase principal que se encarga de iniciar todos los servicios de la aplicación.

Paquete es.infouned.aprendizajeAutomatico

Este paquete contiene las clases relacionadas con el aprendizaje automático.

Intefaces Descripción

Clasificador

Interfaz que establece los métodos que ha de tener la subclase que la implemente. Representa un clasificador de instancias genérico, ha de ser implementada por un clasificador concreto (Naive Bayes, J48, árboles de decisión, etc.).

Clases Descripción

ClasificadorNaiveBayes

Clase que simboliza un clasificador Naive Bayes, su implementación del método clasificarInstancia() le permite catalogar cadenas de texto a partir de un modelo entrenado.

Page 102: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Anexo B. Documentación de las clases

102

Paquete es.infouned.baseDeDatos

Este paquete contiene las clases que se encargan de interactuar con la base de

datos de la aplicación.

Intefaces Descripción

ConexionBaseDeDatos Interfaz que establece los métodos que ha de tener la subclase que la implemente, representa una conexión con una base de datos.

Clases Descripción

ConexionMySQL Clase que implementa a la interfaz ConexionBaseDeDatos ofreciendo una conexión MySQL

InstruccionSelect Clase que simboliza la entidad de una instrucción SQL del tipo 'SELECT'

Sql Clase abstracta diseñada para que los distintos tipos de operaciones SQL hereden de ella, pudiendo gestionar la conexión y obligando a implementar los métodos abstractos.

Paquete es.infouned.conversacion

Este paquete contiene las clases directamente relacionadas con el flujo de la

conversación.

Clases Descripción

CallBack La clase CallBack permite dejar una conversación a la espera de una respuesta concreta del usuario.

Conversacion Esta clase simboliza una conversación individual, a través de uno los canales disponibles.

DecisionUnitaria Esta clase usa todos los datos que recibe en su constructor para generar la instancia de SolicitudInformacion correcta.

HistoricoConversaciones El objetivo de esta clase es almacenar las diferentes conversaciones disponibles en tiempo de ejecución

Mensaje La clase Mensaje simboliza un mensaje entrante que un determinado usuario envía al chatbot.

TextoCodificadoPlataformas Esta clase ofrece métodos estáticos que generan cadenas de texto especiales que son diferentes en cada plataforma, por ejemplo, saltos de línea.

Paquete es.infouned.enlaces

Este paquete contiene las clases que se encargan de interactuar con las

diferentes plataformas.

Page 103: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Anexo B. Documentación de las clases

103

Clases Descripción

EnlaceFacebook Esta clse se encarga de establecer comunicación con la plataforma Facebook, usando la clase Conversacion para obtener las respuestas que deben facilitar.

EnlaceTelegram Esta clse se encarga de establecer comunicación con la plataforma Telegram, usando la clase Conversacion para obtener las respuestas que deben facilitar.

EnlaceWeb Clase que se encarga de crear un enlace a través de sockets con los usuarios que interactúen con el chatbot a través de la página web.

HiloEjecucionClienteEnlaceWeb Esta clase simboliza un hilo de ejecución indvidual que se encarga de procesar un mensaje recibido a través de la web y generar una respuesta.

Paquete es.infouned.estructurasDeDatos

Este paquete contiene clases auxiliares que simbolizan estructuras de datos.

Algunas de las estructuras de datos utilizadas son adaptaciones del pseudocódigo de

algunos ejemplos de [BB96].

Clases Descripción

MonticuloDeMinimos<T> Clase que implementa un montículo de mínimos.

Node<T> Clase que simboliza un nodo del montículo de mínimos.

Par<TipoObjeto1,TipoObjeto2> Clase que simboliza una pareja de objetos de cualquier clase.

Paquete es.infouned.estudios

Este paquete contiene algunas las clases que se simbolizan los estudios

impartidos en la UNED y elementos que los relacionan con la base de datos.

Clases Descripción

Asignatura Clase que simboliza una asignatura común.

AsignaturaBorrosa Clase que simboliza una asignatura ambigua.

CriterioConsultaSQL Clase que simboliza un criterio SQL que se usará de filtro en las consultas del chatbot a la base de datos.

Estudio Clase abstracta que simboliza cualquier tipo de estudio.

FactoriaEstudio Clase que se encarga de la construcción de objetos de clase Estudio mediante métodos estáticos.

IndicadorOrdenamiento Clase que simboliza un indicador de ordenamiento.

NivelEstudios Clase que simboliza el nivel de estudios de una determinada titulación.

Page 104: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Anexo B. Documentación de las clases

104

ParametroEstadistico Clase que simboliza un parámetro estadístico detectable.

Titulacion Clase que simboliza una titulación.

Paquete es.infouned.procesamientoLenguajeNatural

Este paquete contiene algunas las clases que encargadas del procesamiento del

lenguaje natural.

Interfaces Descripción

ProcesadorLenguajeNatural Interfaz que simboliza un procesador del lenguaje natural.

Clases Descripción

DistanciaDeLevenshtein

Clase diseñada para ofrecer el método estático calcularDistanciaDeLevenshtein(), que nos devolverá un número entero que simboliza la diferencia entre las dos cadenas de caracteres que se le pasen como parámetro.

Frase Clase que simboliza una frase individual.

ProcesadorLenguajeNaturalStanford Clase que carga los modelos de procesamiento de lenguaje natural necesarios para hacer funcionar el StanfordCoreNLP.

Paquete es.infouned.solicitudesInformacionBBDD

Este paquete contiene las clases encargadas de gestionar las diferentes

solicitudes de información.

Clases Descripción

FactoriaDeSolicitudInformacion Clase que se encarga de la creación de instancias de tipo SolicitudInformacion mediante métodos estáticos.

SolicitudEstadisticaRendimientoAsignatura

Clase que se encarga de generar las cadenas de texto finales que componen las respuestas del chatbot cuando la consulta del usuario está relacionada con el rendimiento de una asignatura.

SolicitudEstadisticaRendimientoTitulacion

Clase que se encarga de generar las cadenas de texto finales que componen las respuestas del chatbot cuando la consulta del usuario está relacionada con el rendimiento de una titulación.

SolicitudEstadisticaRendimientoTopAsignatura

Clase que se encarga de generar las cadenas de texto finales que componen las respuestas del chatbot cuando la consulta del usuario está relacionada con el rendimiento de asignaturas por ranking.

Page 105: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Anexo B. Documentación de las clases

105

SolicitudEstadisticaRendimientoTopTitulacion

Clase que se encarga de generar las cadenas de texto finales que componen las respuestas del chatbot cuando la consulta del usuario está relacionada con el rendimiento de titulaciones por ranking.

SolicitudGuia

Clase que se encarga de generar las cadenas de texto finales que componen las respuestas del chatbot cuando la consulta del usuario está relacionada con la guía de la asignatura.

SolicitudInformacion

Clase abstracta que implementa los métodos comunes de todas las solicitud de información, y especifica el método abstracto generarCadenaRespuesta() que han de implementar.

SolicitudInformacionAleatoria Clase que devuelve una solicitud de información aleatoria.

SolicitudInformacionCallBack Clase que se encarga de generar las cadenas de texto finales que componen las respuestas del chatbot cuando la consulta del usuario queda pendiente de CallBack.

SolicitudInformacionGenerica

Clase que se encarga de generar las cadenas de texto finales que componen las respuestas del chatbot cuando la consulta del usuario está relacionada con información genérica.

SolicitudInformacionIncorrecta

Clase que se encarga de generar las cadenas de texto finales que componen las respuestas del chatbot cuando la consulta del usuario se considera que está mal planteada.

SolicitudMatriculadosAsignatura

Clase que se encarga de generar las cadenas de texto finales que componen las respuestas del chatbot cuando la consulta del usuario está relacionada con el número de matriculados de una asignatura.

SolicitudMatriculadosTitulacion

Clase que se encarga de generar las cadenas de texto finales que componen las respuestas del chatbot cuando la consulta del usuario está relacionada con el número de matriculados de una titulación.

SolicitudPreciosTitulacion

Clase que se encarga de generar las cadenas de texto finales que componen las respuestas del chatbot cuando la consulta del usuario está relacionada con el precio de una titulación.

Paquete es.infouned.utilidades

Este paquete contiene clases auxiliares con diversos algoritmos que son útiles en

distintos escenarios.

Clases Descripción

ProcesamientoDeTexto Clase que se utiliza para procesar texto eliminando o añadiendo ciertos caracteres.

Quicksort<T> Clase que implementa el algoritmo Quicksort para ordenamiento de colecciones.

Page 106: Desarrollo de un chatbot que ofrezca información relativa a ...Chatbots are computer programs that offer automated responses to questions from the users simulating a conversation

Alberto Martínez Montenegro ETS de Ingeniería Informática

Anexo B. Documentación de las clases

106

Paquete es.infouned.test

Este paquete contiene clases que se encargan de las pruebas de unidad. Hacen

uso de las bibliotecas JUnit para tal fin.

Clases Descripción

TestAprendizajeAutomatico Clase de pruebas unitarias destinadas a probar el correcto funcionamiento del paquete de aprendizaje automático.

TestConfiguracion Clase de pruebas unitarias destinadas a probar el correcto funcionamiento de la clase Configuracion.

TestConversacion Clase de pruebas unitarias destinadas a probar el correcto funcionamiento de las conversaciones.

TestProcesamientoLenguajeNatural Clase de pruebas unitarias destinadas a probar el correcto funcionamiento del paquete de procesamiento del lenguaje natural.

TestSolicitudesInformacionBBDD Clase de pruebas unitarias destinadas a probar el correcto funcionamiento de las consultas a la base de datos.

TestUtilidades Clase de pruebas unitarias destinadas a probar el correcto funcionamiento del paquete de utilidades.