Вы находитесь на странице: 1из 25

UNIVERSIDAD NACIONAL DE INGENIERÍA

FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS

OFICINA DE TIC

CHATBOT PARA AFP

SISTEMA DESARROLLADO PARA EL CURSO


DE INTELIGENCIA ARTIFICIAL AVANZADA

ALUMNOS:

 Ordoñez Vallenas, Antonio


 Ormeño Vera, Wilber Javier
 Yupanqui Gómes, Mario Alfonso
Historial de Versiones

Autor Versión Descripción Fecha


1.0 Elaboración del formato 24/09/2016

Revisado y Aprobado por:

Nombre

Cargo

Firma

Nombre

Cargo

Firma
Contenido
1. DESCRIPCIÓN DEL SISTEMA ................................................................................... 4
2. DESCRIPCIÓN DEL PROBLEMA ............................................................................... 4
3. ALCANCE DEL SISTEMA ........................................................................................... 6
4. SELECCIÓN TECNICA PARA RESOLVER EL PROBLEMAS .................................... 7
5. PLAN PARA EL DESARROLLO DEL SISTEMA: ...................................................... 11
6. DESCRIPCIÓN DE LA ARQUITECTURA DEL SISTEMA: ........................................ 13
7. DESCRIPCIÓN DE LOS DATOS DEL SISTEMA ...................................................... 15
7.1. Descripción de Datos:......................................................................................... 15
8. DESCRIPCIÓN DEL PROTOTIPO DEL SISTEMA ................................................... 16
8.1. Interacción usuario – chatbot .............................................................................. 17
9. DESCRIPCIÓN DETALLADA DEL SISTEMA............................................................ 19
9.1. Descripción del Dataset ...................................................................................... 19
9.1.2. Preparación del Dataset .................................................................................. 19
9.1.3. Embedding de inputs ....................................................................................... 21
9.1.4. Red Neuronal Convolucional ........................................................................... 22
10. RESULTADOS DEL SISTEMA IA ........................................................................... 24
11. TRABAJOS FUTUROS ........................................................................................... 25
1. DESCRIPCIÓN DEL SISTEMA

Nombre del sistema Chatbot para AFP


Descripción del Sistema El grupo de trabajo ha optado por realizar un proyecto
que consiste en crear un chatbot para una administradora
de fondos de pensiones. De esta manera convertir
procesos de asesoramiento y orientación en flujos
conversacionales didácticos e interactivos.
Miembros del Equipo  Ordoñez Vallenas, Antonio
 Ormeño Vera, Wilber Javier
 Yupanqui Gómes, Mario Alfonso

En la actualidad se tienen muchas preguntas acerca de nuestros fondos de pensiones, esto


debido a que de ello depende nuestro futuro. Dicho esto, realizar consultas directamente al
personal de la empresa que brinda a este servicio se resulta tedioso a causa de la gran
cantidad de personas que realizan estas preguntas.
Dicho esto, una manera de simplificar, ahorrar en personal y ofrecer una buena experiencia
de usuario un chatbot sería la manera más eficiente de controlar estas preguntas
frecuentes; tales como: ¿Cómo va mi fondo?, ¿Cuál ha sido mi último aporte?, etc.
En los últimos tiempos la revolución de los chatbot ha dado paso a una mejor manera de
interactuar con el mundo, en el Perú tenemos ejemplos de grandes empresas como lo es
el banco BCP que tiene implementado el chatbot “ARTURITO BCP”, el cual hace más
eficiente el negocio.
Pretendemos llegar a implementar esa idea en una AFP.

2. DESCRIPCIÓN DEL PROBLEMA


En nuestra vida diaria, los procesos de asesoramiento y orientación de las AFP, se hacen
personalmente o por otros medios de comunicación siempre necesitando a una persona
que esté detrás guiándolos, por lo que se necesita contratar personal y capacitarlo para que
pueda satisfacer estas necesidades, en el proceso las empresas tienen costos de sueldo
de personal, mantenimiento de vías de comunicación y en la mayoría de casos comprar
locales donde estos empleados laboren.
Para sus clientes también les resulta un problema estar yendo cada vez a hacer consultas
o realizar operaciones a centros especializados. Pierden dinero en pasajes, colas o lo peor
de todo pierden su valioso tiempo.
En el proceso de atención también hay problemas como son: el tipo de atención que tienen
(Hay casos donde la atención de los empleados es pésima), el tiempo que se demora entre
atención y atención generando enormes colas, generando un malestar en los clientes y en
causalidad una mala imagen de la compañía.
3. ALCANCE DEL SISTEMA

