desenvolvimento de um chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas...

68

Upload: others

Post on 13-May-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Márcio Luiz Bezerra Lopes Júnior

Desenvolvimento de um Chatbot usando

redes de aprendizado profundo

Natal � RN

17 de dezembro de 2018

Page 2: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos
Page 3: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Márcio Luiz Bezerra Lopes Júnior

Desenvolvimento de um Chatbot usando redes de

aprendizado profundo

Trabalho de Conclusão de Curso Sub-metido à Coordenação do Curso de En-genharia de Computação e Automaçãodo Centro de Tecnologia da UniversidadeFederal do Rio Grande do Norte, comoparte dos requisitos necessários para a ob-tenção do grau de Engenheiro de Compu-tação.

Universidade Federal do Rio Grande do Norte � UFRN

Departamento de Engenharia de Computação e Automação � DCA

Curso de Engenharia de Computação

Orientador: Agostinho de Medeiros Brito Júnior

Natal � RN

17 de dezembro de 2018

Page 4: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos
Page 5: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Agradecimentos

Agradeço primeiramente a painho, mainha e Jó, pelo amor, carinho e in-

centivo que me deram por todos estes anos; e a Fernanda, pelo apoio, incentivo,

carinho e por todos os �empurrões� que me colocaram no caminho deste trabalho.

Em seguida, agradeço à UFRN e seu corpo docente, pelos ensinamentos e

pela experiência desta graduação; à SINFO e ao professor Gibeon, pela oportu-

nidade de desenvolver este projeto; e também a Jean, Gusttavo, e Victor, pelo

grande apoio recebido em meu período na SINFO.

Finalmente, agradeço ao professor Agostinho por aceitar ser meu orientador

e pela boa vontade para me ajudar neste trabalho.

Page 6: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos
Page 7: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Resumo

Apresenta o desenvolvimento de um chatbot voltado à comunidade acadêmica da

UFRN utilizando técnicas de aprendizado profundo, com o objetivo de auxiliar

discentes e funcionários a realizar consultas e sanar dúvidas mais rapidamente e

a qualquer momento. Para isso, foram construídas uma rede neural convolucional

capaz de identi�car o que o usuário deseja, uma estrutura de banco de dados capaz

de alimentar esta rede, e sequências de consultas e respostas capazes de solucio-

nar o problema do usuário. O sistema foi testado com diversas con�gurações até

ser encontrada uma que obteve resultados satisfatórios para cada tipo de entrada

esperado.

Palavras-chaves: Atendimento ao usuário, redes de aprendizado profundo, chat-

bot

Page 8: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos
Page 9: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Abstract

Presents the development of a chatbot focused on the UFRN academic community

using deep learning, for the purpose of helping students and employees making con-

sultations and answering questions faster and at any given time. A convolutional

neural network was used to identify what the user wants, a database was created

in order to feed this network, and a series of queries and answers to solve the user's

issue was designed. The system was tested on several con�gurations until one was

found to have satisfactory results for every expected input.

Keywords: Customer service, deep neural networks, chatbot

Page 10: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos
Page 11: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Lista de ilustrações

Figura 1 � Vetorização de palavras. . . . . . . . . . . . . . . . . . . . . . . 25

Figura 2 � Modelo simpli�cado de um neurônio arti�cial. . . . . . . . . . . 33

Figura 3 � Modelo simpli�cado de uma rede neural. . . . . . . . . . . . . . 37

Figura 4 � Convolução simples. . . . . . . . . . . . . . . . . . . . . . . . . 40

Figura 5 � Exemplo de uma rede convolucional simples em PLN. . . . . . . 41

Figura 6 � Caso de uso do chatbot . . . . . . . . . . . . . . . . . . . . . . . 44

Figura 7 � Fluxograma do funcionamento da função principal. . . . . . . . 48

Figura 8 � Representação do funcionamento do módulo processador. . . . . 49

Figura 9 � Rede convolucional para a classi�cação. . . . . . . . . . . . . . . 50

Figura 10 � Exemplo de probabilidades de intenções na classi�cação. . . . . 51

Figura 11 � Comparação de funções de ativação no bot. . . . . . . . . . . . . 54

Figura 12 � Comparação de otimizadores no bot. . . . . . . . . . . . . . . . 54

Figura 13 � Visualização de mensagem recebida do chatbot . . . . . . . . . . 55

Figura 14 � Visualização de tipo de entidade do chatbot . . . . . . . . . . . 56

Figura 15 � Visualização de entidade do chatbot . . . . . . . . . . . . . . . . 56

Figura 16 � Visualização de intenção do chatbot . . . . . . . . . . . . . . . . 57

Figura 17 � Interação com o bot. . . . . . . . . . . . . . . . . . . . . . . . . 58

Figura 18 � Interação com o bot com entidades identi�cadas. . . . . . . . . . 59

Figura 19 � Interação com o bot com mesma intenção m. . . . . . . . . . . . 59

Figura 20 � Interação com o bot em �uxo de conversa. . . . . . . . . . . . . 60

Figura 21 � Interação com o bot através de marcadores. . . . . . . . . . . . 60

Page 12: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos
Page 13: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Lista de tabelas

Tabela 1 � Exemplo de n-gramas. . . . . . . . . . . . . . . . . . . . . . . . 26

Tabela 2 � Exemplo de marcação de entidades em texto. . . . . . . . . . . 27

Tabela 3 � Exemplo simples de variações de intenções. . . . . . . . . . . . 28

Page 14: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos
Page 15: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Lista de abreviaturas e siglas

API Interface de Programação de Aplicação

CNN Rede neural convolucional

HTML Hypertext Markup Language

MIT Massachusetts Institute of Technology

PLN Processamento de Linguagem Natural

RNA Rede Neural Arti�cial

SGD Método do gradiente estocástico

SINFO Superintendência de Informática

UFRN Universidade Federal do Rio Grande do Norte

Page 16: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos
Page 17: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Sumário

1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . 17

1.1 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

1.2 Estrutura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2 FUNDAMENTOS DE UM CHATBOT . . . . . . . . . . . . 21

2.1 De�nição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.2 Plataforma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.3 Processamento de Linguagem Natural . . . . . . . . . . . . . 24

2.3.1 Vetorização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.3.2 N-gramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2.3.3 Reconhecimento de entidades . . . . . . . . . . . . . . . . . . . . 26

2.3.4 Classi�cação de intenção . . . . . . . . . . . . . . . . . . . . . . . 27

3 REDES DE APRENDIZADO PROFUNDO . . . . . . . . . . 29

3.1 Aprendizagem de máquina . . . . . . . . . . . . . . . . . . . . 29

3.1.1 Métodos de avaliação . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.1.2 Aprendizagem profunda . . . . . . . . . . . . . . . . . . . . . . . . 32

3.2 Redes neurais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.2.1 Redes neurais arti�ciais . . . . . . . . . . . . . . . . . . . . . . . . 33

3.2.1.1 Neurônios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.2.1.2 Funções de ativação . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.2.1.3 Otimizadores e método do gradiente . . . . . . . . . . . . . . . . . . 36

3.2.1.4 Camadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.3 Redes convolucionais . . . . . . . . . . . . . . . . . . . . . . . 38

3.3.1 Convolução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.3.2 Pooling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

3.3.3 Arquitetura geral . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

4 DESENVOLVIMENTO DO CHATBOT . . . . . . . . . . . . 43

4.1 Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

Page 18: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

4.2 Ferramentas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4.3 Funcionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

4.3.1 Administrador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

4.3.2 Processador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4.4 A rede convolucional . . . . . . . . . . . . . . . . . . . . . . . 49

4.4.1 Teste de hiperparâmetros . . . . . . . . . . . . . . . . . . . . . . . 50

5 RESULTADOS . . . . . . . . . . . . . . . . . . . . . . . . . . 53

5.1 Hiperparâmetros . . . . . . . . . . . . . . . . . . . . . . . . . . 53

5.2 Administrador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

5.3 Processador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

6 CONCLUSÕES . . . . . . . . . . . . . . . . . . . . . . . . . . 61

REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . 63

Page 19: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

1 Introdução

Sistemas de atendimento ao usuário são comuns no dia-a-dia de milhares

de empresas em todo mundo. Tradicionalmente, o atendimento é feito através de

estruturas denominadas call centers, onde humanos realizam conversação com os

usuários para atender suas dúvidas.

Os sistemas modernos de atendimento de usuário estão migrando para uma

nova tendência: a de chatbots, estes utilizam de técnicas de reconhecimento de

linguagem para automatizar o processo de conversação com os clientes, resolvendo

alguns possíveis problemas através de consultas realizadas pelo programa.

No campo educacional, já são utilizados chatbots em algumas instituições

de ensino superior para auxiliar com os processos de inscrição e entrada (Pounce

da Georgia State University) (HERNDON, 2017) ou até com perguntas sobre os

conteúdos ensinados (Ada do Bolton College) (HUSSAIN, 2017). O primeiro citado

obteve resultados satisfatórios na redução do fenômeno conhecido nos Estados

Unidos como summer melt, em que estudantes, geralmente de baixa renda, perdem

a motivação de entrar na faculdade por falta de assistência, guia ou encorajamento.

No comércio, os chatbots têm se tornado bem comuns na última década.

Eles já são utilizados há algum tempo por grandes corporações. Desde 2011 sur-

giram Siri (APPLE, 2018), Cortana (MICROSOFT, 2018) e Alexa (AMAZON,

2018), três assistentes virtuais anexadas a alguns dos mais populares sistemas

do mundo. Outras grandes empresas de computação, como Google e Facebook,

fornecem ferramentas para criação de bots para seus clientes. Estas ferramentas

ajudaram a desenvolver um novo campo de relações entre empresas e clientes, em

que os pedidos de compra são feitos via interação com chatbot .

Assim como outras tecnologias, os chatbots ainda enfrentam as barreiras

naturais de concorrência e de resistência às novidades. Apesar disso, o crescimento

recente no desenvolvimento e investimento nos bots , assim como no conhecimento

das pessoas sobre eles, já os tornaram tópico importante na discussão sobre o

futuro dos serviços.

Page 20: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Durante a realização do Hackathon da UFRN de 2017, foi encorajado aos

