UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE …se puede aprender números, colores, alfabeto,...
Transcript of UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE …se puede aprender números, colores, alfabeto,...
UNIVERSIDAD CENTRAL DEL ECUADOR
FACULTAD DE INGENIERÍA, CIENCIAS FÍSICAS Y
MATEMÁTICA
CARRERA DE INGENIERÍA INFORMÁTICA
Chatbot para el aprendizaje del idioma Kichwa basado en
Random Forest
Trabajo de Titulación modalidad Proyecto de Investigación, previo a la obtención del
título de Ingeniero Informático
AUTORES: Anrango Perugachi José Luis
Berrezueta Carmona Hanmilton Jhoel
TUTOR: Dr. Santiago Leonardo Morales Cardoso
Quito, 2019
ii
DERECHOS DE AUTOR
Nosotros, ANRANGO PERUGACHI JOSÉ LUIS y BERREZUETA CARMONA
HANMILTON JHOEL en calidad de autores y titulares de los derechos morales y
patrimoniales del trabajo de titulación CHATBOT PARA EL APRENDIZAJE DEL
IDIOMA KICHWA BASADO EN RANDOM FOREST, modalidad Proyecto de
Investigación, de conformidad con el Art.144 del CÓDIGO ORGÁNICO DE LA
ECONOMÍA SOCIAL DE LOS CONOCIMIENTOS, CREATIVIDAD E
INNOVACIÓN, concedemos a favor de la Universidad Central del Ecuador una licencia
gratuita, intransferible y no exclusiva para el uso no comercial de la obra, con fines
estrictamente académicos. Conservamos a nuestro favor todos los derechos de autor sobre
la obra establecidos en la normativa citada.
Así mismo, autorizamos a la Universidad Central del Ecuador para que realice la
digitalización y publicación de este trabajo de titulación en el repositorio virtual, de
conformidad a lo dispuesto en el Art.144 de la Ley Orgánica de Educación Superior.
Los autores declaran que la obra objeto de la presente autorización es original en su forma
de expresión y no infringe el derecho de autor de terceros, asumiendo la responsabilidad
por cualquier reclamación que pudiera presentarse por esta causa y liberando a la
Universidad de toda responsabilidad.
________________________ ______________________________
Anrango Perugachi José Luis Berrezueta Carmona Hanmilton Jhoel
C.C. 1004003271 C.C. 171804823-2
iii
APROBACIÓN DEL TUTOR
En calidad de Tutor del proyecto de titulación, presentado por ANRANGO PERUGACHI
JOSÉ LUIS y BERREZUETA CARMONA HANMILTON JHOEL, para optar por el
título de Ingeniero Informático; cuyo título es: CHATBOT PARA EL APRENDIZAJE
DEL IDIOMA KICHWA BASADO EN RANDOM FOREST, considero que el proyecto
cumple con los requisitos y méritos suficientes para ser sometido a la presentación pública
y evaluación por parte del tribunal examinador que se designe.
En la ciudad de Quito, a los 27 días del mes de junio del 2019.
__________________________________
Dr. Santiago Leonardo Morales Cardoso
DOCENTE-TUTOR
C.C. 1707979934
iv
DEDICATORIA
Al Señor Jesús por la vida, y la oportunidad de luchar para hacer posible mis sueños y
anhelos.
A mi esposa, por su apoyo
A mi madre, por haber encaminado mis pasos por el sendero correcto
A mi hija Génesis, la luz de mis ojos, mi inspiración, mi dulce y tierno amor
Con Cariño
Luis
v
DEDICATORIA
A Dios, por darme la oportunidad de vivir cada día con alegría junto a mis seres queridos
padres y ayudarme a enfrentar los retos venideros en cada paso que doy, por la fuerza e
iluminación que él me brinda; y sobre todo por haber puesto en mi camino gratas personas
que han sido mi soporte y compañía durante este período universitario.
A mi madre Marcia Carmona, por el sacrificio y dedicación que realizó a lo largo de mi
carrera, por toda su comprensión, paciencia y confianza. Sobre todo, por nunca permitir
que me rinda.
A mi hermano Brandon Berrezueta, por ser mi compañero, amigo y confidente.
A todas las personas, que estuvieron ahí conmigo y me apoyaran para lograr cumplir una
meta tan importante en mi vida
Con Cariño
Hanmilton
vi
AGRADECIMIENTOS
Los autores expresan sus agradecimientos a:
A Dios, por darnos el don de la perseverancia para alcanzar nuestra meta.
A nuestros padres, por ser nuestro pilar fundamental en nuestras vidas, por brindarnos
su apoyo, sus consejos para hacer de nosotros mejores personas.
A nuestros hermanos, por sus palabras de aliento y brindarnos su apoyo siempre. Somos
hermanos y estaremos siempre juntos.
A nuestros amigos, quienes sin esperar nada a cambio siempre estuvieron juntos a
nosotros, compartieron sus conocimientos, alegrías, tristezas. Gracias por formar parte
de este sueño.
A la UNIVERSIDAD CENTRAL DEL ECUADOR por permitimos realizar nuestro
proyecto de titulación.
¡Gracias a Ustedes!
Luis y Hanmilton
vii
CONTENIDO
página
DERECHOS DE AUTOR ................................................................................................ ii
APROBACIÓN DEL TUTOR ........................................................................................ iii
DEDICATORIA .............................................................................................................. iv
AGRADECIMIENTOS ................................................................................................... vi
CONTENIDO ................................................................................................................. vii
LISTA DE FIGURAS ..................................................................................................... xi
LISTA DE TABLAS ..................................................................................................... xiii
RESUMEN .................................................................................................................... xiv
ABSTRACT ................................................................................................................... xv
INTRODUCCIÓN ............................................................................................................ 1
CAPÍTULO 1 PRESENTACIÓN DEL PROBLEMA ..................................................... 3
1.1 Antecedentes....................................................................................................... 3
1.2 Planteamiento del problema ............................................................................... 3
1.3 Justificación ........................................................................................................ 4
1.4 Objetivos............................................................................................................. 4
1.4.1 Objetivo General ......................................................................................... 4
1.4.2 Objetivos Específicos ................................................................................. 4
1.5 Alcance ............................................................................................................... 5
1.6 Limitaciones ....................................................................................................... 5
CAPÍTULO 2 MARCO TEÓRICO ................................................................................. 7
2.1 Arquitectura ........................................................................................................ 7
2.1.1 Modelo 3 Capas .......................................................................................... 7
viii
2.2 Inteligencia Artificial (IA) .................................................................................. 8
2.3 Procesamiento del lenguaje natural (PLN) ....................................................... 10
2.2.1 Componentes del PLN .............................................................................. 11
2.2.3 Aplicaciones del PLN ............................................................................... 11
2.2.4 Ventajas del PLN ...................................................................................... 13
2.4 Machine Learning ............................................................................................. 13
2.4.1 Tipos de algoritmos de Machine Learning ............................................... 13
2.4.2 Aprendizaje supervisado ........................................................................... 13
2.4.2 Aprendizaje no supervisado ...................................................................... 14
2.5 Random Forest................................................................................................. 14
2.6 Chatbot ............................................................................................................. 15
2.6.1 Funcionamiento ........................................................................................ 16
2.6.2 Importancia ............................................................................................... 16
2.6.3 Modelado del conocimiento ...................................................................... 17
2.7 Base de datos .................................................................................................... 18
2.7.1 Gestor de Bases de Datos .......................................................................... 18
2.7.2 MySQL ..................................................................................................... 18
2.8 DigitalOcean ..................................................................................................... 19
2.8.1 Droplet ...................................................................................................... 20
2.9 Docker .............................................................................................................. 20
CAPÍTULO 3 METODOLOGÍA ................................................................................... 23
3.1 Desarrollo Ágil de Software ............................................................................. 23
3.1.1 El Manifiesto Ágil .................................................................................... 23
3.2 Metodología a utilizar ....................................................................................... 24
3.3 Scrum ................................................................................................................ 24
3.3.1 Roles ......................................................................................................... 25
3.3.2 Artefactos .................................................................................................. 26
ix
3.3.3 Eventos ...................................................................................................... 26
CAPÍTULO 4 DESARROLLO ...................................................................................... 29
4.1 Análisis de Requerimientos del Sistema .......................................................... 29
4.1.1 Funcionales ............................................................................................... 29
4.1.2 No funcionales .......................................................................................... 29
4.2 Identificación de actores en el sistema ............................................................. 29
4.3 Arquitectura del Proyecto ................................................................................. 30
4.4 Proceso del Sistema .......................................................................................... 30
4.5 Diseño de la base de datos ................................................................................ 31
4.5.1 Esquema modelo relacional Mashi Chat .................................................. 31
4.5.2 Descripción a detalle de tablas del modelo relacional Mashi Chat .......... 32
4.6 Definición de Software utilizado para desarrollar el sistema ........................... 34
4.6.1 Requerimientos de Hardware para un desempeño promedio ................... 34
4.6.2 Versión de Software a utilizar .................................................................. 34
4.7 Clasificación de oraciones mediante el aprendizaje automático ...................... 35
Proceso del ejercicio a abordar: ......................................................................... 35
Dependencias ..................................................................................................... 35
1. Carga de datos ................................................................................................ 36
2. Ingeniería de características: un enfoque a medida no estándar .................... 37
3. Construcción del modelo de Machine Learning ............................................ 38
4. Modelo de prueba con preguntas frecuentes .................................................. 41
5. Pruebas y experimentos ................................................................................. 43
CAPÍTULO 5 PRUEBAS Y RESULTADOS ............................................................... 45
5.1 Pruebas de navegadores web ............................................................................ 45
Prueba de Clicks ..................................................................................................... 46
Prueba de Rampa .................................................................................................... 47
CONCLUSIONES .......................................................................................................... 49
x
RECOMENDACIONES ................................................................................................ 51
GLOSARIO DE TÉRMINOS ........................................................................................ 53
BIBLIOGRAFÍA ............................................................................................................ 54
ANEXOS ........................................................................................................................ 60
ANEXO 1: MANUAL DE USUARIO .................................................................. 61
ANEXO 2: ACTA DE ENTREGA ........................................................................ 73
ANEXO 3: CERTIFICACIÓN DEL RESUMEN EN INGLÉS ............................ 74
ANEXO 4: VISTAS DEL CHATBOT EN LOS NAVEGADORES. ................... 74
Navegador Google Chrome ............................................................................... 74
Navegador Firefox ............................................................................................. 75
Navegador Internet Explorer ............................................................................. 76
Dispositivos Móviles ......................................................................................... 77
xi
LISTA DE FIGURAS
página.
Figura 1. Arquitectura Modelo 3 Capas (FERNÁNDEZ,2003) ............................ 7
Figura 2. Comunicación humano-máquina (CAMPOS,2018) ............................. 10
Figura 3. Random Forest (TOWARDSDATASCIENCE,2018) .......................... 14
Figura 4. Chatbot (KANLLI,2017) ........................................................................ 15
Figura 5. Proceso para un texto basado en chatbot (SANCHÉZ-AYALA, 2018)
........................................................................................................................................ 17
Figura 6. Plataforma de Dockers (TIMES,2018) .................................................. 21
Figura 7. Scrum Framework (SCRUM.ORG, 2017) ............................................ 25
Figura 8. Arquitectura ........................................................................................... 30
Figura 9. Flujo del chatbot ...................................................................................... 30
Figura 10. Modelo entidad-relación ....................................................................... 31
Figura 11. Carga de datos ....................................................................................... 36
Figura 12. Salida de datos ....................................................................................... 36
Figura 13. Extracción de patrones ........................................................................ 37
Figura 14. Extracción de características ................................................................ 38
Figura 15. Extracción de características ................................................................ 38
Figura 16. Cargar datos .......................................................................................... 39
Figura 17. Dividir para el entrenamiento .............................................................. 39
Figura 18. Ajustar el modelo .................................................................................. 40
Figura 19. Generar predicciones ............................................................................ 40
Figura 20. Validación básica ................................................................................... 41
Figura 21. Carga de preguntas ............................................................................... 42
Figura 22. Clase de oración ..................................................................................... 42
Figura 23. Matriz de confusión ............................................................................... 42
Figura 24. Predicción ............................................................................................... 43
Figura 25. Prueba Clicks ......................................................................................... 46
Figura 26. Gráfica de Clicks. .................................................................................. 47
Figura 27. Prueba de rampa ................................................................................... 47
Figura 28. Gráfica de rampa .................................................................................. 48
Figura 29. Navegadores compatibles ..................................................................... 62
xii
Figura 30. Vista de login para acceder a la configuración de KEYCLOAK. .... 63
Figura 31. Vista de configuración del REALM (reino) Mashi Chat. .................. 64
Figura 32. Vista de configuración de clientes del reino Mashi Chat. .................. 64
Figura 33. Vista de configuración de roles del reino Mashi Chat. ...................... 65
Figura 34. Vista de configuración para registrarse con Twitter. ........................ 65
Figura 35. Vista de configuración de usuarios del reino Mashi Chat ................ 66
Figura 36. Vista de login para acceder a la aplicación Mashi Chat. ................... 67
Figura 37. Vista de rol profesor. ............................................................................. 68
Figura 38. Vista de rol estudiante. .......................................................................... 68
Figura 39. Vista del chatbot con los temas rol profesor ....................................... 69
Figura 40. Vista del chatbot. ................................................................................... 69
Figura 41. Vista de autorización de Twitter para registrarse en Mashi Chat. .. 70
Figura 42. Vista de verificación de la información de registro en Mashi Chat.. 70
Figura 43. Vista de Chatbot y temas. ..................................................................... 71
Figura 44. Vista de perfil de rol estudiante. .......................................................... 71
Figura 45. Vista de rol administrador. .................................................................. 72
Figura 46. Vista de perfil del administrador. ........................................................ 72
Figura 47. Vista administración del reino Mashi Chat en Google Chrome. ...... 74
Figura 48. Vista de login a Mashi Chat en Google Chrome. ............................... 74
Figura 49. Vista administración del reino Mashi Chat en Firefox. ..................... 75
Figura 50. Vista de login a Mashi Chat en Firefox. .............................................. 75
Figura 51. Vista administración del reino Mashi Chat en Interner Explorer. .. 76
Figura 52. Vista de login a Mashi Chat en Internet Explorer. ............................ 76
Figura 53. Vista administración del reino Mashi Chat en dispositivo móvil. .... 77
Figura 54. Vista de login a Mashi Chat en dispositivo móvil. .............................. 77
xiii
LISTA DE TABLAS
página
Tabla 1. Tipos de chatbots (ROUSE,2018) ............................................................ 16
Tabla 2. Hosting vs Droplet .................................................................................... 20
Tabla 3. Comparación Metodologías ..................................................................... 24
Tabla 4. Comparación SCRUM vs XP .................................................................. 24
Tabla 5. Roles del proyecto ..................................................................................... 26
Tabla 6. Artefactos del proyecto ............................................................................. 26
Tabla 7. Eventos adaptados al proyecto ................................................................ 27
Tabla 8. Identificación de actores ........................................................................... 29
Tabla 9. Herramientas utilizadas ........................................................................... 34
Tabla 10. Navegadores ............................................................................................ 45
Tabla 11. Escenarios de pruebas ............................................................................ 46
xiv
TÍTULO: Chatbot para el aprendizaje del idioma Kichwa basado en Random Forest
Autores: Anrango Perugachi José Luis
Berrezueta Carmona Hanmilton Jhoel
Tutor: Dr. Santiago Leonardo Morales Cardoso.
RESUMEN
El presente proyecto de titulación se realiza con el objetivo de impulsar el aprendizaje del
Kichwa. Para lo cual se desarrolla un bot que permite aprender este idioma mediante la
interacción entre la persona y el bot. Se aplica el algoritmo Random Forest, con el cual
se puede aprender números, colores, alfabeto, saludos, frutas y animales. Un vocabulario
básico.Para lograr lo anteriormente descrito y después de evaluar diferentes metodologías
se utiliza el método SCRUM con el fin de obtener mejores resultados. Se trabaja de
manera colaborativa con el lenguaje de programación Python y como motor de base de
datos MySQL, DigitalOcean (Droplets), Ubuntu 16.04, Git, Keycloak.
PALABRAS CLAVE: KICHWA / RANDOM FOREST / BOT/ DROPLETS
/METODOLOGÍA SCRUM/MYSQL
xv
TITLE: Chatbot for learning the Kichwa language based on Random Forest
Authors: Anrango Perugachi José Luis
Berrezueta Carmona Hanmilton Jhoel
Tutor: Dr. Santiago Leonardo Morales Cardoso.
ABSTRACT
The present project was carried out with the objective and the need to develop a bot;
Which will help to learn the Kichwa language that is being lost due to technological
development.Field research has been conducted to come up with a solution to the
problem. The development of a bot that allows automatic learning of the Kichwa language
through the Random Forest algorithm is shown; thus, you can learn numbers, colors,
alphabet, greetings, fruits and animals.To achieve the aforementioned and after
evaluating different methodologies, the SCRUM methodology was used in order to obtain
a better result; collaborative work was carried out, and development tools such as Python
programming language, MySQL database engine, DigitalOcean, Droplets )4, Git,
Keycloak.
KEYWORDS: KICHWA / GIT / DROPLETS / SCRUM METHODOLOGY /
MYSQL
1
INTRODUCCIÓN
El avance de la tecnología, las innovaciones y el acceso a internet; da un impulso a la
implementación de soluciones automatizadas como ayuda en el campo social y cotidiano.
En la Universidad Central del Ecuador al momento, no se cuenta con un programa
informático (Chatbot) para el aprendizaje del idioma kichwa, el cual sería una herramienta
muy necesaria para compartir información y resolver dudas de acuerdo con este ámbito.
Es así como el chatbot se convierte en una herramienta útil y necesaria dentro de la
comunidad centralina, para la interacción de cada usuario.
Este proyecto desarrollado tiene la iniciativa de facilitar un chatbot que es capaz de
mantener una conversación sin necesidad de la intervención humana. Es decir, si el
usuario responde, automáticamente se inicia una conversación; el uso del lenguaje y la
capacidad de dar respuestas acertadas.
Además, la metodología SCRUM, establece una adaptación óptima entre los involucrados
para una mejora eficiente; de modo que se pueda definir de manera conjunta los roles a
desempeñar, los eventos a involucrarse y los artefactos a emplear. El “sprint” (iteración)
constituye la característica sobresaliente para el desarrollo del presente trabajo; donde el
producto se desarrolla en partes que posteriormente se irá añadiendo, garantizando la
ejecución de todos los requisitos.
3
CAPÍTULO 1 PRESENTACIÓN DEL PROBLEMA
1.1 Antecedentes
La Universidad Central del Ecuador es una Institución Pública de Educación Superior,
se encuentra ubicada en la Av. América S/N y Av. Universitaria, conformada por 18
facultades, con una cantidad cambiante de por lo menos 59 carreras. La universidad
cuenta con instalaciones en muy buen estado y docentes fuertemente preparados. La
necesidad de tener un chatbot en una institución de educación, para que facilite la práctica
y el aprendizaje del idioma kichwa sin intervención humana es importante para fomentar
la interacción-comunicación con los pueblos ancestrales y público en general, tomando
en cuenta la gran importancia de este idioma en nuestro país.
Con la aparición de Machine Learning, que crea sistemas que aprenden automáticamente,
se han desarrollado distintos algoritmos de aprendizaje automático tales como: arboles de
decisión, Random Forest, redes neuronales. Las aplicaciones de este tipo se han realizado
para los distintos idiomas, cada uno con su complejidad, pero aún no se adapta este nuevo
modelo para el aprendizaje automático del idioma Kichwa.
1.2 Planteamiento del problema
El principal problema es el déficit en la generación de conocimientos del idioma Kichwa.
Según avanza la tecnología el mundo accede a internet, por lo cual surge la necesidad de
desarrollar un chatbot para la Universidad Central del Ecuador, que pueda dar respuestas
ante determinadas situaciones, teniendo en cuenta dos características principales que le
convierten en una herramienta útil que son: la agilidad y la capacidad de aprender.
De esta forma se pretende optimizar recursos con el fin de ofrecer un mejor servicio a
los estudiantes de la comunidad interesada.
4
1.3 Justificación
En la actualidad, el teléfono inteligente es tendencia, su uso se encuentra centrado en
aplicaciones de mensajería, los chatboots son las aplicaciones más usadas en el acto de
comunicar y en la interacción diaria.
Debido a varios factores, entre ellos el avance tecnológico, el idioma de la comunidad
kichwa está desapareciendo, por tal motivo se plantea realizar esta investigación y
desarrollar un bot de aprendizaje automático para instruir en el conocimiento de este
idioma y evitar su desvalorización y perdida.
Al momento algunas aplicaciones populares usan Machine Learning, y son: Netflix, Uber
Eats, Facebook, Instagram, Amazon, etc., los cuales han demostrado un eficiente
funcionamiento en la interacción diaria. Es por esto que el proyecto busca utilizar
herramientas tecnológicas como el chatbot para el aprendizaje del idioma kichwa, para
que sea útil en la institución, así como en otras instituciones de la misma índole.
1.4 Objetivos
1.4.1 Objetivo General
Desarrollar un chatbot para la Universidad Central del Ecuador que permita el
aprendizaje automático del idioma Kichwa mediante la implementación del
algoritmo Random Forest.
1.4.2 Objetivos Específicos
Desarrollar un BOT que aprenda números, colores, alfabeto, saludos, frutas y
animales en kichwa con el uso del algoritmo Random Forest.
Entrenar el BOT con el uso de lenguaje natural español a kichwa a través de un
chatweb.
Crear una aplicación web para el entrenamiento por parte de usuarios con
conocimientos del idioma kichwa.
Analizar las herramientas que estén más acorde para el desarrollo del sistema.
5
1.5 Alcance
El proyecto de investigación chatbot, mediante machine learning y la implementación del
algoritmo de aprendizaje automático Random Forest para la Universidad Central del
Ecuador conlleva lo siguiente:
Desarrollo de un BOT con el algoritmo Random Forest para el aprendizaje automático
del idioma kichwa. El cual resolverá la necesidad de practicar y aprender el idioma
kichwa por parte de los estudiantes que siguen los cursos gratuitos de dicho idioma en la
Escuela de Idiomas de la Universidad Central del Ecuador.
El BOT, tendrá la capacidad de ser entrenado por los estudiantes a través de un chatweb,
al registrarles con una cuenta de Twitter o email personal. También podrá ser usado por
personas externas que tengan la necesidad de practicar el idioma en temas básicos como:
números, colores, alfabeto, saludos, frutas y animales.
1.6 Limitaciones
El BOT a nivel léxico no puede distinguir que una palabra tenga distintos significados a
partir del contexto, solo aprende del idioma kichwa – español.
El BOT a nivel pragmático no puede reconocer frases como la ironía, felicidad, tristeza y
ningún otro sentimiento.
El BOT no podrá distinguir el regionalismo entre distintos acentos del idioma kichwa del
Ecuador.
6
7
CAPÍTULO 2 MARCO TEÓRICO
2.1 Arquitectura
2.1.1 Modelo 3 Capas
La arquitectura de tres capas es una técnica para el desarrollo de aplicaciones de software
donde la principal concepción es la separación de la lógica del negocio de la presentación
y de la persistencia. La división en varios componentes ayuda a reducir
considerablemente la complejidad; además que permite la reutilización de código,
agilizando notablemente el proceso de desarrollo del producto de software (FLORES &
HECTOR, 2012, pág. 169).
La arquitectura de tres capas se basa en el siguiente modelo:
Figura 1. Arquitectura Modelo 3 Capas (FERNÁNDEZ,2003)
La capa de presentación: Exhibe la aplicación al usuario, le muestra la
información y captura la información del usuario. Esta capa se comunica con la
capa de lógica de negocio por medio de objetos que se denominan “Object value”.
La capa de lógica de negocio: Es donde se desarrollan los algoritmos propios de
la aplicación. En esta capa se implementa la lógica obtenida por el análisis de
requerimientos del proyecto. Esta capa provee servicios a la capa de presentación,
8
recibiendo como parámetros la información que el usuario entrega a la aplicación.
Esta capa se comunica con la capa de persistencia por medio de objetos que se
denominan “Object value”.
La capa de persistencia: Es donde se almacenan los datos y se realiza las
operaciones para manipular dichos datos. Estos datos pueden encontrarse en
cualquier tipo de sistema que almacene información en disco duro como archivos
y bases de datos. Esta capa recibe solicitudes de almacenamiento o recuperación
de información desde la capa de la lógica del negocio. Entonces esta capa es la
encargada de abrir archivos o crear conexiones a bases de datos (FLORES &
HECTOR, 2012, págs. 152-153).
Ventajas
Los componentes de la aplicación pueden ser desarrollados en cualquier lenguaje.
Los componentes son independientes.
Los componentes pueden estar distribuidos en múltiples servidores.
La D.B. es solo vista desde la capa intermedia y no desde todos los clientes.
Permite reutilización real del software y construir aplicaciones escalables.
(ARCE, 2019) .
2.2 Inteligencia Artificial (IA)
La Inteligencia Artificial (IA) es una rama de la informática y se la puede describir
como la representación del comportamiento característico de personas por parte de
máquinas, principalmente sistemas informáticos. Este conjunto de representaciones
incluye el aprendizaje, el razonamiento y la autocorrección (ARIZA, 2018).
Es la combinación de algoritmos con el propósito de crear máquinas que actúen de
manera similar al ser humano, con las mismas capacidades. Generalmente la inteligencia
artificial requiere de herramientas, de disciplinas como el cálculo numérico, la estadística,
la informática, etc. Requiere de una secuencia infinita de instrucciones que van
especificando acciones que debe ejecutar la computadora para resolver problemas y esto
es lo que constituye la estructura algorítmica del sistema de inteligencia artificial.
También se puede decir que es el razonamiento de un agente que no está vivo,
contribuye a un mayor entendimiento del conocimiento humano. En la actualidad, se
centra en el desarrollo de sistemas de procesamiento de datos, que sean capaces de imitar
la inteligencia humana realizando tareas que requieran aprendizaje y solución a problemas
9
y decisiones. Se enfoca en dos áreas de estudio que son: el ser humano y el ordenador
electrónico, ya que la intensión es copiar la inteligencia humana.
De esta manera la inteligencia artificial busca explicar el funcionamiento mental para
lo cual se basa en el desarrollo de algoritmos como ya se mencionó para controlar las
diferentes cosas, la inteligencia artificial combina varios campos, con un mismo fin que
es tratar de crear maquinas que puedan pensar por sí solas.
Las aplicaciones más frecuentes se dan en la robótica, en el tratamiento automático de
textos, en el aprendizaje adaptivo, etc. (Raul Benitez, 2014).
Evolución histórica
La inteligencia artificial nace en 1943 cuando Warren McCulloch y Walter Pitts
proponen un modelo de neurona del cerebro del ser humano, lo cual se aplica como un
símbolo de la actividad cerebral. En 1950 Turing publica en la revista Mind un artículo
titulado Computing Machinery and Intelligence, donde menciona el Test de Turing, a este
artículo se lo considera el precursor de muchos de los desarrollos en el campo de la
Inteligencia artificial (Studylib, 2019).
En 1955 Herbert Simón, Allen Newell y J.C Shaw, desarrollan el primer lenguaje de
programación orientado a la solución de problemas de la IA. Un año después desarrollan
el primer programa llamado Logic Theorist con la capacidad de demostrar teoremas
matemáticos, representado cada uno como un árbol, siguiendo las ramas en busca de la
solución correcta (Studylib, 2019).
En 1956 Newell y Simón desarrollaron el General Problems Solver, orientado a la
resolución de problemas, a la demostración de teoremas matemáticos, en esta ocasión no
tuvieron éxito.
En 1957 McCarthy desarrollo el lenguaje LISP, donde USA aportó dinero para esta
investigación, así también IBM contrato un equipo para la investigación en esta área.
A finales de la década de los 50 e inicios de los 60 Robert Lindsay desarrolló un programa
orientado a la lectura de oraciones en inglés, a este se le denominó Sad Sam, este fue el
primer programa en el ámbito del Procesamiento del Lenguaje Natural.
Durante estos años se destacaron varios desarrollos importantes de Herbert Gelernter, con
el demostrador automático de teoremas de la Geometría; Alex Bernstein, desarrolla un
programa para el juego de ajedrez (ALANDETE, 2011).
10
En 1961 James Slagle desarrolla SAINT, el cual se orienta a la demostración simbólica
en el área de algebra. En el 64 Bertrand Raphael realiza SIR, capaz de comprender
oraciones en inglés.
En la década de los 60 Frank Rossenblatt, desarrolla un modelo de la mente humana
mediante una red neuronal y produce un perceptrón, este trabajo tuvo grandes críticas por
parte de Marvin Minsky y Seymour Papert.
En 1965 hacia los 70 empezaron a aparecer los programas que predicen la probabilidad
de una solución, como el DENDRAL y MACSYMA.
En la década de los 70, creció el desarrollo de sistemas diseñados para aplicaciones
médicas como el MYCIN, entre otros.
En 1975 inicia la era de los lenguajes expertos como EMYCIN, EXPERT, OPSS, los
cuales fueron perfeccionados para que sean más amigables y funcionales.
En 1980 se dio lugar al auge de los sistemas expertos los cuales no alcanzaron a cumplir
todos sus objetivos. En la actualidad los estudiosos siguen desarrollando cada vez más
sistemas, programas, hasta lograr que la distinción sea casi imposible entre una maquina
y un humano (ALANDETE, 2011).
2.3 Procesamiento del lenguaje natural (PLN)
El procesamiento del lenguaje natural, por sus siglas PLN, constituye el área del
conocimiento de la Inteligencia Artificial, que se encarga principalmente de desarrollar e
investigar formas de relacionar máquinas con personas, a través de los diferentes idiomas
como español, inglés, etc. (RAMIRES & MARQUES, 2018).
Figura 2. Comunicación humano-máquina (CAMPOS,2018)
11
2.2.1 Componentes del PLN
No todos los análisis que se describen se aplican en cualquier tarea de PLN, sino
que depende del objetivo de la aplicación.
Análisis morfológico o léxico: Consiste en el análisis interno de las palabras que
forman oraciones para extraer lemas, rasgos flexivos, unidades léxica compuestas.
Es esencial para la información básica: categoría sintáctica y significado léxico.
Análisis sintáctico: Consiste en el análisis de la estructura de las oraciones de
acuerdo con el modelo gramatical empleado (lógico o estadístico).
Análisis semántico: Proporciona la interpretación de las oraciones, una vez
eliminadas las ambigüedades morfosintácticas.
Análisis pragmático: Incorpora el análisis del contexto de uso a la interpretación
final (MORENO A. , 2017).
2.2.3 Aplicaciones del PLN
PLN para la Traducción Automática de textos (TA)
El multilingüismo es una barrera colosal para la globalización y la comunicación
humana.
No se resuelve con conocer dos o tres lenguas (tarea costosa para la mayoría de las
personas). Necesitamos traductores que nos acerquen los contenidos escritos en
docenas de lenguas. Ante la falta de disponibilidad de traductores humanos para
muchos pares de lenguas, la Traducción Automática nos proporciona un borrador
del contenido de una página web o de un comentario sobre la habitación de un
hotel (MORENO S. A., 2017).
Por supuesto, la traducción automática de textos no puede sustituir a los humanos
en textos complejos y donde la fiabilidad sea crucial (ficción, textos legales, etc.).
Sin embargo, se ha extendido en los contenidos de internet y las redes sociales.
Sobre todo, porque es gratuita, instantánea y, en la mayoría de los casos, aceptable
para nuestros intereses (MORENO S. A., 2017).
12
Sistemas conversacionales con PLN
Los primeros sistemas de tecnologías de habla reconocían un conjunto muy
reducido de palabras (números aislados, generalmente). Luego pasaron a
transcribir automáticamente mensajes de voz y llegaron los asistentes
conversacionales como Siri, Cortana o Google Assistant.
La interacción entre humano y máquina por voz es uno de las aplicaciones más
exitosas y sus usos son múltiples porque virtualmente cualquier artefacto (desde
un coche hasta un frigorífico) llevará un pequeño ordenador con el que comunicar.
El desafío ahora es que sean capaces de entablar una verdadera conversación con
peticiones encadenadas (MORENO S. A., 2017).
PLN para la recuperación y extracción de información
Los buscadores de internet fueron la primera aplicación masiva del lenguaje
natural en el mundo de las TIC. Con la aparición de Internet había demasiada
información no accesible y hacía falta una herramienta que pudiera mostrar
páginas mediante la búsqueda de palabras clave.
El siguiente paso es leer la información expresada en una lengua y extraer su
contenido. La extracción de información es la base para clasificar, resumir y
relacionar (MORENO S. A., 2017).
Etiquetado morfológico, sintáctico y semántico
Para procesar el contenido se usan etiquetadores que analizan los mensajes en
diferentes niveles. Por ejemplo, anotan el infinitivo a todas las formas verbales o
asignan las etiquetas de sujeto y objeto directo en la oración.
Estos anotadores son los que permiten realizar las tareas específicas que detallamos
a continuación (MORENO S. A., 2017).
PLN para respuestas automáticas a preguntas
El sistema Watson de IBM se hizo famoso por ganar a los dos mejores
competidores del concurso televisivo Jeopardy.
Watson era más rápido y exacto a la hora de encontrar la relación entre preguntas
y respuestas. Para ello, usa múltiples niveles de conocimiento y bases de datos
donde se almacenan los contenidos (MORENO S. A., 2017).
13
2.2.4 Ventajas del PLN
La aplicación de PLN en las aplicaciones descritas busca simplificar la
comunicación con las máquinas, para dedicarse a tareas de más alto impacto.
Ahorra tiempo al automatizar procesos que se realizan a mano. La clasificación
documental o la traducción de documentos con información repetitiva se puede
agilizar con programas especiales.
Agiliza el trabajo de etiquetado manual. Se pueden leer grandes volúmenes de
documentos para etiquetar su contenido de una manera más fiable si un
programa automático filtra los conceptos.
Permite de forma sencilla tomar decisiones relativas al negocio. Una crisis en
un medio social se puede controlar más efectivamente si un sistema de escucha
de opiniones en las redes detecta el problema rápidamente.
Añade valor a las soluciones incorporando el significado de los textos, reglas
lingüísticas, diccionarios. Las tecnologías PLN permite visualizar información
semántica para ayudar a su mejor compresión por parte de los usuarios.
2.4 Machine Learning
El Machine Learning es el diseño y estudio de las herramientas informáticas que
utilizan la experiencia pasada para tomar decisiones futuras; es el estudio de programas
que pueden aprender de los datos. El objetivo fundamental del Machine Learning es
generalizar, o inducir una regla desconocida a partir de ejemplos donde esa regla es
aplicada. El Machine Learning combina conceptos y técnicas de diferentes áreas del
conocimiento, como las matemáticas, estadísticas y las ciencias de la computación
(Miller, Toptal, 2019).
2.4.1 Tipos de algoritmos de Machine Learning
El campo de aprendizaje de máquina se establece en dos pilares principales
llamados aprendizaje supervisado y aprendizaje no supervisado:
2.4.2 Aprendizaje supervisado
Emplea un conjunto de datos conocidos (el denominado conjunto de datos de
entrenamiento) para realizar predicciones. El conjunto de datos de entrenamiento
14
incluye datos de entrada y valores de respuesta. A partir de él, el algoritmo de
aprendizaje supervisado busca crear un modelo que pueda realizar predicciones acerca
de los valores de respuesta para un nuevo conjunto de datos. Con frecuencia se utiliza
un conjunto de datos de prueba para validar el modelo. Si se utilizan conjuntos de datos
de entrenamiento de mayor tamaño, a menudo se generan modelos cuya capacidad
predictiva es mayor y que se pueden aplicar con buenos resultados sobre nuevos
conjuntos de datos (Miller, Toptal, 2019).
2.4.2 Aprendizaje no supervisado
Tiene lugar cuando no se dispone de datos “etiquetados” para el entrenamiento.
Sólo conocemos los datos de entrada, pero no existen datos de salida que correspondan
a un determinado input. Por tanto, sólo podemos describir la estructura de los datos,
para intentar encontrar algún tipo de organización que simplifique el análisis. Por ello,
tienen un carácter exploratorio (González, 2014).
2.5 Random Forest
Figura 3. Random Forest (TOWARDSDATASCIENCE,2018)
Los árboles de decisión están entre los métodos de clasificación supervisada más
utilizados, se trata de un método no paramétrico, robusto y fácil de interpretar.
Los Random Forest trabajan mediante divisiones sucesivas en el espacio de variables,
tratando de encontrar la variable y el valor umbral de esta que permitan maximizar la
regularidad de las particiones resultantes (Towards Data Science, 2018).
15
El algoritmo Random Forest utiliza dos parámetros: el número de árboles y el número
de predictores a utilizar en cada partición de cada uno de los árboles. Sin embargo, una
de las grandes ventajas de este algoritmo es su baja sensibilidad a estos parámetros, por
lo que los valores por defecto suelen producir buenos resultados (FULGENCIO &
FRANCISCO, 2016).
Ventajas
(RandomForest, 2013) menciona las siguientes ventajas “Es uno de los más
eficientes algoritmos de aprendizaje disponible. Su eficiencia en ejecución en
grandes bases de datos es muy buena. Permite manejar cientos de variables
entrantes sin excluir ninguna”.
Desventajas
(RandomForest, 2013) afirma “A diferencia de los árboles de decisión, la
clasificación hecha por Random Forest es difícil de interpretar por el hombre. Si
los datos contienen grupos de atributos correlacionados de relevancia similar para
el rendimiento, entonces los grupos más pequeños están favorecidos sobre los
grupos más grandes”.
2.6 Chatbot
Figura 4. Chatbot (KANLLI,2017)
16
Son programas informáticos con los que los usuarios pueden mantener conversaciones,
ya sea a través de texto o voz. En los últimos años, los chatbots han llegado a ser populares
en negocios enfocados en el servicio al cliente (SANCHÉZ & AYALA, 2018).
2.6.1 Funcionamiento
Los chatbots son tecnologías que se fundamentan en el uso de inteligencia artificial,
los cuales mediante un aprendizaje profundo, manejo de lenguaje natural y mediante el
proceso de machine learning, adquieren gran cantidad de información que permite al bot
una mejor interacción. Es decir, cuanto más se utiliza el bot, este aprende y reconoce de
mejor manera el input del usuario permitiendo una interacción más fluida. Además, el bot
logra mejores respuestas con respecto a la interacción propuesta por el usuario (ROUSE
M. , TechTarget, 2018).
Tabla 1. Tipos de chatbots (ROUSE,2018)
Sin estado (stateless) Con estado (stateful)
Protocolo que trata a cada petición
como una nueva transacción, por tanto,
la comunicación es en pares
independientes de solicitud y respuesta.
Protocolo que tiene dependencia en la
conexión cliente-servidor, siempre mantiene
un estado para recordar y almacenar los
detalles de cada interacción.
2.6.2 Importancia
El ahorro de tiempo y la eficiencia derivados de los chatbots de IA que conversan y
responden preguntas recurrentes es atractivo para las empresas que buscan aumentar las
ventas o la productividad del servicio. (ROUSE M. , TechTarget, 2018)
La mayoría de las herramientas se derivan de una idea general: recibir datos en bruto,
asignar un significado y luego que actúe de manera apropiada según una base de
conocimientos.
Para procesar el lenguaje natural, los chatbots se basan en el reconocimiento de
patrones y el bigrama. Identificación, un procedimiento que generalmente se maneja
mediante marcos de conversación. Sin embargo, corresponde a los diseñadores de chatbot
generar la base de conocimiento y proporcionar el motor de aprendizaje con ejemplos
apropiados (SANCHÉZ & AYALA, 2018).
17
Figura 5. Proceso para un texto basado en chatbot (SANCHÉZ-AYALA, 2018)
2.6.3 Modelado del conocimiento
Esta fase determina cómo se representa y almacena el conocimiento en la base de
conocimiento.
Las estructuras de conversación se basan en árboles. Cada nodo en el árbol representa
una respuesta única, desde un simple saludo hasta información detallada sobre consultas
previas.
Es importante tener en cuenta que, en la conversación, para determinar qué respuesta
está buscando el usuario, la similitud entre la entrada del usuario y todas las consultas
conocidas deben ser calculadas. Este proceso se realiza mediante algoritmos de
aprendizaje automático que utilizan medidas de similitud entre oraciones en las que cada
palabra o carácter puede representar una sola dimensión, y su precisión se refina al
proporcionar miles de ejemplos. Por lo tanto, se aconseja agrupar unidades de
conocimiento por similitud de la entrada del usuario que los activará, en lugar de
agruparse por tema (Briega, 2017).
Flujo de conversación: Tanto el léxico utilizado por el tutor como el orden en que se
presentan las ideas.
Una vez que el conocimiento se separa en pequeñas unidades atómicas, se diseña cómo
presentarlos en el siguiente paso. Una forma eficiente de hacerlo es la creación de un
glosario y una convención de nomenclatura para realizar un seguimiento de las consultas
disponibles y gestionar sus órdenes de disparo.
18
2.7 Base de datos
Una base de datos, básicamente, consiste en un sistema de información, la cual es
acumulada en medios de almacenamiento masivo que luego facilitan el acceso directo a
ellos por medio de programas que permiten manipular esta información (VALDEZ D. P.,
2007).
Por otra parte, un sistema de Gestión de Bases de datos se caracteriza por ser un
software muy específico, el mismo que tiene la función de servir de interfaz entre la base
de datos, el usuario y las aplicaciones que la utilizan; en otras palabras, una agrupación
de programas que ayudan a definir, construir y manipular una base de datos, y de esta
manera poder almacenar datos para que posteriormente se pueda acceder a los mismos de
forma rápida y estructurada (CONTRÉRAS, 2011).
2.7.1 Gestor de Bases de Datos
Hoy en día, hay una gran variedad de gestores de base de datos que despliegan un
modelo, el cual permite acceder a la información de forma más simple. Estos utilizan
lenguajes de consulta; los cuales permiten generar informes, analizar, garantizar la
seguridad y la integridad de los datos (CHAMBI, 2016).
Los proyectos tienen perspectivas técnicas radicalmente diferentes, y cada una está
informada por un conjunto completamente diferente de preocupaciones.
PostgreSQL se ha enfocado tradicionalmente en la fiabilidad, integridad de datos y
características integradas enfocadas al desarrollador. Tiene un planificador de
consultas, que es capaz de unir cantidades relativamente grandes de tablas
eficientemente.
MySQL, se ha enfocado tradicionalmente en aplicaciones web de lectura, usualmente
escritas en PHP, donde la principal preocupación es la optimización de consultas
sencillas (RIGGS, 2011).
Ningún gestor de base de datos es perfecto, sin embargo, se debe buscar la Base de
Datos más adecuada y que mejor se acople a los requerimientos del proyecto que se
realice.
2.7.2 MySQL
MySQL es un SGBDR (Sistema de Gestión de Base de Datos Relacional) que en la
actualidad se encuentra ampliamente expandido; además que es uno de los más populares
19
entre los servidores de internet. Se caracteriza por su facilidad al implementarlo; y por el
carácter original que tiene al ser “open source” (DELÉGLISE, 2013, pág. 28).
Características
Facilidad de uso: MySql es un sistema de base de datos de alto rendimiento, pero
relativamente simple, y es mucho menos complejo de configurar y administrar que los
sistemas máster.
Soporte de lenguaje de consulta: MySql entiende SQL (Lenguaje de consulta de
estructura), el lenguaje de elección estándar para todos los sistemas de base de datos de
módem.
Capacidad: El servidor MySql tiene múltiples hilos, por lo que muchos clientes pueden
conectarse a él al mismo tiempo. Cada cliente puede usar múltiples bases de datos
simultáneamente.
Conectividad y seguridad: MySql está completamente conectado a la red y se puede
acceder a las bases de datos desde cualquier lugar de Internet, de modo que puede
compartir sus datos con cualquier persona, en cualquier lugar. MySQL admite conexiones
encriptadas utilizando el protocolo Secure Sockets Layer (SSL).
Portabilidad: MySql se ejecuta en muchas variedades de Unix y Linux, así como en
otros sistemas como Windows (DUBOIS, 2005, pág. 4).
2.8 DigitalOcean
Para la mayoría de los individuos en la sociedad moderna, la actividad diaria implica
más interacción con medios digitales (DiCerbo, 2014).
Es un proveedor estadounidense de servidores virtuales privados, con sede principal
en la ciudad de Nueva York. La compañía alquila instalaciones de centros de cómputo
existentes, incluyendo sitios como Nueva York, Toronto, etc. (DiCerbo, 2014).
Características
Maneja el concepto de droplet para designar a cada uno de los servidores
virtuales, exactamente servidores virtuales privados, los cuales ofrecen en
alquiler.
Son privados porque DigitalOcean no interviene de ninguna manera en su
instalación y manejo.
20
Cada droplet de un mismo cliente puede comunicarse única y exclusivamente con
otros droplets del mismo cliente.
No ofrecen venta de dominios web, sino que ofrecen la interfaz web necesaria
para que los clientes agreguen (DigitalOcean, 2019).
2.8.1 Droplet
Es una máquina virtual en la nube, que posee todas las características propias de un
servidor, el cual es totalmente escalable, acoplándose a los requerimientos del contratante;
es así que, si se posee un droplet donde el tamaño del disco duro es de 10 gb, y si en algún
punto se requiere la expansión de esta capacidad se lo puede hacer sin ningún problema
(Largo, 2017).
Tabla 2. Hosting vs Droplet
Hosting Droplet
Un sitio web que comparte recursos de
hardware y software como: Memoria RAM,
almacenamiento, dirección IP con otros
sitios web residentes en el mismo servidor.
Es un servidor únicamente para tu sitio web
con una dirección IP propia.
El proveedor da acceso al CPanel para
administrarlo, mediante esta herramienta se
puede crear base de datos, respaldar
información etc.
Administrar un droplet, se realiza utilizando
el protocolo ftp y ssh, únicamente por
consola (Requiere conocimientos de
comandos linux).
2.9 Docker
Docker se fundamenta en la idea de crear contenedores ligeros y portables. De esta
manera, estas aplicaciones de software se las podría ejecutar en cualquier máquina con
Docker instalado, sin tener que pensar en el sistema operativo instalado en la maquina a
ejecutar la aplicación; facilitando así también los despliegues (GARCÍA, 2015).
Docker es capaz de empaquetar en un contenedor todos los requerimientos que la
aplicación requiere (Java, Python, Maven, NLTK, etc.); y la propia aplicación. Es decir,
el desarrollador puede llevar los contendores a cualquier máquina donde Docker se
encuentre instalado y ejecutar la aplicación sin tener que volver a instalar los
requerimientos. El desarrollador no tiene que preocuparse de las versiones de software
instaladas en la máquina a ejecutar la aplicación, ni siquiera si la máquina posee los
21
componentes necesarios para que funcione y finalmente, tampoco tiene que preocuparse
de la compatibilidad (GARCÍA, 2015).
Figura 6. Plataforma de Dockers (TIMES,2018)
Oscar Villacampa dice en su artículo de marketing: “Docker es un proyecto de código
libre que se ha convertido en uno de los términos de moda, por las ventajas que
proporciona a los profesionales del desarrollo web y de aplicaciones; o los
administradores de sistemas, por la facilidad que supone el trabajar con el concepto de
contenedores” (VILLACAMPA, 2017).
“Docker nos ayuda a no malgastar nuestro tiempo configurando el entorno, y las
dependencias del sistema, porque lo vamos a poder desplegar fácilmente. Algo muy útil
tanto para grandes empresas, como Red Hat o Google, como para las
pequeñas startups que empiezan a desarrollar su aplicación” (VILLACAMPA, 2017).
22
23
CAPÍTULO 3 METODOLOGÍA
El presente proyecto para su correcto desarrollo necesita una planificación adecuada
para lograr resultados óptimos. Hay varias metodologías que se emplean en la
construcción de programas; de las cuales, las más rápidas, flexibles y funcionales,
conocidas como agiles, son:
3.1 Desarrollo Ágil de Software
El término “ágil” se caracteriza por un grupo de métodos y prácticas que se basan en
los valores y principios expresados en el manifiesto ágil. A mediados de los 90s, muchas
fueron las metodologías de desarrollo de software que empezaron a ganar terreno en los
desarrolladores debido a que se generaba una estrecha relación entre desarrollador y
usuario. La característica propia de esta metodología ayuda a generar mejores resultados
en tiempos cortos. Además, el término ágil se enfatiza en la capacidad de edificar y dar
respuesta a los cambios requeridos; con el objetivo de obtener resultados exitosos en un
ambiente desconocido y a veces incierto (ALLIANCE, 2015).
3.1.1 El Manifiesto Ágil
El término “Métodos Ágiles” fue acuñado en 2001; utilizado principalmente para
definir a crecientes metodologías que hacían a un lado a los métodos tradicionales para
el desarrollo de software.
“Al final se resumió cuatro postulados que se denominó “Manifiesto Ágil” que son
los valores sobre los que se asientan las metodologías ágiles” (MENZINSKY, A.,
LÓPEZ, G., & PALACIO, J., 2016).
El Manifiesto Ágil toma en cuenta los fundamentos citados a continuación:
• “A los individuos y su interacción, por encima de los proceso y herramientas”
• “El software que funciona, por encima de la documentación exhaustiva”
24
• “La colaboración con el cliente, por encima de la negociación contractual”
• “La respuesta al cambio, por encima del seguimiento de un plan” (MENZINSKY,
A., LÓPEZ, G., & PALACIO, J., 2016, pág. 36).
Luego de una estratégica planificación, se decidió utilizar la metodología denominada
SCRUM; puesto que es una de las más difundidas hoy en día, y de esta manera se procede
a adaptar metodología mencionada de modo que los todos los roles sean asumidos.
3.2 Metodología a utilizar
Tabla 3. Comparación Metodologías
Metodología Ágil Metodología Tradicional
Pocos roles Más roles
No existe un contrato por tanto es más
flexible
Existe un contrato prefijado
El cliente es parte del equipo del
desarrollo
El cliente interactúa con el equipo de
desarrollo a través de reuniones
Cambios durante el proyecto No ocurran cambios durante el proyecto
Equipos pequeños Equipos dispersos
Tabla 4. Comparación SCRUM vs XP
XP SCRUM
Proceso Incremental e iterativo Incremento e iterativo
Prioridad de tareas Prioridad por tarea de
acuerdo al cliente
El equipo determina la
prioridad de las tareas
Equipos de trabajo En parejas Equipos grandes
Cambios en las iteraciones
Permite cambios
durante la iteración
No permite cambios
hasta acabar la
iteración
Tiempo entre iteración 2-4 semanas 1-4 semanas
3.3 Scrum
Scrum es una metodología moderna para el desarrollo de productos informáticos de
forma interactiva e incremental. Scrum se caracteriza por su proyección global al inicio
del proyecto; para luego desarrollar aspectos específicos que cada proyecto necesita en
su configuración. Esta forma de trabajo tubo sus inicios en empresas de desarrollo de
software; sin embargo, es aplicable para este tipo de proyectos (MENZINSKY, A.,
LÓPEZ, G., & PALACIO, J., 2016).
25
Figura 7. Scrum Framework (SCRUM.ORG, 2017)
Scrum se caracteriza por la designación de roles dentro del grupo de trabajo; además de
eventos y artefactos. La parte fundamental de esta metodología son los ciclos de trabajo;
donde se construye de manera esquemática cada componente del producto. Las partes que
conforman el ámbito de trabajo de Scrum son los siguientes:
3.3.1 Roles
Las personas que forman parte o se relacionan con el proyecto.
Product Owner (Propietario del Producto): Persona que representa al
cliente, debe tener un conocimiento amplio del producto, decide el orden en que
se va a ir construyendo los incrementos, define el product backlog (pila del
producto).
Scrum Master (Facilitador o Moderador): Persona encargada de hacer
cumplir las reglas de Scrum; proporciona: asesoría general al propietario del
producto y al equipo, asesoría al equipo de desarrollo para trabajar de una forma
auto organizada, moderación en las reuniones.
Development Team (Equipo de Desarrollo): Es el grupo de
profesionales que poseen los conocimientos necesarios para el desarrollo he
incremento del producto en cada sprint (MENZINSKY, A., LÓPEZ, G., &
PALACIO, J., 2016).
26
Tabla 5. Roles del proyecto
Rol Nombre
Product Owner Dr. Santiago Morales, tutor quien tiene
conocimiento sobre el producto
Scrum Master Luis Anrango
Development Team Hanmilton Berrezueta
3.3.2 Artefactos
Product Backlog (Pila del Producto): Es una lista ordenada realizada por
el propietario del producto donde abarca las funcionalidades, mejoras, tecnología
y corrección de errores que se debe agregar al producto por medio de los sprints.
Sprint Backlog (Pila del sprint): Es una lista elaborada por el equipo de
desarrollo de las tareas que se van a realizar durante el sprint, la lista está basada
en la pila del producto.
Product Increment (Incremento del producto): Es la parte del producto
que ha sido producida en un sprint y que se seguirá sumando para obtener el
producto total (MENZINSKY, A., LÓPEZ, G., & PALACIO, J., 2016).
Los artefactos adaptados al proyecto son:
Tabla 6. Artefactos del proyecto
Artefacto Descripción
Product Backlog Definición del alcance, limitaciones en el plan.
Sprint Retrospective Lista de tares realizadas por los autores que se
seguirá para el desarrollo.
3.3.3 Eventos
Sprint: Es la parte más importante del scrum, un intervalo de tiempo
máximo de 4 semanas en el cual se construye un incremento del producto. El
incremento debe estar terminado, operativo y ser útil para el cliente; listo para ser
desplegado o distribuido.
Sprint Planning (Planificación del Sprint): Es una reunión conducida
por el Scrum Máster. Se realiza al comienzo de cada sprint en la cual se define: lo
27
que se entregará al terminar el sprint y el trabajo necesario para la realización del
incremento previsto, y como lo va a llevar a cabo el equipo; tendrá una duración
máxima de una jornada de trabajo.
Daily Scrum (Scrum diario): Es una reunión que se realiza de manera
diaria de no más de 15 minutos en la cual el equipo sincroniza para trabajar las
siguientes horas; el equipo es el responsable de la reunión no el Scrum master; al
finalizar, el Scrum master gestionará adecuadamente las necesidades o
impedimentos identificados en la reunión.
Sprint Review (Revisión del Sprint): Reunión que se realiza al final de
cada sprint en donde se comprueba el incremento; no debe durar más de 2 horas;
aquí el propietario del producto verifica el progreso, observa y prueba el
incremento.
Sprint Retrospective (Retrospectiva del Sprint): Reunión realizada
después de la revisión de cada sprint, y antes de la siguiente reunión de
planificación; aquí se realiza un autoanálisis de la forma de trabajar, identificando
fortalezas y debilidades; el objetivo es mejorar para no caer en errores cometidos
en el sprint. (MENZINSKY, A., LÓPEZ, G., & PALACIO, J., 2016)
Los eventos adaptados al proyecto son:
Tabla 7. Eventos adaptados al proyecto
Evento Descripción
Sprint Tiempo de desarrollo de la tesis.
Sprint Planning,
Daily Scrum
Se establecerá la arquitectura a usar, búsqueda de una
base en Kichwa, elegir algoritmo de aprendizaje, etc.
Spring Review Se realizará la revisión de la aplicación (chatbot) y
documentación respectiva por parte del tutor, además de
la revisión por parte de revisores designados.
28
29
CAPÍTULO 4 DESARROLLO
4.1 Análisis de Requerimientos del Sistema
4.1.1 Funcionales
El chatbot permitirá el aprendizaje automático del idioma kichwa (Como: colores,
alfabeto, saludos, frutas y animales) mediante el uso del algoritmo Random
Forest.
La aplicación web para el entrenamiento por parte de usuarios con conocimientos
del idioma kichwa.
4.1.2 No funcionales
Usabilidad: La aplicación de entorno web será fácil de usar, con una interfaz
amigable y comprensible para el usuario común.
4.2 Identificación de actores en el sistema
Se refiere a las personas que están involucradas directa o indirectamente con el sistema
reciben el nombre de usuarios, a continuación, se detalla el tipo, el rol que desempeña en
el sistema una breve descripción de usuario.
Tabla 8. Identificación de actores
Tipo de Usuario Rol Descripción
Usuario Administrador Administrador Puede crear estudiantes y profesores.
Además, podrá interactuar con el
chat y entrenar el chat.
Usurario Profesor Profesor Podrá crear estudiantes.
Interactuar con el chat y puede
entrenar el chat.
Usuario Estudiante Estudiante Sera quién pueda interactuar con el
chatbot.
30
4.3 Arquitectura del Proyecto
El siguiente gráfico muestra la arquitectura, herramientas y tecnologías a usar para la
implementación de la aplicación.
Figura 8. Arquitectura
4.4 Proceso del Sistema
Este diagrama indica el flujo de cada texto ingresado en el chat dependiendo si el
texto ingresado es una DECLARACIÓN, PREGUNTA O UN CHAT SIMPLE.
Figura 9. Flujo del chatbot
31
4.5 Diseño de la base de datos
El gestor de base de datos que se utiliza para el proyecto es MySQL, para modelar se
usó la herramienta que viene integrada en MySQLWorkBench CE.
4.5.1 Esquema modelo relacional Mashi Chat
Figura 10. Modelo entidad-relación
32
4.5.2 Descripción a detalle de tablas del modelo relacional Mashi Chat
A continuación, se describe a detalle cada una de las tablas que conforman en modelo
relacional de la base de datos.
Table: words (palabras)
En esta tabla se almacenan todas las palabras nuevas, para realizar todo este proceso
de almacenamiento pasa previamente por un tratamiento del texto ingresado en el chat, el
proceso consiste en que a través del manejo del lenguaje natural con las diferentes
librerías: NLTK, STANFORDPARSER, permite saber si es una declaración, pregunta o
un simple chat, seguidamente se procede a extraer el tema, sujeto, objeto y lista de
palabras en el caso de ser una declaración o pregunta y si es chat busca la respuesta del
aprendizaje previo.
Una vez obtenida esta lista de palabras se realiza un cálculo para asignar un código
hash md5 hasta con las 16 primeras letras, lo cual permite que sea único.
Este código hash md5 es usado para validar si una palabra u oración ya la aprendió, es
decir ya tiene en la base de datos, de lo contrario pide que lo entrenen.
Table: sentences (oración)
En esta tabla se almacenan todas las oraciones nuevas, previamente realizando el
tratamiento del lenguaje natural con las librerías NLTK, STANFORDPARSER, de igual
manera de la lista de palabras se realiza el cálculo de su respectivo código hash md5 de
hasta las 16 primeras letras, lo cual permite que sea única cada oración.
Este código hash md5 es usado para validar si una palabra u oración ya la aprendió, es
decir ya tiene en la base de datos, de lo contrario pide que lo entrenen.
Table: statements (declaración)
En esta tabla se almacena todas las declaraciones, de acuerdo con el diagrama antes
mencionado, se realiza el tratamiento previo del lenguaje natural con las librerías NLTK,
STANFORDPARSER.
Similar al de las oraciones de la lista de palabras se realiza el cálculo del código hash
md5 correspondiente para que sea único en la base de datos y si no lo tiene pide que lo
entrenen.
33
Table: associations (asociones)
En esta tabla se almacena todas las asociaciones o relaciones entre la tabla sentences
y la tabla words y además se asigna un wight(peso) a cada relación o asociación. Este
peso se suma tantas veces como la palabra se repite, es por eso que guarda la relación solo
con los primary_key de ambas tablas y los pesos los actualiza cuando se repite.
La fórmula para calcular el peso es:
Weight = peso
n = número de palabras
words_length = longitud de la lista de palabras
weight = (n / float (words_length))
Table: results (resultados)
En esta se almacena el resultado de la predicción, la misma que se realiza en base a la
información almacenada en las tablas anteriores.
Se debe tomar en cuenta que mientras más palabras se repitan el peso es mayor y su
predicción es mayor. Mientras que las oraciones más largas reducen el peso porque el
código hash md5 calculado va a ser distinto por lo cual se repite menos y su peso también
disminuye, esto influye en el resultado de la predicción.
Table: USER_ENTITY
En esta tabla se almacena la información primordial del usuario que se registra en el
sistema MASHI-BOT a través de una cuenta TWITTER o directamente ingresando los
datos requeridos dentro del sistema.
Table: USER_GROUP_MEMBERSHIP
En esta tabla se almacena los diferentes grupos, a modo de ejemplo si el sistema se
implementa en una escuela, lo que se almacena es cada año de educación básica a cuál
van a pertenecer n número de alumnos.
Table: CREDENTIAL
En esta tabla se almacena la información de login y recuperación de la clave del
usuario.
34
Table: USER_ROLE_MAPPING
En esta tabla se almacena los distintos roles, tomado el ejemplo anterior se almacena
el rol de maestros, roles estudiantes y rol administrador.
4.6 Definición de Software utilizado para desarrollar el sistema
4.6.1 Requerimientos de Hardware para un desempeño promedio
Procesador: Quinta Generación y Posteriores.
Memoria RAM: 4GB (mínimo).
Arquitectura de sistema de 64 bits.
4.6.2 Versión de Software a utilizar
A continuación, se muestra una matriz de las librerías y herramientas más relevantes que
se han utilizado en el desarrollo del presente proyecto.
Tabla 9. Herramientas utilizadas
Nombre Descripción Versión Licencia
Python Lenguaje de Programación 3.5 Abierto
AngularJs Framework de JavaScript 7 Abierto
DigitalOcean Proveedor de servidores virtuales
privados
Propietario
Droplet Plataforma de cómputo con
capacidades adicionales de
almacenamiento, seguridad y
monitoreo para ejecutar fácilmente
aplicaciones de producción
Propietario
Docker Automatiza el despliegue
de aplicaciones dentro
de contenedores de software
18.09.1 Propietario
Mysql Sistema gestor de bases de datos 5.7 Abierto
Ubuntu Sistema operativo 18.04 Abierto
NodeJS Entorno de ejecución para
JavaScript
8 Abierto
Spring
framework boot
Framework de desarrollo 2.0.5.
RELEASE
Abierto
stanford-
spanish-
Proporciona un conjunto de
herramientas de tecnología de
lenguaje humano.
Abierto
35
corenlp-2018-
10-05-models
De esta manera se usa las siguientes
librerías:
- stanford-corenlp-3.7.0-
models.jar
- stanford-corenlp-3.7.0.jar
4.7 Clasificación de oraciones mediante el aprendizaje automático
Para clasificar oraciones en una de varias categorías, se pueden usar varias técnicas de
aprendizaje automático y estadística. Este ejercicio se enfoca en el uso de un mecanismo
de Aprendizaje Supervisado, desarrollando un modelo entrenado en un conjunto de
oraciones preclasificadas. Se adopta un enfoque particular, evitando el uso del recuento
de tipos específicos de palabras (es decir, "palabras de pregunta") en las características y
en su lugar se consideran patrones de parte de la voz en una oración. Para un modelo
completo, esto podría combinarse con el conteo de palabras y otras características.
Proceso del ejercicio a abordar:
1. Carga de datos.
2. Extraer características.
3. Construir un modelo en función del conjunto de datos de entrenamiento y
validar con el conjunto de prueba.
4. Prueba el modelo con un conjunto de datos diferente.
Dependencias
Este ejercicio de Python depende del conjunto de oraciones clasificadas
en [sentences.csv] un conjunto equivalente de datos para ejecutar. Además de esto, otro
conjunto de datos llamado [pythonFAQ.csv] se usa para probar el modelo.
Para construir un modelo de clasificación, necesitamos extraer algunas características,
y este es el grueso del esfuerzo que se intenta mostrar. La biblioteca Python Sci-Kit Learn
contiene un completo algoritmo de aprendizaje automático pre-empaquetado que luego
se puede usar con el conjunto de datos.
Se demuestra una parte extraer características, pero el conjunto completo de
funcionalidades está envuelto en un módulo [features.py] el resultado de ejecutar varias
funciones en features.py se guarda en el archivo**[featuresDump.csv]
36
1. Carga de datos
Se carga la información del archivo "sentences.csv".
Figura 11. Carga de datos
De esta manera se tiene la siguiente salida:
Figura 12. Salida de datos
37
2. Ingeniería de características: un enfoque a medida no estándar
En este ejercicio se describe un enfoque personalizado y un modelo Random Forest de
aprendizaje de Scikits.
El siguiente fragmento de código es un ejemplo de tomar una oración y extraer
conjuntos de POS-tag Triples de ella. Podemos usar este enfoque para construir funciones
a partir de una oración contando las ocurrencias de patrones triples (u otros patrones POS-
tag).
Figura 13. Extracción de patrones
Extracción de características: Después de pre-procesar las oraciones (usando el enfoque
anterior) podemos obtener un conjunto de tripletas para preguntas, chat, declaraciones.
Habrá mucha intersección, pero con suerte algunos patrones claros.
El código de features.py Generador de características: Este es un módulo
personalizado de Python para extraer las características de una oración.
38
Ejemplo:
Figura 14. Extracción de características
Figura 15. Extracción de características
3. Construcción del modelo de Machine Learning
En esta sección, cargamos un archivo de características CSV
llamado featuresDump.csv en un marco de datos de Pandas. Los datos se generaron con
la lectura de features.py en el archivo sentences.csv como se describe en la sección
anterior. Los datos featuresDump.csv se usan luego para entrenar un modelo de Random
Forest.
39
Figura 16. Cargar datos
Dividir en pruebas y conjuntos de entrenamiento
Figura 17. Dividir para el entrenamiento
40
Ajustar un modelo con el conjunto de datos de entrenamiento
Figura 18. Ajustar el modelo
Generar predicciones a partir del conjunto de datos de prueba
Figura 19. Generar predicciones
41
Figura 20. Validación básica
4. Modelo de prueba con preguntas frecuentes
Generar características usando Features Generator.
Un CSV preparado que contiene oraciones con las preguntas más frecuentes.
Cargar datos de frase y generar características
42
Figura 21. Carga de preguntas
Predecir la clase de oración con el modelo previamente construido
Figura 22. Clase de oración
Figura 23. Matriz de confusión
Esto podría resumirse como "OK" pero no genial. Las predicciones de preguntas y
declaraciones se informan con una precisión superior al 80% y el método de extracción
de características podría expandirse y mejorarse fácilmente. Además, el conjunto de datos
de entrenamiento es pequeño.
43
5. Pruebas y experimentos
Figura 24. Predicción
44
45
CAPÍTULO 5 PRUEBAS Y RESULTADOS
5.1 Pruebas de navegadores web
Después de realizar varias pruebas sobre los diferentes navegadores web se recomienda
la utilización de Google Chrome o Firefox.
Tabla 10. Navegadores
NAVEGADOR TIEMPO DE
RESPUESTA
VISUALIZACIÓN DE
CONTENIDO
OBSERVACIONES
Google Chrome
V. 63.0
Alto Óptimo Ninguna
Mozilla Firefox
V.54.1
Alto Óptimo Ninguna
Internet Explorer
V.8.0
Medium Óptimo Ninguna
Nota: Las peticiones dinámicas de los usuarios, así como la visualización inmediata del
contendido es dependiente del Proveedor de Servicio de Internet (ISP) al que se encuentre
asociado al momento de utilizar el sistema.
Pruebas de Estrés
La prueba de estrés somete al software a condiciones de uso extremas, permite medir su
respuesta y determinar la solidez de la aplicación.
Existen varias herramientas que ayudan a realizar pruebas de carga o stress, como es
Webserver Stress Tool 7 simulando la carga en servidor para analizar el rendimiento de
la aplicación.
Características del ambiente o escenario para realizar las pruebas:
Procesador Intel Core i7
Velocidad 2.5GHz
46
Memoria RAM 8(GB)
Arquitectura del computador 64 bits
Sistema Operativo Windows 8.1
Tabla 11. Escenarios de pruebas
Casos de Prueba Descripción
Administrador Administración General
Administrador- Clientes Administración de los clientes de la aplicación
Administrador-Roles Administración los diferentes tipos de roles
(Administrador, profesor, estudiante)
Administrador-Identidad Administración de los proveedores de identidad
Mashi Chat Usuario Final
Prueba de Clicks
Las pruebas de clicks son la elección correcta para realizar pruebas específicas dado una
Url, se debe especificar los siguientes parámetros:
Usuarios: 5
Clicks por usuario: 5
Retardo entre clicks: 5 segundos
Figura 25. Prueba Clicks
47
Figura 26. Gráfica de Clicks.
En la Figura se indica que en el caso de prueba para Mashi Chat (Usuario Final) se llegó a
un tiempo máximo de espera de 600ms, considerando que el número de clicks está dentro
de tiempo de espera moderado, por lo que se concluye que la aplicación soporta peticiones
simultáneas sin presentar ningún tipo de inconveniente, debido a que no se encontró
errores (0 %) en el transcurso de la prueba.
Prueba de Rampa
La prueba de rampa somete a la aplicación a cargas incrementales durante el tiempo, se debe
especificar los siguientes parámetros:
Usuarios: 5
Clicks por usuario: 5
Retardo entre clicks: 5 segundos
Figura 27. Prueba de rampa
48
Figura 28. Gráfica de rampa
En la Figura se observa que la aplicación fue sometido a un número progresivo de 5
usuarios durante un tiempo de 5 minutos, por lo que se concluye que a medida que
aumentan los usuarios se incrementa el tiempo.
49
CONCLUSIONES
• El presente proyecto luego de un exhaustivo trabajo alcanzó su finalidad, y
permitió el desarrollo de una herramienta que será útil a muchos grupos sociales,
al contribuir a la conservación de un lenguaje ancestral como es el Kichwa. Los
distintos objetivos planteados al inicio permitieron el desarrollo organizado y una
planificación pensada en ofrecer una herramienta de calidad que facilite la
interacción con el usuario, motivando el aprendizaje.
• El eje alrededor del cual se desarrolló este proyecto fue elaborar un chatbot que
permita el aprendizaje del idioma Kichwa con el uso del algoritmo Random
Forest. Este chatbot es capaz de llevar conversaciones con el usuario de manera
fluida en los temas definidos, facilitando y motivando el aprendizaje del usuario.
Para lograrlo, el chatbot utiliza “machine learning” para aprender y generar
respuestas en base a las necesidades el usuario. Los resultados de la funcionalidad
de este chatbot fueron puesto a prueba con frases, preguntas sencillas y palabras,
De esta manera, se puede manifestar que la aplicación satisface en su
funcionalidad, al lograr un gran interés en los estudiantes.
• El “Bot” en la actualidad cuenta con un gran vocabulario de palabras básicas como
colores, números, saludos, frutas y animales; sin embargo, al utilizar “machine
learning” y luego del entrenamiento propuesto en los objetivos, el Bot es cada vez
más capaz de entender interacciones complejas como preguntas o frases que
incluyen una serie de palabras, de este modo logrando una interacción más natural;
facilitando el aprendizaje del usuario. Sin embargo, el Bot aún necesita más
entrenamiento para que logre entender todo lo que el usuario le pide responder.
Las conversaciones en ciertos momentos se van a cortar, pero a mayor uso, el Bot
50
más aprende; por lo que la próxima vez que se le cuestione con la misma pregunta,
éste será capaz de generar una respuesta muy acertada.
• La aplicación se ha desarrollado de acuerdo con la metodología SCRUM, que
permite realizar los procesos de manera rápida, controlada, sencilla, fortaleciendo
la programación en cada uno de los sprint establecidos.
• Finalmente, se concluye el desarrollo del presente proyecto mediante el uso de
herramientas tecnológicas de programación; específicamente Python, Angular,
APIs para el manejo del lenguaje natural, Random Forest como algoritmo de
aprendizaje automático y Docker, dando como resultado la aplicación final
“chatbot y chatweb;” las cuales podrían ser fácilmente utilizadas por cualquier
persona que desee aprender o practicar sus conocimientos del idioma Kichwa.
51
RECOMENDACIONES
• Una vez culminado el proyecto, se recomienda incluir minería de datos de textos
con sus respectivas traducciones de español a kichwa para mejorar el
entrenamiento y aprendizaje del chatbot.
• También, la administración de la aplicación debe estar a cargo de un único
administrador, con el fin de que la información actualizada sea verídica y
confiable, además de resguardar la seguridad de los usuarios de no recibir
información infectada que pueda dañar sus dispositivos.
• Para la edición del código fuente del Mashi Chat, se sugiere utilizar las versiones
indicadas en este documento, para evitar posibles errores al momento de compilar
el proyecto.
• Al momento de utilizar la aplicación se sugiere tener una buena velocidad de
conexión de la red para garantizar que la aplicación funcione adecuadamente.
52
53
GLOSARIO DE TÉRMINOS
SCRUM: Scrum es un proceso en el que se aplican de manera regular un conjunto
de buenas prácticas para trabajar colaborativamente, en equipo, y obtener el mejor
resultado posible de un proyecto.
CHATBOT: Es un programa informático con el que es posible mantener una
conversación, tanto si queremos pedirle algún tipo de información o que lleve a cabo una
acción y a través de los algoritmos tiene la capacidad de aprender.
IA: Inteligencia artificial
DROPLET: Un droplet quiere decir que estamos hablando de nuestro servidor
KICHWA: Es una de las 14 lenguas ancestrales que se hablan en el Ecuador y está
reconocido en la Constitución ecuatoriana, como idioma oficial de relación intercultural.
RANDOM FOREST: Conocidos como '"Bosques Aleatorios"' es una combinación de
árboles predictores tal que cada árbol depende de los valores de un vector aleatorio
probado independientemente y con la misma distribución para cada uno de estos.
CHAT: También conocido como cibercharla, es uno de los métodos de comunicación
digital surgido con las nuevas tecnologías.
54
BIBLIOGRAFÍA
ALANDETE, D. (27 de Octubre de 2011). El País. Obtenido de El País:
https://elpais.com/diario/2011/10/27/necrologicas/1319666402_850215.html
ALLIANCE, A. (2015). What is Agile Software Development? | Agile Alliance.
Obtenido de https://www.agilealliance.org/agile101/what-is-agile/
ARCE, J. (2019). Paradigma Tres Capas. Obtenido de www.prezi.com:
https://prezi.com/f4n4iyl5qd7n/paradigma-tres-capas/
ARIZA, L. (2018). Muy Interesante. Obtenido de Ventajas y riesgos de la Inteligencia
Artificial: https://www.muyinteresante.es/tecnologia/articulo/ventajas-y-riesgos-
de-la-inteligencia-artificial-651449483429
BECK, K. (2000). "Extreme Programming Explained. Embrace Change". Ediciones
Pearson .
Briega, R. E. (13 de 6 de 2017). Relopezbriega. Obtenido de Relopezbriega:
https://relopezbriega.github.io/blog/2017/06/13/introduccion-al-deep-learning/
CHALLENGER, I. D. (2014). El lenguaje de programación Python. Ciencias Holguin.
CHAMBI, R. (2016). Gitmedio. Obtenido de http://www.gitmedio.com/gitmedio/7-
sistemas-gestores-base-de-datos/
COCKBUN, A., & WILLIAMS, L. (2000). The Costs and Benefits of Pair
Programming. Humans and Technology Technical Report.
CONTRÉRAS, L. (4 de Enero de 2011). Historia de las bases de datos. Recuperado el
25 de Noviembre de 2017, de Historia de la informática:
http://histinf.blogs.upv.es/2011/01/04/historia-de-las-bases-de-datos/
DELÉGLISE. (2013). MySQL 5 Guía de referencia del desarrollador. Barcelona:
Ediciones ENI.
DELGADO, G. D., & MENDOZA, H. J. (Diciembres de 2017). Obtenido de
DISTRIBUCIÓN LINUX A PARTIR DE UBUNTU 16.04 :
http://riul.unanleon.edu.ni:8080/jspui/bitstream/123456789/6548/1/238006.pdf
DiCerbo, K. E. (Febrero de 2014). Obtenido de Impacts of the Digital:
https://www.pearson.com/content/dam/one-dot-com/one-dot-
com/global/Files/about-pearson/innovation/open-ideas/DigitalOcean.pdf
55
DigitalOcean. (2019). Obtenido de DigitalOcean:
https://www.digitalocean.com/docs/networking/dns/
DUBOIS, P. (2005). MySQL. Quinta Edición.
FLORES, F., & HECTOR, A. (2012). PROGRMACIÓN ORIENTADA A OBJETOS
USANDO JAVA.
FOWLER , M., & FOEMMEL, M. (2001). Is Design Dead? Recuperado el 20 de
Diciembre de 2017, de Continuos Integration:
https://www.martinfowler.com/articles/designDead.html
FULGENCIO , C., & FRANCISCO, S. (Julio de 2016). ResearchGate. Obtenido de
Modificación del algoritmo Random Forest para su empleo en clasificación de
imágenes de teledetección:
https://www.researchgate.net/publication/304825355_Modificacion_del_algorit
mo_Random_Forest_para_su_empleo_en_clasificacion_de_imagenes_de_telede
teccion
GARCÍA, A. M. (24 de Julio de 2015). Javiergarzas. Obtenido de Qué es docker:
http://www.javiergarzas.com/2015/07/que-es-docker-sencillo.html
González, A. (30 de 7 de 2014). Cleverdata. Obtenido de Cleverdata:
https://cleverdata.io/conceptos-basicos-machine-learning/
INEC. (2016). El número de accidentes de tránsito en Ecuador se redujo en un 15,2%
en el 2016. Recuperado el 28 de Octubre de 2017, de Agencia Nacional de
Tránsito: https://www.ant.gob.ec/
JAVA. (2016). Recuperado el 25 de Noviembre de 2017, de Información de Java 8:
https://www.java.com/es/download/faq/java8.xml
JEFFRIES R, A. (2001). Extreme programming Installed. Ediciones Addison-Wesley.
JOSKOWICZ, J. (2008). Reglas y Prácticas en Extreme Programming. Recuperado el
15 de Diciembre de 2017, de http://iie.fing.edu.uy/~josej/docs/XP%20-
%20Jose%20Joskowicz.pdf
Largo, E. (06 de Diciembre de 2017). Programación web full stack. Obtenido de
CÓMO CREAR UN DROPLET EN DIGITAL OCEAN:
https://www.ecodeup.com/como-crear-un-droplet-en-digital-ocean/
MENZINSKY, A., LÓPEZ, G., & PALACIO, J. (2016). Scrum Manager.
Miller, V. (2019). Toptal. Obtenido de https://www.toptal.com/machine-
learning/explorando-algoritmos-de-aprendizaje-automatico-supervisado
56
Miller, V. (2019). Toptal. Obtenido de https://www.toptal.com/machine-
learning/explorando-algoritmos-de-aprendizaje-automatico-supervisado
MORENO, A. (17 de Octubre de 2017). Instituto de ingeniería del conocimiento.
Obtenido de Procesamiento del lenguaje natural ¿qué es?:
http://www.iic.uam.es/inteligencia/que-es-procesamiento-del-lenguaje-natural/
MORENO, S. A. (21 de 12 de 2017). Instituto de Ingeniría del Conocimiento. Obtenido
de Instituto de Ingeniría del Conocimiento:
http://www.iic.uam.es/inteligencia/aplicaciones-procesamiento-lenguaje-natural/
PICO. (2017). Srping Tool Suite. Recuperado el 28 de Noviembre de 2017, de
Springlatam: https://www.springla.io/spring/spring-tool-suite/
PIVOTAL SOFTWARE, I. (2017). Spring Tool Suite. Recuperado el 28 de Noviembre
de 2017, de Springlatam: https://www.springla.io/spring/spring-tool-suite/
PORTO, J. P., & MERINO, M. (2013). Definición de Ubuntu. Obtenido de
https://definicion.de/ubuntu/
PUBLICACIONES VÉRTICE. (2010). Técnicas avanzadas de diseño web. Malagá:
Vértice.
RAMIRES , Í., & MARQUES, G. (24 de Junio de 2018). ResearchGate. Obtenido de
AgronomoBot: a smart answering Chatbot applied to agricultural sensor
networks:
https://www.researchgate.net/publication/327212062_AgronomoBot_a_smart_a
nswering_Chatbot_applied_to_agricultural_sensor_networks
RAMOS, A., & RAMOS, J. (2014). Aplicaciones Web. Madrid: Ediciones Paraninfo.
RandomForest. (2013). Obtenido de randomforest2013.blogspot.com:
http://randomforest2013.blogspot.com/2013/05/randomforest-definicion-
random-forests.html
Raul Benitez, G. E. (2014). INTELIGENCIA ARTIFICIAL AVANZADA. Barcelona :
MIDAC.
REQUENA, J. (2016 de Septiembre de 2016). Cjrequena Blog. Recuperado el 5 de
Noviembre de 2017, de Arquitectura Orientada a Microservicios:
https://cjrequena.github.io/micro-services/2016/09/20/micro-services-
architecture-es.html
57
RIGGS, S. (2011). PostgreSQL vs MySQL. Recuperado el 27 de Noviembre de 2017, de
2nd Quadrant PostgreSQL:
https://www.2ndquadrant.com/es/postgresql/postgresql-vs-mysql/
ROMÁN ZAMITIZ, C. (2016). El lenguaje de programación Java. Recuperado el 10
de Noviembre de 2017, de Programción con Java: http://profesores.fi-
b.unam.mx/carlos/java/java_basico1_1.html
ROSSUM, V. (Junio de 2007). Obtenido de Python Programming Language:
http://colenak.ptkpt.net/_lain.php?_lain=3721#Features_and_philosophy
ROUSE, M. (s.f.). ¿Qué es Chatbot? - Definición en WhatIs.com. Obtenido de
www.searchdatacenter.techtarget.com:
https://searchdatacenter.techtarget.com/es/definicion/Chatbot
ROUSE, M. (Abril de 2017). Obtenido de Inteligencia Artificial:
https://searchdatacenter.techtarget.com/es/definicion/Inteligencia-artificial-o-AI
ROUSE, M. (Abril de 2017). TechTarget. Obtenido de Inteligencia artificial, o AI:
https://searchdatacenter.techtarget.com/es/definicion/Inteligencia-artificial-o-AI
ROUSE, M. (Mayo de 2018). TechTarget. Obtenido de Chatbot:
https://searchdatacenter.techtarget.com/es/definicion/Chatbot
SANCHÉZ, X., & AYALA, G. (2018). Obtenido de A Knowledge-based Methodology
for Building a:
https://www.researchgate.net/profile/Leonardo_Garrido/publication/327391020_
A_Knowledge-
based_Methodology_for_Building_a_Conversational_Chatbot_as_an_Intelligent
_Tutor/links/5b8c7d14299bf1d5a73a036e/A-Knowledge-based-Methodology-
for-Building-a-Conversatio
Studylib. (2019). Studylib. Obtenido de Studylib: https://studylib.es/doc/334821/la-
inteligencia-artificial--naci%C3%B3--en-1943-cuando-warren-...
SWAGGER. (2018). Swagger. Obtenido de Swagger Editor:
https://swagger.io/tools/swagger-editor/
SWAGGER. (2018). Swagger Logo. Obtenido de About Swagger:
https://swagger.io/about/
Towards Data Science. (22 de Febrero de 2018). Obtenido de Definicón:
https://towardsdatascience.com/the-random-forest-algorithm-d457d499ffcd
58
VALDEZ, A. (2016). ¿Qué es WorkBench? Características y ventajas. Recuperado el 5
de Noviembre de 2017, de MySQL WorkBench:
https://www.goconqr.com/p/3970954-mysql-workbench-notes
VALDEZ, D. P. (2007). www.maestrosdelweb.com. Obtenido de
http://www.maestrosdelweb.com/que-son-las-bases-de-datos/
VALLE, L. (2016). Visual Studio Code Características. Recuperado el 1 de Diciembre|
de 2017, de Programar Fácil: https://programarfacil.com/blog/visual-studio-
code-de-codigo-abierto/
VÁSQUEZ, G. (2017). ¿Qué es Angular? Recuperado el 2 de Diciembre de 2017, de
https://codigoonclick.com/que-es-angular/
VILLACAMPA, O. (2017). Ondho. Obtenido de Qué es Docker y para qué sirve:
https://www.ondho.com/que-es-docker-para-que-sirve/
WORDPRESS. (2017). Acerca de WordPress. Recuperado el 15 de Noviembre de
2017, de WordPress.Org: https://wordpress.org/about/
59
60
ANEXOS
61
ANEXO 1: MANUAL DE USUARIO
UNIVERSIDAD CENTRAL DEL ECUADOR
FACULTAD DE INGENIERÍA CIENCIAS FÍSICAS Y MATEMÁTICA
CARRERA DE INGENIERÍA INFORMÁTICA
CHATBOT PARA EL APRENDIZAJE DEL IDIOMA KICHWA BASADO EN
RANDOM FOREST
MANUAL DE USUARIO
AUTORES: ANRANGO PERUGACHI JOSÉ LUIS
BERREZUETA CARMONA HANMILTON JHOEL
TUTOR: Dr. SANTIAGO LEONARDO MORALES CARDOSO
Quito, 2019
62
Objetivo: Verificar el funcionamiento del chatbot para la Universidad Central del
Ecuador mediante el aprendizaje automático del idioma Kichwa.
Requerimientos:
Hardware:
4Gb, en memoria RAM
Conexión de Red/wifi
Software:
Preinstalado las herramientas requeridas.
Navegador de internet.
Sistema Operativo Windows.
Tipos de usuario:
La aplicación es realizada bajo permisos y restricciones, de tal manera que el acceso
muestra diferentes vistas según el usuario y rol.
Administrador
Profesor
Estudiante
Contenido de la aplicación
Para acceder a Mashi Chat digitar la dirección de chat en la barra de direcciones del
navegador de su preferencia.
Figura 29. Navegadores compatibles
63
APLICACIÓN COMO ADMINISTRADOR
El link para ingresar con perfil super administrador a la consola de configuración
de KEYCLOAK es el siguiente.
http://142.93.177.117:8180/auth/realms/master/protocol/openid-connect/auth?client_id=security-admin-console&redirect_uri=http%3A%2F%2F142.93.177.117%3A8180%2Fauth%2Fadmin%2Fmaster%2Fconsole%2F%23%2Frealms%2Fmashichat%2Fusers%2F279232c5-0449-49a1-97bf-be4a80985aab%2Fuser-credentials&state=f6b22dfb-2c7d-440a-851f-5de982163ae8&response_mode=fragment&response_type=code&scope=openid&nonce=f56d5752-ebb8-44a5-9dbe-442f665f37f6
Se mostrará la pantalla de Log in, en la cual se debe ingresar las credenciales solicitadas
dentro de los campos correspondientes.
Usuario: admin
Contraseña: admin.
Dar clic en Log in
Figura 30. Vista de login para acceder a la configuración de KEYCLOAK.
A continuación, se desplegará la pantalla de configuración de KEYCLOAK, aquí se
configura lo siguiente:
Opción, Realm settings:
Configuraciones generales de parámetros de front-end de la aplicación como:
Name: Maschichat, es un campo obligatorio que se debe setear.
64
Display name: Mashi Chat, es el título de nombre que aparece en el inicio
de la aplicación.
Figura 31. Vista de configuración del REALM (reino) Mashi Chat.
Opción, Clients:
Se configura los usuarios y su forma de autenticación, para los distintos servicios
al que va a acceder.
Figura 32. Vista de configuración de clientes del reino Mashi Chat.
Opción, Roles:
Se configura los distintos roles que se requiere para administrar el acceso a la
funcionalidad del sistema. Para nuestro Mashi Chat se ha configurado tres roles:
65
1. Administrador, el rol que tiene los privilegios para agregar o quitar, usuarios,
2. Profesor, rol que permite administrar el estado de sus estudiantes que tiene a
cargo.
3. Estudiante, este rol permite el acceso a los estudiantes a la aplicación Mashi Chat,
puede realizar mediante el registro de nombre de usuario y contraseña o a su vez
puede usar su cuenta de Twitter para registrarse y poder interactuar con Mashi
Chat.
Figura 33. Vista de configuración de roles del reino Mashi Chat.
Opción, Identity Providers:
En este apartado se configura los proveedores de autenticación, para Mashi Chat
se ha configurado Twitter.
Figura 34. Vista de configuración para registrarse con Twitter.
66
Opción Users:
En este apartado se puede agregar usuarios como super-administrador. Aquí se
puede visualizar todos los usuarios que van registrándose en la aplicación
Figura 35. Vista de configuración de usuarios del reino Mashi Chat
67
APLICACIÓN PARA EL USUARIO FINAL
El link para Ingresar a la aplicación es el siguiente:
http://142.93.177.117:8180/auth/realms/mashichat/protocol/openid-connect/auth?client_id=mashichat&redirect_uri=http%3A%2F%2F142.93.177.117%2F%23%2Fchat&state=0dde1b57-206f-4faa-8bc2-12e1b759ba84&response_mode=fragment&response_type=code&scope=openid&nonce=e6d0513e-9f0a-40be-8768-61e8e16b6a74
Se mostrará la pantalla de Log in, en la cual se debe ingresar las credenciales solicitadas
dentro de los campos correspondientes.
Usuario: [email protected]
Contraseña: test
Figura 36. Vista de login para acceder a la aplicación Mashi Chat.
Muestra dos alternativas para login que son las siguientes:
1. Ingresar las credenciales previamente registradas por el profesor.
2. Registrarse mediante una cuenta de Twitter.
Vista de las opciones de PROFESOR
68
Figura 37. Vista de rol profesor.
En la opción Mis Estudiantes, puede agregar estudiantes dando clic en la opción más
(+) ubicado en la parte superior de la vista. Esta es la vista donde se agrega un estudiante,
debe ingresar los tres campos que son obligatorios, la fotografía es opcional.
Figura 38. Vista de rol estudiante.
En la opción Chat, tiene la posibilidad de acceder al chat para entrenar a Mashi Bot. Se
despliega una lista de temas en el cual puede entrenar o simplemente chatear. En la parte
inferior dispone un cuadro de texto para digitar e interactuar con Mashi Bot.
69
Figura 39. Vista del chatbot con los temas rol profesor
En la opción Mi perfil, puede revisar los detalles de su perfil y además se puede agregar
una fotografía. Se puede visualizar los detalles del profesor, datos personales y el rol.
Figura 40. Vista del chatbot.
La opción Cerrar sesión, permite salir de la sesión actual.
70
REGISTRARSE EN MASHI CHAT CON TWITTER
Seleccionar la opción de Twitter en la parte derecha de la vista de login de Mashi Chat.
Una vez que selecciona se redirige a la página de Autorización de la cuenta para
registrarse, debe ingresar las credenciales, usuario y clave de Twitter para permitir.
Figura 41. Vista de autorización de Twitter para registrarse en Mashi Chat.
Luego de permitir el uso de la cuenta de Twitter se redirige a la vista de registro de usuario
en Mashi Chat, donde se ingresa información adicional como: email, lastname. Puede
modificar el nombre de usuario. Una vez lleno la información clic en SUBMIT para
finalizar el registro.
Figura 42. Vista de verificación de la información de registro en Mashi Chat.
71
VISTA DEL ESTUDIANTE
Ingresar con las credenciales correspondientes del usuario estudiante, para este ejemplo
se usa la cuenta de Olger, usuario: [email protected] clave: [email protected]
Opción, Chat: Una vez ingresado se muestra esta vista, donde puede seleccionar el tema
y poder chatear.
Figura 43. Vista de Chatbot y temas.
Opción, Mi Perfil: En este apartado se muestra la información del estudiante.
Figura 44. Vista de perfil de rol estudiante.
Opción, Cerrar sesión: Está opción permite cerrar la sesión actual.
72
VISTA DE ADMINISTRADOR
Ingresar con las credenciales correspondientes del usuario administrador, para este
ejemplo se usa la cuenta de admin, usuario: [email protected] clave: admin
Opción Usuarios: Una vez ingresado como administrador se visualiza la siguiente vista.
En esta vista puede visualizar todos los usuarios con sus respectivos roles, si necesita
cambiar de rol en esta vista es posible realizar el cambio.
Figura 45. Vista de rol administrador.
Opción, Mi Perfil: En esta opción visualiza toda la información del usuario
administrador.
Figura 46. Vista de perfil del administrador.
Opción, Cerrar Cesión: Esta opción permite cerrar la sesión actual.
73
ANEXO 2: ACTA DE ENTREGA
74
ANEXO 3: CERTIFICACIÓN DEL RESUMEN EN INGLÉS
ANEXO 4: VISTAS DEL CHATBOT EN LOS NAVEGADORES.
Navegador Google Chrome
Del lado del administrador
Figura 47. Vista administración del reino Mashi Chat en Google Chrome.
Del lado del usuario final
Figura 48. Vista de login a Mashi Chat en Google Chrome.
75
Navegador Firefox
Del lado del administrador
Figura 49. Vista administración del reino Mashi Chat en Firefox.
Del lado del usuario final
Figura 50. Vista de login a Mashi Chat en Firefox.
76
Navegador Internet Explorer
Del lado del administrador
Figura 51. Vista administración del reino Mashi Chat en Interner Explorer.
Del lado del usuario final
Figura 52. Vista de login a Mashi Chat en Internet Explorer.
77
Dispositivos Móviles
Del lado del administrador
Figura 53. Vista administración del reino Mashi Chat en dispositivo móvil.
Del lado del usuario final
Figura 54. Vista de login a Mashi Chat en dispositivo móvil.