El proyecto planteado por el grupo tiene como finalidad desarrollar un sistema capaz de
reconocer preguntas frecuentes del negocio de las AFP, para ello tendremos un banco de
preguntas y respuestas, así como flujos conversacionales definidos.

¿Pero, qué es una chatbot?

No es difícil vaticinar que los robots serán en los próximos años los protagonistas en
las relaciones entre las compañías y sus clientes. El cambio en el perfil de usuario de
ciertos servicios ha hecho que las empresas empiecen a preocuparse por querer estar
donde los clientes están.
Actualmente, los usuarios buscan inmediatez a la hora de realizar cualquier trámite y de ahí
que la utilización de los chatbots integrados en redes sociales, por parte de las compañías,
sea una apuesta segura y adaptada a sus potenciales clientes. La implantación de los bots
en las estrategias de las empresas va a ser otro gran paso en su revolución tecnológica.
Como bien indicó recientemente el CEO de Microsoft, Satya Nadella, los bots se están
convirtiendo en las nuevas apps. Así, las conversaciones de persona a persona quedarán
a un lado dejando paso a la relación entre personas y robots basada en la inteligencia
artificial.

Para comprender esta revolución tecnológica y cómo afectará tanto a compañías como a
usuarios, es importante conocer ciertos puntos que desarrollaremos a continuación.

Ventajas que aportan a las compañías y usuarios

El hecho de que los chatbots estén en el punto de mira de las empresas se debe a que son
escalables. Un dato significativo que apoya esto son los 1.600 millones de personas que
usaron aplicaciones de mensajería móvil en 2016; un número que se prevé que
aumentará notablemente llegando al 80% de los usuarios de teléfonos inteligente en 2018.

Así, la popularidad de los bots va en aumento pero hay que tener en cuenta que, como
todo, debe adaptarse al perfil del usuario consiguiendo la eficiencia que tanto empresa
como cliente buscan. Debemos tener en cuenta que alrededor del 60% de los usuarios de
los chatbots son los conocidos como Millennials, tienen entre 13 y 19 años, y han
crecido utilizando tecnologías bajo demanda a las que ahora se suman los chatbots. Las
compañías deben tener claro cuál es el objetivo y a quién quieren llegar con este tipo de
servicios para que sean totalmente eficientes. La incorporación de los chatbots facilita, por
un lado, la reducción de costos en la atención al cliente de las empresas, y por otro, facilita
la comunicación entre el cliente y la empresa.
4. SELECCIÓN TECNICA PARA RESOLVER EL PROBLEMAS

Técnicas de árbol de decisiones

Los árboles de decisión es una de las herramientas más útiles y utilizadas para la
toma de decisiones adecuadas teniendo varias alternativas posibles de acción. El
árbol de decisión es una buena ayuda para elegir entre varios cursos de acción. El
nombre de árbol de decisión proviene de la forma que adopta el modelo, semejante
a un árbol. Está formado por múltiples nodos cuadrados, que representan los puntos
de decisión, y de los cuales surgen ramas que representan las distintas alternativas.

Características
o Es una forma gráfica y analítica de representar todos los sucesos
posibles a partir de una decisión asumida.
o Ayuda a tomar la decisión más acertada, desde el punto de vista
probabilístico, ante todas las posibles soluciones.
o Permite visualizar todas las posibles soluciones a un problema.

SUPPORT VECTOR MACHINE(SVM)


Son un conjunto de algoritmos de aprendizaje supervisado desarrollados
por Vladimir Vapnik y su equipo en los laboratorios AT&T.
Estos métodos están propiamente relacionados con problemas
de clasificación y regresión. Dado un conjunto de ejemplos de entrenamiento (de
muestras) podemos etiquetar las clases y entrenar una SVM para construir un
modelo que prediga la clase de una nueva muestra. Intuitivamente, una SVM es
un modelo que representa a los puntos de muestra en el espacio, separando las
clases a 2 espacios lo más amplios posibles mediante un hiperplano de
separación definido como el vector entre los 2 puntos, de las 2 clases, más
cercanos al que se llama vector soporte. Cuando las nuevas muestras se
ponen en correspondencia con dicho modelo, en función de los espacios a los
que pertenezcan, pueden ser clasificadas a una o la otra clase.

