Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Escu
ela
Po
lité
cn
ica S
up
erio
r de
Ja
én
UNIVERSIDAD DE JAÉN Escuela Politécnica Superior de Jaén
Trabajo Fin de Grado
BOT CONVERSACIONAL
SOBRE WATSON PARA
RECOMENDACIONES
TURÍSTICAS EN JAÉN
Alumno: Salvador Muñoz Manzaneda Tutor: Prof. D. Arturo Montejo Ráez Dpto: Informática
Junio, 2018
Universidad de Jaén
Escuela Politécnica Superior de Jaén
Departamento de informática
Dr. D. Arturo Montejo Ráez, tutor del Trabajo Fin de Grado titulado: Bot
conversacional sobre Watson para recomendaciones turísticas en Jaén, que
presenta Salvador Muñoz Manzaneda, autoriza su presentación para defensa y
evaluación en la Escuela Politécnica Superior de Jaén.
Jaén, Junio de 2018
El Alumno: Los Tutores:
Salvador Muñoz Manzaneda Arturo Montejo-Ráez
Salvador Muñoz Manzaneda
1. Antecedentes 7
1.1. Objetivos 9
1.2. Motivación del proyecto 11
2. Análisis 12
2.1. Asistentes Virtuales 13
2.1.1. Asistentes Personales Inteligentes 15
2.1.2. Método de interacción 15
2.1.3. Procesamiento de Lenguaje Natural 16
2.2. Estudio de soluciones existentes 18
2.2.1. Elección de Inteligencia Artificial 19
2.3. Watson 21
2.3.1 ¿Qué es Watson? 22
2.3.2. Prerrequisitos 25
2.4 Wordpress 26
2.4.1 ¿Qué es Wordpress? 26
2.4.2 Características principales 27
Estructura 27
Multisitio 27
Plantillas 27
Widgets 27
Plugins 28
3. Diseño 28
Definir Intenciones: 30
Definir Entidades: 31
4. Implementación 33
4.1. Crear el servicio de Asistente 33
2
Salvador Muñoz Manzaneda
4.2. Crear un espacio de trabajo 34
4.3. Creando “intents” 35
4.4. Prueba de intents 37
4.5. Añadir entities 38
4.6 Construyendo el diálogo 39
4.7 Inserción en Wordpress 44
4.7.1. Configuración del Plugin 45
5. Entrenamiento del Bot 47
5.1. Machine Learning 47
5.2. Empezando el entrenamiento 48
5.3. Aprendiendo 49
6. El futuro del turismo 51
7. Bibliografía 54
3
Salvador Muñoz Manzaneda
Indice de Imagenes Ilustración 1.1: Datos básicos del turismo en Jaén
Ilustración 1.2: Diagrama de la arquitectura típica de Watson
Ilustración 2.1: Metodología ágil SCRUM Ilustración 2.1.1: Logos de Siri y Google Assistant
Ilustración 2.3: Logo Microsoft Cortana
Ilustración 2.2: Logo Amazon Alexa
Ilustración 2.1.2: Alexa y alguna de sus instrucciones
Ilustración 2.2.1: Ilustración de IA
Ilustración 2.3: Logo IBM Watson
Ilustración 2.3.1: El reto de IBM
Ilustración 2.3.2: Historia de IBM Watson
Ilustración 2.3.1: IBM Cloud
Ilustración 2.3.2: Logos NodeJS y Angular
Ilustración 2.4.1: Logo Wordpress
Ilustración 3.1: IBM Watson Assistant
Ilustración 3.2: Proceso de conversación de Watson
Ilustración 4.1: Panel de opciones de Watson
Ilustración 4.1.1: Herramienta de lanzamiento
Ilustración 4.2.1: Sección espacio de trabajo
Ilustración 4.3.1: Ilustración de nuestro espacio de trabajo.
Ilustración 4.3.2: Ejemplo de Intent
Ilustración 4.4.1: Botón para pruebas
Ilustración 4.1.2: Ejemplo de prueba
Ilustración 4.5.1: Panel de Entities
Ilustración 4.5.1: Ejemplo de Entity
Ilustración 4.6.1: Ejemplo de construcción de diálogo
Ilustración 4.6.2 Ejemplo de Diálogo
Ilustración 4.6.3: Añadiendo nuevos nodos
Ilustración 4.6.4: Prueba de los nodos
Ilustración 4.6.5: Añadiendo funcionalidad JSON
4
Salvador Muñoz Manzaneda
Ilustración 4.7.1: Plugin IBM Watson Assistant
Ilustración 4.7.2: Configuración en Wordpress del plugin
Ilustración 4.7.3: Sección de credenciales de IBM Watson
Ilustración 4.7.4: Botón del plugin
Ilustración 5.2: Funcionalidad JSON contar usuarios
Ilustración 5.2.1: Espacio de trabajo de mejora (estadísticas)
Ilustración 5.3: Estadísticas de conversaciones reales
Ilustración 5.3.1: Conversaciones reales
Ilustración 6.1: Big Data
5
Salvador Muñoz Manzaneda
Resumen
[ES] Este proyecto trata de realizar un chatbot conversacional a través de la
plataforma de IBM, Bluemix, que nos permitirá crear un asistente virtual para los
turistas de la ciudad de Jaén. El proyecto se ayudará del CMS Wordpress y un
plugin realizado por IBM para la interacción con nuestro bot.
[EN] This project tries to perform a chatbot through the IBM platform, Bluemix, which
will allow us to create a virtual assistant for tourists from the city of Jaén. The project
will be supported by Wordpress CMS and a plugin made by IBM for interaction with
our bot.
6
Salvador Muñoz Manzaneda
1. Antecedentes
La necesidad que tiene cualquier ciudad de dar información sobre sus lugares de
interés además de su agenda cultural, bares, zonas de ocio etc, siempre es un
problema para ciudades masificadas por turistas.
Debido a que los punto de información, una de las ayudas que puedes encontrar
como turista, de las ciudades no pueden abarcar todo el trabajo y añadiendo el
problema que no pueden estar abiertos 24 horas al día, durante los 7 días de la
semana, añadiendo así un problema. Debido a que los turistas, suelen visitar
ciudades en mayor medida en época de vacaciones tales como puentes, fiestas y
fines de semana, lo cual hace menos probable que estén abiertos los puntos de
información, o al menos no todos ellos.
Ilustración 1.1: Datos básicos del turismo en Jaén
En esta gráfica podemos hacernos una idea de la cantidad de turismo que puede
tener una de nuestras provincias como es Jaén. Podemos apreciar que en el año
2017, solamente en Jaén tienen entre medio millón de personas y un millón
7
Salvador Muñoz Manzaneda
(500.000 - 1.000.000) como turistas provenientes de cualquier parte de España y del
mundo.
Con ese volumen, es comprensible entender que los puntos de información, además
de no ser accesibles todo el tiempo, ni siempre tener uno cerca crea un problema
para los turistas que llegan a nuestras ciudades.[1]
8
Salvador Muñoz Manzaneda
1.1. Objetivos
Pretendemos desarrollar un chatbot que nos ayude y permita aconsejar de una
manera facil, comoda e intuitiva a los turistas que vienen a la ciudad de Jaén, en
concreto.
Dicho chatbot deberá aconsejar según las interacciones con la persona que
pregunte en cada momento, dando así, recomendaciones de ocio, visitas culturales
o deportivas si en ese momento están disponibles para el usuario.
En nuestro caso desarrollaremos este chatbot con la inteligencia artificial de IBM,
llamada Watson.
IBM Watson™ Virtual Agent es un conjunto de componentes cognitivos
preconfigurados que se basan en el servicio IBM Watson Conversation. Cuando
configura el agente virtual con la información de su empresa, puede implementar
rápidamente un bot de conversación automatizado que conversa con los clientes
para ayudarles a conseguir sus objetivos.
Ilustración 1.2: Diagrama de la arquitectura típica de Watson
9
Salvador Muñoz Manzaneda
● Servicio de Conversación:
Proporciona los artefactos necesarios para las prestaciones: las intenciones,
las entidades y el flujo de diálogo, junto con el proceso cognitivo subyacente que
capacita las prestaciones del bot de conversación.
● Bot:
El bot está entrenado para reconocer consultas de los usuarios relacionadas
con la interacción con los clientes, como por ejemplo, solicitud de información básica
sobre un monumento, sobre precios de museos, etc.
● Sitio Web:
Maneja la comunicación con el bot de Watson Virtual Agent y con los
sistemas de registros (por ejemplo, bases de datos de visitantes). En nuestro caso
usaremos un CMS, Wordpress, para la instalación de nuestro bot.
● Ventana de Conversación:
La interfaz de conversación del agente virtual, que utilizan los clientes para
conversar con el bot. Puede utilizar el widget de conversación proporcionado, con o
sin personalización, o bien puede utilizar el SDK de cliente para implementar su
propio widget de conversación. [2]
10
Salvador Muñoz Manzaneda
1.2. Motivación del proyecto
Los numerosos avances en la tecnología están revolucionando casi todas las
industrias y fuentes de ingreso. El turismo, como no podía ser de otra manera,
puede tomar una ventaja muy importante de estos avances, de los cuales aún
carece, o no está todo lo evolucionada como otros sectores aprovechando todo el
potencial que nos ofrecen las tecnologías.
Informar de un destino, tener al instante las mejores ofertas de transporte, tener a
mano anécdotas o la historia del monumento que en ese momento estés mirando,
son de las muchas cosas que puedes beneficiarte con un chatbot gracias a los
avances de Inteligencia artificial y Machine Learning.
Nos da la posibilidad de tener sugerencias en base a nuestros deseos o
necesidades como usuarios. Búsquedas, mapas, traducción online, son algunas
funciones que podemos encontrar en un desarrollado asistente virtual.
La motivación principal, es tratar de ayudar en lo posible en que el turismo de Jaén
se pueda beneficiar de un bot con alguna de esas características para gestionar y
recomendar a los turistas de la provincia.
11
Salvador Muñoz Manzaneda
2. Análisis
El Trabajo de Fin de Grado será desarrollado usando la metodología ágil SCRUM,
que nos permite llevar a cabo el análisis y diseño en cada ciclo.
Ilustración 2.1: Metodología ágil SCRUM
Podemos aprovecharnos de este método de trabajo ya que podemos ajustar el
proyecto en cualquier fase del proyecto, cuando el cliente decida realizar algún
cambio.
Al terminar cada ciclo (sprint) de trabajo, podremos dar a nuestro cliente una versión
funcional del software. Así, podemos ir ajustando la calidad y requisitos de nuestro
bot, por parte del cliente.
Si en algún momento del proyecto, el cliente prefiriera cambiar la funcionalidad de
alguna parte de nuestro bot, o añadir algún tipo de contenido o utilidad nueva, se
podría añadir, o estudiarla al final de cada ciclo, así nos aseguraremos que el
trabajo pueda estar planificado hasta la fecha última del sprint y que el proyecto
acaba cumpliendo con las fechas de finalización del proyecto se cumplen.[3]
12
Salvador Muñoz Manzaneda
2.1. Asistentes Virtuales
Un Asistente virtual es un agente de software que les brinda una ayuda a los
usuarios de sistemas computacionales, automatizando y realizando tareas con la
mínima interacción por parte del usuario. Toda interacción realizada entre una
máquina y una persona debe estar dentro de una naturalidad, la persona puede
comunicarse con dicho asistente usando diferentes medios como la voz o escritura,
el asistente tiene que interpretarlo y responder de una manera fluida y lo más
“humanamente” posible.
El término Bot conversacional, o Chatbot, se usa para referirse a los asistentes
virtuales, normalmente a los que se obtiene acceso a ellos a través de internet.
En 2017, las capacidades y los usos de los asistentes virtuales están
expandiéndose de manera vertiginosa. Una encuesta realizada en 2017 dictaminó
que los asistentes más usados en USA fueron: Siri de la compañía Apple con un
34%, Google Assistant con un 19%, Amazon Alexa con un 6% y de manera más
residual Microsoft Cortana con un 4%.
Los primeros puestos de estos Asistentes viene dado por el hecho que la mayoria
que usa hoy en dia un asistente virtual la manera más accesible es usando el móvil,
y debido a que Apple con su iPhone y Google con el Sistema Operativo Android dan
un acceso a estos asistentes de una manera muy sencilla y están dotados de unas
funcionalidades muy atractivas para el usuario, ya que vienen preinstalados en sus
propios smartphones.
Ilustración 2.1.1: Logos de Siri y Google Assistant
13
Salvador Muñoz Manzaneda
Alexa de la empresa Amazon, cada vez está tomando más cuota de mercado, ya
que no esta implementada en ningún smartphone, pero su estrategia es conquistar
el interior de los hogares de las personas automatizando ciertas funciones de los
hogares tales como encender o apagar luces y poco a poco y debido al
abaratamiento del hardware de estas herramientas cada vez hay más adopcion.
Ilustración 2.1.2: Logo Amazon Alexa
Y por último, en cuanto al asistente de Microsoft Cortana, y debido al fracaso de su
departamento móvil está siendo de los menos populares, a pesar de eso tiene unas
funciones igual de interesantes como los anteriores, pero al no ser un móvil muy
vendido por su sistema operativo, hay menos adopción de este último asistente
virtual.
Para darle un empujón al proyecto, el último sistema operativo de Microsoft,
Windows 10, ya la trae instalada para que los usuarios puedan disfrutar de sus
ayudas. [4]
Ilustración 2.1.3: Logo Microsoft Cortana
14
Salvador Muñoz Manzaneda
2.1.1. Asistentes Personales Inteligentes
Este tipo de asistente es un agente de software que tiene el objetivo de realizar
tareas y ofrecer servicios individualizados. Estos servicios están basados en los
datos facilitados por el usuario, reconocimiento de ubicación y la posibilidad de
acceder a varios recursos en línea como pueden ser el tráfico, clima, noticias, precio
de acciones, horarios, calendarios etc. De las compañías mencionadas
anteriormente vuelven a estar disponibles en esta sección, tal como Siri de Apple,
Google Assistant, con Google Now, Amazon con Echo, Cortana de Microsoft, y
añadimos los propios asistentes de marcas de smartphones como S Voice o Bixby
de Samsung, Hidi de HTC etc.
El tema clave de un asistente personal inteligente es la capacidad para organizar y
mantener la información. Esto abarca tareas tales como el manejo de mails, eventos
que ocurran en nuestro calendario, archivos, listas y demás tareas.
2.1.2. Método de interacción
Los asistentes mencionados anteriormente hacen el trabajo a través de:
● Texto (chat online), sobretodo en aplicaciones de mensajes instantáneos.
● Voz, facilitando así la interacción con el asistente.
● Imágenes, para darnos datos o información de las imágenes solicitadas.
15
Salvador Muñoz Manzaneda
Ilustración 2.1.2: Alexa y alguna de sus instrucciones
2.1.3. Procesamiento de Lenguaje Natural
Estos asistentes virtuales usan el llamado procesamiento de lenguajes naturales
para combinar el texto del usuario o entrada de voz con comandos ejecutables.
el PLN es un campo dentro de las ciencias de la computación, Inteligencia artificial y
además, lingüística que está centrado en estudiar las interacciones entre las
computadoras y el lenguaje humano. El PLN trata de diseñar unos mecanismos
para que la comunicación entre personas y máquinas sea eficaz
computacionalmente. Hasta 1980 los sistemas de PLN se basaban en unos
conjuntos de reglas diseñadas a mano, pero a finales de 1980 se revolucionó con la
introducción de algoritmos de machine learning para el procesamiento del lenguaje.
16
Salvador Muñoz Manzaneda
Las dificultades que enfrenta el PLN son:
1. Ambigüedad
El lenguaje natural es ambiguo a diferentes niveles:
● Nivel Léxico, una misma palabra puede ser usada en diferentes contextos y
significar cosas distintas, así que, la selección apropiada del significado de
esa palabra se debe deducir del contexto.
● Nivel Referencial, resolver las anáforas y catáforas que trata de determinar la
entidad lingüística previa o posterior a lo que se hace referencia.
● Nivel Estructural, se usa la semántica para desambiguar la dependencia de
los sintagmas preposicionales que conducen a la fabricación de distintos
árboles sintácticos.
● Nivel Pragmático, una oración, muchas veces, no significa lo que se está
diciendo, elementos como la ironía, tienen un papel muy importante en la
interpretación del mensaje.
2. Detección de separación entre palabras
Hablando no se suele hacer ningún tipo de pausa entre palabras. El momento en el
que se deben separar cada palabra depende de cual es la posibilidad de que
mantenga un sentido lógico de gramática además de contexto.
3. Recepción imperfecta de datos
A menudo pueden existir acentos de un mismo idioma, de personas de otro país o
con dificultades en la producción del habla, además de errores de mecanografiado o
expresiones etc. [5]
17
Salvador Muñoz Manzaneda
2.2. Estudio de soluciones existentes
Una vez sabemos los distintos tipos de Asistentes virtuales y como funcionan su
inteligencia artificial, debemos iniciar el proceso por el cual debemos quedarnos con
uno de ellos, ya que adaptar para todos no sería lo conveniente ni eficiente para
nuestro propósito.
Cada uno de los asistentes anteriormente vistos, tienen una aproximación muy
lejana a lo que buscamos con este proyecto por lo tanto debemos mejorar lo
existente.
Además en internet el usuario encontrará toda la información que nuestro Bot puede
dar, pero la idea es simplificar y hacer mucho más natural la interacción con el
usuario. El usuario en vez de ir a su buscador favorito y buscar lugares, y luego ir a
su GPS y busca dónde está cierto monumento o lugar, la idea es que de la
sensación de estar en medio de una conversación donde alguien te recomienda un
sitio, y te da la dirección del mismo, encontrándonos todo el proceso unificado en un
Bot fácil de usar y de interactuar.
18
Salvador Muñoz Manzaneda
2.2.1. Elección de Inteligencia Artificial
Una vez vistos algunos de las inteligencias artificiales de las diferentes compañías,
debemos elegir el más apropiado para nuestro proyecto.
Ilustración 2.2.1: Ilustración de IA
DeepMind de Google, desarrolló la máquina de Alpha Go Zero, que tiene modelos
de Machine Learning, que ofrece funciones de reconocimiento de imágenes o
identifica sentimientos dentro de un video.
Por su parte, Oracle, anuncia que tendrá la primera base de datos autónoma, que
analiza y actualiza la información estructurada de manera automática.
Microsoft Project Oxford nos permite usar una plataforma de aprendizaje profundo
que nos facilita qué apps y webs incluyen funciones como detección facial,
reconocimiento de voz en múltiples idiomas.
Y Facebook más enfocada en mejorar la experiencia de sus clientes en sus
servicios (WhatsApp, Facebook, Instagram). Últimamente añadió un algoritmo que
identifica posibles suicidios.
Como hemos comprobado, cada marca crea su propio asistente haciéndolo, la
mayoría de las veces, solo usable desde su propia plataforma de manera exclusiva,
19
Salvador Muñoz Manzaneda
como ocurre con Siri, de Apple, o Bixby de Samsung. Debemos buscar uno que nos
facilite tanto la creación como el posterior desarrollo de nuestro bot, ya que uno de
los propósitos es que pueda ser escalable por si otros ayuntamientos puedan estar
interesados en adaptar el bot a su ciudad.
Para nuestro caso elegiremos la Inteligencia Artificial de IBM Watson. Es un sistema
distinto a los anteriormente comentados, por su poder técnico, ya que cuenta con
más de 90 servidores y 2880 procesadores, y además tiene el potencial de
evolucionar o ser adaptado en cualquier función que se le dé de una manera
sencilla. Una de las cosas que más podemos destacar a la hora de elegir esta IA, es
la capacidad para procesar el lenguaje natural y aplicarlo a la localización de
información en datos estructurados. Los responsables del proyecto de Watson
explican que el objetivo no es emular la capacidad humana, sino, superarla.
Watson, es muy adecuado para resolver procesos complejos que deben basarse en
decisiones con información relevante. En nuestro caso podemos usar la información
de miles de usuarios realizan turismo en la ciudad de Jaén, y Watson con eso será
capaz de ir aprendiendo además con la nueva información de los nuevos usuarios
que usen nuestra plataforma.
Debido a todo esto, será la inteligencia artificial elegida para nuestro proyecto.
20
Salvador Muñoz Manzaneda
2.3. Watson
Ilustración 2.3: Logo IBM Watson
IBM Watson es una tecnología de computación cognitiva. La computación cognitiva
acorde con Wikipedia, es una rama específica surgida de la inteligencia Artificial
(IA), capaz de entender y emular el funcionamiento de la mente humana.
Normalmente cuando interactuamos con una máquina, lo usual es que sea la
persona la que debe adaptarse al funcionamiento de la máquina. Al trabajar con
máquinas como ordenadores lo hacemos de manera impersonal, usando periféricos,
moviendo los y pulsando los como un ratón o un teclado. Al hablar de sistemas
cognitivos es justo lo contrario. IBM con Watson, ha logrado interaccionar de una
manera muy parecida a como solemos hacerlo con otras personas:
● Puede leer y entender nuestro lenguaje natural, con sus diferencias de
matices y “giros lingüísticos”.
● Capaz de responder a nuestras preguntas en segundos debido a su
capacidad de analizar gran cantidad de datos. Ante cualquier pregunta
escoge la respuesta con el mayor nivel de confianza.
● Y es capaz de aprender de la experiencia como lo haría un humano real,
siendo así, cada vez más inteligente.
21
Salvador Muñoz Manzaneda
2.3.1 ¿Qué es Watson?
IBM Watson empezó de una forma muy inesperada. Fue uno de los trabajos de
Inteligencia Artificial más importantes de todo el planeta, su desarrollo y crecimiento
marca un antes y un después en proyectos de deep learning e informática
predictiva.
El superordenador, está ahora alojado en la nube, aunque en los comienzos se
alojaba en la sede de IBM en Manhattan. Watson fue una creación del programador
de software Charles Lickel.
Charles Lickel fan de el programa de “Jeopardy!” (Programa de preguntas y
respuestas de cultura), y pensó en que podría hacer una réplica en el mundo
informático. No tuvo demasiado éxito entre sus compañeros debido a que eran
escépticos en cuanto a que una máquina nunca ganaría a un humano.
Ilustración 2.3.1: El reto de IBM
IBM desarrollo DeepQA, que era basicamente el inicio, una arquitectura de software
paralelo que controlaba el lenguaje natural. Partiendo de ahí, se creó una base de
datos usando las pistas, resultados de otros concursantes además de los datos
insertados por los investigadores que desarrollaban Watson.
A los tres años y con un equipo de 20 investigadores, se lanzó la primera versión de
Watson. DeepQA podía plantear respuestas, siguiendo las reglas de Jeopardy!,
usando algoritmos y analizando información relevante. Una vez obtenido esto, otros
algoritmos se hacían cargo de crear una lista clasificada de respuestas con
probabilidad de acertar, con puntuaciones de mejor a peor.
22
Salvador Muñoz Manzaneda
Con el tiempo, su fiabilidad fue en aumento, en parte gracias a antiguos
concursantes de Jeopardy!. Watson fue almacenando de manera local información
de 200 millones de webs, para así poder funcionar de una manera offline. Entre sus
webs tenía Wikipedia en inglés completa, una enciclopedia mundial y libros del
proyecto Gutemberg.
Aun así, el resultado no podía vencer a un niño de cinco años en las primeras
pruebas realizadas, John Kelly dio un nuevo rumbo al proyecto. A finales de 2010,
pasó de ganar el 51% de las partidas contra ex campeones de Jeopardy al 71%.
Para entonces empezó a levantar mucho revuelo.
En Febrero de 2011, se propuso jugar contra un veterano campeón de Jeopardy!,
Ken Jennings, y le ganó, no fue nada espectacular pero Watson se convertía en
algo mediático, algo que no se había hecho antes.
Ilustración 2.3.2: Historia de IBM Watson
23
Salvador Muñoz Manzaneda
Su inmensa capacidad de respuesta se estaba desaprovechando en programas de
televisión. Watson podia resolver problemas rápidamente, donde una respuesta
rapida y correcta podría marcar la diferencia.
En Agosto de 2011, IBM adquirió Webify y se quedó con su plantilla para usarla
para mejorar a Watson en campos como banca, telecomunicación, aseguradoras
etc…
Al finalizar 2011, IBM había diseñado un programa que ayudaba en asistencia
sanitaria, junto a universidades científicas y farmacéuticas. Para 2013, Memorial
Sloan-Kettering Cancer Center recibió en su plantilla a Watson para su
departamento de oncología. Ayudaría a tomar decisiones en diagnósticos.
Watson aumentaba su radio de acción, en la venta de ropa, analizaba informacion
meteorologica, en el análisis musical, en departamentos legales, incluso llegó a
convertirse en cocinero. [6] [7]
24
Salvador Muñoz Manzaneda
2.3.2. Prerrequisitos
Los requisitos que vamos a necesitar para el desarrollo de nuestro chatbot son los
siguientes:
● Debes tener una cuenta en IBM Cloud. La cuenta puedes adquirirla gratis y te
da acceso a todo lo que vamos a necesitar para el desarrollo de nuestro bot.
Ilustración 2.3.1: IBM Cloud
● La cuenta de IBM Cloud requiere de un IMBid, que se puede crear en el
momento del registro.
● Necesitaremos 8Gb, como mínimo, en nuestra cuenta de IBM Cloud de
tiempo de ejecución y memoria contenedora, además de un acceso para la
provisión de unos 10 servicios.
● Necesitaremos clonar un repositorio de GitHub, que usaremos los archivos
para proceder al trabajo.
● Si queremos desarrollar el código para ejecutarlo localmente o en IBM Cloud,
debemos usar los lenguajes Node.js, Express.js y Angular 2. [8]
25
Salvador Muñoz Manzaneda
Ilustración 2.3.2: Logos NodeJS y Angular
2.4 Wordpress
2.4.1 ¿Qué es Wordpress?
Ilustración 2.4.1: Logo Wordpress
En un sistema que nos facilita la gestión de contenido, ayudando así enormemente
a la creación de páginas web. Está desarrollado en PHP y se usan en entornos de
MySQL y Apache, aunque puede también puede ser instalado en Postgresql,
MariaDB y Nginx.
26
Salvador Muñoz Manzaneda
2.4.2 Características principales
Está construido en mayor medida para realizar blogs, aunque al tener mucho éxito
empezaron a usarse para diversos propósitos.
Estructura
● Está configurado para ser un sistema donde las entradas están ordenadas
por fecha de entrada. Cada entrada puede tener una o más categorías.
● El diseño de la web es determinado por la plantilla que el usuario elija, y es
independiente del contenido.
● Existen bloques de código con funciones específicas que se usan mediante
complementos, llamados widgets.
● El sistema de administración son los que tienen el cargo de la gestión y
ejecución.
Multisitio
Desde una instalación es relativamente sencillo de administrar y configurar varios
sitios. Puedes entrar a los diferentes sitios dirigiéndose a los diferentes
subdirectorios o subdominios del principal.
Plantillas
Son los diferentes diseños con los que dar apariencia y estructura a nuestra página
web.
La filosofía de Wordpress trata de seguir las directrices del W3C, en nivel de diseño,
gestión o estructura. Las opciones son muchísimas, desde un blog hasta una web
profesional.
Widgets Ofrece numerosas alternativas a los usuarios dandole una flexibilidad para el diseño
y estructura. Pueden existir plantillas que no lo soporten .
27
Salvador Muñoz Manzaneda
Plugins Potencian nuestra web, dan una funcionalidad concreta, dependiendo del plugin, a
nuestra página. Existen plugins de pago o gratuitos. [9]
3. Diseño
Este Trabajo de Fin de Grado consistira en el desarrollo de un Bot conversacional
sobre Watson para recomendaciones turísticas en Jaén.
IBM Watson Assistant, es un sistema de preguntas y respuestas (Q&A) que nos da
la posibilidad de un diálogo interactuado entre el sistema de conversación y el
usuario. A este tipo de interacciones se les llama normalmente “Chatbot”.
Ilustración 3.1: IBM Watson Assistant
El desarrollo que usa el asistente Watson de IBM normalmente tiene tres fases:
Ámbito, Diseño, e Integración.
En la primera fase, Ámbito, lo principal es obtener los requisitos para entablar una
conversación y cómo los clientes usaban el bot actualmente.
28
Salvador Muñoz Manzaneda
Definiremos personas, crearemos un mapa de empatía y un diagrama de contexto
del sistema. Después, extraemos los “intents ” más potenciales de nuestro bot. Los
“intents” son, principalmente, los objetivos o intenciones que queremos alcanzar,
que se expresan en la entrada de un usuario, como podría ser responder una
pregunta o procesar algún tipo de acción, como realizar un pago. Al terminar de
definir “intents”, debemos evaluar las frases que nos llevan a esos “intents”.
En el Diseño, crearemos una instancia (“instance”) de nuestro bot, y usaremos su
propia herramienta habilitada para definir los intents y las entities . La entidad, nos
muestra una clase de objeto o un tipo de dato que nos es relevante para el objetivo
del usuario que pregunta. Al final de esta fase, se iniciará el flujo de diálogo.
Ilustración 3.2: Proceso de conversación de Watson
En la última fase, la fase de Integración, desarrollamos la aplicación web o
microservicio que será el encargado de interactuar con nuestro asistente Watson.
[10]
29
Salvador Muñoz Manzaneda
Ámbito Diseño Integración
● Obtener los
requisitos para
entablar la
conversación
además del uso que
hará el usuario.
● Crear un mapa de
empatía.
● Crear un diagrama
de contexto.
● definir los canales de
conversación.
● Definir intenciones
principales del
usuario.
● Crear un servicio de
conversación de
Watson en Bluemix.
● Definir intenciones.
● Definir entidades.
● Iniciar el flujo de
diálogo.
● Reproducir la
conversación al
usuario final.
● Añade más
intenciones y flujo de
diálogo.
● Desarrolla una
aplicación web o
micro servicio
responsable de la
interacción con
Watson.
● Añade cualquier otro
componente que
complementa el
requerimiento del
asistente.
Para definir un poco más nuestro diseño a continuación vamos a explicar las
diferentes intenciones que vamos a soportar con nuestro sistema. Siendo esto solo
la base antes del aprendizaje automático que sufrirá una vez empiece la fase de
entrenamiento.
Definir Intenciones:
Vendrán definidas con una almohadilla al inicio.
1. Capacidades: En está situación tratamos de dar ayuda al usuario cuando se
encuentre un poco perdido con nuestro bot. Ejemplos con los que se iniciara
esta intención: Ayuda, ¿Qué puedes hacer?, ¿Cómo funciona?, ¿Cómo me
puedes ayudar?
2. Contar_Historias: Con esta intención manejaremos las situaciones donde el
usuario muestre deseo de saber alguna historia de Jaén. Ejemplos con los
que se iniciara: Hay alguna anécdota, cuentame algo, me puedes decir algo
interesante.
30
Salvador Muñoz Manzaneda
3. Despedida: Con este Intent nos ayudará a entender cuando un usuario
decida despedirse y le podremos despedir haciendo nuestro bot un poco más
humano. Ejemplos para este intent: Adios, good bye, nos vemos, chao.
4. Diversión: Dedicado cuando el usuario introduce algún tipo de frase que
exprese intención de salir de fiesta, a bailar etc. Ejemplos: Donde se sale por
aquí, sitios para bailar, quiero ir de fiesta, quiero salir de marcha.
5. Greetings: Manejo de los saludos al usuario, a pesar de que nuestro bot,
iniciara conversación, si el usuario decide escribir un saludo le devolvemos
una respuesta. Ejemplos: Hola, buenas, buenos días, buenas tardes.
6. Recomendación: Para manejar cuando el usuario no quiere nada específico y
recae de nuestro lado recomendar sitios. Ejemplos: dar un paseo, dime
locales de moda, algún parque bonito, donde puedo ir.
7. Reservar: Intención realizada para un futuro poder interactuar con los locales,
bares, hoteles etc que facilitará al usuario la reserva de mesas habitaciones
etc. Ejemplos: quiero reservar, realizar una reserva, pedir una mesa.
8. saber_ruta: Con esto controlamos cuando el usuario quiere ir a algun sitio
más o menos especifico. Ejemplos: quiero ir a, llevame a un sitio, donde está
el sitio.
9. thanks: Con este intent entenderemos los agradecimientos del usuario y
podemos devolver una respuesta para hacerlo más “humano”. Ejemplos:
Gracias, te lo agradezco, gracie.
Definir Entidades:
Vendran definidas con un arroba al inicio.
1. aceites: Aquí guardaremos los diferentes aceites que existen o queramos dar
a ver en nuestro bot. Ejemplos: Prólogo, Oro de Bailén, Castillo de Canena.
2. bar: Los diferentes bares por los que el usuario puede ser recomendado e
indicado algunas direcciones. El abuelo, el parador, El tito nono II, la
manchega, Alcocer.
3. hotel: Los distintos hoteles que le recomendamos al usuario para cuando
desea pasar la noche. Ejemplos: Europa Jaén, Parador, Condestable, Infanta
Cristina.
31
Salvador Muñoz Manzaneda
4. monumentos: Lugares de interés que tiene la ciudad de Jaén por la que
puede preguntar nuestro usuario. Arco de San Lorenzo, refugio antiaéreo,
San ildefonso, Castillo de Santa Catalina, Catedral de Jaén, Monumento
leyenda del lagarto.
5. ocio_gastronomico: Se usa para ayudar al bot a entender que es lo que el
usuario pretende. Ejemplos: paseo, comer, dormir, visitar, tapeo.
6. paseos: Sitios de paseo de la ciudad de Jaén que el usuario podra preguntar
o ser recomendado por nuestro sistema. Ejemplos: Plaza de la constitución,
casco antiguo, via verde, cementerio de San Eufrasio.
7. pubs: Lugares de fiesta que el usuario puede preguntar o ser recomendado.
Ejemplos: Karma, Mambo, Dean, Almiral, Mercado, la santa.
Además de los anteriores el sistema nos da unos por defecto que podemos habilitar y en
nuestro caso hacemos uso de @Sys-date para manejar fechas, y @sys-time para poder
manejar horas.
32
Salvador Muñoz Manzaneda
4. Implementación
Una vez cumplidos los pre-requisitos, ya podemos empezar el desarrollo de nuestro
chatbot. Para ellos seguiremos como modelo base los siguientes pasos.
4.1. Crear el servicio de Asistente
La primera tarea que debemos realizar es crear una instancia de “Watson Assistant ”
en IBM Cloud.
Para ello, entraremos en nuestra cuenta de IBM Cloud, a continuación nos dirigimos
a la parte de Catálogo y buscamos la sección servicios. Una vez en servicios
deberemos buscar a Watson, y entraremos en la opción de asistente.
Ilustración 4.1: Panel de opciones de Watson
33
Salvador Muñoz Manzaneda
Una vez dentro del servicio, debemos añadirle un nombre, por ejemplo “guIA
turistico”, y le damos a crear.
Para abrir el espacio de trabajo del asistente Watson, iremos a Herramienta de
Lanzamiento.
Ilustración 4.1.1: Herramienta de lanzamiento
Ya tendríamos el servicio de nuestro asistente creado.
4.2. Crear un espacio de trabajo
El espacio de trabajo está creado para mantener separado los “intents”, ejemplos de
uso, “entities”, y flujos de diálogo para cada aplicación. El asistente Watson, usa una
aproximación paso a paso para guiarnos a crear un espacio de trabajo, intents y
demás.
34
Salvador Muñoz Manzaneda
En la sección de espacios de trabajo, le damos a crear.
Ilustración 4.2.1: Sección espacio de trabajo
Escribimos un nombre para el espacio de trabajo, y le damos a crear.
4.3. Creando “intents”
Para añadir “intents” primero hay que saber que es, es un grupo de ejemplos de
temas de conversación o intenciones que son realizadas por parte del usuario, a las
que Watson debe responder. Para identificar intents, empezaremos con algo que un
usuario puede querer y pensar en qué manera el usuario puede pedirla. Para cada
intent, debemos expresar varias maneras de pedirlo, o desearlo.
Para añadir un intent a nuestro espacio de trabajo, desde nuestra página de
creación del bot, vamos a la pestaña intents y pulsamos en add intent.
35
Salvador Muñoz Manzaneda
Ilustración 4.3.1: Ilustración de nuestro espacio de trabajo.
Por ejemplo la manera de saludar, (greetings) para definir un intent debemos usar la
almohadilla al principio del intent.
Ilustración 4.3.2: Ejemplo de Intent
Aquí podemos ver una lista de saludos que el usuario podría usar con nuestro
asistente, una vez identificados unos cuantos intents, deberíamos entrenarlos con
más posibilidades que Watson debe asociar a ese intent, así haciendo a nuestro
chatbot cada vez más inteligente y humano de cara al usuario.
Como muchos intents pueden ser reusados de otros bots puedes añadir un archivo
.csv e importarlo a la conversación.
36
Salvador Muñoz Manzaneda
4.4. Prueba de intents
Lo siguiente es probar nuestras conversaciones para ver si todo funciona
correctamente.
Tan pronto como creamos un intent, podemos probarlo en el icono de “Try it” que
está arriba en la parte derecha.
Ilustración 4.4.1: Botón para pruebas
Introduce uno de los ejemplos. Si introducimos hello, que está dentro de nuestro
intent #Greetings ya definido. deberá salir un cuadro como que lo ha diferenciado y
sabe que es un saludo.
Ilustración 4.1.2: Ejemplo de prueba
37
Salvador Muñoz Manzaneda
4.5. Añadir entities
Antes de explicar como añadir entities, vamos a explicar que es un “entity”. Es una
porción de la entrada que hace el usuario que nos da una respuesta diferente a un
intent particular. Dicho de otra manera, es ir afinando en lo que el usuario quiere
pedir y entender lo que quiere que le respondamos tras su diálogo.
Primeramente debemos ir a la pestaña de “Entities” y pulsar sobre “Add entity”.
Ilustración 4.5.1: Panel de Entities
Añadiremos valores y posibles sinonimos de esos valores al entity para ayudar a
nuestro chatbot a aprender los detalles más importantes que un usuario podría
mencionar.
Cada entity debe incluir un grupo de valores específicos que accionaran diferentes
respuestas por parte de nuestro chatbot. Cada valor, puede tener o no, múltiples
sinónimos que definirán las diferentes vías para llegar al mismo valor dado que un
usuario podría dar.
38
Salvador Muñoz Manzaneda
Para añadir un nuevo entity va precedido de un “@”, nos ayudará a diferenciar el
Intents del Entity.
Ilustración 4.5.1: Ejemplo de Entity
Watson nos facilita el trabajo incluyendo unas Entities del sistema ya predefinidas
de fechas, números etc, que pueden ser usadas en cualquier flujo de conversación.
Al igual que para las Intents, puedes importar un archivo .csv.
Ahora, podríamos probar nuevamente los Entities y los Intents con el botón “try it”.
4.6 Construyendo el diálogo
Ahora que sabemos seleccionar las intenciones de los usuarios y algunas de las
palabras clave de sus frases que son necesarias, es el momento de dar respuesta a
lo que pide o pregunta el usuario.
Ya estamos listos para construir el diálogo de nuestro chatbot. Después de
especificar los intents y los entities, vamos a iniciar el diálogo.
39
Salvador Muñoz Manzaneda
En la pestaña de Diálogo, crearemos un nodo donde siempre debe reconocer un
“intent”
Ilustración 4.6.1: Ejemplo de construcción de diálogo
Aquí podemos ver cómo podemos dar la bienvenida al usuario, una vez que inicie el
proceso o reconozca nuestro “intent” #greetings daremos una respuestas como las
que salen en la imagen, trataremos que no sean muy robóticas y lo más humanas
posibles.
Ahora procederemos a añadir un nodo de nuestra conversación. Aquí es donde
nuestro bot reconocerá otro tipo de intención por parte del usuario y trataremos de
darle una solución.
40
Salvador Muñoz Manzaneda
Ilustración 4.6.2 Ejemplo de Diálogo
Una vez añadido el nodo, le insertamos como reconocer ese nodo, para ir a sus
respuestas. Cada nodo tendrá una “temática” y unas respuestas que deben
complacer las necesidades de nuestro usuario.
En nuestro nodo actual, llamado fiesta, queremos dar respuesta cuando el usuario
quiera salir a dar una vuelta, tomar tapas o visitar algún pub o discoteca. Para ellos
preparamos el intent de diversión donde añadimos una serie de frases que un
usuario podría decir cuando tiene ganas de salir o divertirse y cuando lo
reconozcamos le devolveremos una frase o pregunta.
41
Salvador Muñoz Manzaneda
Ilustración 4.6.3: Añadiendo nuevos nodos
Vamos a hacer una pequeña prueba para comprobar que todo funciona
correctamente, una vez terminada está parte ya tendríamos un ciclo funcional de
nuestro proyecto.
Ilustración 4.6.4: Prueba de los nodos
Una vez tenemos funcionando las funciones básicas, vamos a tratar de realizar el
diálogo lo más completo posible, aunque el propio bot irá aprendiendo con el propio
42
Salvador Muñoz Manzaneda
uso del usuario, cuanto más “inteligente” sea desde el inicio, menos difícil será de
usar por parte de los usuarios y más útil para ellos.
Primeramente para hacer un poco más personal nuestro chatbot, vamos a pedirle al
usuario que nos facilite su nombre para poder dirigirnos a él con su propio nombre y
hacer más cercana la conversación en las próximas interacciones.
Para ello guardaremos en una variable de contexto, llamada nombre, para realizar
esto creamos un nuevo nodo hijo y lo configuramos.
Ilustración 4.6.5: Añadiendo funcionalidad JSON
Para poder coger esta entrada del usuario abriremos el editor de JSON y añadimos
el código con la variable de contexto nombre que será la encargada de guardar el
nombre en adelante de esa conversación.
Añadimos los siguientes nodos para seguir realizando nuestro proyecto, más
adelante usaremos la ayuda de personas que entre en una web para ir
desarrollando y entrenando nuestro bot para ir cada vez afinando un poco más.
43
Salvador Muñoz Manzaneda
Añadiremos un nodo, Saludo, para manejar cuando el usuario quiera decir hola o
alguna variante. Otro nodo será el de visitas que nos ayudará a manejar los eventos
cuando un usuario pretenda visitar algún monumento ya establecido en nuestra
base. El siguiente nodo será el que nos facilita el proceso de aconsejar al usuario
donde salir de fiesta, discotecas, pubs, etc... este nodo lo llamaremos Fiesta. El
nodo comida será el que aconsejara al usuario sitios donde comer, tales como
bares, restaurantes, hoteles, etc. El nodo Agradecimientos nos ayudará a humanizar
un poco a nuestro bot, cuando el usuario nos agradezca algún consejo, el bot será
capaz de recibir y contestar a los buenos modales. Es muy normal decir adiós en el
final de las conversaciones, para manejar este hecho, creamos un nodo despedida
donde añadiremos unas simpáticas despedidas. En caso de que el usuario se
encuentre un poco perdido dentro de nuestro bot, añadimos un nodo de
capacidades donde el bot explicara un poco el funcionamiento de nuestro bot, para
el caso de que el usuario escriba algo que no puede soportar nuestro bot, o no lo
entiende, ya sea por la manera el idioma o algún otro problema, añadimos un nodo
que es, todo lo demás, que le pedirá al usuario que repita de otra forma lo que
desea hacer, para así tratar de entenderlo, además de que este nodo, nos redirigirá
al nodo de capacidades donde le volverán a explicar lo que el bot puede hacer.
Una vez terminado la primera aproximación la probaremos para ver que todo
funciona correctamente.
4.7 Inserción en Wordpress
Primeramente, y una vez comprobado que tenemos una primera aproximación a
nuestra idea del chatbot, debemos crear un sitio web donde poder ofrecer nuestro
producto. Para ello, vamos a contratar un servidor donde alojar el CMS, el elegido
será Hostinger por los precios y calidad en el servicio. Seguidamente iremos a
descargar nuestro CMS a la página web oficial wordpress.org. Una vez descargado
mediante el programa Filezilla, pasaremos a través de FTP (protocolo de traspaso
de archivos) subiremos nuestro CMS a nuestro servidor, ya solo nos queda ajustar
el idioma y un par de ajustes más de nuestro CMS para el siguientes paso.
44
Salvador Muñoz Manzaneda
Una vez esté todo instalado, y nuestra web funcionando, entraremos al CMS en
modo administrador con la intención de instalar un Plugin creado por IBM llamado
IBM Watson Assistant que nos permite añadir nuestro chatbot a cualquier web.
4.7.1. Configuración del Plugin
Ilustración 4.7.1: Plugin IBM Watson Assistant
Una vez instalado y activo el plugin de IBM, tenemos que configurarlo, para ello
debemos ir a la parte de credenciales de nuestro bot y rellenar los siguientes
campos con los siguientes datos.
Ilustración 4.7.2: Configuración en Wordpress del plugin
45
Salvador Muñoz Manzaneda
Para encontrar esos datos debemos acceder a la sección “deploy” de nuestro bot, y
ahí encontraremos la sección de credenciales con los cuales rellenar la
configuración de wordpress del plugin.
Ilustración 4.7.3: Sección de credenciales de IBM Watson
Una vez configurado el plugin, solo nos queda habilitarlo y comprobar que todo
funciona bien, una vez comprobado eso, pasaremos a la parte del entrenamiento de
nuestro bot. Pediremos a varios usuarios que prueben nuestro bot para ir
descubriendo como otros usuarios pueden interactuar con el.
Ilustración 4.7.4: Botón del plugin
46
Salvador Muñoz Manzaneda
5. Entrenamiento del Bot
Para empezar el entrenamiento del bot, hemos habilitado una web para que haya un
acceso fácil a los distintos usuarios, y vayan usando distintas maneras de preguntar
sobre turismo en Jaén y así poder hacer nuestro bot cada vez más preciso.
5.1. Machine Learning Cuando hablamos de entrenamiento del bot, hablamos de machine learning, o de
aprendizaje automático, que es una sección de la inteligencia artificial que tiene
como objetivo hacer que las máquinas aprendan. Más específicamente, trata de
hacer programas con la capacidad de distinguir comportamientos dada una
información en forma de ejemplos, creando así un proceso de inducción del
conocimiento.
Dentro del aprendizaje automático, tenemos que distinguir entre dos, el aprendizaje
automático supervisado y el no supervisado. El supervisado tiene como
característica que cuenta con unos datos que son buenos y correctos para el
objetivo del aprendizaje. El no supervisado no tenemos esos datos con los que
definan el comportamiento sino que tratan de buscar un comportamiento en la
información dada que nos ayuden a separar o clasificar los datos en distintos
grupos.
En nuestro caso, será un aprendizaje automático supervisado, ya que sabemos lo
que queremos encontrar dentro de las frases que un usuario puede usar en nuestro
chatbot, el objetivo que buscamos con el aprendizaje es cubrir las diferentes
maneras de expresarse que pueden tener los distintos usuarios. [11]
47
Salvador Muñoz Manzaneda
5.2. Empezando el entrenamiento
Para iniciar el entrenamiento a nuestro chatbot, y para tener una base más cierta, añadiremos unas lineas donde nos ayudará a ver cuantos usuarios le están dando uso a nuestro bot, y así poder ir aproximándonos cada vez más a nuestro objetivo.
Ilustración 5.2: Funcionalidad JSON contar usuarios
Con este trozo de código, logramos dar un ID a cada usuario que trate de hablar con nuestro bot y así tener unos datos más precisos.
Una vez insertadas las primeras pruebas por parte de nuestros usuarios en nuestro
servicio podemos ver la actividad que están realizando y cómo de preciso está
resultando ser nuestro bot.
Ilustración 5.2.1: Espacio de trabajo de mejora (estadísticas)
48
Salvador Muñoz Manzaneda
Aquí tenemos una serie de estadísticas, como número de usuarios mensajes
totales, medias etc.
5.3. Aprendiendo
Una vez añadido lo necesario para distinguir entre los distintos usuarios y tener más
claro cómo actuar, empieza la fase de “aprender” con nuestro bot.
Para que nuestro bot parezca más humano, y más importante, más preciso,
necesitamos que varios usuarios (cuantas más pruebas mejor y más preciso se
hará) hagan test de nuestro bot, de momento tendrá limitaciones que estos usuarios
los irán puliendo poco a poco. A la hora de usar nuestro bot, el bot va a ir
aprendiendo de los errores provocados por la diferente léxica y sentencias que
pueden usar los usuarios, y que no hayamos predecido aún ese tipo de sentencias o
maneras de preguntar.
Tenemos acceso a las diferentes conversaciones y respuestas que han ido pasando
entre los distintos usuarios y nuestro bot. Hay podemos corregir el comportamiento
de nuestro bot cuando veamos un comportamiento anómalo dependiendo de
nuestro criterio.
Por ejemplo, a la hora de buscar un bar, hay diferentes formas de pedir esa acción,
y posiblemente no hayamos pensado en todas, debido a que pueden pedirte muy
claramente ir a un bar, o pueden decir, tomar unas cervezas, siendo el mismo
resultado con distintas maneras de acceder a él. Además a eso, hay que añadirle
los diferentes sinónimos que tenga tanto la palabra bar, como la palabra cerveza por
sofisticados o de una más coloquial.
49
Salvador Muñoz Manzaneda
Ilustración 5.3: Estadísticas de conversaciones reales
Aquí tenemos estadísticas de uso de nuestro bot, en la parte derecha, tenemos la
parte más importante de esta fase, los mensajes que nuestro bot a tenido más
dificultades a la hora de valorar de que se trataba el objetivo del usuario.
Ilustración 5.3.1: Conversaciones reales
Esto es lo que vemos, podemos cambiar el Intent y los entities que el bot no ha
entendido o si lo ha entendido, por error, de una manera distinta. Este proceso es el
de aprendizaje, aunque también debemos mirar las conversaciones enteras, debido
a que el entendimiento natural de un humano puede ser muy complejo, y aunque
nuestro bot no nos notifique como que está indeciso, quizás está cometiendo
errores y debemos supervisar, y mucho más en está fase de creación, conforme
vaya madurando el proyecto, cometerá menos y menos errores.
A mayor supervisión y corrección menos errores cometerá nuestro bot en un futuro,
llegando a entender el lenguaje natural humano de una manera muy precisa, cada
corrección que le hacemos, estamos un poco más cerca de que entienda lo que
queramos por contexto o por la misma sentencia.
50
Salvador Muñoz Manzaneda
6. El futuro del turismo
La inteligencia artificial está ahora mismo marcando ya diferencias en muchos
aspectos como la medicina, la industria textil y muchas más, el turismo, por su parte
no se va a librar tampoco de esta revolución que está siendo la inteligencia artificial.
En el último congreso de innovación turística que se celebró en Madrid a principios
de año se empezaba a comentar que los viajeros preferirían tener tablets en las
habitaciones para realizar pedidos de comida, pedir a recepción.
La clave en todo esto es la personalización, la posibilidad de realizar un checking
automático, incluso que donde nos vayamos a alojar sepan que hemos aterrizado o
llegado a la ciudad para empezar a preparar la pre-reserva incluso ofrecerte
transporte hasta el sitio. Los propios hoteles podrán llegar a tener checking por
reconocimiento facial, colchones inteligentes que miden el sueño, y en base a todo
esto poder recomendar distintos tipos de actividades según las predicciones y el
perfil del usuario creado con varios viajes.
IBM por su parte está desarrollando competencias turísticas a través de Watson,
donde anuncian aplicaciones para descubrir nuevos sitios o que hacer en destinos,
donde también ofrecen la descarga de audio guías sobre monumentos para que
estemos informados de lo que estamos viendo. IBM incluso valora la idea de crear
un agente para cuando un grupo de amigos familia haga un grupo de Whatsapp
para organizar el viaje, puedas añadir al agente de IBM y puedas preguntar y te
asesores sobre el viaje y llegar incluso a cerrar reservas con hoteles, restaurantes o
actividades.
Este movimiento de la industria va a tener múltiples y diversas consecuencias, una
de ellas, será la personalización, será todo adaptable al propio usuario, quien tendrá
que decidir sólo entre unas recomendaciones previamente seleccionadas por
inteligencia artificial basadas en sus propios gustos.
51
Salvador Muñoz Manzaneda
Incluso podrían ir midiendo el grado de satisfacción del usuario según sus
interacciones con el sistema. Se valora en que los usuarios que no tienen un buen
grado de satisfacción no suelen decirlo en un 94% y no suelen repetir la experiencia
en un 91%, aquí la inteligencia artificial podría ayudar enormemente a la industria
turística. La ingeniería de datos se hará más asequible y fácil de entender para
corporaciones más pequeñas y podrán beneficiarse de conocer lo que pasa a
nuestro alrededor y desarrollar sistemas basados en machine learning.
En estos momentos, sistemas como Siri, Google now, o Cortana están abriendo el
camino a una dinámica de consumo de estos servicios.
La inteligencia cognifica usada para percibir y anticipar necesidades de los clientes
será una clave a tener muy encuenta. La inteligencia artificial nos ofrece
muchísimas posibilidades a la hora de utilidad y mejora de experiencia del cliente.
Ahora mismo la cantidad de datos que tienen las empresas sobre nosotros para
realizar sugerencias es impensable, con técnicas de Big Data y Machine Learning
podrian dar sugerencias muy acertadas a cada usuario según sus propios intereses
y muy ajustadas a la realidad.
Ilustración 6.1: Big Data
52
Salvador Muñoz Manzaneda
Por otra parte, la introducción y adaptación de este tipo de tecnologías podría ser
muy impersonal para algún tipo de turista o difícil de usar para el llamado salto
tecnológico. Otros de los que sufrirán las consecuencias serán los guías turísticos
agentes de viajes, organizadores de viajes etc... donde todos ellos serán sustituidos
por robots, al menos en gran porcentaje, cambiando así el tejido productivo de
sectores y optimización de los mismos.
Desde el mismo inicio del viaje el usuario utiliza asistentes virtuales que le ayudan a
reservas antes y durante el viaje. La aerolínea KLM lanzó un asistente que aconseja
al usuario que meter en su maleta dependiendo del viaje que tiene reservado. Ya
hoy en día, la gran mayoría de aerolíneas usan chatbot para automatizar el proceso
de reserva sin usar un humano para esta finalidad. Estas aplicaciones son capaces
de según el contexto de ayudar y hacer sugerencias a los usuario y hacer así un
proceso de reserva más rápido y personalizado.
53
Salvador Muñoz Manzaneda
7. Bibliografía
[1] Junta de Andalucía, “Datos provinciales”, [En línea]. Disponible en la web:
http://www.andalucia.org/es/profesional/datos-provinciales/
[2] IBM, “Descripción General de Watson Virtual Agent”, [En línea]. Disponible en la
Web: https://www.ibm.com/watson/developercloud/doc/virtual-agent/es/index.html
[3] Sutherland, J. (2015), Scrum: El nuevo y revolucionario modelo organizativo que
cambiará tu vida . España. Planeta
[4] Asistentes virtuales. En Wikipedia. Recuperado el 16 de Abril de 2018 de
https://es.wikipedia.org/wiki/Asistente_virtual
[5] Procesamiento de lenguajes naturales. En Wikipedia. Recuperado el 16 de Abril
de 2018 de https://es.wikipedia.org/wiki/Procesamiento_de_lenguajes_naturales
[6] Núñez Canal, P. (2016). Kit de prensa. IBM noticias Recuperado de
https://www-03.ibm.com/press/es/es/presskit/45119.wss
[7] Watson (inteligencia artificial). En Wikipedia. Recuperado el 17 de Abril de 2018
de https://es.wikipedia.org/wiki/Watson_(inteligencia_artificial)
[8] IBM, Cómo empezar Recuperado de
https://www.ibm.com/watson/developercloud/doc/virtual-agent/es/getting-started.html
[9] wordpress.org español, wordPress recuperado de https://es.wordpress.org
[10] Build an IT support chatbot by using IBM Watson Assistant, En linea,
Recuperado el 20 de Abril de
https://www.ibm.com/cloud/garage/tutorials/watson_conversation_support?task=3
[11] Flach, P. (2012) Machine Learning, Inglaterra, Cambridge University Press.
54