participantes que pensassem em formas de utilizar os dados disponíveis na ainda

recente API de Sistemas da UFRN para melhorar o ambiente universitário. Neste

cenário, surgiu a ideia de desenvolver um chatbot focado em auxiliar os discentes

da UFRN.

Hoje, muitos questionamentos dos alunos da universidade ainda requerem,

por mais simples que sejam, que o aluno vá a alguma secretaria ou coordenação

para que possam resolvê-los. Alguns destes questionamentos são repetidos por

diferentes alunos, de forma que os funcionários têm de repetir as mesmas falas por

diversas vezes a cada semestre.

Este projeto, então, nasce da crença de que utilizando-se de dados já exis-

tentes e guardados nos sistemas de armazenamento da UFRN, é possível resolver

diversos questionamentos de alunos de forma automatizada.

Dessa forma, o desenvolvimento deste projeto busca proporcionar uma

maior facilidade ao discente, permitindo que certas dúvidas sejam sanadas a qual-

quer hora do dia e sem necessidade de deslocamentos; e busca também retirar

alguma carga dos ombros dos servidores da universidade, reduzindo a necessidade

de responder questionamentos repetidos e as possíveis perdas de tempo com ques-

tões que não fazem parte de suas prioridades.

1.1 Metodologia

Para desenvolver o chatbot foram construídos dois módulos: processamento

e administração. O primeiro �ca responsável por realizar o treinamento da inteli-

gência arti�cial, incluindo a rede convolucional, pelo processamento da mensagem

recebida pelo usuário, e pela resposta a essa mensagem; o segundo é responsável

por gerenciar os dados utilizados no treinamento e por �scalizar o funcionamento

do bot.

Para realizar a classi�cação das intenções nas mensagens dos usuários, foi

aplicada uma rede convolucional. Esta rede recebe como entrada a mensagem em

formato matricial e tem como saída as probabilidades da mensagem pertencer a

Page 21: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

cada uma das intenções existentes no banco de dados.

1.2 Estrutura

O trabalho é dividido em cinco capítulos, dois capítulos teóricos, um deta-

lhando a estrutura do projeto, um exibindo os resultados, e ao �nal, a conclusão.

O referencial teórico se inicia no Capítulo 2, em que se de�ne o que é chat-

bot e são explicadas suas principais utilidades atuais. Em seguida, são de�nidos

alguns conceitos de Processamento de Linguagem Natural que foram utilizados

neste trabalho. No Capítulo 3, são apresentados e explicados conceitos de aprendi-

zagem de máquina, com ênfase nas redes neurais e convolucionais. São detalhados

os processos que ocorrem nas camadas da rede convolucional.

No Capítulo 4, é detalhada a forma de organização da aplicação, separando-

a em dois módulos. São apresentadas as ferramentas utilizadas na construção da

aplicação e é feito um maior detalhamento da rede convolucional utilizada e de

seus testes.

Os resultados obtidos são apresentados no Capítulo 5, incluindo exemplos

de uso dos dois módulos e os testes realizados na rede convolucional. O trabalho é

então �nalizado no Capítulo 6, onde são feitas as considerações �nais.

Page 22: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos
Page 23: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

2 Fundamentos de um chatbot

2.1 De�nição

Chatbots, também chamados de bots ou assistentes virtuais, são sistemas

programados que buscam compreender mensagens enviadas por usuários humanos

e respondê-las. Podendo ser usados para vários propósitos, os chatbots mais antigos

tinham foco em simular as conversas e o comportamento de uma personagem

criada, às vezes com cunho cientí�co, outras vezes com cunho humorístico. Hoje,

a utilização dos bots por organizações tem foco maior no auxílio aos seus clientes

por meio da execução automatizada de tarefas.

O programa geralmente creditado como o marco inicial dos bots é a �psico-

terapeuta virtual� ELIZA (WEIZENBAUM, 1966), desenvolvida entre 1964 e 1966

por Joseph Weizenbaum, no laboratório de inteligência arti�cial do MIT. ELIZA

simulava uma psicoterapeuta através de uma abordagem bem simples, que buscava

padrões dentro da mensagem enviada pelo usuário e replicava com uma frase rela-

tiva àquele padrão. ELIZA foi capaz de convencer muitas pessoas que interagiram

com ela de que ela realmente entendia o que lhe era dito.

Em 1971, na Universidade de Stanford, foi desenvolvido o programa PARRY

(COLBY, 1971), bot que simulava um paciente que sofria de esquizofrenia. PARRY

seguia uma lógica de funcionamento similar àquela de ELIZA, e as primeiras in-

terações entre ELIZA e PARRY, proporcionadas pela rede de computadores AR-

PANET, são consideradas um marco dos chatbots e da inteligência arti�cial. Além

das características de ELIZA, PARRY introduzia um sistema que guardava os seus

níveis de �raiva� e �medo�, com suas respostas sofrendo variações conforme o valor

desses níveis. Em experimentos realizados com PARRY, ele foi o primeiro bot a

passar em uma versão Teste de Turing, em 1972, em que psicoterapeutas recebe-

ram transcritos de conversas com PARRY e de conversas com pacientes humanos e

a�rmavam se a conversa era produzida pelo robô ou pelo humano (COLBY; HILF,

1972).

Page 24: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Apesar do feito de PARRY de se confundir com humanos ser muito rele-

vante para a época, o tipo de pessoa que o robô buscava imitar (pacientes com

esquizofrenia) autorizava que ele dissesse coisas que fugissem da lógica da conversa

sem que isso gerasse muitas suspeitas. Colby, criador de PARRY, chamava os tes-

tes de "Turing-like tests" (algo como: �testes parecidos com o de Turing�). Alguns

bots mais modernos já foram anunciados como se tivessem passado no Teste de

Turing, porém, como no caso de PARRY, há sempre algum detalhe para justi�car

respostas ilógicas.

O desenvolvimento dos bots continuou, e do �nal da década de 1980 até o

�nal do século foram desenvolvidos alguns que obtiveram destaque. Jabberwacky

(1988) buscava aprender com a entrada enviada pelo usuário para entretê-lo (CAR-

PENTER, 2018); Dr. Sbaitso (1990) o papel de psicólogo e respondia ao usuário

em mensagens de voz (CREATIVE LABS, 1990); e A.L.I.C.E. (1995) utilizava de

heurísticas para compreender os padrões de entrada do usuário e assim ter uma

conversa (WALLACE, 2002), este último serviu de inspiração para o �lme premi-

ado Her, de 2013. Em 2001 surgiu o Smarterchild, um bot distribuído em plata-

formas de conversação por mensagem que se tornou popular. Ele realizava acesso

a dados e era personalizado e, apesar do caráter conversacional e humorístico que

compartilhava com os demais bots surgidos no �nal do século XX, Smarterchild in-

troduzia algumas das principais características que seriam observadas nos chatbots

modernos, sendo considerado até o precursor deles (RODRIGUES, 2016).

Características contemporâneas

Como visto, o desenvolvimento de chatbots não é algo recente, tendo a

possibilidade de conversar com máquinas sido bastante discutida e comentada no

século XX, seja por cientistas e desenvolvedores de softwares conversacionais, seja

por pessoas fora da área que apenas imaginavam que o desenvolvimento tecnológico

poderia chegar a tal ponto. Entretanto, foi apenas recentemente que os assistentes

virtuais passaram a �gurar como elementos de uso diário e como fonte de notícias

em jornais.

Os assistentes desenvolvidos por grandes empresas de tecnologia passaram

a proporcionar aos usuários uma série de recursos adicionais e externos às funci-

Page 25: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

onalidades tradicionais dos bots que permitem uma forma diferente de acesso à

informação, e por vezes mais rápida que a comum sequência de comandos (cli-

ques). A inserção destes bots dentro de celulares extensamente utilizados e o uso

de técnicas avançadas de compreensão de fala proporcionaram um grande alcance

e tornaram comuns os chatbots genéricos, que realizam as diversas tarefas possí-

veis do seu ambiente, como, no caso de smartphones : ligar, mandar um mensagem,

abrir um aplicativo, pesquisar algo, dentre várias outras.

Além dos bots mais genéricos incluídos em dispositivos, são também bem

populares assistentes modeláveis, oferecidos por uma organização a outra com o

intuito que esta utilize das ferramentas desenvolvidas por aquela para montar um

chatbot simples e de funcionalidade geralmente mais limitada. São comumente

usados em vendas pela internet, e geralmente seguem os �uxos de conversa, onde

são esperadas que as respostas do usuário sigam um padrão mais restrito.

2.2 Plataforma

A plataforma conversacional pela qual o assistente virtual se comunica com

o usuário é de vital importância ao projeto. É por meio das funcionalidades, do

alcance e das limitações da plataforma que o bot deve ser pensado.

Como mencionado no Capítulo 1, o crescimento, ou surgimento, recente dos

chatbots, é em grande parte atribuído à popularização dos aplicativos de troca de

mensagens, como Telegram ou Facebook Messenger, que tornaram as mensagens o

meio mais comum de comunicação a distância.

O formato incentivado por esses aplicativos, onde mensagens curtas são en-

viadas e recebidas por usuários em tempo real, é muito adequado às necessidades

de um chatbot , sendo necessário pouco ou nenhum ajuste em relação aos formatos

tradicionais testados em linhas de comando. Mas é claro que, quando há funcio-

nalidades adicionais que podem melhorar a relação do cliente com o bot como, por

exemplo, detecção de voz, estas são comumente exploradas.

Outras plataformas de destaque, como mencionado no tópico anterior, são

os telefones celulares modernos (smartphones), estes implementam bots internos

Page 26: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

que servem de auxílio ou facilitador na sua utilização. Estes utilizam algum co-

mando padrão no dispositivo para ativar o bot e partir daí o usuário faz sua

requisição do que desejar fazer.

2.3 Processamento de Linguagem Natural

Processamento de linguagem natural (PLN) é um campo da ciência da com-

putação que estuda formas de compreender um texto, de extrair informações espe-

cí�cas dele, e até de gerar um novo texto. O PLN possui uma grande quantidade

de aplicações, sendo utilizado em diversos campos linguísticos e computacionais.

