Um Chatbot para o

Centro de Informática
Victor Fontes Seara Ferraz
vfsf@cin.ufpe.br
Trabalho de Conclusão de Curso

10 de Julho de 2017
1. Introdução
1.1. Motivação
1.2. Objetivos
2. Conceitos
2.1. Inteligência Artificial
2.2. Processamento de Linguagem Natural

Sumário
2.3. Aprendizado de Máquina
2.4. Natural Language Toolkit (NLTK)
3. Chatbots
3.1. Breve histórico
3.2. Arquiteturas
4. Trabalhos Relacionados
5. Proposta
6. Implementação da IA
6.1. Exemplos da aplicação
7. Conclusão
7.1. Trabalhos Futuros
● Crescente interesse em aplicativos de
conversação; [25]
● Grande potencial de aceitação; [27]

Introdução ● Crescimento de pesquisas relacionadas ao
desenvolvimento de Chatbots com IA;
Motivação
● Fazer um estudo acerca do uso de
Inteligência Artificial (IA) no
desenvolvimento de Chatbots;

Introdução ● Analisar as técnicas de
desenvolvimento de Chatbots que
Objetivos
envolvem IA e suas restrições;
● Demonstrar o funcionamento de
uma arquitetura de Chatbot que
utilize Inteligência Artificial;

Introdução ● Investigar e propor uma arquitetura
de Chatbot capaz de entender e
Objetivos
processar informações dentro do
contexto do CIn.
● Conceitos [39]
○ “sistemas que pensam como
humanos”;

Conceitos ○ “sistemas que pensam de modo
racional”;
Inteligência Artificial ○ “sistemas que agem como humanos”;
○ “sistemas que agem racionalmente”.
● Teste de Turing
○ Loebner Prize

Conceitos
Inteligência Artificial
● Máquinas de Tradução
● Teste de Turing
● Análises

Conceitos ○ Morfológica *
○ Sintática *
Processamento de
Linguagem Natural ○ Semântica
○ Pragmática
● Análise Morfológica
○ Tokenização
○ Lematização e Stemização

Conceitos ● Análise Sintática
○ Etiquetagem (POS Tagging)
Processamento de
Linguagem Natural ■ N-gramas
”O/ART rato/N roeu/V a/ART roupa/N
do/PREP+ART rei/N de/PREP Roma/NPROP
./PU”.

Conceitos
Processamento de
Linguagem Natural

* Exemplo do Part-Of-Speech Tagging
● Extração da Informação
○ Área do PLN voltada para o
reconhecimento de fatos;

Conceitos ○ Transformação de textos
desestruturados em objetos
Processamento de
Linguagem Natural estruturados;
● Extração da Informação
○ Reconhecimento de Entidades
Nomeadas (NER);

Conceitos ■ IOB (Inside-Outside-Begin)
Tagging.
Processamento de
Linguagem Natural
“A sala E122 estará ocupada hoje, às
15h, para a aula de reposição de
Engenharia de Software do curso de

Conceitos Sistemas de Informação”.

Processamento de
Linguagem Natural
“A/O sala/O E122/B-LOCAL estará/O
ocupada/O hoje/B-DATA, às/O
15h/B-HORARIO, para/O a/O aula/O de/O

Conceitos
reposição/O de/O Engenharia/B-DISCIPLINA
de/I-DISCIPLINA Software/I-DISCIPLINA

Processamento de do/O curso/O de/O Sistemas/B-CURSO
Linguagem Natural de/I-CURSO Informação/I-CURSO”.

* Exemplo de IOB Tagging
● Procura entender, na prática, como
seres humanos e demais animais
sao capazes de adquirir experiência

Conceitos e conhecimento. [32]
● Aprendizado Supervisionado
Aprendizado de
Máquina ○ TF-IDF;
○ Conditional Random Fields;
○ Support Vector Machines.
● Aprendizado Supervisionado
○ Capaz de aprender com
exemplos; [21]

Conceitos ○ Dados de treinamento e de
teste.
Aprendizado de
Máquina
● Term Frequency - Inverse
Document Frequency (TF-IDF)
○ Determina a relevância de cada

Conceitos palavra, baseando-se em todos
os documentos trabalhados;
Aprendizado de
Máquina ○ Trabalha ao lado da
Stemização/Lematização
● Term Frequency - Inverse
Document Frequency (TF-IDF)

Conceitos
Aprendizado de
Máquina
● Conditional Random Fields (CRF)

Conceitos
Aprendizado de
Máquina
● Conditional Random Fields (CRF)
○ Modelo discriminativo;
○ Constrói e identifica

Conceitos relacionamentos entre diversas
observações;
Aprendizado de
Máquina
● Support Vector Machines (SVM)
○ Maximizar a distância mínima
do hiperplano em relação ao

Conceitos exemplo mais próximo;
○ Linear SVM & Kernel SVM
Aprendizado de
Máquina
Conceitos
Aprendizado de
Máquina

* Exemplo de Linear SVM
Conceitos
Aprendizado de
Máquina

* Exemplo de Kernel SVM
● Feita para o desenvolvimento de
programas voltados ao
Processamento de Linguagem

Conceitos Natural em Python;
● Abstrai o fluxo de desenvolvimento
Natural Language
Toolkit (NLTK) de ferramentas de linguagem
natural;
● Suporte à língua portuguesa.
● Uma aplicação pode ser
considerada como um Chatbot caso
ela funcione por meio de