RED NEURAL CONVOLUCIONAL


En el aprendizaje automático, una red neuronal convolucional (CNN o ConvNet) es
una clase de redes neuronales artificiales avanzadas que se han aplicado con éxito
al análisis de imágenes visuales. Los CNN usan una variación de perceptrones
multicapa diseñados para requerir un preprocesamiento mínimo. También se les
conoce como invariantes de desplazamiento o redes neuronales artificiales
invariantes de espacio (SIANN), en función de su arquitectura de pesos compartidos
y sus características de invarianza de traducción. Las redes convolucionales se
inspiraron en procesos biológicos en que el patrón de conectividad entre las
neuronas se asemeja a la organización de la corteza visual animal. Las neuronas
corticales individuales responden a los estímulos solo en una región restringida del
campo visual conocido como el campo receptivo. Los campos receptivos de
diferentes neuronas se superponen parcialmente de manera que cubren todo el
campo visual. Las CNN usan relativamente poco preprocesamiento en comparación
con otros algoritmos de clasificación de imágenes. Esto significa que la red aprende
los filtros que en los algoritmos tradicionales fueron diseñados a mano. Esta
independencia del conocimiento previo y el esfuerzo humano en el diseño de
características es una gran ventaja.

IMPLEMETACION DE ARBOL DE DECISIÓN:

Corpus:
Que es una AFP? Las AFP son instituciones financieras privadas que tienen como único fin la
q es una afp? administración de los Fondos de Pensiones bajo la modalidad de cuentas
k es una AFP? personales.
Como funciona una AFP? Las AFP brindan prestaciones de jubilación, invalidez, sobrevivencia y gastos de
Como trabaja una AFP? sepelio, en conformidad con el Texto Único Ordenado de la Ley del Sistema
Privado de Pensiones (SPP) Decreto Supremo 054-97-EF.

Para dicho fin, reciben los aportes, propiedad de los trabajadores,


invirtiéndolos bajo las modalidades permitidas por Ley. Las operaciones de las
AFP se encuentran bajo el control y supervisión de la Superintendencia de
Banca, Seguros y AFP (SBS).
Cuando comenzaron las AFP? Las AFP fueron creadas en 1993 y operan dentro del Sistema Privado de
Cuando nacieron las AFP? Pensiones (SPP), el cual es supervisado y fiscalizado por la Superintendencia de
Cuando iniciaron las AFP? Banca, Seguros y AFP (SBS).
Me pueden devolver mi plata Puedes retirar hasta el 25% de tu fondo si vas a amortizar tu crédito
Quiero mi plata hipotecario o si vas a comprar una primera vivienda.En ambos casos, el
Devuelvanme mi plata préstamo hipotecario debe ser otorgado por una entidad del sistema
Pueden devolverme mis financiero. Asimismo, si estás próximo a jubilarte, también podrás retirar hasta
aportes el 95% de tu fondo o decidir retirar una parte y recibir pensión con el saldo bajo
cualquiera de las distintas modalidades de pensión que ofrece AFP Habitat.
¿Qué son los Aportes Los Aportes Voluntarios te permiten invertir los distintos Tipos de Fondo de la
Voluntarios? AFP con el fin de rentabilizar tu dinero. Puedes optar por dos tipos: El Aporte
Explícame los Aportes Voluntario con Fin Previsional que está pensado para hacer crecer tu Fondo de
Voluntarios Jubilación y el Aporte Voluntario sin Fin Previsional que está orientado a
objetivos de corto y mediano plazo, donde puedes retirar tu dinero cuantas
veces quieras en el año.
Dónde invierten mi plata? Las AFP invierten en distintos instrumentos de inversión, tanto locales como
En qué están invirtiendo? extranjeros, por ejemplo: acciones, bonos, bolsas, etc. La cartera de
En qué invierten mi plata? instrumentos de una AFP es diversificada, no se invierte en un solo
En qué invierten mi dinero? instrumento. De esta manera, si existiera un impacto negativo en alguna de las
inversiones realizadas, éste no afectaría tu fondo del todo.
Cómo se dónde está mi plata?
He perdido plata Es importante que mires la rentabilidad de tu fondo a largo plazo, no hay que
Han perdido mi plata alarmarse si es un mes sale negativo.
La rentabilidad está en negativo
Por qué he perdido plata?
Qué es rentabilidad? El rendimiento de las inversiones que tu AFP realiza con tu fondo de jubilación,
se denomina rentabilidad. Este es el atributo más importante que una AFP
puede ofrecer a sus afiliados. Por eso es muy importante que siempre estés
informado sobre los resultados, aquí te los comparto: GIF.
Código fuente:
from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
import pandas as pd
import numpy as np
from sklearn import tree, metrics
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from nltk.corpus import stopwords
from nltk import word_tokenize
from string import punctuation