As diversas técnicas de PLN incluem várias formas de marcar ou modi�-

car o texto para realizar o processamento desejado. Neste tópico estão destacados

os principais conceitos utilizadas neste projeto: Vetorização, N-gramas, reconheci-

mento de entidades e classi�cação de intenção. Sendo os dois últimos formas de

abstrair o texto para análise, e os dois primeiros técnicas que ajudam a chegar a

essa abstração.

2.3.1 Vetorização

Um processo muito comum em PLN é a vetorização de palavras. A vetori-

zação consiste em, de certa forma, avaliar matematicamente as palavras presentes

em textos.

Na vetorização, um algoritmo - o vetorizador - é alimentado por uma de-

terminada quantidade de textos, sendo responsável por extrair as diferentes carac-

terísticas de cada palavra nos textos utilizando alguma técnica de processamento

de linguagem. Estas palavras são então transformadas em vetores de tamanho de-

terminado pelo vetorizador. Uma vez as palavras estando em formato vetorial, é

possível fazer uma série de operações e comparações que não seriam possíveis em

formato de texto.

Existem diversos algoritmos distintos para a vetorização de palavras, sendo

os mais comuns Word2Vec (MIKOLOV et al., 2013), GloVe (PENNINGTON;

SOCHER; MANNING, 2014), Wang2Vec (LING et al., 2015) e FastText (BOJA-

Page 27: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

NOWSKI et al., 2017). Estes algoritmos utilizam diversas características diferentes

das palavras para realizar a vetorização, incluindo o contexto em que a palavra se

encontra, a quantidade de vezes que uma palavra aparece nos textos, e até a mor-

fologia das palavras; isto pode resultar em resultados distintos entre os algoritmos,

sendo o uso destes variável de acordo com o problema em questão. Os algoritmos

podem classi�car as palavras processadas em vetores de diversos tamanhos e po-

dem ser aplicados a conjuntos de textos enormes, sendo possível encontrar bancos

de palavras vetorizadas treinados nestes algoritmos em várias línguas, incluindo o

português.

Na Figura 1, é exibido um exemplo simpli�cado do processo de vetorização,

com as características das palavras sendo classi�cadas em vetores de 26 unidades,

cada uma representando uma letra do alfabeto. Neste caso, cada palavra do texto

de entrada foi classi�cada de acordo com a quantidade ocorrências de cada letra

nesta.

Palavra A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Universidade 1 0 0 2 2 0 0 0 2 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0

Federal 1 0 0 1 2 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0

Do 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0

Rio 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0

Grande 1 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0

Norte 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0

Vetorizador"UniversidadeFederal do Rio

Grande do Norte"

Texto

Figura 1 � Vetorização de palavras.

2.3.2 N-gramas

Processar uma frase por completo é problemático, pois podem haver diver-

sas formas de se dizer uma mesma coisa, tornando necessário que esta frase seja

dividida em partes. Naturalmente, pensa-se em analisar as palavras que compõem

cada frase, e classi�car de acordo com a semelhança de palavras.

Porém, ao trabalhar textos, palavra por palavra, corre-se o risco de perder

o contexto em que a palavra está inserida. Frases que são formadas com conjunto

próximo ou igual de palavras, mas que possuem signi�cados distintos, tenderiam

a ser classi�cadas como iguais num processamento assim.

Page 28: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Para resolver este problema, há um conceito em PLN chamado de n-gramas.

Os n-gramas são sequências de conjuntos de palavras, de tamanho especi�cado pelo

desenvolvedor, que representam a frase original através de pedaços da mesma.

Deste forma, não se deixa a análise restrita a frases completas, e ainda são man-

tidos contextos mínimos, mas que são su�cientes para identi�car as diferenças

(JURAFSKY; MARTIN, 2018).

Na Tabela 1, pode-se observar duas frases de sentido oposto, mas formadas

pelo mesmo conjunto de palavras. Ao quebrar a frase em palavras e agrupar as

palavras vizinhas, é possível obter informações capazes de distinguir o sentido

dos conjuntos de palavras mesmo desconhecendo por completo a ordem das frases

originais.

Frase "Ele foi bem porque não foimal"

"Ele não foi bem porque foimal"

Trigramas(n = 3)

(Ele foi bem), (foi bem por-que), (bem porque não), (por-que não foi), (não foi mal)

(Ele não foi), (não foi bem),(foi bem porque), (bem porquefoi), (porque foi mal)

Bigramas(n = 2)

(Ele foi), (foi bem), (bem por-que), (porque não), (não foi),(foi mal)

(Ele não), (não foi), (foi bem),(bem porque), (porque foi),(foi mal)

Tabela 1 � Exemplo de n-gramas.

Os n-gramas podem ser utilizados para diversas tarefas em PLN. O valor

de n costuma estar entre 3 e 5, e também podem ser usados mais de um tamanho

de n-gramas para o processamento em uma aplicação.

2.3.3 Reconhecimento de entidades

Reconhecimento de entidades nomeadas, ou somente reconhecimento de

entidades, é um importante passo no processo de extração de informações de um

texto, e geralmente o primeiro passo. Este reconhecimento visa a identi�cação,

através de técnicas de PLN, de nomes especí�cos, previamente determinados e

classi�cados, nos textos processados (JURAFSKY; MARTIN, 2018).

Page 29: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Para realizar o reconhecimento de entidades, geralmente são utilizados ar-

quivos de textos contendo diversos exemplos de uso de nomes de entidades. Estes

exemplos devem ser todos previamente marcados de acordo com um padrão de�-

nido pelo desenvolvedor do reconhecedor utilizado.

Na Tabela 2 é possível visualizar um mesmo texto em dois formatos: com

e sem a marcação de entidades.

Após a Campanha Nacional de Vacinação, queterminou no última semana, 10,2 milhões decrianças menores de cinco anos foram imuniza-das contra sarampo e poliomielite. Com isso,o governo federal informou que o índice de co-bertura do público-alvo chegou a 91,3%.

Após a Campanha Nacional de Vacina-ção, que terminou no última semana,<start:número> 10,2 milhões <end>

de crianças menores de <start:idade>

cinco anos <end> foram imunizadas con-tra <start:doença> sarampo <end> e<start:doença> poliomielite <end>. Comisso, o<start:organização> governo federal<end> informou que o índice de coberturado público-alvo chegou a <start:número>

91,3% <end>.

Texto sem marcação Texto com marcação

Fonte: http://www.brasil.gov.br/

Tabela 2 � Exemplo de marcação de entidades em texto.

O sistema é alimentado por estes exemplos marcados e, quando encontra em

outro texto um padrão muito próximo daquele dos exemplos, passa a reconhecer

as entidades em textos, sempre as atribuindo a um tipo de entidade.

2.3.4 Classi�cação de intenção

O problema de classi�cação é um dos mais tradicionais na inteligência arti-

�cial. Este problema consiste em possibilitar um computador separar algo (textos,

imagens, áudios) em categorias distintas. Atualmente, as técnicas de aprendizagem

de máquina, que serão introduzidas no próximo capítulo, são vastamente utilizados

para isso.

Para o problema do processamento de linguagem e dos chatbots, o foco está

no entendimento do signi�cado de uma frase, ou seja, a intenção do usuário ao

escrever um texto ou uma mensagem.

Page 30: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Soluções para a classi�cação de intenções em geral utilizam um banco de

dados contendo possíveis formas de se comunicar uma determinada vontade do

usuário, bem como a classi�cação de cada forma. Pode haver uma quantidade

enorme de variações, sendo uma necessidade dos classi�cadores modernos a capa-

cidade de aceitar estas variações.

Na Tabela 3 são apresentados exemplos de como frases poderiam ser clas-

si�cadas como intenções em um chatbot . Neste caso, são três exemplos de frases

classi�cados como �saudação� e outros três como �clima�.

Tipo de intenção Mensagem do usuárioSaudação Boa tarde.Saudação Olá!Saudação Fala!!Clima Como tá o clima hoje?Clima Hoje chove?Clima Quero saber se vai fazer sol.

Tabela 3 � Exemplo simples de variações de intenções.

A classi�cação tem vital importância para um bot, sendo ela a responsável

por direcionar a resposta dada ao usuário. Em geral, a resposta do sistema de

um chatbot é de�nida através da combinação entre a classi�cação do texto e as

entidades reconhecidas.

Page 31: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

3 Redes de aprendizado profundo

3.1 Aprendizagem de máquina

Aprendizagem de máquina é um conjunto de métodos capaz de automati-

camente detectar padrões em um conjunto de dados, podendo estes padrões ser

utilizados para realizar classi�cação ou predição em novas entradas de dados.

A aprendizagem de máquina é dividida tradicionalmente em três tipos dis-

tintos: supervisionada, não-supervisionada, e por reforço (MURPHY, 2012).

• Supervisionada: são aplicadas técnicas que recebem dados de forma que

estejam separados uma matriz de valores de entrada X e um vetor unidimen-

sional de saída y. As técnicas associam os valores de entrada ao respectivo

valor de saída e modelam um sistema (ou uma função) capaz de prever a

saída para um valor desconhecido. Exemplos de técnicas de aprendizagem

supervisionada: Regressão linear, árvores de decisão e máquinas de vetores

de suporte.

• Não-supervisionada: são aplicadas técnicas de aprendizagem a uma ma-

triz de entrada X, sem a necessidade de qualquer outra entrada de dados.

As técnicas tem por objetivo associar os dados de entrada de forma a en-

contrar uma relação entre eles. Exemplos de técnicas de aprendizagem não-

supervisionada: K-Médias e DBSCAN.

• Por reforço: Na aprendizagem por reforço, o objetivo é fazer com que o pro-

grama encontre uma solução ótima para uma determinada tarefa através do

processo de tentativa e erro. Nesta são dadas �premiações� ao programa caso

ele conclua o objetivo preestabelecido e são utilizadas métricas de avaliação

para determinar qual é a melhor solução.

Quanto ao propósito da aprendizagem, ainda é possível distinguir dois tipos

diferentes de aprendizagem supervisionada:

Page 32: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

• Classi�cação: a técnica implementada terá como objetivo de�nir, dentre

um número �nito de rótulos prede�nidos no processamento, a qual destes