Chatbots interações através de uma
interface de conversação;
● ELIZA (Joseph Weizenbaum, 1966);
● PARRY (Kenneth Colby, 1972);
● Jabberwacky (Rollo Carpenter,

Chatbots 1988); *
● Cleverbot (Rollo Carpenter, 2008);
Breve Histórico
● ALICE (Artificial Linguistic Internet
Computer Entity, Richard Wallace,
1995); *
* Participaram do Loebner Prize
● IBM Watson, Siri, Google Assistant;
● Plataformas do Facebook, Slack e
Telegram.

Chatbots
Breve Histórico
● Modelos de Chatbot

Chatbots
Arquiteturas
● Modelos de Chatbot
○ Generativo
■ Deep Learning

Chatbots ■ Sequence to Sequence
(RNN, LSTM)
Arquiteturas
○ Baseado em Padrões/Regras
■ Hard-coded
■ AIML
■ ML & PLN
● Modelo Generativo

Chatbots
Arquiteturas
● Modelo Baseado em Regras
○ Base de respostas
pré-definidas;

Chatbots ○ Domínio Fechado;
○ Reconhecimento de padrões,
Arquiteturas
entidades e intenções
● Modelo Baseado em Regras

Chatbots
Arquiteturas

* Exemplo de AIML
Chatbots
Arquiteturas
● WIT.AI & API.AI
○ Plataformas de processamento e

Trabalhos entendimento de linguagem natural,

Relacionados
criado para auxiliar no
desenvolvimento de chatbots, robôs
e aplicações de IoT;
○ Interação via endpoints;
● Dados estruturados
○ JSON (JavaScript Object Notation);

Trabalhos
Relacionados
”Onde sera a aula da disciplina IF1000?”
● O principal objetivo desta pesquisa é o
desenvolvimento de uma arquitetura
para Chatbots utilizando Inteligência

Proposta
Artificial, focando na Classificação de
Intenções e no Reconhecimento de
Entidades, com o intuito de implementar
um Chatbot capaz de processar a
linguagem natural e utilize de técnicas de
Aprendizado de Máquina.
● Part-Of-Speech Tagger (POS), treinado
com CRF;

Implementação ● Inside Outside Begin Tagger (IOB),

da IA
treinado com CRF;
● Classificador de Intenções, treinado com
SVM;
● Uma interface para classificar intenções,
identificar entidades e retornar a entrada
de modo estruturado.
● POS Tagging
○ Coleta de Dados

Implementação ■ Seleção das classes gramaticais

da IA
■ Mac-Morpho (corpus oferecido
pelo NLTK)
■ NLPNet
○ Pré-processamento
■ Seleção de features
● POS Tagging

Implementação
da IA
● POS Tagging

Implementação
da IA
● POS Tagging

Implementação
da IA
● POS Tagging
○ Treinamento

Implementação ■ 80% da base foi utilizada para

da IA
treinamento, 20% para teste
● IOB Tagging
○ Seleção de entidades

Implementação ○ Coleta de dados

da IA
■ Textos gerados e classificados a
mão (cerca de 300 sentenças)
■ Leitor criado para ler um
formato específico de arquivo,
contendo suas entidades;
○ Pré-processamento
■ Seleção de features
● IOB Tagging

Implementação
da IA
● IOB Tagging

Implementação “Onde será a aula de [DISCIPLINA Engenharia

da IA
de Software] do curso de [CURSO Sistemas
de Informação]?”
● IOB Tagging

Implementação
da IA
● IOB Tagging

Implementação
da IA
● IOB Tagging
○ Treinamento

Implementação ■ 80% da base foi utilizada para

da IA
treinamento, 20% para teste
● Classificador de Intenções
○ Seleção de Intenções

Implementação ○ Coleta de dados

da IA
■ Mesmo processo de leitura e
geração de dados utilizado no
IOB Tagger
■ Intenção presente no nome do
arquivo
○ Pré-processamento
■ TF-IDF & Stemização
● Classificador de Intenções

Implementação
da IA
● Classificador de Intenções
○ Treinamento

Implementação ■ 80% da base foi utilizada para

da IA
treinamento, 20% para teste
Implementação
da IA
Exemplos
Implementação
da IA
Exemplos
Implementação
da IA
Exemplos
Implementação
da IA
Exemplos
Implementação
da IA
Exemplos
● Este trabalho mostrou como é
desenvolvida a arquitetura de uma
Chatbot utilizando Processamento de

Conclusão
Linguagem Natural e Aprendizado de
Máquina, demonstrando o quão
importante é a Inteligência Artificial para
o processo.
● Adicionar mais entidades e intenções
relevantes ao contexto do CIn, como
processos e eventos;

Conclusão
● Implementar integrações com o
Telegram, Slack ou Facebook Messenger;

Trabalhos Futuros ● Implementar um sistema de respostas
utilizando técnicas de Recuperação de
Informação (utilizando gensim, caso seja
em python);
● Explorar a implementação do
Reconhecimento de Entidades utilizando
Redes Neurais Recorrentes;

Conclusão
● Implementar um sistema de Natural
Language Understanding (NLU) para

Trabalhos Futuros melhorar o processamento do Chatbot;
● Implementar uma arquitetura que utilize
Sequence to Sequence e demais técnicas
de Deep Learning.