2017 - TCC - Chatbot
2017 - TCC - Chatbot
2017 - TCC - Chatbot
CAMPUS QUIXADÁ
BACHARELADO EM ENGENHARIA DE SOFTWARE
QUIXADÁ
2017
FELIPE NEVES BRITO
QUIXADÁ
2017
Dados Internacionais de Catalogação na Publicação
Universidade Federal do Ceará
Biblioteca Universitária
Gerada automaticamente pelo módulo Catalog, mediante os dados fornecidos pelo(a) autor(a)
Aprovada em:
BANCA EXAMINADORA
With the advancement of technology, customer service and frequently asked questions systems
have become increasingly more intelligents and autonomous. This paper presents the
development of a chatterbot able to answer questions about the course Information Systems,
from the Federeal University of Ceará - Quixadá Campus, using IBM Watson Conversation. The
goal of the project was to be able to respond to the main questions about the course, in a quickly
and with a high availability rate matter, besides being able to maintain a dialogue with several
people simultaneously. After the first validation of the chatterbot it was trained in order to learn
from it’s mistakes made in the validation and in the second validation, it was possible to obtain
positive results regarding the ability of the chatterbot to answer the questions in a satisfactory
way for the users, whether they are students or not.
SI Sistemas de Informação
1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2 TRABALHOS RELACIONADOS . . . . . . . . . . . . . . . . . . . . . 14
2.1 AGEbot: um chatterbot em AIML voltado para responder questões
sobre Epilepsia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2 Desenvolvimento de um chatbot para auxiliar o ensino de Espanhol
como Língua Estrangeira . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3 FUNDAMENTAÇÃO TEÓRICA . . . . . . . . . . . . . . . . . . . . . . 16
3.1 Sistemas de Resposta a Perguntas . . . . . . . . . . . . . . . . . . . . . . 16
3.2 Chatterbot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3 Engine Chatterbot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.4 Facebook Messenger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.5 FAQ do curso de SI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4 DESENVOLVIMENTO DO CHATTERBOT . . . . . . . . . . . . . . . . 20
4.1 Escolher o tipo de chatterbot . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2 Definir as áreas de conhecimento do chatterbot . . . . . . . . . . . . . . . 20
4.3 Desenvolvimento da Arquitetura do Chatterbot . . . . . . . . . . . . . . 21
4.4 Implementação do Servidor Webhook . . . . . . . . . . . . . . . . . . . 22
4.5 Implementação do Servidor CMS . . . . . . . . . . . . . . . . . . . . . . 23
4.6 Implementação no Watson Conversation . . . . . . . . . . . . . . . . . . 24
4.7 Implementação do Chatterbot . . . . . . . . . . . . . . . . . . . . . . . . 28
4.8 Realização de testes de aceitação . . . . . . . . . . . . . . . . . . . . . . 30
4.9 Analisar dados coletados . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.10 Implementar mudanças com base nos dados analisados . . . . . . . . . . 30
5 RESULTADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.1 Tarefa um da validação . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.2 Tarefa dois da validação . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.3 Tarefa três da validação . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.4 Tarefa quatro da validação . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.5 Tarefa cinco da validação . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.6 Tarefa seis da validação . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.7 Tarefa sete da validação . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.8 Tarefa oito da validação . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.9 Tarefa nove da validação . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6 CONCLUSÕES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
ANEXO A – LISTA DE PERGUNTAS DA VALIDAÇÃO . . . . . . . . 48
13
1 INTRODUÇÃO
2 TRABALHOS RELACIONADOS
2.1 AGEbot: um chatterbot em AIML voltado para responder questões sobre Epilepsia
critérios:
• Que fosse simples;
• E que pudesse ser modificado por pessoas relativamente leigas em informática;
Levando estes critérios em consideração, o IBM Watson Conversation foi
selecionado pois atende ao critério de funcionamento, sendo utilizados amplamente e validado
pelos programas que os utilizam. Também atende ao critério de simplicidade, o console de
controle do Watson possui uma estrutura simples, de fácil desenvolvimento e um escopo de
definições pequeno. Por ser uma ferramenta de estruturação simples, em geral, pessoas com
pouco conhecimento em informática conseguem entender e realizar modificações sem muito
esforço, portanto o terceiro critério também é atendido.
Após a implantação do chatterbot proposto no presente trabalho, na página web
do curso de SI, sua base de conhecimentos será mantida por uma equipe de secretaria e de
comunicação, que podem ou não possuir conhecimentos avançados em informática. Sendo
assim, o critério de que o chatterbot possa ser modificado por pessoas relativamente leigas em
informática, citado em Ferreira e Uchôa (2008), foi um dos fatores contribuintes para a utilização
do CMS no desenvolvimento do chatterbot proposto.
Ferreira e Uchôa (2008) concluem que é possível criar um chatterbot simples, de
forma fácil e rápida, de modo ainda que mesmo pessoas que não possuem conhecimentos
em programação de computadores, com um treinamento mínimo, conseguem criar padrões de
respostas para o chatterbot.
Ferreira e Uchôa (2008) deixam como trabalho futuro a ampliação da base de
conhecimentos do chatterbot de forma que ele tenha mais conhecimentos sobre o mundo,
atribuindo-lhe assim mais personalidade. O chatterbot proposto para o curso de SI possui essa
diferenciação por já conter alguns aspectos sociais.
16
3 FUNDAMENTAÇÃO TEÓRICA
3.2 Chatterbot
O termo chatterbot vem do inglês em que chatter significa conversador e bot é uma
abreviação para robot que significa robô. Sganderla, Ferrari e Geyer (2003) definem chatterbots
como sistemas computacionais que simulam o comportamento humano em conversas, capazes
de analisar, interpretar e responder perguntas.
Para o desenvolvimento do chatterbot é necessário primeiro conhecer os diferentes
tipos de chatterbots, buscando a abordagem que melhor se encaixa para este projeto. Para Kunze
(2016), há dois tipos principais de chatterbots: os chatterbots de utilidade e os chatterbots
dirigidos a conteúdo. Os chatterbots de utilidade são capazes de realizar alguma tarefa quando
17
4 DESENVOLVIMENTO DO CHATTERBOT
Na seção 3.2 foram descritos dois tipos de chatterbot. Para este projeto que propõe a
utilização de uma base de conteúdo na criação de um chatterbot para dar suporte a um sistema
de FAQ, foi selecionado desenvolver um chatterbot dirigido a conteúdo.
Com base nas comparações feitas entre utilizar aprendizado de máquina ou usar uma
abordagem dirigida a regras, a utilização de uma abordagem mista foi selecionada.
Fonte: O Autor
Fonte: O Autor
Facebook Messenger, e para cada mensagem recebida, ele envia a mensagem ao chatterbot e
devolve a resposta obtida para o mesmo.
Fonte: O Autor
O servidor CMS foi desenvolvido para que informações sobre o curso que mudam
com frequência possam ser gerenciadas de maneira fácil, por pessoas leigas em computação.
Informações como nome do coordenador, telefone da coordenação, quantidade de horas de
atividades complementares, dentre outras foram as informações gerenciadas pelo CMS. O
servidor utilizado foi o Ubuntu 14.04, e o CMS desenvolvido em Python utilizando o framework
Django.
24
Esse passo foi um dos mais importantes, pois é nele que as regras da engine são
definidas. Para facilitar no desenvolvimento, a IBM oferece uma interface gráfica para a definição
das regras.
Primeiro foram definidas as possíveis intenções dos usuários, baseado no mapa
mental apresentado na Figura 1. No total foram definidas seis possíveis intenções de um usuário
ao comunicar com o chatterbot no contexto do curso de SI:
• Iniciar um diálogo;
• Saber sobre algo;
• Saber a quantidade de algo;
• Saber onde fica algo;
• saber quando é algo;
• Agradecer por algo.
Saber qual é a intenção do usuário já é um passo bem importante no desenvolvimento
do diálogo, porém além de conseguir saber a intenção, é importante saber sobre qual entidade
aquela intenção está relacionada. Portanto foram definidas as entidades do chatterbot. No total
foram definidas vinte e duas entidades, agrupadas em sete categorias. O agrupamento foi feito
baseado no domínio de aplicação, de acordo com o mapa mental da Figura 1.
Para unir a intenção do usuário com a entidade relacionada foi criado o fluxo de
diálogos. O fluxo de diálogos funciona como uma árvore de decisão, onde condições são
avaliadas como verdadeiras ou falsas para determinar o fluxo do diálogo. Na primeira camada
do fluxo de diálogos, as intenções do usuário são capitadas para a primeira tomada de decisão do
fluxo, como mostrado na Figura 8.
25
Fonte: O Autor
Fonte: O Autor
Cada nó seguinte foi mapeado para cada um dos conjuntos de entidade definidos
anteriormente. E para cada conjunto de entidade, foram definidos os seus respesctivos triggers.
A Figura 5 ilustra o fluxo de diálogo para a intenção “Saber Sobre” e para o agrupamento de
entidades sobre apresentação do curso.
27
Fonte: O Autor
E para cada conjunto de entidades, foram definidos nós para as entidades em si.
Caso aquela entidade, dada aquela intenção, fosse algo estático, a resposta já foi inserida
automaticamente no fluxo (Figura 7). Caso contrário, o fluxo de diálogo retornaria um json
com as informações do diálogo, que seriam avaliadas posteriormente pelo chatterbot e consultas
feitas ao CMS caso detectado a necessidade.
28
Fonte: O Autor
Fonte: O Autor
30
5 RESULTADOS
Fonte: O Autor
Fonte: O Autor
A primeira tarefa dos participantes ao interagir com o chatterbot foi descobrir o que
é o curso de Sistemas de Informação. Na primeira validação todos os usuários tiveram sucesso
na obtenção da resposta desejada. Em todos os casos o chatterbot conseguiu identificar que a
intenção do usuário era saber sobre algo, e com a entidade “curso de SI” presente. Como não foi
identificada nenhuma outra entidade, o chatterbot considerou que os usuários buscavam saber
sobre o curso em si. As Figuras 11 e 12 mostram respectivamente os resultados da primeira e
33
segunda validação.
Fonte: O Autor
Fonte: O Autor
34
Fonte: O Autor
Na tarefa dois da validação final, com o chatterbot treinado após a validação um,
todas as treze pessoas obtiveram sucesso em obter a resposta desejada, como pode ser viso no
gráfico da Figura 14.
35
Fonte: O Autor
Na tarefa três foi solicitado aos usuários que descobrissem informações sobre o
mercado de trabalho para o curso de Sistemas de Informação.
Para as respostas da validação um da tarefa três, seis das sete pessoas obtiveram
sucesso na obtenção da resposta desejada como pode ser visto na Figura 15. Para estas seis
pessoas, foi identificada e intenção de saber sobre algo em conjunto com a entidade “Mercado
de Trabalho”. Ao analisar os registros de conversação gravados no servidor do chatterbot, a
pergunta que falhou em dar a resposta desejada ao usuário foi: “Como está o mercado para
profissionais de Sistemas de Informação?”. Portanto foi indicado ao chatterbot que essa pergunta
possui a intenção “Saber Algo”, e a entidade “mercado de trabalho” para que ele possa aprender
com a pergunta para futuras respostas.
Já na validação final, todos os treze participantes obtiveram sucesso na obtenção da
resposta desejada como pode ser viso na Figura 16.
36
Fonte: O Autor
Fonte: O Autor
37
Na tarefa quatro foi solicitado aos usuários que obtivessem informações sobre a
estrutura curricular do curso de SI.
Duas das sete participantes da validação disseram ter falhado na obtenção da resposta
desejada como mostrado na Figura 17. Nos logs do chatterbot, foram identificadas as perguntas
“Quais são as disciplinas do curso e como são estruturadas?” e “qual a estrutura curricular do
curso?” como sendo as perguntas para as quais o chatterbot falhou em dar uma resposta correta.
Foi instruído ao chatterbot que estas perguntas são exemplos de perguntas para quando a intenção
do usuário é saber sobre algo e a entidade seja "Estrutura Curricular", de modo que ele aprenda
para futuras perguntas.
Fonte: O Autor
Na tarefa quatro da validação final, um dos usuários disse não ter obtido a resposta
para a pergunta desejada (veja Figura 18). No entanto no console do chatterbot foi verificado
que houve sucesso em todas as respostas. Portanto, o chatterbot respondeu da maneira esperada,
porém pode ter ocorrido o caso em que o usuário não tenha ficado satisfeito com a resposta ou
esperava por uma resposta diferente.
38
Fonte: O Autor
Fonte: O Autor
Fonte: O Autor
40
Fonte: O Autor
41
Fonte: O Autor
Fonte: O Autor
Na validação final todos os usuários obtiveram a resposta desejada para a tarefa sete,
como mostrado na Figura 24.
Fonte: O Autor
43
Para a tarefa oito foi solicitado aos usuários que descobrissem as categorias de
atividades complementares.
Na tarefa oito, cinco das perguntas seguiram o comportamento esperado (ver Figura
25), que foi uma pergunta com a intenção de saber sobre algo, e com as entidades “Atividades
Complementares” e “Categorias”. Uma das perguntas também tive a intenção de saber sobre
algo, porém a entidade “Atividades Complemetares” não foi identificada na pergunta. Ao analisar
os registros de conversação gravados no servidor do chatterbot, a pergunta que falhou em dar a
resposta desejada ao usuário foi:“e em quais categorias de atividades posso realizar”. Portanto
o foi indicado ao chatterbot que essa pergunta possui a intenção "Saber Algo", e as entidades
“Atividades Complemetares” e “Categorias” para que ele possa aprender com a pergunta para
futuras respostas.
Fonte: O Autor
Na validação final todos os usuários obtiveram a resposta desejada para a tarefa oito,
como mostrado na Figura 26.
44
Fonte: O Autor
Fonte: O Autor
Fonte: O Autor
46
6 CONCLUSÕES
REFERÊNCIAS
FERRUCCI, D.; BROWN, E.; CHU-CARROLL, J.; FAN, J.; GONDEK, D.; KALYANPUR,
A. A.; LALLY, A.; MURDOCK, J. W.; NYBERG, E.; PRAGER, J. et al. Building watson: An
overview of the deepqa project. AI magazine, v. 31, n. 3, p. 59–79, 2010.
KAR, R.; HALDAR, R. Applying chatbots to the internet of things: Opportunities and
architectural elements. arXiv preprint arXiv:1611.03799, 2016.
KUNZE, L. What is a chatbot, how do you build one, who is building them and are they
good? [S.l.], 2016. Disponível em: <http://www.techworld.com/apps/
what-is-chatbot-how-do-you-build-one-who-is-building-them-are-they-any-good-3638740/>.
Acesso em: 26.9.2016.
LEE, G. G.; SEO, J.; LEE, S.; JUNG, H.; CHO, B.-H.; LEE, C.; KWAK, B.-K.; CHA, J.; KIM,
D.; AN, J. et al. Siteq: Engineering high performance qa system using lexico-semantic pattern
matching and shallow nlp. In: TREC. [S.l.: s.n.], 2001.
WALLACE, R. Artificial Intelligence Markup Language (AIML) Version 1.0.1. [S.l.], 2005.
Disponível em: <http://www.alicebot.org/TR/2005/WD-aiml/WD-aiml-1.0.1-008.html>.
Acesso em: 25.9.2016.
48