rótulos os valores de entrada pertencem. Por exemplo: dada a imagem de

uma folha, classi�car a qual espécie de planta esta pertence.

• Regressão: uma espécie de classi�cação com rótulos in�nitos. Neste são

utilizados os valores de entrada da situação atual para de�nir um valor des-

conhecido, dado um conjunto de treinamento que possua estes mesmo va-

lores, inclusive aquele que é desconhecido na entrada. Por exemplo: dadas

informações sobre uma pessoa, de�nir a sua provável idade.

No problema dos chatbots abordado neste trabalho é compreensível a�rmar

que ele será um problema de classi�cação, uma vez que as intenções e entidades

a serem identi�cadas, como será visto no Capítulo 4, são �nitas e de�nidas por

quem projeta o sistema.

Estas técnicas modernas de aprendizagem de máquina tiveram um grande

impacto sobre o PLN, transformando as formas de se realizar algumas das técnicas

mencionadas no capítulo anterior, tornando-as mais rápidas e e�cazes e possibili-

tando a popularização destes métodos.

3.1.1 Métodos de avaliação

Nos problemas de aprendizagem de máquina - em especial será discutido

aqui o caso da classi�cação - há métodos que são utilizados para avaliar se a

técnica aplicada está tendo um desempenho satisfatório. Na classi�cação, é comum

se utilizar quatro métricas: acurácia, precisão, recall e F1 (JURAFSKY; MARTIN,

2018).

Antes de aplicar os cálculos que determinam estas pontuações, é uma boa

prática nos testes de aprendizagem de máquina a separação dos dados em dois

conjuntos: os dados de treino e os dados de teste. O conjunto de dados de teste é

formado por uma fração do conjunto de dados, normalmente entre um quinto (20%)

e um terço (∼33%) deste, e esta fração deve ser composta por dados diferentes

(amostragem aleatória) toda vez que o programa é treinado novamente, de forma

Page 33: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

a garantir que o sistema não esteja funcionando apenas para casos especí�cos de

conjuntos de treino.

Uma vez que o sistema tenha sido treinado, ele é alimentado com todos

os dados do conjunto de teste, classi�cando-os com base no treino dos demais

dados. Os resultados desta classi�cação são então comparados com os resultados

esperados e divididos em quatro tipos distintos:

• Positivo verdadeiro (PV): são positivos verdadeiros os resultados que

deveriam ser classi�cados como sendo da classe c e foram classi�cados como

tal.

• Negativo verdadeiro (NV): são negativos verdadeiros os resultados que

deveriam ser classi�cados como não sendo da classe c e foram classi�cados

como tal.

• Falso positivo (FP): são falsos positivos os resultados que deveriam ser

classi�cados como não sendo da classe c e foram classi�cados como sendo de

c.

• Falso negativo (FN): são falsos negativos os resultados que deveriam ser

classi�cados como sendo da classe c e foram classi�cados como não sendo de

c.

A partir destas classi�cações de resultados, pode-se �nalmente calcular o

valor das métricas citadas anteriormente:

Acurácia: é a mais simples das métricas. Basicamente, divide-se os valores clas-

si�cados corretamente pelo conjunto total dos dados.

Acuracia =PV +NV

PV +NV + FP + FN

Precisão: a precisão foca exclusivamente nos valores classi�cados como positivos

pelo sistema, expondo quantos destes são realmente positivos.

Precisao =PV

PV + FP

Page 34: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Recall: o recall foca nos valores que são verdadeiramente positivos, determinando

a fração destes que foi classi�cada corretamente.

Recall =PV

PV + FN

F1: a pontuação F1 é uma média harmônica entre as métricas de precisão e recall,

F1 =2 · Precisao ·RecallPrecisao+Recall

Ou nos mesmo termos utilizados nas outras métricas:

F1 =2

2 · PV + FP + FN

É importante destacar que a pontuação F1 é uma versão da pontuação Fβ,

em que β = 1. Nesta caso, precisão e recall são tratadas com o mesmo peso. Para

tratar o recall com maior peso, utiliza-se β > 1, enquanto β < 1 valoriza mais a

precisão. A pontuação Fβ é dada por:

Fβ = (1 + β2) · β2 · Precisao ·RecallPrecisao+Recall

3.1.2 Aprendizagem profunda

A aprendizagem profunda (do inglês "deep learning") é um termo mais

recente na aprendizagem de máquina. Ela é um subcampo desta, formado por

algoritmos modernos de redes neurais arti�ciais. O termo �profunda� vem des-

tes algoritmos de redes neurais que podem ter um vasto número de camadas de

atuação.

3.2 Redes neurais

Redes neurais são sistemas que se tornaram muito populares em tempos

recentes com o crescente uso de aprendizagem de máquina. O nome destes sis-

temas, mais corretamente chamados de redes neurais arti�ciais (RNA), vem das

redes neurais biológicas, formadas pelas interconexões dos neurônios, isto porque

Page 35: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

o nascimento das RNA é associado à tentativa de cientistas de traduzir o cérebro

humano em um circuito lógico (KRIESEL, 2007).

A origem das redes neurais arti�ciais é tipicamente associada ao modelo

lógico-matemático desenvolvido por Warren McCulloch e Walter Pitts, em 1943

(MCCULLOCH; PITTS, 1943). Neste modelo, os autores, na busca de compre-

ender o funcionamento cerebral, desenvolveram o neurônio lógico, uma espécie de

simpli�cação binária de um neurônio biológico. O artigo de McCulloch e Pitts ti-

nha como área de origem o campo da neurociência, mas por algumas razões, a

principal delas a binariedade na abordagem do neurônio, acabou por ser ignorada

neste. Entretanto, o artigo se tornou extremamente valioso para os campos da

computação e da matemática na metade do século XX, sendo o artigo conside-

rado o fundador do campo matemático de Teoria dos Autômatos; e in�uenciando

o matemático John von Neumann, criador da Arquitetura de von Neumann.

3.2.1 Redes neurais arti�ciais

A rede neural moderna é uma rede formada por pequenas unidades compu-

tacionais, onde cada unidade recebe um conjunto de valores reais como entrada,

realiza algum tipo de processo computacional neste conjunto e produz uma saída

única (JURAFSKY; MARTIN, 2018).

3.2.1.1 Neurônios

viés

e1

e2

en

p1

p2

pn

Σ f

... ...

ativaçãoSaída

Figura 2 � Modelo simpli�cado de um neurônio arti�cial.

Page 36: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

As unidades computacionais da rede neural são denominadas neurônios.

De forma geral, o que o neurônio realiza é a soma ponderada de suas entradas,

somadas também a um valor adicional, chamado viés. Sendo z a soma ponderada,

v o viés, pn o peso para o valor na posição n e xn o próprio valor na posição n, o

processo corresponde à equação:

z = v +∑

pixi (3.1)

Considerando p e x como dois vetores, o que é coerente com suas descrições

acima, é possível representar a equação (3.1) com o uso de um produto escalar:

z = p · x+ v (3.2)

As unidades da rede neural, entretanto, não repassam à camada seguinte os

valores de z. A saída da unidade é de�nida com o uso de uma função de ativação.

Esta é uma função não-linear, aplicada aos valores de z para obter uma saída

padrão. Sendo y a saída da unidade, a função de ativação é dada por:

y = f(z) (3.3)

Na Figura 2 é apresentado o modelo simpli�cado do neurônio arti�cial,

contendo a sequência de operações representada pelas equações (3.2) e (3.3).

3.2.1.2 Funções de ativação

Uma função de ativação, como já mencionado, é uma função não-linear

que atua na saída do neurônio arti�cial. A utilidade e necessidade das funções de

ativação está na busca pela padronização das saídas em cada neurônio da rede.

Cada camada de neurônios busca de�nir uma função a partir de seus pesos e

do viés, mas é necessário que a saída de�nida por este neurônio forneça alguma

informação ao sistema. No problema da classi�cação, por exemplo, a saída do

neurônio pode dizer se sua entrada pertence a uma classe, ou então o quanto ela

pertence à classe. No primeiro caso, tem-se uma resposta binária, no segundo, uma

resposta analógica.

Page 37: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Portanto, utiliza-se estas funções de ativação para moldar a saída de modo

a melhorar a percepção do sistema. As funções de ativação mais populares em

redes neurais são as funções sigmoide, tanh (tangente hiperbólica) e ReLU (NAIR;

HINTON, 2010). Esta última, ReLU - unidade linear reti�cada - possui uma série

de versões alternativas bastante utilizadas, como Leaky ReLU (MAAS; HANNUN;

NG, 2013), PReLU (HE et al., 2015), RReLU (XU et al., 2015) e ELU (CLEVERT;

UNTERTHINER; HOCHREITER, 2015).

As funções sigmoide e tanh são funções próximas, sendo a tanh um sigmoide

redimensionado. Ambas as funções mantém a saída dentro de um intervalo �nito,

sigmoide entre -1 e 1 e tanh entre 0 e 1. Isto evita valores muito grandes de

ativação que eventualmente possam �quebrar� o funcionamento do sistema. Para

isso, utilizam-se da divisão e da função exponencial:

sigmoide : σ(x) =1

1 + e−x(3.4)

tanh(x) =2

1 + e−2x− 1 (3.5)

E a relação entre as duas é dada por:

tanh(x) = 2σ(2x)− 1 (3.6)

A função ReLU é a mais simples das três, e a mais utilizada em redes

neurais. ReLU é uma função de�nida por partes: para os valores de x inferiores ou

iguais a zero, ela tem saída sempre igual a zero; já para os valores de x maiores

que zero, a saída segue uma função linear linear.

ReLU(x)

0 x ≤ 0

x x > 0(3.7)

A ReLU é, portanto, não-saturada, ou seja, os seus valores altos em nenhum

momento convergem a algum valor, ao contrário das funções sigmoide e tanh. A

perda de segurança ao permitir que os resultados positivos variem inde�nidamente

Page 38: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

é compensada por uma distribuição mais esparsa de saídas, que permite um fun-

cionalmente mais �elmente analógico do que nos modelos com saturação, e assim

guardando melhor as distâncias entre os dados distantes da origem. Os valores de

