1. Desarrollo de un Asistente
Virtual Universitario basado en
Tecnologías de Nube
José Miguel Rubio León
Danilo Molina Villarroel
2. Actualmente la humanidad está viviendo una
revolución tecnológica sin precedentes en su
historia, la capacidad de hardware y redes
con la que contamos en la actualidad ha
permitido que la tecnología impacte en
todos los ámbitos la vida cotidiana de las
personas; con soluciones basadas en
Internet de las Cosas (IoT) y/o en el análisis
de grandes volúmenes de datos (o “Big
Data”) y por supuesto en inteligencia
artificial (IA).
Introducción
3. Habitualmente los estudiantes buscan
ampliar o complementar el conocimiento
adquirido en clases, y la herramienta más
utilizada es Internet.
Descripción del Problema
4. Los académicos no disponen de
tiempo suficiente para responder a
todas las inquietudes de sus alumnos
fuera del horario de clase, aún
utilizando medios digitales (correo
electrónico, aulas virtuales, etc.).
Descripción del Problema
5. Marco Teórico
Para la construcción de un
Asistente Virtual Universitario
(AVU) se requiere el estudio y
utilización de una de las tantas
aplicaciones de la IA
denominada Procesamiento de
Lenguaje Natural (NLP).
6. Marco Teórico
Dentro del ámbito de tareas que
incluyen el NLP, en este trabajo se
consideran:
• Chatbots.
• Análisis de sentimientos.
7. Marco Teórico
Para facilitar la implementación de NLP, en la
actualidad existen herramientas denominadas
Interfaces de Programación de Aplicaciones
(APIs) que democratizan en gran medida los
servicios asociados a este tipo de tecnología,
algunos ejemplos de su uso son los servicios
de traducción automática.
8. Desarrollo del Sistema
Metodología
Existen diversas metodologías para crear software, en este trabajo se utilizará una basada en
prototipos iterativos. La razón para utilizar esta metodología de desarrollo es el hecho de que
permite construir prototipos rápidos, que tienen funcionalidad y que permiten probar cómo se
va comportando la aplicación, con esto se espera validar las características que se le agregan al
sistema y orientar de mejor manera el proceso de desarrollo.
9. Desarrollo del Sistema
Diseño Arquitectónico del Sistema
El diseño arquitectónico es sin duda una parte fundamental en el proceso de creación
de software, el prestigioso académico Ian Sommerville lo define como “un proceso
creativo en el que se intenta establecer una organización del sistema que satisfaga los
requerimientos funcionales y no funcionales del propio sistema”.
10. Desarrollo del Sistema
Diseño Arquitectónico del Sistema
Entre los patrones de arquitectura
asociados, uno de los mas utilizados es
la arquitectura orientada a servicios o
SOA. Esta arquitectura permite separar
la lógica de la interfaz de usuario
mediante el uso de protocolos como
WSDL o CORBA.
11. Desarrollo del Sistema
Diseño Arquitectónico del Sistema
Esto tiene una serie de complicaciones
desde el punto de vista de escalabilidad y
mantenibilidad del sistema por ejemplo, si
se quiere agregar una funcionalidad o
realizar una mantención de rutina, se debe
detener el servicio por completo, ya que si
bien existe una división de la vista, la lógica
del sistema no está separada.
12. Desarrollo del Sistema
Diseño Arquitectónico del Sistema
La arquitectura orientada a microservicios elimina esta problemática separando la
lógica en distintos servicios independientes entre sí, los cuales, entregan información
o ejecutan una tarea específica en la medida que el usuario la requiera, lo cual reduce
la carga de estrés al servidor, optimizando sus recursos, además de ser más escalable,
ya que de ser necesario agregar una funcionalidad nueva simplemente se acopla al
bus de datos. Cabe destacar que en general este proceso es considerablemente
menos invasivo que en su símil SOA.
14. Desarrollo del Sistema
Diseño Arquitectónico del Sistema
Otro aspecto importante a considerar es el uso de protocolos REST y GraphQL en este
tipo de estilo arquitectónico, en el caso específico de AVU, los microservicios
utilizados, emplean el protocolo REST se componen principalmente de servicios
cognitivos de procesamiento del lenguaje natural, además de servicios encargados de
procesar la información obtenida de las interacciones generadas con los usuarios,
como por ejemplo la obtención de preguntas frecuentes, la satisfacción de los
usuarios y la cantidad de interacciones.
16. Desarrollo del Sistema
Tecnologías utilizadas
La construcción de software no solamente requiere de una metodología y de una
arquitectura adecuada, también es esencial seleccionar la tecnología precisa, la que
debe permitir desarrollar la aplicación propuesta. En este sentido, las tecnologías
utilizadas para construir este asistente virtual tienen como finalidad entregar rapidez
en su tiempo de respuesta, robustez para soportar una gran cantidad de usuarios
conectados, interactuando con el sistema concurrentemente (esto al margen de los
requerimientos específicos de hardware) y escalabilidad para poder proyectarse hacia
una comunidad de usuarios cada vez más exigente con este tipo de tecnologías.
17. Desarrollo del Sistema
Tecnologías utilizadas
Back-End
• NodeJS
• Go
• MongoDB
Front-End
• Angular 2+
Motores IA
• DialogFlow
• Watson NLU
Cloud
• Microsoft
Azure
18. Estado actual de la Aplicación
Actualmente AVU está en construcción y se dispone de un prototipo que posee
algunas de las características mencionadas en este artículo. Esta versión de la
aplicación es capaz de responder algunas preguntas de la asignatura de Ingeniería de
Software. Se prevé que esté completa próximamente y que sea validada durante el
semestre Primavera 2018 en la Universidad Tecnológica de Chile INACAP, sede Pérez
Rosales, mediante su uso en la asignatura de Análisis y Diseño Orientado a Objeto.
21. Conclusiones y Trabajo Futuro
La tecnología es sin duda el motor más importante con el que se dispone para generar
un desarrollo real de los países. Sin embargo, para lograr un desarrollo real e integro
de toda la sociedad en su conjunto, es necesario que su uso aporte valor real para los
ciudadanos comunes y corrientes. AVU es una solución que apoya en un área que
actualmente es un pilar fundamental para lograr este objetivo; complementa los
procesos educativos, adaptándose a nuevos paradigmas de interacción basados en la
tecnología, otorgando independencia para la gestión del tiempo y fortaleciendo las
dinámicas de aprendizaje en el aula.