corpus =
pd.read_excel("C:/Users/Computer/Downloads/Habitat_Habi_PreguntasRespuesta
s_v1.1-2.xlsx")

le = LabelEncoder()
le.fit(corpus.Respuesta)
corpus.Respuesta = le.transform(corpus.Respuesta)

corpus.Pregunta=corpus.Pregunta.astype("str")
spanish_stopwords = stopwords.words('spanish')
non_words = list(punctuation)
non_words.extend(['¿', '¡'])
vectorizer = CountVectorizer(lowercase = True, stop_words = spanish_stopwords)

a = corpus.Pregunta.tolist()
tf = vectorizer.fit_transform(a)
b = vectorizer.transform(a).toarray()

X_train, X_test, y_train, y_test = train_test_split(


pd.DataFrame(b), corpus.Respuesta, test_size=0.20, random_state=43)

clf = tree.DecisionTreeClassifier()
clf = clf.fit(X_train, y_train)

predict_test = clf.predict(X_test)

metrics.accuracy_score(predict_test, y_test)

Resultados:
5. PLAN PARA EL DESARROLLO DEL SISTEMA:
Se procederá a utilizar la siguiente metodología
1. Identificación
2. Conceptualización
3. Formalización
4. Implementación
5. Testeo
6. Revisión del prototipo

FASE 1: IDENTIFICACIÓN
Desde la lectura de libros o artículos, como así también la definición de cuáles son
las funciones o tarea más idóneas para ser realizadas por el sistema experto. Esas
tareas son importantes para determinar que lenguaje y que sistema se usará:
1. Cumplir con todo los objetivos que se planteo

FASE 2: CONCEPTUALIZACIÓN
Se realizan entrevistas con el experto, con el objetivo de identificar y caracterizar el
problema informalmente. El experto de campo y el grupo definen el alcance del
sistema experto, es decir, que problemas va a resolver concretamente el sistema
experto.

FASE 3: FORMALIZACIÓN
Con el problema adecuadamente definido el grupo empieza a determinar los
principales conceptos del dominio que se requieren para realizar cada una de las
tareas que va a resolver el sistema, tratando de entender conceptos que son
relevantes e importantes solicitándole al experto que explique y justifique los
razonamientos que utiliza para resolver los problemas. Esto es importante para la
tarea de definición del sistema experto y para mantener una adecuada
documentación del mismo, ya que es útil para la tarea de diseño, construcción y
para posteriores modificaciones del sistema.
La estructura del conocimiento indica que tareas y que términos está usando y la
estrategia indica cómo y cuándo el sistema experto debe establecerlas.

FASE 4: IMPLEMENTACIÓN
Crear un prototipo del CHATBOT para así comprobar si hemos conceptualizado
bien la solución del problema.
Formalizar el conocimiento obteniendo del experto y elegir la organización y el
lenguaje de programación, en nuestro caso se podría usar Python para el
procesamiento de lenguaje natural y Microsoft Bot Framework para el Diseño del
bot.

FASE 5: PRUEBA
Se refina el sistema prototipo, depurado la base de conocimiento, refinando reglas,
rediseñando la estructura del conocimiento, o reformulando conceptos básicos, con
el objetivo de capturar información adicional que haya proporcionado el experto.
También se consultan en esta etapa otros expertos para, corroborar, controlar,
ampliar y refinar el prototipo.

FASE 6: REVISIÓN DEL PROTOTIPO


Cuando el sistema prototipo ha crecido tanto que resulta difícil de manejar se debe
rediseñar un sistema más eficiente. Este nuevo sistema deberá refinarse y
extenderse a fin de completar así el desarrollo del sistema experto.

Plan de desarrollo del Chatbot:


6. DESCRIPCIÓN DE LA ARQUITECTURA DEL SISTEMA:

6.1 Arquitectura técnica

A continuación, se describe la arquitectura del chatbot:

Los usuarios interactuan con el canal el cual puede ser una página web, correo electronico,
alguna aplicación de mensajería, entre otros; los cuales son llamados proveedores.

En el siguiente punto tenemos la UX, en los chatbots se aplica como la capa intermedia,
Se tienen 2 tipos de UX:

o UX Interface: La cual es construida por su proveedor por ejemplo Facebook


y su inteface Messenger, o Skype.

o UX Writting se encarga de definir como el bot se comunicará con el usuario,


los textos, las imágenes, botones, etc. Esta capa planeamos implementarla
con Bot Framework de Microsoft ya que es una herramienta versatil que
ayuda a la integración con diversos canales.

 NLP (Natural Language Proccessing) se refiere a el procesamiento del lenguaje


natural para hacerlo entendible al software.

 NLU (Natural Language Understanding) implica la acción de entender lo que el


usuario ha dicho, es decir entender la intención a la que pertenece lo dicho por el
usuario. En el caso de un chatbot podría ser un saludo, despedida, etc. Las cuales
pertenecen a una intención determinada.

 ML (Machine Learning) El NLU va de la mano con el ML debido a que es el


encargado de clasificar las frases del usuario asignándoles un score para entender a
qué intención pertenece.

 NLG (Natural Language Generation) Se refiere a la respuesta que da el chatbot


luego de que se haya reconocido a qué intención pertenece la frase ingresada por el
usuario, generalmente esta es una respuesta pre-programada, sin embargo, existen
estudios para que esta respuesta sea generada de manera automática por el chatbot.

 EL FACILITADOR:

Incluye API's y servicios que se van a integrar al chatbot para realizar tareas
determinadas, pueden ser usadas como fuente de datos, herramientas de
procesamiento, etc.
Además, tenemos las BD las cuales son responsables de almacenar informacion
propia de los usuarios o del chatbot, esta información debe estar disponible en todo
momento.

HERRAMIENTAS QUE SERÁN USADAS:

Canal: Facebook Messenger

UX: Bot Framework de Microsoft

Algoritmos de procesamiento: Decision tree

BD: Sql
7. DESCRIPCIÓN DE LOS DATOS DEL SISTEMA

7.1. Descripción de Datos:

- Oraciones: Son las posibles preguntas que un usuario puede preguntarle al


Bot, se lista la mayor cantidad de preguntas diferentes y que tengan relación
con el negocio que es AFP
- Intenciones: Son el contexto que el bot va a comprender de las preguntas
que el usuario haga por ejemplo: Si el usuario escribe “Hola”, “Hi”, “Hello”, “
Hola Amadeus”, etc. Todas estas oraciones pertenecen a una misma
intención que es el saludo.
- Vocabulario: Las oraciones pasan por un preprocesamiento antes de ser el
input del modelo, cada oración se segmente y se le sustrae stopwords. Cada
palabra que se obtiene se le asigna un id para poder identificarlo. Esta lista
de ids se le conoce como vocabulario.

- Batch Size: Es el tamaño del lote que define el número de muestras que se
propagarán a través de la red. Por ejemplo, supongamos que tiene 1050
muestras de entrenamiento y desea configurar batch_size igual a 100.
Algorithm toma las primeras 100 muestras (del 1 ° al 100 °) del conjunto de
datos de entrenamiento y la red de trenes. Luego toma el segundo 100
muestras (del 101º al 200º) y vuelve a entrenar la red. Podemos seguir
haciendo este procedimiento hasta que propaguemos a través de las redes
todas las muestras. El problema generalmente ocurre con el último conjunto
de muestras. En nuestro ejemplo, hemos usado 1050 que no es divisible por
100 sin residuo. La solución más simple es solo obtener 50 muestras finales
y entrenar a la red.
- Epoch: Una época consiste en un ciclo de entrenamiento completo en el
conjunto de entrenamiento. Una vez que se ve cada muestra en el conjunto,
comienza de nuevo, marcando el comienzo de la segunda época.

- Respuesta: Es la respuesta que el bot brinda ante la pregunta del usuario

8. DESCRIPCIÓN DEL PROTOTIPO DEL SISTEMA


El chatbot ejecutará instrucciones en base a la entrada realizada por el usuario, en
este caso se tiene una lista de intenciones que son reconocidas por el bot:
- Saludos
- Despedidas
- Ver menú
- Ayuda
- Compartir
- Información de contacto
- Ver estado de cuenta
- Ver mi último aporte

CANAL
ES BOT
CONNECTOR /
BOT SERVICE

SERVICIO WEB
(Servicio web creado a Código fuente del
partir del modelo de chatbot
intenciones (desarrollado en C#
desarrollado en .NET)
Python)

El usuario al ingresar su solicitud, esta es recibida por el canal asociado al chatbot


(en este caso Facebook Messenger), posteriormente el mensaje es recepcionado
por el Bot Connector/Bot service correspondientes al Bot Framework de Microsoft,
la solicitud es redirigida código fuente del chatbot el cual internamente llama al
servicio web desarrollado en Python que devuelve la intención a la que pertenece
el mensaje ingresado para que sea procesado en el código fuente del bot. Luego de
esto pasa nuevamente por el bot connector hacia el canal seleccionado y es
mostrado en el dispositivo del usuario.

8.1. Interacción usuario – chatbot


9. DESCRIPCIÓN DETALLADA DEL SISTEMA

9.1. Descripción del Dataset


Se utilizo un Dataset de elaboración propia que consistía en un listado 188 oraciones
y la intención que contenía dicha oración como el siguiente:
Intenciones Oraciones
saludo Hay alguien aquí
saludo buenas noches
saludo buen dia
despedida Adios
despedida chao
despedida me voy
despedida conversamos mas tarde
compartir compartir Amadeus
contacto donde estan ?
contacto me quiero contactar
calificar Calificar amadeus
EstadoCuenta cuentame ha crecido mi plata
EstadoCuenta he perdido mi dinero en ustedes
calificar evaluarte a amadeus
calificar me gustaria evaluarte
calificar me encanto la experiencia
fakes Me saque buena nota
fakes compartir rocas
ayuda como funciona esto
ayuda apoyame
ayuda apoyame amadeus
fakes como funciona la bolsa
fakes como funciona el mundo
fakes cuanto se gana jugando la tinka
fakes he ganado una loteria
UltimoAporte Cuando he pagado

En total se definieron 8 intenciones reales: saludo, despedida, calificar, contacto,


EstadoCuenta, ayuda, UltimoAporte, Compartir entre las cuales el modelo de IA
tendría que reconocer para que el chatbot sea capaz de responde a estas durante
la conversación. Además, se agregaron oraciones semejantes a las oraciones de
las intenciones reales pero que no tienen la misma intención y se agruparon en una
intención “fakes” para que el chatbot aprenda a reconocer de estas.

9.1.2. Preparación del Dataset

Para generar la data de entrada al modelo primero se realizo un limpiado de esta el


cual consistió en eliminar tildes y caracteres extraños y pasar todo a letras
minúsculas. Luego se modifico cada una de las oraciones para que pasen a ser una
lista de palabras. Se tomo como longitud estándar de estas listas 8 palabras una
puesto que esta era la longitud máxima del Dataset y aquellas oraciones mas cortas
se completaron con “TABS”.
Oraciones Salida
["hay", "alguien", "aquí", "\TAB", "\TAB",
buenas noches "\TAB", "\TAB", "\TAB"]
["buen", "dia", "\TAB", "\TAB", "\TAB", "\TAB",
buen dia "\TAB", "\TAB"]
cuentame ha crecido mi ["cuentame", "ha", "crecido", "mi", "dinero",
plata "en", "ustedes", "\TAB"]
he perdido mi dinero en ["he", "perdido", "mi", "dinero", "en",
ustedes "ustedes", "\TAB", "\TAB"]
["cuanto", "he", "pagado", "\TAB", "\TAB",
Cuando he pagado "\TAB", "\TAB", "\TAB"]

Luego se codifican cada las palabras asignándoles un identificador


único a cada una de ellas, generando un diccionario que permita
mapear entre código de palabra y palabra. Ademas se asigna un código
para aquellas palabras desconocidas que puedan ingresar en
situaciones reales.
Vocabulario
{'UNK': 0, '<PAD/>': 1, '\\?': 2, 'a': 3, 'activo': 4, 'adi': 5,
'adios': 6, 'afiliado': 7, 'afp': 8, 'agencia': 9, …, 'voy': 232,
'vuenos': 233, 'you': 234}

Luego las oraciones pasan a ser arrays de los códigos de las palabras.

Lista Codificadas
["hay", "alguien", "aquí", "\TAB", "\TAB", "\TAB", [121, 14, 23, 1, 1, 1, 1,
"\TAB", "\TAB"] 1]
["buen", "dia", "\TAB", "\TAB", "\TAB", "\TAB",
"\TAB", "\TAB"] [35, 72, 1, 1, 1, 1, 1, 1]
["cuentame", "ha", "crecido", "mi", "dinero", "en", [64, 114, 57, 151, 74,
"ustedes", "\TAB"] 82, 225, 1]
["he", "perdido", "mi", "dinero", "en", "ustedes", [122, 180, 151, 74, 82,
"\TAB", "\TAB"] 225, 1, 1]
["cuanto", "he", "pagado", "\TAB", "\TAB", "\TAB", [62, 122, 174, 1, 1, 1,
"\TAB", "\TAB"] 1, 1]

Del mismo modo se codifica y se crea un diccionario que permita


identificar el código para cada uno de las intenciones que serán las
respuestas del modelo.
{0: {'intent': 'EstadoCuenta'},
1: {'intent': 'UltimoAporte'},
2: {'intent': 'ayuda'},
3: {'intent': 'calificar'},
4: {'intent': 'compartir'},
5: {'intent': 'contacto'},
6: {'intent': 'despedida'},
7: {'intent': 'empezar'},
8: {'intent': 'fakes'},
9: {'intent': 'saludo'},
10: {'intent': 'vermenu'}}

Finalmente, el input al modelo tiene la siguiente estructura:


X y
[121, 14, 23, 1, 1, 1, 1, 1] 9
[35, 72, 1, 1, 1, 1, 1, 1] 9
[64, 114, 57, 151, 74, 82,
225, 1] 0
[122, 180, 151, 74, 82, 225,
1, 1] 0
[62, 122, 174, 1, 1, 1, 1, 1] 1

Se separa la data aleatoriamente con una proporción de 80% para


entrenamiento y 20% para la validación del modelo.

9.1.3. Embedding de inputs

El primer paso del modelo consiste en pasar a vectores cada una de las palabras.
Esta capa permite detectar y cuantificar la semejanza semántica entre las palabras.
Luego dos palabras con significados similares tendrán similar representación
(vectorial). Como parámetro se definió que estos vectores sean de dimensión 15.
Como resultado, cada oración pasaría a ser una matriz de 8 x 15. Por ejemplo, la
primera oración seria:
[[-0.10606, 0.3080 , 0.2166, -0.0153, -0.0188, 0.13356, 0.0544, 0.1002, 0.1248, -0.0542 , -0.1735, 0.24042, -
0.02885, -0.00254, -0.11876],
[-0.2384, -0.09884, -0.19226, 0.2699, -0.2412, 0.2589, 0.2256, -0.25463, 0.1967 , 0.25486, -0.23068, 0.2601 ,
0.05362, 0.0310, 0.0574],
[-0.1019, -0.1787, -0.1463, -0.18758, -0.1018, 0.06210, -0.27183,-0.1826, 0.2142, -0.1465, 0.2007, 0.16138, -
0.1538 , -0.19032, -0.12414],
[-0.1019, -0.1787, -0.14630, -0.18758, -0.1018, 0.0621, -0.2718, -0.1826, 0.21429, -0.1465, 0.2007, 0.16138, -
0.1538 , -0.1903, -0.1241],
[-0.1019, -0.1787, -0.14630, -0.18758, -0.1018, 0.0621, -0.2718, -0.1826, 0.21429, -0.1465, 0.2007, 0.16138, -
0.1538 , -0.1903, -0.1241],
[-0.1019, -0.1787, -0.14630, -0.18758, -0.1018, 0.0621, -0.2718, -0.1826, 0.21429, -0.1465, 0.2007, 0.16138, -
0.1538 , -0.1903, -0.1241],
[-0.1019, -0.1787, -0.14630, -0.18758, -0.1018, 0.0621, -0.2718, -0.1826, 0.21429, -0.1465, 0.2007, 0.16138, -
0.1538 , -0.1903, -0.1241],
[-0.1019, -0.1787, -0.14630, -0.18758, -0.1018, 0.0621, -0.2718, -0.1826, 0.21429, -0.1465, 0.2007, 0.16138, -
0.1538 , -0.1903, -0.1241]]

La similitud en la representación se puede apreciar entre palabras


semejantes como dinero y plata.
9.1.4. Red Neuronal Convolucional

A la salida de la capa de embedding pasaron a 3 capas de distintos tamaños de


filtros (3x15, 4x15, 5x,15) cada uno con 60 filtros. De esta forma, cada filtro opera
sobre 3, 4, o 5 palabras recorriendo la oración desde las primeras hasta el final.
Cada filtro busca alguna característica especifica en el texto para activarse.
Ejemplo filtros 3x15.
[[-0.10606 0.308 0.2166 -0.0153 -0.0188 0.13356 0.0544 0.1002 0.1248 -0.0542 -0.1735 0.24042 -0.02885 -0.00254 -0.11876]
[-0.2384 -0.09884 -0.19226 0.2699 -0.2412 0.2589 0.2256 -0.25463 0.1967 0.25486 -0.23068 0.2601 0.05362 0.031 0.0574]
[-0.1019 -0.1787 -0.1463 -0.18758 -0.1018 0.0621 -0.27183 -0.1826 0.2142 -0.1465 0.2007 0.16138 -0.1538 -0.19032 -0.12414]
[-0.1019 -0.1787 -0.1463 -0.18758 -0.1018 0.0621 -0.2718 -0.1826 0.21429 -0.1465 0.2007 0.16138 -0.1538 -0.1903 -0.1241]
[-0.1019 -0.1787 -0.1463 -0.18758 -0.1018 0.0621 -0.2718 -0.1826 0.21429 -0.1465 0.2007 0.16138 -0.1538 -0.1903 -0.1241] o1
[-0.1019 -0.1787 -0.1463 -0.18758 -0.1018 0.0621 -0.2718 -0.1826 0.21429 -0.1465 0.2007 0.16138 -0.1538 -0.1903 -0.1241] o2
[-0.1019 -0.1787 -0.1463 -0.18758 -0.1018 0.0621 -0.2718 -0.1826 0.21429 -0.1465 0.2007 0.16138 -0.1538 -0.1903 -0.1241] = o3
[-0.1019 -0.1787 -0.1463 -0.18758 -0.1018 0.0621 -0.2718 -0.1826 0.21429 -0.1465 0.2007 0.16138 -0.1538 -0.1903 -0.1241]] o4
o5
o6
*
w1 w2 w3 w4 w5 w6 w7 w8 w9 w10 w11 w12 w13 w14 w15
w16 w17 w18 w19 w20 w21 w22 w23 w24 w25 w26 w27 w28 w29 w30
w31 w32 w33 w34 w35 w36 w37 w38 w39 w40 w41 w42 w43 w44 w45

Las salidas de cada filtro tienen la dimensión de 6x1, 5x1, 4x1. Cada capa posee
60 filtros y se tienen 150 oraciones. Por lo que las dimensiones de salida serian:

Luego se pasan cada salida por sus respectivas capas de max pooling, de forma
que de cada filtro se queda con la mayor activación de cada una de las
convoluciones. (El máximo de o1, o2, o3, o4, o5, o6 para el caso del ejemplo.

Finalmente estos outputs se concatenan, formando un gran vector con


dimensiones 150 x 180. Es decir, 180 características encontradas por las capas
convoluciones de las 150 oraciones.
Una vez se tienen las características, se utiliza una capa final softmax para extraer
el score de cada oración de tener cada intención.
10. RESULTADOS DEL SISTEMA IA
Para la validación del modelo se utilizo el 20% del Dataset inicial, de esta forma se
decidieron los mejores hiperametros del modelo (número de filtros, épocas de
entrenamiento, tamaño de filtros, dimensión del embedding). El accuracy final
obtenido utilizando este modelo fue de 95.93%. para la data de validación.

El modelo reconoce exitosamente entre las distintas intenciones planteadas en el


dataset original con casi 96% de accuracy. Se quiso validar dichas realizando
pruebas aisladas al modelo.

Como se puede observar el modelo fue capaz de reconocer correctamente todas


las pruebas y identificar correctamente entre intenciones reales y fakes que son
muy semejantes.
11. TRABAJOS FUTUROS
Los resultados y las conclusiones a lo largo de este documento se ha demostrado
que es una herramienta capaz y que ofrece un buen aporte a los usuarios.
MEJORAS AL PROCESO ACTUAL:
- Aprendizaje automático del bot:
El modelo desarrollado no presenta aprendizaje automático, el
entrenamiento del modelo se desarrolló con un dataset determinado y en
base a este entrenamiento el modelo responde con la intención a la que
pertenece el
- Implementar el bot en otros canales:
Para que tenga mayor alcance, el bot puede ser publicado en otros canales
tales como Skype, o desarrollar una web en la cual el chatbot se integre.

Вам также может понравиться