saída 0 permitem ao sistema menos ativação (valores válidos de saída, 6= 0), o que

torna mais leve o processamento da rede. Isto somado à computação simples de

uma função linear, faz do ReLU mais computacionalmente e�caz que os demais.

A maioria das versões alternativas da ReLU modi�ca somente a parte em

que x ≤ 0, devido a problemas que uma derivada de valor zero pode trazer na

aplicação do método do gradiente, utilizado pela rede para encontrar os melho-

res parâmetros para o sistema. Na função Leaky ReLU, por exemplo, os valores

negativos também são lineares, mas multiplicados por um fator 0, 01. Na ReLU

paramétrica (PReLU ), este fator é uma constante α de�nida pelo desenvolvedor

da rede.

3.2.1.3 Otimizadores e método do gradiente

A rede neural também possui otimizadores, funções que buscam melhorar as

mudanças em parâmetros no treinamento. O método do gradiente minibatch é um

algoritmo de otimização que tem grande importância no aprendizado de máquina.

Ele utiliza a lógica do método do gradiente para vários subconjuntos de dados

(batches ou minibatches) com o objetivo de otimizar a função de saída obtida no

treinamento. Quando este possui minibatch = 1, pode ser chamado de método do

gradiente estocástico ou SGD (Stochastic Gradient Descent) (JURAFSKY; MAR-

TIN, 2018).

No método do gradiente se procura encontrar um mínimo local que reduza

a função de perda (ou de erro), método interno da rede neural que mensura o quão

distante ela está do resultado ótimo esperado. Para isto, utiliza-se uma função

gradiente para encontrar no espaço n-dimensional que rodeia o estado atual uma

nova aproximação de pesos e parâmetros que reduza mais esta função de perda.

O método minibatch é uma forma de método do gradiente que realiza o

procedimento em uma parte dos dados de cada vez. Ao não aplicar o método a

todos os dados, o método minibatch permite uma maior velocidade no processo

Page 39: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

ao reduzir os custos computacionais quando se trabalha com conjuntos de dados

muito grandes.

Através de alterações ao método do gradiente, surgiram diversos tipos de

otimizadores utilizados atualmente em projetos de redes neurais. Alguns exemplos

de otimizadores são: Adam (KINGMA; BA, 2014), Adamax (KINGMA; BA, 2014),

Adadelta (ZEILER, 2012), Adagrad (DUCHI; HAZAN; SINGER, 2011), Nesterov

(NESTEROV, 1983), Nadam (DOZAT, 2016), RMSProp (TIELEMAN; HINTON,

2012) e até o próprio SGD.

3.2.1.4 Camadas

Cada neurônio pertence a uma camada da rede neural, separadas pela sua

ordem na sequência do processamento. A maior parte das unidades da rede forma

a chamada camada oculta, responsável pela maior parte do processo da rede. Sendo

as demais responsáveis pela camada de saída. As RNAs são organizadas conforme

apresentado na �gura 3.

Camadasocultas

A

B

C

?

?

Y

?

?

Entrada Saída(s)

Figura 3 � Modelo simpli�cado de uma rede neural.

A camada de entrada consiste basicamente daquilo que alimenta a rede.

As camadas ocultas consistem em conjuntos de unidades intermediárias que pro-

cessam as suas entradas para alimentar a camada seguinte. A camada de saída é

Page 40: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

responsável pelo processamento �nal da rede, onde a informação obtida nas cama-

das ocultas é traduzida em uma saída compreensível.

3.3 Redes convolucionais

Redes convolucionais (CNN), ou redes neurais convolucionais, são um tipo

de rede neural especializado em processamento de dados em formato matricial ou

vetorial. O diferencial desta rede é resultado da substituição de operações mais

comuns em outros tipos de redes neurais, como a multiplicação, pela convolução.

As CNN são amplamente utilizadas em aplicações práticas, sendo especialmente

populares no processamento de imagens.

Em alguns tipos de técnicas de processamento de dados buscam ou exigem

uma ordem especí�ca para o funcionamento correto. Em PLN (Processamento

de Linguagem Natural), por exemplo, pode ser estritamente necessário que as

palavras estejam numa determina ordem para serem entendidas corretamente. Em

detecção de imagens isso não ocorre, espera encontrar algo numa imagem (pessoa,

animal ou objeto) independentemente de onde ele se encontra. Nestes casos, as

redes convolucionais funcionam de forma a extrair as principais características de

várias partes da imagem, e através destas características determinar onde deve

estar o objeto procurado.

Por meio de técnicas de pré-processamento de palavras, como os n-gramas,

é possível utilizar as redes convolucionais para algumas aplicações de PLN. Dessa

forma, é possível buscar características importantes num texto vetorizado e com

isso utilizar uma CNN para classi�cação de intenções em textos, e este método

tem obtido resultados relevantes em pesquisas recentes, conforme apontado por .

3.3.1 Convolução

Para compreender o que se passa nas redes convolucionais e como elas se

diferenciam dentre as redes neurais, é preciso detalhar como funciona a convolução.

A convolução é uma operação matemática formal entre duas funções. Ela

gera como saída uma terceira função, que representa uma modelagem da primeira

Page 41: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

função (x) pela segunda (w). A convolução é de�nida formalmente por:

s(t) =

∫x(a)w(t− a)da (3.8)

E o operador convolucional pode ser representado por um asterisco (∗),podendo a fórmula acima ser escrita como:

s(t) = (x ∗ w)(t) (3.9)

É importante notar que o argumento w na equação acima é chamado, pela

terminologia das redes neurais e convolucionais, de kernel, ou �ltro. Refere-se à

saída s(t) como mapa de características.

Quando se trabalha com valores discretos, é possível substituir a integral

presente na equação (3.8) por um somatório:

s(t) =∞∑

a=−∞

x(a)w(t− a)da (3.10)

E no caso de se trabalhar com duas dimensões, incluem-se dois somatórios

para percorrer todo o espaço discreto nos dois sentidos.

S(i, j) =∑m

∑n

I(m,n)K(i−m, j − n) (3.11)

Finalmente, a convolução bidimensional e discreta pode ser tratada como

uma simples operação entre matrizes, conforme descrito na �gura 4, onde uma

matriz de entrada 3x3 é convolucionada por uma matriz kernel 2x2, resultando

numa saída 2x2 em que cada posição corresponde a uma soma de produtos entre .

Page 42: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

1

4

7

2

8

5

3

6

9

1 0

-1 2

7 9

13 15

a

d

g

b

h

e

c

f

i

w x

y z

w*a + x*b + y*d + z*e

w*d + x*e + y*g + z*h

w*b + x*c + y*e + z*f

w*e + x*f + y*h + z*i

Entrada Kernel Saída

Entrada Kernel Saída

Figura 4 � Convolução simples.

3.3.2 Pooling

Após ser realizada a convolução sobre as características do texto, a próxima

etapa de uma rede convolucional é chamada de pooling. Nesta etapa, uma função

é responsável por receber as saídas dos processos de convolução e combiná-las em

um único vetor capaz de expressar as principais características do texto.

A função de pooling possui algumas variações, sendo uma abordagem co-

mum utilizar uma função que guarda os valores máximos de cada vetor de dados

de entrada.

3.3.3 Arquitetura geral

Desta forma, podemos descrever o sistema de uma rede convolucional com

pelo menos duas camadas ocultas: uma camada de convolução e uma camada de

pooling. Além delas, uma camada de saída que aplique as operações necessárias,

como descartes e a função �nal de ativação.

Quando se trabalha com PLN, entretanto, é necessário vetorizar as entradas

do processamento, uma vez que um texto ou string recebida de um usuário não

possui o formato vetorial necessário para uma convolução. Além disso, para obter

um resultado satisfatório, que leve em conta algum contexto existente no texto,

Page 43: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

usa-se a técnica das n-gramas, quebrando o texto não somente em palavras, mas

em grupos de palavras.

São as vetorizações destes grupos que sofrerão o processo de convolução.

Assim, pode-se descrever uma possível rede convolucional pelo modelo descrito na

Figura 5.

Quando

é

a

minha

c11 c12 c13 c1n

c21 c22 c23 c2n

c31 c32 c33 c3n

c41 c42 c43 c4n

f

f

f

fPooling  m?

max

próxima

prova

c51 c52 c53 c5nfc61 c62 c63 c6nf

conv

m1

conv

conv

conv

m2

m3

m4

****

Figura 5 � Exemplo de uma rede convolucional simples em PLN.

Como pode ser visto na 5, as saídas das convoluções com o kernel passarão

pela função de ativação, antes de irem ao pooling. Observa-se também que a saída

do pooling é unitária, mas isto não é necessário, podendo esta saída variar inde�ni-

damente de tamanho. Além disso, como será observado no Capítulo 4, na descrição

da arquitetura utilizada neste trabalho, podem ser utilizadas várias camadas de

convolução diferentes, sendo as saídas destas unidas após o pooling. Com mais ca-

madas, o sistema tem uma maior riqueza de dados para realizar sua previsão, e,

salvo casos de sobreajuste, deve obter melhores resultados.

É interessante mencionar também ao observar a Figura 5 que, ao utilizar

janelas de convolução em mais de uma linha da matriz de texto ao mesmo tempo,

a rede convolucional aplica implicitamente o conceito de n-grama, uma vez que o

processamento está inicialmente analisando contextos reduzidos da frase.

Page 44: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos
Page 45: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

4 Desenvolvimento do chatbot

4.1 Projeto

Este projeto consiste em um software de dois módulos distintos: um módulo

administrativo (ou administrador) e um processador. Estes módulos funcionam se-

parados, mas utilizam dados produzidos pelo outro para realizar suas tarefas. E

essa ponte entre os dois é permitida pelo banco de dados interno da aplicação.

Módulo administrativo: responsável por permitir a manipulação do banco de

dados interno da aplicação, de forma a permitir a adição e remoção de intenções,

entidades ou outras variáveis menos relevantes. Além disso, permite a visualização

das mensagens e o julgamento sobre como o assistente classi�cou aquelas mensa-

gens.

Módulo processador: a parte responsável por aplicar todas as técnicas de apren-

dizagem de máquina, incluindo treinar os dados - guardados no banco de dados

