Academia.eduAcademia.edu

Matris: Chatbot Supremo

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.4.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. 1.4.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.

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.