Faculdade UnYLeYa
Engenharia de Software
Vinicius Martins Ferraz
MATRIS
Chatbot Supremo
Campinas
2017
Faculdade UnYLeYa
Engenharia de Software
Vinicius Martins Ferraz
MATRIS
Chatbot Supremo
Projeto de pesquisa apresentado à Faculdade UnYLeYa
como parte
integrante do conjunto de tarefas avaliativas
da disciplina Metodologia da Pesquisa e da Produção
Científica.
Nome do orientador: Erika Queiros Furlan
Campinas
2017
SUMÁRIO
1. INTRODUÇÃO
5
1.1. Tema
5
1.2. Problema
5
1.3. Justificativa
5
1.4. Objetivos
5
2. INTELIGÊNCIA ARTIFICIAL
6
3. INTERAÇÃO HUMANO-COMPUTADOR
7
4. PROCESSAMENTO DE LINGUAGEM NATURAL
9
5. CHATBOTS
11
5.1. ALICE
11
5.1.1. Tratamento da Entrada
12
5.2.2. Rotina de Busca
13
6. FRAMEWORKS
15
6.1. BOTPRESS
15
6.1.1. COMO FUNCIONA
6.2.2. CONVERSAS
6.2.3. UNIVERSAL MESSAGE MARKDOWN (UMM)
7. CONCLUSÃO
7.1. CHATBOT SUPREMO
8. REFERÊNCIAS BIBLIOGRÁFICAS
15
17
18
20
20
23
LISTA DE FIGURAS
FIGURA 1 - AIML
12
FIGURA 2 - DIAGRAMA DE ATIVIDADE ALICE
14
FIGURA 3 - DIAGRAMA DE ATIVIDADE BOTPRESS
16
FIGURA 4 - INICIANDO O CONVO
18
FIGURA 5 - SINTAXE UMM
18
FIGURA 6 - CONVO RECUPERANDO RESPOTAS DO UMM
19
FIGURA 7 - CHATBOT SUPREMO
20
1. INTRODUÇÃO
1.1. Tema
Utilizando métodos de integração de fontes de dados e de inteligência artificial para a
construção de um sistema inteligente com capacidade cognitiva de português que consiga
compreender e responder perguntas de pessoas normais.
1.2. Problema
Porque o google não é capaz de interagir com seres humanos e responder às perguntas
feitas com uma resposta clara?
1.3. Justificativa
Este tema foi escolhido devido à popularidade momentânea onde varias aplicações atuais
integram inteligência artificial para facilitar a vida dos usuários.
É um tema importante pois, é necessário para a criação de chatbots, ferramentas de
pesquisas avançadas e interpretadores de texto com capacidade de responder perguntas.
1.4. Objetivos
1.
Objetivo geral: Identificar técnicas de integração de base de dados e de Inteligência
Artificial para construção de um sistema que responda às perguntas feitas pelos
usuários.
2.
Objetivos específicos:
I)
Identificar técnicas capazes de interpretar frases digitadas pelos usuários.
II)
Identificar mecanismos de integração com base de dados para automatizar
pesquisas na procura de possíveis respostas.
III)
Identificar algoritmos para filtrar a melhor resposta.
2. INTELIGÊNCIA ARTIFICIAL
Inteligência Artificial é uma ação para simular o pensamento humano na automatização de
tarefas intelectuais. Estas tarefas geralmente são tomadas de decisões, soluções de problemas
reais, escolhas que o computador faz tentando simular comportamentos humanos para que as
respostas pareçam humanas. (HAUGELAND, 1989)
Na internet existem diversas bases de dados que não estão estruturadas em conjunto,
porém representam uma quantidade bem significativa de informação que pode ser usada para a
criação de uma base de dados estruturada de um sistema com inteligência artificial. Esta
informação precisa ser coletada, catalogada, tratada e conectada (no sentido de que uma palavra
pode estar ligada a diversas definições, por exemplo Dinamarca, é o nome de um país que possuí
uma população, uma religião, uma localização, uma moeda, uma língua, uma cultura, pratos,
danças, músicas, entre muitas outras informações especificas deste pais e que de certa forma
serão necessárias estarem ligadas ao país), assim, com o sistema tendo as informações
conectadas por meio de grafos ou rede neural, será possível responder diversas perguntas
referentes ao país Dinamarca. Mas só isso não basta, este sistema inteligente deverá ir além de
simular o pensamento humano para procurar respostas, será necessário aprendizado.
Inteligência Artificial é o estudo das faculdades mentais através do uso de modelos
computacionais onde softwares simulam o processo de aprendizagem humano de tal forma que
todo o funcionamento do cérebro possa ser simulado através de algoritmos. (CHARNIAK;
MCDERMOTT, 1985) (WINSTON, 1992)
O sistema deverá ter essa capacidade de aprender e fazer ligações do conhecimento de
forma automática, verificando as informações e as fontes para garantir a veracidade da
informação.
3. INTERAÇÃO HUMANO-COMPUTADOR
Do inglês Human-Computer Interaction, é a definição do uso de eletrônicos
(computadores, tablets, smartphones, entre outros aparelhos com sistemas operacionais ou
sistemas embarcados1 ) pelos seres humanos, é a experiência, é o quanto é prazeroso ou fácil ou
divertido. Contudo vai muito além disso, pois, um sistema operacional foi desenvolvido por um
grupo de seres humanos e para este grupo o uso do próprio sistema é uma tarefa trivial, devido à
eles serem os desenvolvedores, ter o conhecimento de todas as funcionalidades além de grande
parte dos atalhos existentes é bem próximo de uma realidade, porém, para pessoas que não
fazem parte deste grupo, o grau de usabilidade de cada usuário varia drasticamente de “nenhuma
noção de como operar o sistema” para “parece ser um sistema fácil de operar”, pois existem os
usuário habituados e avançados no controle de sistemas, mas também existem os usuários que
nunca operaram ou já tiveram um primeiro contato com um sistema e para estes usuários o
critério fundamental para criarem um julgamento da usabilidade será a interface do sistema.
(SUCHMAN, 1987)
A interface de um sistema representa um painel de controle do mesmo, ou seja, por meio
da interface o usuário poderá comandar a máquina para que ela opere como o desejado pelo
usuário. Na interface devem estar previstos controles de todos os hardwares disponíveis além de
controles específicos de cada hardware, por exemplo, um cd player, um cd é uma mídia que pode
conter arquivos de diversos formatos, em um cd de música, geralmente só possuí músicas em um
formato específico, o ideal seria o sistema operacional abrir um tocador de música com controles
de volume, ganhos, avançar ou retroceder faixa, acelerar ou desacelerar o tocador, entre outros
controles específicos para este tipo, um outro exemplo seria uma webcam, para este dispositivo o
sistema operacional deve oferecer suporte para softwares que queiram ler a imagem da webcam
e disponibilizar um software que leia a webcam, apresente a imagem e permita gravar vídeos,
entre outras funcionalidades que podem ser úteis, porém, como e quando o sistema operacional
vai executar estas ações? Pois, se for a todo instante, então o sistema operacional se tornaria
inoperante, ou seja deixaria de responder aos comandos do usuário para poder ficar iniciando
essas aplicações, ou quando for inserido um cd ou plugada uma webcam? Porém nestes casos,
apesar do usuário ter inserido um cd ou plugado uma webcam talvez não seja a ação que ele
queira executar e se o sistema inicia automaticamente pode acabar incomodando o usuário, por
exemplo, o usuário está escutando música, porém deseja colocar um cd para apenas gravar as
músicas no pc, porém ao inserir o cd o sistema para a execução das músicas e começa a
executar as músicas do cd, isso com certeza irritaria o usuário, assim tornando o sistema alvo de
críticas pelos usuários, são apenas alguns exemplos que podem ocorrer no decorrer do uso de
um sistema operacional se ele for automático demais, porém sem ser programado pelo usuário,
1
Um sistema embarcado (ou sistema embutido) é um sistema microprocessado no qual o computador é
completamente encapsulado ou dedicado ao dispositivo ou sistema que ele controla.
afinal se o usuário puder definir o que acontece quando é inserido um cd no computador antes
dele inserir um cd, então, provavelmente, nunca o sistema irá responder de modo imprevisto
deixando o controle e a interação muito mais personalizáveis ao usuário. (SUCHMAN, 1987)
(HUMAN-COMPUTER INTERACTION, 2017)
Contudo, o método de interação mais usado pela maioria dos seres humanos é o dialogo
ou conversa, então se o ser humano possuir o conhecimento do que uma máquina é capaz de
fazer e saber que a máquina responde à comandos de voz fazendo e dando uma resposta do que
fez ou fará ou faria e porque ainda não fez, logo para o ser humano se torna mais fácil operar a
máquina por meio de comandos de voz.
4. PROCESSAMENTO DE LINGUAGEM NATURAL
Do inglês NLP, Natural Language Processing, é uma categoria de software com
capacidade de receber frases ou perguntas ou exclamações entre outras sentenças na linguagem
natural do ser humano (texto) e interpretar esse texto recebido respondendo ou interagindo
conforme o texto recebido. Existem diversos softwares e bibliotecas para resolver esta tarefa,
entre eles: Google Cloud Natural Language API, IBM Watson, Amazon Lex, Microsoft Cognitive
Services, Facebook's DeepText, entre outros. A grande maioria faz uso de dados estatísticos para
criarem uma margem de certeza, estes são chamados de SNLP, Statistical Natural Language
Processing, e de redes neurais, algoritmo responsável por interligar os conhecimentos, pois um
banco de dados é um grande aglomerado de dados e o conhecimento é a ligação entre os dados,
é o contexto da informação, ou seja um valor por sí só não tem significado nenhum, porém se for
o valor de algum objeto ou entidade, então o valor se torna conhecimento.
(NATURAL
LANGUAGE PROCESSING, 2017)
Os chatbots, assunto do próximo capítulo, são por definição NLPs ou SNLPs, pois, são
softwares que interpretam o texto e dão uma resposta de acordo com o texto e o contexto da
conversa, ao menos é o esperado.
4.1. Desafios da NLP
Por tratar uma entrada livre, os usuários podem cometer diversos erros ou testar a
capacidade de interpretação ou de segurança a falhas do software de diversos modos:
• Erros de digitação: Um bom interpretador deve estar preparado para saber distinguir um
erro de digitação ou pelo menos indagar o usuário se o que ele digitou está correto e
mostrar a forma correta, assim como o Google faz.
• Erros de conjugação de verbo: Um verbo mal conjugado pode dificultar a compreensão
do texto pelo software.
• Falta de acentos ou acentos incorretos: Pode levar o interpretador a trocar as palavras
dificultando o entendimento da intenção do usuário.
• Discordâncias verbais ou nominais: Pode confundir o interpretador e forçá-lo a dar uma
resposta equivocada.
• As diversas formas de se formular uma frase: Se todo mundo falasse do mesmo modo,
criando sentenças a partir da mesma lógica, seria muito fácil criar padrões de sentenças
e tratar as variáveis das sentenças, porém os padrões mudam e do mesmo modo que
uma pergunta pode iniciar com um “por que”, o “por que” pode estar no meio da pergunta
e a pergunta pode acabar com “por quê?”.
• Frases construídas de forma equivocada de propósito.
• Jargões regionais desconhecidos.
• Perguntas que solicitam informações muito precisas ou sigilosas.
5. CHATBOTS
Chatbots, do inglês chat, de conversa/dialogo, e bots de robots, são robôs que conversam.
São aplicações que podem fazer uso de NLP ou SNLP para interagir com pessoas, os chatbots
tentam compreender o que o usuário digita ou fala e acessam bancos de dados para formular uma
resposta ou fazer um select em uma resposta pronta, incentivando um diálogo simples com o
usuário. O uso de chatbots torna-se mais comum a cada dia, muitas empresas optam por ser um
canal de atendimento simples, “barato” e completo, que normalmente consegue responder as
principais dúvidas dos clientes, existem casos famosos conhecidos na internet (ALICE, LUIS,
ELIZA, Elizabeth, Sophia o robô que recebeu recentemente cidadania da Arabia Saudita, entre
outros) alguns open source e outros de propriedade privada, porém um será citado como objeto
de estudo e pesquisa das técnicas envolvidas. (HUMAN-COMPUTER INTERACTION, 2017)
5.1. ALICE
ALICE: Acrônimo para Artificial Linguistic Internet Computer Entity, que quer dizer Entidade
Artificial Linguística Computacional da Internet, é um dos primeiros chatbots criados e hospedados
na internet (https://www.pandorabots.com/pandora/talk), está ativo desde 1995 e faz parte do
projeto chamado Pandora que cria bots de todos os tipos. (HUMAN-COMPUTER INTERACTION,
2017)
O projeto ALICE faz uso de um arquivo para o controle das conversas, este arquivo se
chama AIML (Artificial Linguistic Markup Language, Linguagem de Marcação Lingüística Artificial)
inspirada no XML (linguagem de marcação estendida), mas possuí marcações específicas que
determinam respostas para perguntas. A ALICE tem uma coleção de arquivos AIML, um para cada
tópico que pode ser conversado com ela, ou seja, para cada tópico, ela acessa um arquivo Figura
diferente, e neste arquivo, que é um template do diálogo, ela busca as perguntas feitas e ao
encontrar uma ocorrência ela acessa a resposta e a envia ao usuário. (SHAWAR; ATWELL, 2002)
Tags utilizadas no AIML:
• AIML version: Esta tag define a versão do AIML sendo usado.
• Topic name: Define o tópico da coleção de categorias.
• Category: Uma coleção de Patterns e Templates com o mesmo sentido.
• Pattern: Um padrão de pergunta/entrada que define se a categoria é atômica, padrão ou
recursiva. Uma categoria atômica define que a entrada deve coincidir totalmente com o pattern,
caso isso não aconteça então ALICE procurará por patterns padrões, que são os que possuem
caracteres especias, que começam com “_“ ou terminam com “*“, e determinam que a entrada
pode começar ou terminar com qualquer coisa antes de coincidir com o pattern, finalmente a
categoria recursiva é usada para dividir uma entrada em 2 ou mais, ou para identificar uma
entrada que pode ser feita de diversas formas diferentes e trata-la e ou reduzi-la para que
coincida com o pattern adequado para se obter a resposta adequada. Nos casos de categoria
recursiva são usadas as tags <srai>, acrônimo para simple recursive artificial inteligence, e
<sr>, acrônimo para symbolic reduction, para marcar a categoria, ao usar essas tags o uso da
tag template se torna irrelevante.
FIGURA 1 - AIML
• That: Resposta anterior da ALICE.
• Template: A resposta a ser dada para a categoria. Esta tag pode ser usada com a tag
<random> que define que a resposta será sorteada da lista de respostas dentro do template,
cada opção de resposta fica cercada pelas tags <li> e </li>, ao final da lista, se encerra com a
tag </random>. (SHAWAR; ATWELL, 2002)
5.1.1. Tratamento da Entrada
Antes da ALICE sair procurando a pergunta em seu banco de dados, ela trata a entrada,
para aumentar as chances de achar coincidências, na seguinte ordem:
1.
Normalização.
I.
Substituição, palavras são substituídas por sinônimos conhecidos, por exemplo, se o
usuário digitar “bonito”, pode ser substituído por “lindo”, e assim no banco não haverá
nenhuma expressão que contenha a palavra “bonito” mas terá com “lindo”.
II. Divisão, dependendo dos sinais, ALICE pode quebrar uma sentença em orações e trata-las
separadamente.
III. Padronização, a frase de entrada é limpa de caracteres especiais e alterada para ficar tudo
em maiúsculo, pois no banco da ALICE sua informação é armazenada toda em maiúsculo.
2. Criando o Input Path (caminho da entrada), para cada frase enviada para ALICE, ela verifica o
tópico da conversa e a resposta anterior, caso seja a primeira mensagem, o tópico e a
resposta anterior ficam com o valor de asterisco e o input path assim: [entrada] <THAT>
[resposta anterior] <TOPIC> [tópico], finalmente com o input path ALICE começa a procurar
em sua base de dados. (SHAWAR; ATWELL, 2002)
5.2.2. Rotina de Busca
Com o Input Path pronto, ALICE começa a busca pela resposta, ela vai comparando cada
pattern com a entrada palavra por palavra, e o pattern com o maior número de palavras
coincidentes é o melhor.
A rotina funciona da seguinte forma, supondo que o usuário tenha digitado a entrada “X“ e
que ALICE busca na sua pasta específica de arquivos que contém todos os patterns e templates,
ela pesquisa seguindo a seguinte regra, ilustrada pela figura 2:
1. Pesquisa, na pasta nomeada “_“, se existir, por um pattern que contenha todas as
palavras e termine com “X“, se encontrar a ocorrência retorna o template
correspondente, caso contrário, retorna na pasta anterior.
2. Pesquisa por uma pasta nomeada como “X“, se existir, acessa-a e pesquisa por um
pattern que seja coincidente com o final “X“, se existir retorna o template
correspondente, caso contrário retorna a pasta anterior.
3. Pesquisa, na pasta nomeada “*“, se existir, por um pattern que termine com “X“, se
encontrar a ocorrência retorna o template correspondente, caso contrário, retorna na
pasta anterior.
4. Quando um pattern é localizado o processamento retorna o template para ser
processado, pois a entrada do usuário pode ser longa e se este for o caso, a ALICE vai
repetir este processo, juntando uma coleção de templates que serão concatenados e
enviados ao usuário como resposta da sua pergunta/entrada. Caso “X“ não seja
encontrado, então “X“ será devolvido ao início da entrada. (SHAWAR; ATWELL, 2002)
FIGURA 2 - DIAGRAMA DE ATIVIDADE ALICE
6. FRAMEWORKS
Atualmente existem diversos projetos de frameworks, entre os mais conhecidos: LUIS da
Microsoft, Dialogflow do Google, The Bot Platform indicado pelo Facebook, Botpress um
framework open source, etc.
6.1. BOTPRESS
É um framework open source, para criação e manutenção de chatbots, mantido por
diversos colaboradores e programadores do mundo todo. O botpress é simples de usar e
personalizar, focado para criação de chatbots com perguntas e respostas em um banco de dados.
Ao instalar, disponibiliza uma ferramenta de linha de comando que cria chatbots de acordo com o
padrão e , ao se criar um chatbots, uma url para acessar o site de configuração e manutenção
dele é liberada pela aplicação, no site de configuração é possível instalar ou remover módulos,
cada módulo dá uma habilidade pré programada ao chatbots, alguns dos mais interessantes são
acesso ao Messenger do Facebook, relatórios de desempenho e conversas, acesso a outros
programas de mensagens web, entre outros. Também é possível criar módulos próprios que
concedam habilidades mais específicas e avançadas aos chatbots, por exemplo, poderia ser
criado um módulo de processamento de linguagem natural que garantiria um conhecimento mais
robusto de português. (BOTPRESS, 2016)
6.1.1. COMO FUNCIONA
Toda a lógica do chatbot pode ser personalizada para atender as expectativas sobre como
ele interpretará e responderá as perguntas. Basicamente o sistema opera por meio dos
middlewares, que são funções dos módulos instalados, um módulo pode conter uma coleção de
middlewares de entrada e saída e que podem ser encadeados para se obter o tratamento
necessário para chegar no resultado esperado.
FIGURA 3 - DIAGRAMA DE ATIVIDADE BOTPRESS
Como a figura 3 sugere:
Entrada: é o texto digitado pelo usuario.
Cadeia de middlewares da entrada: Cadeia ordenada de funções para tratamento da
entrada, porém é valido lembrar que todo dialogo precisa ter um canal e é nesta cadeia, no
primeiro middleware da lista que se define o canal da entrada, ou seja, qual é o aplicativo
de comunicação usado pelo bot, podem ser diversos, Messenger do facebook, Telegram,
e-mail, SMS, slack, entre outros. Em seguida aparecem os middlewares para tratamento
da entrada com aquelas mesmas preocupações da ALICE: normalização,
tradução,
acentuação, ou seja, tratar e entrada para que fique mais fácil de compreender e
responder.
Cadeia de middlewares de saída: Cadeia ordenada de funções para tratamento da
saída, após a entrada ser tratada e se obter uma resposta para ser enviada, é iniciado o
tratamento da saída, talvez a saída precise de algum tratamento, como trocar algumas
palavras por sinônimos aleatórios para se obter respostas diferenciadas, ou traduzir a
saída para um idioma especifico, ou mandar a saída para um canal diferente da entrada se
for preciso.
Saída: É o texto respondido para o usuário, em condições normais de operação.
(BOTPRESS, 2016)
6.2.2. CONVERSAS
Quando se trata de chatbots, conversar se torna a razão de existência deste tipo de
software e isto é automaticamente compreendido. Normalmente a conversação acontece entre
dois usuários, um humano e o robô.
Para uma conversa com um robô acontecer é fundamental que ele atenda um canal e
tenha uma estratégia para escolher respostas, em relação a estratégia, o botpress divide-a em
duas partes : fluxo e conteúdo.
Fluxo: É a parte que tenta contextualizar toda a conversação para manter uma lógica nas
respostas, que simula de fato uma conversação humana. Esta parte pode ser uma das 3
categorias:
1. Fluxo Isento: Carece de habilidades de conversação, assim como a ALICE, um robô
que sempre dá as mesmas respostas às mesmas perguntas, vulgo eco robô.
2. Fluxo Arvore de decisão estática: Uma arvore de busca binária, de if/else, que vai
filtrando o fluxo das interações até esgotar o tema e responder ou não o anseio do
usuário. A grande maioria dos chatbot existentes são deste tipo, por serem mais
simples de manter, implementar e não serem tão previsíveis quanto os isentos.
3. Fluxo Arvore de decisão dinâmica: Uma arvore de busca que escolhe o fluxo
dependendo da localização atual do nó da arvore fazendo cálculos estatísticos para
decidir para qual nó prosseguir.
Conteúdo: São todas as informações que o robô responde para o usuário em diferentes
canais e são definidos pelo Universal Message Markdown. (BOTPRESS, 2016)
Para gerenciar o fluxo da conversa botpress conta com um gerenciador de fluxo próprio, o
convo, que é todo o foco do framework, responsável pelas classes e métodos que executam as
seguintes ações:
• Escutar um canal;
• Responder para um canal;
• Aguardar uma entrada;
• Tomar a iniciativa e enviar uma mensagem ao usuário;
• Esperar certo tempo;
• Pesquisar algum arquivo de conteúdo para escolher uma resposta;
• Armazenar trecho da conversa em banco de dados;
• Etc..
FIGURA 4 - INICIANDO O CONVO
Com essas e muitas outras ações é que se define a estratégia de conversa do robô, as
ações são elencadas, o robô inicia uma nova conversa com um usuário no canal, recebe a
primeira mensagem do usuário, verifica o que significa e busca na sua base de dados a resposta
e dá ao usuário a resposta acompanhada de opções de réplica, o usuário responde conforme o
esperado e a conversa vai caminhando até o término. Este foi um simples exemplo do proceder
de uma conversa, onde envolvem infinitas possibilidades, pois é justamente neste ponto que se
define o tipo do fluxo, o que pode tornar um robô inteligente e sofisticado cheio de assuntos ou um
robô simples com opções limitadas de assuntos.
A figura 4 demonstra o início de uma conversa com o assunto padrão.
6.2.3. UNIVERSAL MESSAGE MARKDOWN (UMM)
Do português Redução Universal de Texto, é uma linguagem de redução leve e simples
que torna relativamente simples para todos poderem criar modelos de mensagens para uma ou
várias plataformas de mensagens. É uma linguagem que possuí comandos interpretativos pelo
chatbot que podem personalizar as respostas dependendo do contexto. (BOTPRESS, 2016)
FIGURA 5 - SINTAXE UMM
A figura 5 é o exemplo do começo de uma conversa onde o robô dirá “Hello!” e em seguida
verificará qual o canal de comunicação para personalizar a resposta, se Facebook então dará uma
resposta mais amigável e interativa com opções, mas se for SMS, devido às características do
canal, a resposta será mais resumida. (BOTPRESS, 2016)
O botpress então usa seu gerenciador de conteúdo para fazer o pré tratamento das frases
digitadas pelo usuário e se o programador quiser pode responder pelo próprio gerenciador de
conteúdo, mas o foco é usar o UMM para que as respostas tenham uma personalização mais
poderosa. A figura 6 é um exemplo de uso do gerenciador com o UMM.
FIGURA 6 - CONVO RECUPERANDO RESPOTAS DO UMM
7. CONCLUSÃO
Foi possível observar que antes de tudo o chatbot deve possuir uma razão e um objetivo
de existência. Pois, a razão e o objetivo são fatores delimitantes das habilidades e conhecimentos
necessários para o correto funcionamento do chatbot, um chatbot com uma função estritamente
específica não necessita de muitas habilidades e conhecimentos, pois o necessário são
habilidades e conhecimentos específicos atender as necessidades do usuário sem frustra-lo por
causa de erros ou falhas ou requisitos desconhecidos, deste modo qualquer coisa além do
específico torna o chatbot livre para uma resposta do tipo “Este assunto foge da minha área de
conhecimento” e assim encerra-se a preocupação de uma resposta plausível levando o usuário a
procurar a resposta em outro lugar.
Porém este trabalho trata do assunto como o chatbot supremo, ou seja, um método para a
produção de um chatbot que consiga responder a perguntas aleatórias sem limite de conteúdo
com respostas, perguntas e observações plausíveis afim de tornar a experiência de conversação
a mais inteligente possível. Para este caso a conclusão é que esse chatbot deve ser composto de
diversos chatbot que se comunicam onde cada um tenha uma função específica, desta forma as
tarefas ficam divididas e permite o chatbot possuir aprendizado escalável e com maior
abrangência, pois ter o domínio de um conhecimento pode ser uma tarefa simples comparado a
necessidade de aprendizado, personalidade e controle de sistemas.
7.1. CHATBOT SUPREMO
A divisão de chatbots segue conforme a imagem 7.
FIGURA 7 - CHATBOT SUPREMO
• Comunicator: Classe de chatbot responsável por receber/enviar mensagens de acordo com
o canal que o usuário esteja usando. Recebe as mensagens e, após o tratamento das
solicitações dos usuários, envia as respostas.
• Interpretator: Classe de chatbot responsável pela interpretação do que o usuário deseja.
Traduz o que o usuário digitou para uma linguagem próprio de chatbot, uma linguagem
minimalista e totalmente objetiva com a intenção de ser usada somente pelo chatbot para
facilitar a localização da resposta mais adequada. Este chatbot pode ser encadeado com
outros interpretators para tratamento de idioma, na verdade, no momento que chegar o uso
do interpretator, o primeiro deverá ser um que identifique o idioma do usuário e redirecione
para o interpretator do idioma do usuário.
• Pessoator: Primeira classe chatbots de uma lista encadeada de chatbots que podem
responder (pessoator, conhecimator, computator, …), esta classe de chatbot define algo
parecido com uma identidade para o chatbot, ou seja, fará com que ele tenha
características, propriedades e adjetivos para tentar traçar uma personalidade. Um chatbot
desta classe será responsável por respostas pessoais e por procurar conhecer o usuário
com quem conversa, armazena em banco de dados as conversas e informações para que
se um dia o usuário volte a conversar, então o chatbot será capaz de recuperar o histórico e
assim “recordar” o que foi conversado com o usuário. Perguntas de temas específicos serão
direcionadas ao conhecimator.
• Conhecimator: Classe de chatbot responsável por responder perguntas de temas
específicos e limitados. A divisão é opcional, porém parece certo dividir os conhecimentos
por chatbot
para que a IA não confunda temas com termos parecidos. Assim é possível
existir um chatbot para cada área do conhecimento humano de humanas à exatas.
• Computator: Por se tratar de um chatbot inteligente e por consequência de qualquer chatbot
possuir hardwares esta será a classe responsável por tratar solicitações de controle do
próprio hardware ou softwares do sistema operacional.
• Procurator: Chatbot responsável por procurar na internet caso o usuário não possa ser
respondido com o conhecimento atual, o procurator pesquisa por textos relevantes com
potencial de conter uma boa resposta, então avalia o melhor texto e envia para o
aprendizator. Pode ser chamado por qualquer robô e responde assim que obter uma
resposta.
• Aprendizator: Chatbot responsável por receber um texto, extrair o conhecimento do texto e
inserir na base de dados do robô correto respeitando a linguagem de robô e criando as
ligações necessárias na base de dados para que o conhecimento possa ser devidamente
recuperado e utilizado. Caso seja uma requisição do procurator, então responde-o para que
ele possa responder quem o chamou.
Porém usando o botpress, que é uma estrutura para auxiliar o desenvolvimento de
chatbots, algumas preocupações podem ser eliminadas, por exemplo, o comunicator, se tornaria
desnecessário, pois o botpress já possuí base para alguns meios de comunicação e caso não
exista um middleware para o meio de comunicação desejado, então poderá ser criado. Contudo
os outros chatbots sugeridos pela figura 7 teriam que ser programados, mas o botpress ajudaria
bastante, pois já possuí acesso a banco de dados, possuí uma linguagem que gerencia
perguntas, respostas e comportamentos, tudo isso ajudaria e muito a configurar um middleware
que gerencie a personalidade, o conhecimento e comportamento do chatbot, escrevendo e
recuperando tudo da base de dados.
Na figura 7 foram apresentados 7 possíveis chatbots entre outros diversos chatbots que
podem existir para auxiliar na construção do chatbot supremo, pois o conhecimento humano é
infinito, os humanos sempre estão inventando novas artes, criando novos conhecimentos,
corrigindo e aprimorando outros conhecimentos e tudo sempre acaba evoluindo, então um chatbot
supremo teria que ter controle de tudo e ter rotinas para sempre se manter atualizada, ou seja,
uma IA, como a Matrix do filme, que aparentemente é impossível de ser construída, pois em
determinado momento, sem o auxilio de uma mente aberta e humana, ela ficará estagnada e
inerte sem saber evoluir, pois precisa ter uma razão de existência e de evolução, o programador
até pode colocar a necessidade de evolução, mas um chatbot não é capaz de interpretar além do
que foi programado, então a evolução para um chatbot, dentro do conhecimento que lhe foi
programado, pode ser simplesmente aumentar o processamento sempre, mas em determinado
momento isso não torna o chatbot mais evoluído, pois a capacidade de processamento pode ser
imensa, mas não aproveitada tornando inútil a parte além da qual o chatbot saberia usar, e se o
chatbot tivesse tanto processamento inutilizado, então seria necessário aprimorar softwares para
que ele possa usar processamento extra, mas daí entraria a necessidade do chatbot saber
reconhecer falhas e achar pontos de melhorias, então se reprogramar e se recompilar, porém,
ainda não seria o suficiente, pois, a realidade, o ambiente real é volátil, e pode tornar sistemas de
medições do tempo imprecisos, então o chatbot deve criar mecanismos para tornar a precisão da
medição do tempo a melhor possível, porém com grandes mudanças temporais, o risco de queda
de energia ou o próprio sistema reiniciar, devido as variações do campo magnético, pode
representar um risco enorme para a integridade do sistema podendo comprometer hardware e
software, em outras palavras tornar o sistema totalmente inoperante. Assim a conclusão que se
chega é que um chatbot, não importa o qual seja, só será executado na sua melhor forma
enquanto o idealizador estiver vivo, um chatbot que continua sendo desenvolvido por outro
idealizador vai deixando de ser o chatbot original e acaba se tornando outro.
8. REFERÊNCIAS BIBLIOGRÁFICAS
RUSSEL, S. J.; NORVIG, P. Artificial Intelligence: A modern approach. Edinburgh Gate: Pearson,
2004
HAUGELAND, J. Artificial Intelligence - The Very Idea. London, England: A Bradford Book,
1989.
WHITLEY, D. A Genetic Algorithm Tutorial. Fort Collins: Colorado State University, 1994.
HOFFMANN, J. R. GENIUS – Um escalonamento baseado em algoritmos genéticos para
comutadores de alto desempenho. Curitiba: Biblioteca Central da UTFPR, 2013.
CHARNIAK, E.; MCDERMOTT, D. Introduction to Artificial Intelligence. Boston, MA: AddisonWesley Longman Publishing Co., Inc., 1994.
WINSTON, P. H. Artificial Intelligence. Massachusetts Institute of technology: Pearson, 1992.
SHAWAR, B. A.
ATWELL, E. A Comparison Between Alice and Elizabeth Chatbot Systems.
University of Leeds, 2002.
CHANTAROTWONG, B. The learning Chatbot. Fall, 2006.
KIRAKOWSKI, J. O’DONNELL, P. YIU, A. Establishing the Hallmarks of a Convincing ChatbotHuman Dialogue. Cork, Ireland.
SUCHMAN, L. Plans and Situated Action. The Problem of Human-Machine Communication. New
York, Cambridge: Cambridge University Press, 1987.
NATURAL LANGUAGE PROCESSING. In: WIKIPÉDIA, a enciclopédia livre. Flórida: Wikimedia
Foundation, 2017. Disponível em: <https://en.wikipedia.org/wiki/Natural_language_processing>.
Acesso em: 25 out. 2017.
HUMAN-COMPUTER INTERACTION. Em: WIKIPÉDIA, a enciclopédia livre. Flórida: Wikimedia
Foundation, 2017. Disponível em: <https://en.wikipedia.org/w/index.php?title=Human%E2%
80%93computer_interaction&oldid=814368986>. Acesso em: 27 set. 2017.
BOTPRESS. Em: Documentation, Guides and references for all you need to know about Botpress.
Botpress, 2016. Disponível em: < https://botpress.io>. Acesso em: 17 dezt. 2017.