interno - e classi�cá-los conforme chegam novas mensagens. Ele também �ca res-

ponsável por realizar comunicações com a API de Sistemas da UFRN, utilizando-se

dela para responder algumas das perguntas do usuário.

Banco de dados: parte essencial do chatbot. Nele estarão contidas todas as infor-

mações necessárias para a realização do treinamento de reconhecimento de texto

pelo processador, bem como todas as informações a serem trabalhadas pelo admi-

nistrador.

A Figura 6 apresenta um diagrama de caso de uso do chatbot , no qual estão

apontados os agentes que interagem no funcionamento do bot, assim como suas

responsabilidades neste funcionamento. Neste caso, o usuário envia mensagens ao

bot ; o processador extrai as entidades identi�cadas no texto e identi�ca as inten-

ções, tudo com suporte de consultas ao banco de dados; e o administrador observa

todo este processo, julgando os resultados e realizando alterações nas intenções e

entidades caso necessário.

Page 46: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

INTERAÇÃO COM O CHATBOT

Troca mensagens

Gerencia entidades

Gerencia intençõesExtrai entidades

Identifica intenção

Consulta entidades

Consulta intenções

<< include >>

<< include >>

<< include >>

Julga resultado doprocessamento Adiciona mensagem ao

banco de dados

<< include >>

Processador

Administrador

Usuário

<< include >><< extend >>

<< extend >>

<< include >>

Figura 6 � Caso de uso do chatbot

4.2 Ferramentas

Diversas ferramentas foram utilizadas para o desenvolvimento deste pro-

jeto. Algumas destas foram escolhidas em função do padrão utilizado no ambiente

de desenvolvimento � a Superintendência de Informática da UFRN (SINFO) � e

outras foram escolhidas após pesquisas e avaliações realizadas. Abaixo estão lis-

tadas e brevemente introduzidas as principais ferramentas utilizadas no projeto:

linguagem, softwares e principais bibliotecas.

Java

Java é uma linguagem de programação de propósito geral que tem como conceito

principal a orientação a objetos. Derivada da linguagem C, ela foi iniciada em

1991 por James Gosling, Mike Sheridan e Patrick Naughton, e hoje é considerada

juntamente à própria linguagem C e à C++, uma das mais populares linguagens

Page 47: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

de programação (BYOUS, 1998; ORACLE, 2015).

Todo o projeto deste assistente virtual tem como base a linguagem Java, isto por-

que, além de terem sido encontradas ferramentas de licença livre adequadas para

o desenvolvimento do projeto - as quais serão mencionadas a seguir - também foi

levado em consideração que os demais sistemas desenvolvidos e/ou em desenvolvi-

mento na SINFO a utilizavam.

Spring

Spring é um web framework que permite a criação de modelos compreensíveis de

programação e con�guração. Ele foi criado por Rod Johnson e teve sua primeira

versão publicada em 2002. (JOHNSON, 2006; PITOVAL, 2018) No contexto deste

projeto, o Spring é utilizado para estruturar todo o funcionamento do módulo

administrativo, facilitando a comunicação com o banco de dados.

Thymeleaf

Thymeleaf é um software de código aberto criado por Daniel Fernández, ele é

uma ferramenta para desenvolvimento/con�guração de templates para Java. Pos-

sui total integração com o Spring Framework e tem capacidade para processar

os formatos XML, XHTML, CSS, Javascript e HTML (THYMELEAF, 2018). O

Thymeleaf é utilizado no projeto dentro do código HTML das páginas do módulo

administrativo, com o objetivo exibir as consultas e permitir a manipulação dos

dados exibidos.

Apache OpenNLP

Apache OpenNLP é uma biblioteca Java da Apache que possui algumas ferra-

mentas relacionadas ao PLN (APACHE FOUNDATION, 2018). Neste projeto, foi

utilizado o módulo nameFinder da biblioteca para realizar a extração de entidades,

técnica que permite a identi�cação de palavras-chave no texto.

Page 48: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Deeplearning4j

Deeplearning4j, ou DL4J, é uma biblioteca Java de código aberto lançada em

2014 pela Skymind, que desde 2017 faz parte da Eclipse Foundation. DL4J per-

mite ao usuário projetar seu próprio modelo de redes de aprendizado profunda

(SKYMIND, 2018). Neste projeto, o DL4J foi utilizado para arquitetar uma rede

neural convolucional, que é utilizada para realizar a identi�cação das intenções nas

mensagens recebidas pelo bot.

API de Sistemas da UFRN

A API de Sistemas da UFRN é uma interface de programação de aplicação que

tem por objetivo permitir aos seus usuários o acesso aos dados referentes à UFRN e

aos seus funcionários e alunos, mediante identi�cação e autorização prévia (SINFO,

2018). É através da API que é possível ao chatbot obter informações associadas a

um usuário especí�co e às suas turmas.

PostgreSQL & pgAdmin

O banco de dados interno da aplicação foi construído no pgAdmin, que é uma fer-

ramenta de gerenciamento de bancos de dados PostgreSQL (PGADMIN, 2018). O

PostgreSQL é um sistema de bancos de dados objeto-relacionais (POSTGRESQL,

2018). Os bancos de dados em PostgreSQL são um dos padrões utilizados pela

SINFO.

4.3 Funcionamento

4.3.1 Administrador

O módulo administrador trabalha com o banco de dados interno da aplica-

ção. Para isto, este módulo é composto por conjuntos de páginas web, em HTML,

cada um representando uma tabela existente no banco de dados. As páginas de

cada conjunto tem por objetivo criar, editar, exibir ou listar. Para o funcionamento

adequado destas páginas, são criadas quatro classes Java para cada conjunto, se-

Page 49: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

guindo a lógica do framework Spring utilizado: Model, Repository, Service e Con-

troller.

Neste módulo é possível preparar os arquivos para treino, tanto da rede

neural, quanto do reconhecedor de intenções. Também é possível visualizar as

mensagens recebidas pelo bot e corrigir a intenção identi�cada, caso a mensagem

tenha sido classi�cada erradamente. Além disso, pode-se adicionar palavras-chave

que, se identi�cadas na mensagem enviada por um usuário, esta receberá um �peso�

maior, ganhando prioridade de visualização.

Todas as entradas salvas neste módulo e que serão encaminhadas para a

rede neural são em formato de texto. Cada intenção é salva como um bloco único

de texto, contendo diversas formas diferentes do usuário transmitir esta intenção,

e cada entidade é adicionada individualmente e marcada com seu tipo.

4.3.2 Processador

O módulo processador se responsabiliza pela parte de conversação com o

usuário, ele é capaz de receber a entrada (mensagem), utilizar as técnicas de inteli-

gência arti�cial para extrair da entrada as informações necessárias, e então utilizar

estas informações para decidir o tipo de resposta que dará ao usuário e também

sua formulação.

Inicia-se o módulo pelos treinamentos do reconhecedor de entidades e da

rede. Primeiramente, é realizado o treinamento da rede neural, que recebe os dados

de todas as intenções existentes no banco de dados, linha por linha. Em seguida,

o reconhecedor de entidades é treinado com padrões de entrada pré-de�nidos em

código, que utilizam os dados das entidades e sinônimos salvos no banco de dados

para gerar textos marcados como os vistos na seção 2.3.3. Com estes dois treinados,

o bot está apto a receber as mensagens dos usuários, �cando �a espera� delas.

Uma vez que uma mensagem é enviada, o chatbot veri�ca se há algum

assunto pendente, ou seja, se o usuário está respondendo algum questionamento

feito pelo próprio programa. Caso haja, a resposta é encaminhada à função de

continuação, que é responsável por dar continuidade ao �uxo de conversa em curso.

Caso não haja, é veri�cado em seguida se há alguma marcação (tag) no início do

Page 50: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

texto recebido e, se houver, o bot considerará isso como um comando e a mensagem

será encaminhada à função responsável por eles. Caso também não haja marcação,

o texto será �nalmente tratado pelo reconhecedor de entidades e passará pela rede

neural, onde será classi�cado e então encaminhado à função seletora geral.

Usuário enviamensagem

Sim NãoHá assuntopendente?

Há marcação inicial?Trata continuação Sim Não

Chama função damarcação

Realiza classificaçãoda mensagem

Figura 7 � Fluxograma do funcionamento da função principal.

As funções seletoras são separadas em três tipos: de continuação, de marca-

ção e geral. Estas funções possuem o objetivo simples de encaminhar a mensagem

à sua função de resposta correta. A função seletora geral utiliza a intenção iden-

ti�cada pela rede neural para selecionar a função especí�ca correta, enviando à

função também as entidades identi�cadas. A função de marcação seleciona exclu-

sivamente pela marcação inicial identi�cada, passando à função de resposta o texto

subsequente. A função de continuação tem por objetivo permitir um �uxo de con-

versa entre o chatbot e o usuário, permitindo ao bot realizar questionamentos ao

usuário em caso de informações incompletas ou até mesmo permitir uma interação

ao estilo de �preenchimento de formulário� para o caso de algumas tarefas mais

complexas.

Finalmente, as funções de resposta são as responsáveis em montar a resposta

ao usuário, utilizando-se dos parâmetros passados pela função seletora e/ou de

Page 51: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

acessos à API de Sistemas. Uma vez montada, a resposta é retornada à função

principal, que responde ao usuário.

A Figura 8 é uma representação esquemática do procedimento descrito

acima, incluindo também a relação com o aplicativo de mensagens externo uti-

lizado pelo usuário. Na �gura é possível ver que toda interação deverá iniciar no

usuário e encerrar no aplicativo, com a função principal, descrita no início desta

seção, sendo a responsável por realizar a comunicação direta.

FUNÇÃO SELETORA

PRINCIPAL 

Geral

de Marcação

de Continuação FUNÇÃO­RESPOSTA 

APLICATIVO DEMENSAGENS

USUÁRIO

CHATBOTEXTERNOVariáveis de estado

RESPOSTA

S S

Banco dedados

API

Figura 8 � Representação do funcionamento do módulo processador.

4.4 A rede convolucional

A rede neural convolucional foi construída com o auxílio a biblioteca De-

eplearning4j e foi projetada para funcionar como um classi�cador de intenções.

O modelo inicial projetado foi inspirado em Kim (2014), que realizou testes de

diferentes modelos de CNNs, e obteve resultados que defendem a universalidade

dos modelos de palavras vetorizadas pré-treinados. Isto é, que programas que não

possuem dados su�cientes para criar modelos de vetores de palavras robustos po-

dem utilizar modelos externos, como os disponibilizados por Google ou Wikipédia,

sem perdas signi�cativas.

A Figura 9 apresenta a arquitetura da rede convolucional utilizada no pro-

Page 52: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

jeto, nela é possível observar que a rede possui várias camadas convolucionais pa-

ralelas, cada uma destas associada à camada de pooling, e uma camada de saída,

que aplica os processos de descarte e a função de ativação Softmax. As camadas

paralelas operam com um kernel e uma quantidade de n-gramas diferentes cada

uma. A primeira camada usa trigramas, a segunda quadrigramas e a terceira quin-

quegramas. As saídas destas camadas de convolução se unem para formar os ma-

pas de características, que guardam as informações descobertas pelas convoluções.

Na penúltima camada (pooling), os valores máximos destes mapas são �ltrados

e enviados à camada �nal, onde a função Softmax é responsável por calcular a

probabilidade para cada intenção.

Convolução 5xn

Convolução 4xn

Convolução 3xn

Entrada

Pooling max 

Saída softmax 

o restaurante universitário 

vai abrir 

de que 

horas 

Resultado

Figura 9 � Rede convolucional para a classi�cação.

As demais características da rede desenvolvida foram deixadas como en-

trada da função, de modo que esta pudesse ser testada em diversas con�gurações

diferentes, a �m de encontrar a situação mais próxima da ótima para os objetivos

deste trabalho.

4.4.1 Teste de hiperparâmetros

Para poder encontrar a con�guração mais próxima de um funcionamento

ideal foi criada uma rotina de testes que aleatoriamente testava diversas combina-

ções possíveis de hiperparâmetros. Foram salvas as estatísticas dos testes destas

Page 53: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

con�gurações a cada época testada e com o auxílio de alguns scripts foi analisado

o comportamento destas variações.

Quando alguma con�guração aparecia como um possível resultado ótimo,

esta era testada em uma nova rotina de testes, que utiliza exemplos de mensagens

recebidas para testar a margem de certeza que a rede possui quando classi�ca. Isto

porque mesmo que uma con�guração possua uma maior acurácia no âmbito geral,

esta pode errar muito em casos especí�cos, tornando alguma intenção muito difícil

de ser identi�cada. Dessa forma, o que se busca é uma função que possui uma boa

taxa de acerto para cada intenção e que também identi�que esta intenção com

uma boa certeza (≥ 50%).

A rede neural sempre terá uma saída que corresponde a um vetor de ta-

manho n, sendo n o número de classi�cações (intenções) existentes, mesmo que a

mensagem do usuário se re�ra a algo que não corresponde a nenhuma das inten-

ções. Esta saída é, portanto, importante para o comportamento do bot, já que ela

revela o quanto o bot pode con�ar na classi�cação da rede. Uma intenção identi�-

cada com uma certeza muito baixa possui uma probabilidade maior da classi�cação

estar errada, e duas certezas altas porém próximas demonstram uma dúvida no

sistema, independentemente de qual das duas tem maior probabilidade.

I %

A 34

B 33

C 33

I %

A 50

B 49

C 1

I %

A 50

B 25

C 25

I %

A 80

B 10

C 10

S1 S2 S3 S4

Figura 10 � Exemplo de probabilidades de intenções na classi�cação.

Na Figura 10, há um pequeno exemplo de como o classi�cador poderia

prever uma intenção, considerando três intenções �ctícias A, B e C. O classi�cador

determinará a probabilidade da mensagem recebida ser uma das três intenções de

forma que a soma das suas probabilidades seja sempre de 100%. Nos testes gerais de

Page 54: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

hiperparâmetros, aqueles que avaliam a con�guração do sistema, todos os exemplos

acima seriam classi�cados igualmente, e considerando que todos sejam exemplos

de intenção A, seriam todos classi�cados como corretos.

Observa-se, porém, como existe uma diferença na certeza do classi�cador.

No primeiro caso (S1), a probabilidade é quase a mesma para as três intenções,

com a probabilidade de não-A sendo, inclusive, muito alta (66%). No segundo

caso, por mais que a probabilidade de A seja de 50%, dentro do limite desejado no

projeto, a diferença para B é de apenas 1%, não havendo uma margem de certeza

segura na avaliação do classi�cador sobre a intenção escolhida. Nos exemplos S3 e

S4 já se pode ver uma diferença bem mais signi�cante na probabilidade da função

ser A em relação às demais.

No bot, os casos S1 e S2 devem resultar em alguma mensagem de erro (Ex.:

"Não entendi, poderia escrever de outro modo?"), já os casos S3 e S4 resultariam

em respostas esperadas para a intenção A.

Page 55: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

5 Resultados

5.1 Hiperparâmetros

Para de�nir os hiperparâmetros a serem utilizados foram realizados os pro-

cedimentos mencionados no capítulo anterior. Inicialmente foram testadas diversas

combinações aleatórias e aquelas que conseguiam resultados melhores pontuações,

eram testadas mais a fundo com mensagens-teste para obter a margem de certeza.

A maior parte das funções de maior aproveitamento foi descartada rapida-

mente por confundir facilmente alguns casos mais próximos de intenções. Outras

foram descartadas por depender demais de uma quantidade muito grande de exem-

plos para a identi�cação adequada de qualquer intenção. Ao �nal, foi adotada a

seguinte con�guração:

Função de ativação Leaky ReLU

Otimizador Adamax

Tamanho do batch 16

Taxa de aprendizado 0,1

Tal con�guração foi adotada por obter uma ótima pontuação geral, pos-

suir boa margem de certeza e funcionar com tamanhos pequenos de exemplos de

intenção. Apesar disso, nada garante que esta seja a melhor con�guração para

o problema de reconhecimento de intenções. Para garantir então que não fosse

escolhida uma con�guração muito distante do ótimo, foram comparados os resul-

tados obtidos por cada con�guração e foram comparadas as funções de ativação e

otimização.

Page 56: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Figura 11 � Comparação de funções de ativação no bot.

Na Figura 11, pode-se observar a comparação dos resultados das funções

de ativação testadas. Nela é possível ver que a Leaky ReLU escolhida é de fato a

que obtém o melhor resultado geral, apresentando pontuação F1 consistentemente

superior às demais funções a partir da terceira época de treinamento.

Figura 12 � Comparação de otimizadores no bot.

Page 57: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Na comparação de otimizadores foram levadas em consideração apenas as

combinações com a função de ativação Leaky ReLU. Os resultados para os otimiza-

dores testados são apresentados na Figura 12. Nela, observa-se que houve grande

proximidade entre os resultados, com cinco funções obtendo pontuação F1 média

superior a 0, 95 da quinta à décima época. Ainda assim, a função Adamax escolhida

se encontra entre os dois melhores resultados em todas as épocas.

Os resultados do teste, portanto, foram favoráveis quanto à escolha desta

con�guração para a identi�cação das intenções no módulo processador.

5.2 Administrador

Mensagens

Na seção de mensagens do administrador é possível visualizar todas as men-

sagens recebidas pelo bot bem como julgar se cada uma foi classi�cada correta-

mente. Esta visualização é apresentada na Figura 13, em que a intenção é marcada

com uma chave (�livro�, neste caso). Se o administrador pressionar o botão �con�r-

mar�, os dados de treino da intenção �livro� serão incrementados com a mensagem

observada. O administrador também pode corrigir a intenção, incrementando uma

outra e assim ajudando o chatbot a classi�cá-la corretamente no futuro.

Figura 13 � Visualização de mensagem recebida do chatbot

Page 58: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Entidades

Na seção de entidade, pode-se observar os diferentes tipos de entidades,

como cursos, componentes ou unidades; e também podem ser vistas as entidades

para cada tipo. Na Figura 14 pode ser observada uma lista de componentes para

serem identi�cados. Enquanto na Figura 15 é possível observar as características

da entidades, em especial a lista de sinônimos, ou seja, as diferentes formas que

essa entidade pode ser chamada.

Figura 14 � Visualização de tipo de entidade do chatbot

Figura 15 � Visualização de entidade do chatbot

Intenções

As páginas de intenções interferem diretamente na rede neural. Cada inten-

ção adicionada é uma classe a mais a ser identi�cada pela rede, e os dados recebidos

pela rede estão todos lá para serem editados. Estes dados estão representados na

Page 59: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Figura 16 em �Variações�. É possível adicionar respostas-padrão para cada inten-

ção na parte �Respostas� no �nal da página. Quando uma intenção é con�rmada

ou corrigida na seção de mensagens, é exatamente no campo de variações que ela

será adicionada.

Figura 16 � Visualização de intenção do chatbot

5.3 Processador

O teste do processador é feito por meio da plataforma em que o chatbot

está inserido. Aqui estão apresentadas em sequência algumas demonstrações do

assistente identi�cando textos de diferentes características enviados pelo usuário.

Os primeiros exemplos, na Figura 17, são de funções que utilizam somente

o identi�cador de intenções (a rede convolucional). À esquerda, pode-se ver um

exemplo de uma resposta-padrão, em que a intenção busca diretamente do banco

de dados a resposta já pronta. À direita, vê-se exemplos de respostas em que os

dados são coletados na API e modi�cados para serem apresentados ao usuário.

Page 60: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Figura 17 � Interação com o bot.

Na Figura 18, pode-se ver algumas respostas a mensagens em que existem

entidades. Neste caso, as entidades são identi�cadas e é feita uma busca no banco

de dados para saber qual o signi�cado destas entidades. No exemplo, Engcomp

equivale a Engenharia de Computação e ECT equivale à Escola de Ciências e

Tecnologia. São enviados os nomes completos nas respostas para que, caso haja

uma identi�cação incorreta, esta seja facilmente veri�cada pelo usuário.

Na seguinte, Figura 19, há um exemplo de uma função com e sem entidade

identi�cada. Observa-se como as entidades funcionam como um �ltro na busca

de notícias de turma, com o chatbot respondendo genericamente a última notícia

entre todas as turmas quando uma especí�ca não é encontrada.

Page 61: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Figura 18 � Interação com o bot com entidades identi�cadas.

Figura 19 � Interação com o bot com mesma intenção m.

Há também a possibilidade de realização de �uxos de conversa (utilizando as

funções de continuação) para permitir ao bot a realização de tarefas mais complexas

de se entender em apenas uma sentença. Na Figura 20, vê-se uma consulta a livros

no acervo do SISBI (Sistema de Bibliotecas da UFRN). O usuário requisitou uma

busca e o bot respondeu à requisição realizando duas perguntas, uma para saber o

Page 62: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

�ltro de busca (autor, título ou assunto) e outra para saber o nome a ser procurado.

Devido ao pequeno tamanho das telas de smartphones, foram limitadas as buscas

a 10 resultados, podendo o usuário requisitar os próximos 10, até que não hajam

mais resultados.

Figura 20 � Interação com o bot em �uxo de conversa.

Finalmente, algumas consultas ao bot podem ser realizadas por meio de

marcadores. Na Figura 21 seguem alguns exemplos destas consultas.

Figura 21 � Interação com o bot através de marcadores.

Page 63: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

6 Conclusões

O objetivo deste projeto foi desenvolver um chatbot para ser aplicado à

comunidade acadêmica da UFRN com base em técnicas modernas de aprendizado

profundo. O projeto foi desenvolvido em Java, com uma rede neural convolucio-

nal arquitetada para identi�car as intenções nas mensagens recebidas. A rede foi

projetada, testada e teve seus hiperparâmetros decididos através da avaliação de

testes aleatórios de con�gurações. Foi criada uma estrutura de edição de banco de

dados em plataforma web para adicionar, remover e editar intenções e entidades,

assim como também visualizar as mensagens enviadas pelos usuários.

Compreende-se que o objetivo do trabalho foi alcançado, uma vez que: a

rede convolucional se mostrou capaz de identi�car as intenções nas mensagens

recebidas; os sinônimos de entidades foram identi�cados; e o chatbot foi capaz de

responder corretamente às mensagens do usuário.

Page 64: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos
Page 65: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

Referências

AMAZON. Alexa Experience Guide. 2018. Disponível em: <https://www.amazon.com/b?node=17934671011>. Acesso em: 17 de dez. de 2018. 17

APPLE. Siri. 2018. Disponível em: <https://www.apple.com/br/siri/>. Acessoem: 17 de dez. de 2018. 17

BOJANOWSKI, P. et al. Enriching word vectors with subword information.Transactions of the Association for Computational Linguistics, v. 5, p. 135�146,2017. 25

BYOUS, J. Java Technology: The Early Years. 1998. Disponível em:<https://web.archive.org/web/20050420081440/http://java.sun.com/features/1998/05/birthday.html>. Acesso em: 04 de dez. de 2018. 45

CARPENTER, R. About the Jabberwacky AI. 2018. Disponível em:<http://www.jabberwacky.com/j2about>. Acesso em: 04 de dez. de 2018. 22

CLEVERT, D.; UNTERTHINER, T.; HOCHREITER, S. Fast and accurate deepnetwork learning by exponential linear units (elus). International Conference onLearning Representations 2016, 2015. 35

COLBY, K. Arti�cial paranoia. Arti�cial Intelligence, v. 2, p. 1�25, 1971. 21

COLBY, K.; HILF, D. Can expert judges, using transcripts of teletypedpsychiatric interviews, distinguish human paranoid patients from a computersimulation of paranoid processes? 1972. 21

CREATIVE LABS, INC. Sound Blaster 1.5 - User Reference Manual. [S.l.], 1990.Disponível em: <http://ibm-pc.org/manuals/other/creative/SoundBlaster15.PDF>. 22

DOZAT, T. Incorporating nesterov momentum into adam. InternationalConference on Learning Representations 2016, 2016. 37

DUCHI, J.; HAZAN, E.; SINGER, Y. Adaptive subgradient methods for onlinelearning and stochastic optimization. Journal of Machine Learning Research,v. 12, p. 2121�2159, 2011. 37

HE, K. et al. Delving deep into recti�ers: Surpassing human-level performance onimagenet classi�cation. Proceedings of the International Conference on ComputerVision, p. 1026�1034, 2015. 35

Page 66: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

HERNDON, C. Case Study: How Georgia State Univer-sity supports every student with personalized text messa-ging. 2017. Disponível em: <https://blog.admithub.com/case-study-how-admithub-is-freezing-summer-melt-at-georgia-state-university>.Acesso em: 17 de dez. de 2018. 17

HUSSAIN, A. Ada - Bolton College's Latest Digital Assistant. 2017. Disponívelem: <http://www.aftabhussain.com/ada.html>. Acesso em: 17 de dez. de 2018.17

JOHNSON, R. Spring Framework: The Origins of a Project anda Name. 2006. Disponível em: <https://spring.io/blog/2006/11/09/spring-framework-the-origins-of-a-project-and-a-name>. Acesso em: 04 dedez. de 2018. 45

JURAFSKY, D.; MARTIN, J. Speech and Language Processing. 3. ed. [S.l.: s.n.],2018. 26, 30, 33, 36

KIM, Y. Convolutional neural networks for sentence classi�cation. EMNLP, p.1746�1751, 2014. 49

KINGMA, D.; BA, J. Adam: A method for stochastic optimization. Proceedingsof the 3rd International Conference on Learning Representations (ICLR), 2014.37

KRIESEL, D. A Brief Introduction to Neural Networks. 2007. Disponível em:<http://www.dkriesel.com>. 33

LING, W. et al. Two/too simple adaptations of word2vec for syntax problems.In: Proceedings of the 2015 Conference of the North American Chapter of theAssociation for Computational Linguistics: Human Language Technologies. [S.l.]:Association for Computational Linguistics, 2015. p. 1299�1304. 24

MAAS, A.; HANNUN, A.; NG, A. Recti�er nonlinearities improve neural networkacoustic models. Proceedings of ICML, v. 28, 2013. 35

MCCULLOCH, W.; PITTS, W. A logical calculus of ideas immanent in nervousactivity. Bulletin of Mathematical Biophysics, v. 5, p. 127�147, 1943. 33

MICROSOFT. Cortana: Sua assistente pessoal e virtual inteligente. 2018.Disponível em: <https://www.microsoft.com/pt-br/windows/cortana>. Acessoem: 17 de dez. de 2018. 17

MIKOLOV, T. et al. E�cient estimation of word representations in vector space.CoRR, 2013. 24

Page 67: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

MURPHY, K. Machine Learning : A probabilistic perspective. [S.l.]: MIT Press,2012. 29

NAIR, V.; HINTON, G. Recti�ed linear units improve restricted boltzmannmachines. Proceedings of ICML, v. 27, p. 807�814, 2010. 35

NESTEROV, Y. A method for unconstrained convex minimization problem withthe rate of convergence o(1/k2). Doklady AN USSR, v. 269, p. 543�547, 1983. 37

ORACLE CORPORATION. Java Language Speci�cation. 2015. Disponível em:<https://docs.oracle.com/javase/specs/jls/se8/html/jls-1.html>. Acesso em: 05de dez. de 2018. 45

PENNINGTON, J.; SOCHER, R.; MANNING, C. Glove: Global vectors for wordrepresentation. In: EMNLP. [s.n.], 2014. v. 14, p. 1532�1543. Disponível em:<https://nlp.stanford.edu/pubs/glove.pdf>. 24

PITOVAL SOFTWARE. Spring Framework Overview. 2018. Disponível em:<https://docs.spring.io/spring/docs/current/spring-framework-reference/overview.html>. Acesso em: 05 de dez. de 2018. 45

RODRIGUES, A. A history of smarterchild. 2016. Disponível em: <https://motherboard.vice.com/en_us/article/jpgpey/a-history-of-smarterchild>.Acesso em: 04 de dez. de 2018. 22

SKYMIND. Deeplearning4j. 2018. Disponível em: <https://skymind.ai/wiki/deeplearning4j>. Acesso em: 04 de dez. de 2018. 46

SUPERINTENDêNCIA DE INFORMáTICA DA UFRN. API de Sistemas daUFRN. 2018. Disponível em: <https://api.ufrn.br>. Acesso em: 04 de dez. de2018. 46

THE APACHE SOFTWARE FOUNDATION. Apache OpenNLP. 2018.Disponível em: <https://opennlp.apache.org>. Acesso em: 04 de dez. de 2018. 45

THE PGADMIN DEVELOPMENT TEAM. pgAdmin - PostgreSQL Tools. 2018.Disponível em: <https://www.pgadmin.org>. Acesso em: 04 de dez. de 2018. 46

THE POSTGRESQL GLOBAL DEVELOPMENT GROUP. PostgreSQL: TheWorld's Most Advanced Open Source Relational Database. 2018. Disponível em:<https://www.postgresql.org>. Acesso em: 04 de dez. de 2018. 46

THE THYMELEAF TEAM. Thymeleaf. 2018. Disponível em: <https://www.thymeleaf.org>. Acesso em: 04 de dez. de 2018. 45

Page 68: Desenvolvimento de um Chatbot usando redes de aprendizado ... · níveis de raiva e medo , com suas respostas sofrendo ariaçõves conforme o alorv desses níveis. Em experimentos

TIELEMAN, T.; HINTON, G. Lecture 6.5: Rmsprop: Divide the gradient by arunning average of its recent magnitude. Coursera: Neural networks for machinelearning, 2012. 37

WALLACE, R. S. The anatomy of a.l.i.c.e. 2002. Disponível em: <https://web.archive.org/web/20171230101216/http://www.alicebot.org:80/anatomy.html>.22

WEIZENBAUM, J. Eliza � a computer program for the study of naturallanguage communication between man and machine. Communications of theACM, v. 9, p. 36�45, 1966. 21

XU, B. et al. Empirical evaluation of recti�ed activations in convolution network.ICML Deep Learning Workshop, 2015. 35

ZEILER, M. Adadelta: An adaptive learning rate method. CoRR, abs/1212.5701,2012. 37