• Nenhum resultado encontrado

RENAN CAPARICA NORONHA

N/A
N/A
Protected

Academic year: 2021

Share "RENAN CAPARICA NORONHA"

Copied!
65
0
0

Texto

(1)

UDC – Centro Universitário Dinâmica das Cataratas Curso: Sistemas de Informação

INTERAÇÃO HOMEM E MÁQUINA ATRAVÉS DO ESTUDO DE PROCESSAMENTO DE LINGUAGEM NATURAL E CHATBOTS

RENAN CAPARICA NORONHA

FOZ DO IGUAÇU 2019

(2)

ACADÊMICO RENAN CAPARICA NORONHA

INTERAÇÃO HOMEM E MÁQUINA ATRAVÉS DO ESTUDO DE PROCESSAMENTO DE LINGUAGEM NATURAL E CHATBOTS

Monografia de conclusão de curso como requisito parcial para obtenção do grau de Bacharel em Sistemas de Informação da Centro Universitário Dinâmica das Cataratas – UDC, sob a orientação do Professor Dr. Anderson Andrei De Bona.

FOZ DO IGUAÇU 2019

(3)

TERMO DE APROVAÇÃO

RENAN CAPARICA NORONHA

INTERAÇÃO HOMEM E MÁQUINA ATRAVÉS DO ESTUDO DE PROCESSAMENTO DE LINGUAGEM NATURAL E CHATBOTS

Trabalho de Conclusão de Curso apresentado ao Centro Universitário Dinâmica das Cataratas – UDC, curso de Sistemas de Informação, para obtenção do grau de Bacharel de Sistemas de Informação, aprovado pela banca examinadora formada por:

__________________________________________ Orientador: Prof. Dr. Anderson Andrei De Bona

BANCA ORIENTADORA:

__________________________________________ Prof. Me. Adélio de Souza Conter

__________________________________________ Prof. Esp. Sérgio A. S. Lopez

FOZ DO IGUAÇU 2019

(4)

NORONHA, Renan Caparica

Interação Homem e Máquina Através do Estudo de Processamento de Linguagem Natural e Chatbots / Renan Caparica Noronha. – Foz do Iguaçu, 2019.

65f.:il.

Monografia (Bacharelado em Sistemas de Informação) – Centro Universitário Dinâmica das Cataratas, Foz do Iguaçu, 2019.

Orientação: Professor Dr. Anderson Andrei De Bona

(5)

NORONHA, Renan C. Interação Homem e Máquina Através do Estudo de Processamento de Linguagem Natural e Chatbots. 2019. 65 páginas. Trabalho de Conclusão de Curso (Graduação em Sistemas de Informação) – Centro Universitário Dinâmica das Cataratas, Foz do Iguaçu, 2019

RESUMO

Este trabalho tem como objetivo mostrar que é possível a interação entre homem e máquina utilizando a Inteligência artificial e processamento de linguagem natural aplicada a chatbots. O avanço da tecnologia e a quantidade de informação disponíveis hoje em dia permitem ao ser humano criar inteligências artificiais cada vez mais avançadas. Uma das áreas já afetadas por essa tecnologia é o atendimento de clientes em websites, onde muitas empresas têm como atendente primário de seus clientes um chatbot. Este trabalho adota duas abordagens metodológicas distintas, sendo a pesquisa bibliográfica utilizada para o levantamento de informações sobre o tema, e o estudo de caso para obter a resposta para o problema de pesquisa. Durante o desenvolvimento do tema foi estudado sobre Inteligência Artificial, Processamento de Linguagem Natural e chatbots, analisando seus conceitos e sua história. A fim de demonstrar na prática o funcionamento do chatbot, foi desenvolvido um protótipo baseado no Google Dialogflow, no qual foi explorado a interação entre homem e máquina com o objetivo de possibilitar uma experiência para o usuário de forma mais natural possível. Os resultados obtidos demonstram que o Google Dialogflow é uma ferramenta capaz de criar conversas dinâmicas, fluídas e reais.

(6)

NORONHA, Renan C. Interação Homem e Máquina Através do Estudo de Processamento de Linguagem Natural e Chatbots. 2019. 65 páginas. Trabalho de Conclusão de Curso (Graduação em Sistemas de Informação) – Centro Universitário Dinâmica das Cataratas, Foz do Iguaçu, 2019.

ABSTRACT

This paper aims to show that it is possible to have interaction between man and machine in a natural way with the technology currently available, more specifically, chatbots. Advances in technology and the amount of information available today allow humans to create more advanced artificial intelligences. One of the areas already affected by this technology is customer service on websites, where many companies have a chatbot as their primary attendant. This paper elects two distinct methodological approaches, the first one being the bibliographic research used to gather information about the topic, and the case study to obtain the answer to the research problem. During the development of the paper, subjects like Artificial Intelligence, Natural Language Processing and chatbots were addressed, analyzing their concepts and their history. In order to show in practice how a chatbot works, a Google Dialogflow-based prototype was developed, in which the interaction between man and machine was explored in order to enable a user experience as natural as possible. The results show that Google Dialogflow is a tool capable of creating dynamic, fluid and real conversations.

(7)

LISTA DE FIGURAS

Figura 1 – Metodologia para o embasamento teórico. ... 18

Figura 2 – Quadrante Mágico para Ciência de Dados e Plataformas de Aprendizado de Máquina. ... 19

Figura 3 – Definições de Inteligência Artificial separadas em quatro categorias. ... 20

Figura 4 – Árvore de derivação da frase “O João ama a Maria”... 27

Figura 5 – Exemplo de diálogo com o chatbot Carla. ... 31

Figura 6 - Exemplo de classificação de intent. ... 34

Figura 7 - Fluxograma de um intent. ... 35

Figura 8 - Fluxograma do context. ... 37

Figura 9 - Integração do agente com um serviço externo através de webhook. ... 39

Figura 10 - Integração do agente com um sistema através de API. ... 40

Figura 11 - Página inicial https://dialogflow.com/. ... 41

Figura 12 - Página de login. ... 41

Figura 13 - Página lista de intents. ... 42

Figura 14 - Configuração da entity sabor. ... 43

Figura 15 - Entity "borda". ... 44

Figura 16 - Entity "tamanho". ... 44

Figura 17 - Entity "bebida_marca". ... 45

Figura 18 - Entity "bebida_tamanho". ... 45

Figura 19 - Contexto do intent "pedido". ... 46

Figura 20 - Frases de treinamento do intent "pedido". ... 47

Figura 21 - Parâmetros do intent "pedido". ... 48

Figura 22 - Resposta estática do intent "pedido". ... 48

Figura 23 - Lista final de intents. ... 49

(8)

LISTA DE TABELAS

(9)

LISTA DE GRÁFICOS

(10)

LISTA DE ABREVIATURAS E SIGLAS

AIML Artificial Intelligence Markup Language AM Aprendizado de Máquina

CAPES Coordenação de Aperfeiçoamento de Pessoal de Nível Superior FAQs Frequent Asked Questions

IA Inteligência Artificial

IEEE Institute of Electrical and Electronics Engineers JSON JavaScript Object Notation

MIT Massachusetts Institute of Tecnology PLN Processamento de Linguagem Natural RNA Redes Neurais Artificiais

(11)

SUMÁRIO 1 INTRODUÇÃO ... 13 1.1 OBJETIVOS ... 14 1.1.1 Objetivo Geral ... 14 1.1.2 Objetivos Específicos ... 14 1.2 JUSTIFICATIVA ... 14 1.3 PROBLEMA ... 15 1.4 ESTRUTURA DO TRABALHO ... 15 1.5 PROCEDIMENTOS METODOLÓGICOS ... 15 1.5.1 Finalidade ... 16 1.5.2 Abordagem ... 16 1.5.3 Procedimentos ... 16

1.5.3.1 Elaboração das Questões de Pesquisa... 17

1.5.3.2 Seleção dos Artigos de Pesquisa ... 17

1.5.3.3 Estudo de Caso ... 18

2 INTELIGÊNCIA ARTIFICIAL ... 20

2.1 REDES NEURAIS ARTIFICIAIS ... 21

2.2 APRENDIZADO DE MÁQUINA ... 22

2.3 APRENDIZADO PROFUNDO ... 23

2.4 HISTÓRICO ... 24

3 PROCESSAMENTO DE LINGUAGEM NATURAL ... 26

3.1 ANÁLISE FONOLÓGICA ... 26 3.2 ANÁLISE MORFOLÓGICA ... 26 3.3 ANÁLISE SINTÁTICA... 27 3.4 ANÁLISE SEMÂNTICA ... 27 3.5 ANÁLISE PRAGMÁTICA... 28 3.6 HISTÓRICO ... 28

(12)

4 CHATBOTS ... 30 4.1 HISTÓRIA ... 30 4.1.1 Eliza ... 30 4.1.2 Parry ... 31 4.1.3 Carla ... 31 4.1.4 Julia ... 32 4.1.5 A.L.I.C.E. ... 32 5 DIALOGFLOW ... 33

6 IMPLEMENTAÇÃO E ANÁLISE DOS RESULTADOS ... 41

6.1 ESTUDO DE CASO ... 50

7 CONCLUSÃO ... 61

7.1 TRABALHO FUTUROS ... 62

(13)

1 INTRODUÇÃO

A melhor forma de promover a interação entre ser humano e computador se dá permitindo os usuários expressarem seus desejos, interesses e perguntas naturalmente, através da fala, escrita e gestos (ZADROZNY et al., 2002).

Estudos sobre essa interação homem-máquina utilizando linguagem natural começaram na década de 1950 como uma disciplina fortemente relacionada a linguística. O primeiro problema a ser pesquisado foi a área de tradução de máquina, que apesar de receber muita atenção no início, foi abandonada após descobrirem que era um problema muito complexo para ser resolvido na época. Na década de 1960 o foco migrou de tradução para entender perguntas e formular respostas (BATES, 1995).

Durante a década de 1960 surgiu o interesse de criar uma máquina com a capacidade de interagir com o ser humano que alimentou a ideia do chatbot, pois em 1966 no Massachusetts Institute of Tecnology (MIT) Joseph Wiezenbaum criou o chatbot Eliza em sua pesquisa que estuda a comunicação entre homem e máquina (WEIZENBAUM, 1966).

Também conhecido como chatterbot (robô de conversação), o chatbot é um robô que procura simular uma conversa humana, sendo seu objetivo final levar o locutor a pensar que está falando com um ser humano de verdade (LEONHARDT; NEISSE; TAROUCO, 2003).

Entretanto o termo chatterbot foi cunhado apenas em 1994 quando Michel Mauldin apresentou seu trabalho CHATTERBOTS, TINYMUDS, and the Turing Test Entering the Loebner Prize Competition durante a conferência The Twelfth National Conference on Artificial Intelligence (Décima Segunda Conferência Nacional sobre Inteligência Artificial), descrevendo chatterbot como robôs cujo principal serviço é conversar (MAULDIN, 1994).

Leonhardt, Neisse e Tarouco (2003) também mencionam que os chatbots foram dividos em diferentes categorias ao longo dos anos, e muitas dessas são amplamente utilizadas na internet, como por exemplo: comerciais, de entretenimento, respostas para perguntas frequentes (FAQs), educacionais entre outros.

(14)

1.1 OBJETIVOS

1.1.1 Objetivo Geral

Demonstrar a interação entre homem e máquina utilizando inteligência artificial e processamento de linguagem natural aplicada a chatbots.

1.1.2 Objetivos Específicos

 Definir o conceito de Inteligência Artificial;

 Definir Processamento de Linguagem Natural;

Apresentar os conceitos de chatbot;

 Demonstrar a interação entre homem e máquina através da construção de um protótipo de chatbot;

 Analisar e avaliar a interação entre o homem e a máquina baseado no protótipo construído.

1.2 JUSTIFICATIVA

Hoje em dia com a evolução da tecnologia e a quantidade de informação disponível o ser humano está mais próximo de criar uma Inteligência Artificial (IA) próxima do comportamento humano. Uma das áreas que já é afetada com o avanço dessa tecnologia é o atendimento de clientes em websites, onde muitas empresas utilizam um chatbot como atendente primário de seus clientes.

Neste trabalho será estudado e conceituado Inteligência Artificial, Processamento de Linguagem Natural (PLN) e chatbots. A análise realizada neste trabalho irá compilar conhecimentos importantes sobre estes temas em um único lugar, facilitando para cientistas iniciantes e membros da sociedade na hora de buscarem uma fonte de dados para suas pesquisas. Esta compilação de conhecimento também ajuda o autor a ampliar seu domínio sobre a teoria básica que envolve o tema deste trabalho.

Além de conceitos, este trabalho também procura criar um chatbot que seja capaz de interagir com um ser humano de uma forma natural. Através do chatbot que será criado o autor espera demonstrar a utilização de ferramentas PLN, ampliar seu conhecimento e obter experiência nesta área para aplicá-la em seus projetos futuros. Cientistas e membros da comunidade também podem utilizar este estudo como base para novos testes, ou para incrementar suas próprias aplicações.

(15)

1.3 PROBLEMA

Como possibilitar a interação entre homem e máquina utilizando Inteligência Artificial?

1.4 ESTRUTURA DO TRABALHO

O capítulo I introduz uma breve história da temática, os objetivos, a justificativa, o problema, a estrutura e a metodologia deste trabalho.

O capítulo II explana a história e o que significa Inteligência Artificial.

O capítulo III apresenta o conceito de Processamento de Linguagem Natural e sua história.

O capítulo IV conceitua chatbots, apresenta exemplos históricos e explica como funcionam.

O capítulo V traz uma explicação extensiva sobre o Google Dialogflow.

O capítulo VI descreve o desenvolvimento do chatbot, as dificuldades e os passos tomados durante o desenvolvimento.

O capítulo VII conclui o trabalho analisando os resultados obtidos e apresenta possíveis trabalhos futuros.

O capítulo VIII apresenta as referências bibliográficas utilizadas neste trabalho.

1.5 PROCEDIMENTOS METODOLÓGICOS

Segundo Marconi e Lakatos (2003), o método é um conjunto de atividades sistemáticas e racionais que permitem traçar um caminho, detectar erros, auxiliar as decisões dos cientistas e alcançar conhecimentos válidos e verdadeiros. E para Gerhardt e Silveira (2009), diferente de método, a metodologia foca na validade do caminho escolhido para alcançar o conhecimento proposto pela pesquisa. A pesquisa por sua vez é desenvolvida por processos e etapas, começando pela formulação de um problema até os resultados finais (GIL, 2002).

O segundo procedimento a ser utilizado neste trabalho, o estudo de caso, pode ser definido de forma geral como o estudo de um ou poucos objetos, de maneira que resulta no amplo conhecimento destes objetos (GIL, 2002).

A seguir será discutido os procedimentos metodológicos deste trabalho. Eles serão divididos em três principais etapas, sendo elas finalidade, abordagem e procedimentos.

(16)

1.5.1 Finalidade

Este trabalho tem como finalidade expandir e disseminar os conhecimentos sobre Inteligência Artificial, Processamento de Linguagem Natural e chatbots, utilizando-se de artigos científicos publicados, para enfim apresentar uma solução para o problema de pesquisa, através de uma explanação prática, construindo um agente que utiliza técnicas avançadas de IA para conversar com o usuário, em um contexto limitado, de forma que seja difícil para o usuário distinguir se está conversando com uma pessoa ou com um robô. Por fim será analisado o desempenho do agente para concluir se há uma solução para o problema de pesquisa proposto.

1.5.2 Abordagem

Este trabalho visa demonstrar a possibilidade de criar um chatbot que interaja com o ser humano de maneira natural utilizando tecnologias atuais através do desenvolvimento de um protótipo que será avaliado por um estudo de caso.

1.5.3 Procedimentos

Para os procedimentos deste trabalho foi adotado duas abordagens distintas, sendo elas a pesquisa bibliográfica e o estudo de caso.

Segundo Gil (2002), em quase todos os estudos é exigido algum tipo de pesquisa bibliográfica, e explica que a pesquisa é desenvolvida a partir de materiais já elaborados, sendo estes principalmente livros e artigos científicos.

Expandindo o conceito proposto pelo autor anterior, para Gerhardt e Silveira (2009) todo trabalho de natureza científica teve início com uma pesquisa bibliográfica, para aprimorar o conhecimento do autor e atualizá-lo nos assuntos mais recentes da área desejada. As autoras definem a pesquisa bibliográfica como um levantamento de referências teóricas que já foram analisadas e publicadas em algum meio, seja este escrito ou eletrônico.

O segundo procedimento a ser utilizado neste trabalho, o estudo de caso, pode ser definido de forma geral como o estudo de um ou poucos objetos, de maneira que resultou no amplo conhecimento destes objetos (GIL, 2002). O estudo de caso pode ser feito com uma perspectiva interpretativa, apenas procurando entender como é o mundo do ponto de vista dos participantes, ou de uma perspectiva pragmática, apresentando uma visão global completa e coerente do ponto de vista do investigador.

(17)

O estudo de caso não procura alterar o objeto, apenas revelar a forma como ele é percebido, de acordo com o ponto de vista utilizado (GERHARDT; SILVEIRA, 2009).

1.5.3.1 Elaboração das Questões de Pesquisa

Para iniciar o desenvolvimento deste trabalho foi necessário buscar artigos científicos de temas relacionados. Para encontrar estes artigos, com base na revisão bibliográfica sistemática, foram selecionadas as seguintes questões de pesquisa:

 O que é Inteligência Artificial?

 Qual a história da Inteligência Artificial?

 O que é Processamento de Linguagem Natural?

 Como funciona o Processamento de Linguagem Natural?

O que é Chatbot?

Como fazer um Chatbot?

Foram utilizadas as seguintes palavras-chave para as buscas de artigos: Chatbot, Chatterbot, Natural Language Processing, Artificial Intelligence, Processamento de Linguagem Natural, Inteligência Artificial.

1.5.3.2 Seleção dos Artigos de Pesquisa

O processo de seleção de artigos foi executado em três etapas, sendo elas:  1ª etapa: Seleção dos artigos: Para levantamento inicial de artigos e

trabalhos que condizem com os critérios de busca especificados pelo autor, foram realizadas pesquisas em bases como IEEE, CAPES ou em websites como Research Gate, utilizando as palavras-chave definidas anteriormente.

 2ª etapa: Filtragem dos artigos: Os trabalhos recuperados são armazenados inicialmente em um software de organização de referências bibliográficas (Mendeley). O processo de filtragem constitui em remover os artigos duplicados, caso existam, e conferir se o software armazenou as informações sobre o artigo corretamente.

 3ª etapa: Extração dos dados e organização dos artigos: Na sequência é realizado a leitura dos artigos, para constatar que estes possuem informações a contribuir a este estudo. Caso possuam informações não relevantes ou repetidas, serão descartados.

(18)

Figura 1 – Metodologia para o embasamento teórico. Fonte: Autor.

1.5.3.3 Estudo de Caso

Este trabalho procura obter a resposta para uma boa interação entre homem e máquina nos dias atuais. Dentre os diferentes meios de interação, e diferentes tecnologias, para este trabalho o autor escolhe o chatbot como o objeto de estudo, para verificar a possibilidade de um humano conversar com um computador naturalmente.

Existem vários chatbots atualmente, sendo conceitos fáceis e difíceis de se implementar, ou ferramentas que fazem um chatbot por você. O intuito deste trabalho como exposto no parágrafo anterior, se concentra em demonstrar a possibilidade de um computador ter uma conversa natural com um ser humano, portanto para atingir resultados satisfatórios, será escolhida uma ferramenta a partir do quadrante mágico disponibilizado pela empresa Gartner para a construção de um protótipo.

A Figura 2 apresenta o quadrante mágico feito pela empresa Gartner, onde é separado em 4 categorias empresas nas áreas de ciência de dados e plataformas de aprendizagem de máquina. As empresas dentro do quadrante superior esquerdo são categorizadas como desafiantes, no quadrante superior direito líderes, no quadrante inferior esquerdo são jogadores de nicho, e no quadrante inferior direito visionários.

Dentre as empresas expostas na Figura 2, foi escolhida a Google, devido a sua relevância no mundo tecnológico, seu posicionamento como visionário, uma interface amigável, de fácil utilização e possuir um nível gratuito de utilização da sua ferramenta chamada de Dialogflow.

(19)

Figura 2 – Quadrante Mágico para Ciência de Dados e Plataformas de Aprendizado de Máquina. Fonte: (GARTNER, 2019)

O protótipo será desenvolvido com uma temática de pedidos de uma pizzaria, e fará o papel de um atendente que recebe pedidos de pizza.

Para demonstração e validação do protótipo a ser construído, será simulado pedidos de pizza com diferentes tipos de linguajar e combinação de palavras.

O detalhamento do desenvolvimento do protótipo e do processo de validação serão discutidos a partir do capítulo 6.

(20)

2 INTELIGÊNCIA ARTIFICIAL

A espécie humana, homo sapiens, recebeu esse nome pois temos a capacidade de pensar. Durante milhares de anos o ser humano tem procurado entender como é possível “pensar”, como uma pequena matéria cinzenta tem a capacidade de compreender um mundo muito mais complicado do que ela própria. A Inteligência Artificial vai mais além, tenta não apenas compreender este mundo, mas também tenta construir entidades que tenham pensamento próprio (RUSSELL; NORVIG, 2013).

Para Ben Coppin (2017, p.4) “Inteligência Artificial envolve utilizar métodos baseados no comportamento inteligente de humanos e outros animais para solucionar problemas complexos.”.

Figura 3 – Definições de Inteligência Artificial separadas em quatro categorias. Fonte: (RUSSELL; NORVIG, 2013)

Os autores Russell e Norvig (2013) compilaram na Figura 3 oito definições de IA, dispostas em duas dimensões, que representam quatro estratégias diferentes de abordagem da IA. Pode-se analisar a Figura 3 na ordem vertical, analisando as partes de cima e de baixo, que segundo os autores, a parte de cima da Figura 3 representa o pensamento ou raciocínio, referindo-se a uma das áreas de estudo de IA, fazer a máquina pensar.

(21)

A parte de baixo da Figura 3 foca na área comportamental, envolve as teorias que tentam imitar o comportamento humano, ou criar um comportamento racional. Já a segunda dimensão, da ordem horizontal, analisa a imagem da esquerda para direita, sendo que o lado esquerdo faz referência as pesquisas onde o alvo é a fidelidade ao desempenho humano. O lado direito por sua vez caracteriza sucesso quando seus resultados se aproximam de um conceito ideal de inteligência, que também pode ser chamado de racionalidade.

2.1 REDES NEURAIS ARTIFICIAIS

Inspirada nos sistemas de aprendizado biológico, Redes Neurais Artificiais (RNA) surgiram tentando reproduzir o formato de aprendizado existente na sua contraparte biológica. O cérebro humano contém uma grade rede de neurônios interconectados, e com base neste modelo, as redes neurais artificiais são compostas de unidades (neurônios) separadas em camadas, e conectadas entre si. Estas unidades simulam a função de um neurônio, onde recebem uma variedade de dados de outras unidades, e produzem uma única saída, que pode se tornar a entrada de outra unidade (MITCHELL, 1997).

Desde a década de 1940, tem sido pesquisado e desenvolvido modelos cada vez mais realistas de neurônios, levando até mesmo a fundação de um novo campo de pesquisa chamado de neurociência computacional. Entretanto os estudiosos da IA tem seu foco em outras propriedades das redes neurais, como por exemplo a capacidade de realizar computação distribuída, tolerar entradas ruidosas ou sua capacidade de aprendizado (RUSSELL; NORVIG, 2013).

Como mencionado anteriormente, as RNAs foram modeladas em imagem ao cérebro, e são compostas por vários neurônios artificiais. Estes neurônios artificiais recebem uma série de entradas, que são processadas através de uma função chamada de função de ativação. A função de ativação irá gerar o nível de ativação do neurônio artificial, e este nível representa o valor de saída do neurônio. Existem várias funções de ativação diferentes, e atualmente, os neurônios artificiais tem menos conexões que sua contraparte biológica, e as RNAs são muito menores em números de neurônios do que o cérebro humano (COPPIN, 2017).

Assim como existe diferentes formas de se modelar um neurônio, também existe formas diferentes de se construir a rede neural artificial. Segundo Russell e Norvig (2013), existem duas formas principais de se montar uma RNA. Uma das

(22)

formas de configurar uma RNA é com alimentação para frente, isso significa que a conexão entre os neurônios segue apenas uma direção, onde um o neurônio recebe a saída de neurônio anterior, e envia sua própria saída para um novo neurônio à frente. A outra forma de conectar uma RNA é chamada de rede recorrente, onde as saídas dos neurônios alimentam suas próprias entradas. O formato das redes recorrentes permite o suporte de memória de curto prazo, tornando-a mais próxima de um modelo cerebral, apesar do alto nível de complexidade.

2.2 APRENDIZADO DE MÁQUINA

Antes da IA, para resolver os problemas que precisavam de computação era codificado em alguma linguagem de programação todos os passos necessários para a solução (FACELI et al., 2011).

Após a década de 1970, com maior disseminação das técnicas de IA, alguns sistemas com conhecimento especialista começaram a aparecer. Estes sistemas utilizavam conhecimento específico relacionado a área do problema, e codificavam este conhecimento, frequentemente por regras lógicas, em um programa. Geralmente este conhecimento era adquirido através de entrevistas com um profissional da área, e os programas finais eram conhecidos como Sistemas Especialistas, ou, Sistemas baseados em Conhecimento (FACELI et al., 2011).

Segundo Langley (2011), o crescimento da área de aprendizado de máquina durante as décadas de 1990 e 2000 levou a separação entre inteligência artificial e aprendizado de máquina, o que segundo ele foi uma grande perda para ambos os campos.

Com o passar do tempo os problemas se tornaram cada vez mais complexos, houve a necessidade de ferramentas melhores. Para que o processo se torne mais autônomo e diminua a intervenção humana, seria necessário que a máquina crie por si própria, a partir de uma experiência anterior, uma hipótese ou função, capaz de resolver o problema em mãos. A este processo de indução de uma hipótese, ou aproximação de uma função, dá-se o nome de Aprendizado de Máquina (AM) (FACELI et al., 2011).

Para Mitchell (1997), com o amadurecimento da área computacional, a área de aprendizado de máquina se tornará mais importante, e existem algumas conquistas que proporcionam visão do que é possível atingir utilizando AM, como por exemplo:

(23)

 Previsão da taxa de recuperação de pacientes com pneumonia;  Detectar uso fraudulento de cartões de crédito;

 Condução autônoma de automóveis.

Os problemas de aprendizado de máquina geralmente envolvem classificar as entradas de acordo com um conjunto finito (ou infinito) de classificações. Para treinar o sistema, é compilado uma base de treinamento, com dados reais que foram manualmente classificados anteriormente. O sistema utiliza esta base de treinamento para tentar aprender a como classificar esses dados, e também a como classificar outros dados que ainda não foram classificados (COPPIN, 2017).

Apesar das promessas feitas pela área de AM, também existem algumas questões importantes que surgem ao se desenvolver um sistema AM, como por exemplo, qual algoritmo usar para determinado problema ou qual o tamanho necessário da base de treinamento para obter um resultado satisfatório (MITCHELL, 1997).

2.3 APRENDIZADO PROFUNDO

Uma RNA comum, como citado anteriormente, consiste de vários neurônios que produzem valores e ativam outros neurônios. Após os neurônios de entrada serem ativados, os neurônios seguintes são ativados através de conexões ponderadas. O “aprendizado” de uma RNA ocorre através da busca pelos pesos corretos para cada conexão, fazendo a RNA exibir o comportamento desejado. De acordo com o problema, e o formato de conexão entre os neurônios, para atingir o comportamento desejado de uma RNA pode ser necessário várias camadas e estágios diferentes, onde cada camada ou estágio pode ser mais complexa que a anterior. Aprendizado Profundo é sobre atribuir o peso correto para cada conexão em todos os estágios de uma RNA (SCHMIDHUBER, 2014).

Já para os autores Lecun, Bengio e Hinton (2015) aprendizado profundo é definido como uma pilha multicamada composta por módulos simples, onde quase todos são sujeitos ao aprendizado, computando entradas e saídas não lineares. Cada módulo na pilha transforma sua entrada para aumentar a seletividade e diminuir a variação do dado. Com 5 a 20 camadas não lineares por exemplo, um sistema consegue implementar funções complexas e sensíveis, capazes de diferenciar um

(24)

cachorro samoiedo de um lobo branco, e ao mesmo tempo ser insensível a informações irrelevantes, como o plano de fundo, iluminação e objetos ao redor.

2.4 HISTÓRICO

A lógica que conhecemos hoje e utilizamos em IA começa sua história na Grécia antiga, onde Aristóteles estudou sobre a lógica, e inventou a ideia do silogismo. O silogismo permite, teoricamente, gerar conclusões de forma mecânica, dadas as premissas iniciais (RUSSELL; NORVIG, 2013).

A partir de Aristóteles outros cientistas desenvolveram e expandiram seus estudos sobre a lógica, o primeiro deles de alta importância foi Dialectica, um tratado da lógica, escrito por Peter Abelard (COPPIN, 2017).

Nos últimos séculos o progresso tem sido mais acelerado e George Boole, em meados do século XIX, escreveu sua álgebra booleana, que proporcionou o lado matemático da filosofia estudada na Grécia Antiga. Alguns anos depois, Gottlob Frege trabalhou em cima dos estudos de Boole, e em 1879 suas descobertas levaram a inclusão de objetos e relações, criando a base da lógica que utilizamos hoje em dia (RUSSELL; NORVIG, 2013).

Enquanto Boole criava sua lógica, Charles Babbage criou sua Máquina Analítica, precursora do computador moderno, e antepassado da máquina criada por Alan Turing, que veio a ser o cientista que colocou a Inteligência Artificial no mapa (COPPIN, 2017).

Segundo Stuart Russell e Peter Norvig (2013), o teste de Turing, um dos principais trabalhos de Alan Turing na área, foi publicado em 1950 e projetado para concluir se uma IA possui uma inteligência satisfatória. Para passar no teste de Turing, o computador precisa de alguns requisitos:

 Processamento de Linguagem Natural: permitir que o usuário se comunique com o computador em um idioma natural;

 Representação de Conhecimento: armazenar tudo o que aprender;  Raciocínio Automatizado: fazer uso das informações armazenadas, seja

para responder perguntas ou tirar novas conclusões;

 Aprendizado de Máquina: Se adaptar a novas circunstâncias.

Este teste deixa de fora propositalmente a parte física, pois a simulação física é desnecessária para medir a inteligência. Entretanto, outros estudiosos consideram

(25)

um teste chamado de “teste de Turing total”, que inclui vídeo e tato. Este teste possui outros dois requisitos, sendo eles:

 Visão computacional: para “ver” ou perceber objetos; e  Robótica: para manipular objetos ou movimentar-se.

Os seis tópicos citados anteriormente compõem a maior parte das disciplinas de Inteligência Artificial.

O termo Inteligência Artificial foi cunhado por John McCarthy em uma conferência no Dartmouth College em 1956 (COPPIN, 2017).

(26)

3 PROCESSAMENTO DE LINGUAGEM NATURAL

Processamento de Linguagem Natural é uma das áreas de estudo dentro da IA que segundo Vieira e Lopes (2010), é responsável por estudar programas de computador que podem analisar, reconhecer ou até mesmo gerar textos em linguagem natural.

Já o autor Aranha (2007) afirma que PLN consiste em um conjunto de métodos formais, cujo objetivo é analisar textos e gerar frases em linguagem natural.

Para que um computador possa entender a linguagem natural, é necessário analisar, processar e manipular a linguagem em vários níveis diferentes (COPPIN, 2017), são estes:  Análise Fonológica;  Análise Morfológica;  Análise Sintática;  Análise Semântica;  Análise Pragmática. 3.1 ANÁLISE FONOLÓGICA

Segundo Coppin (2017), “Fonologia é o estudo dos sons que compõem palavras e é usado para identificar palavras a partir de sons.”. Já Pereira Filho e Dias (2009), definem Fonologia como uma área do estudo de línguas responsável por avaliar e estudar os sons da língua, bem como o conhecimento fonológico dos falantes.

A análise fonética de palavras é utilizada em sistemas com reconhecimento de fala, onde antes de interpretar o que o usuário está falando, é necessário entender as palavras que ele está dizendo (COPPIN, 2017).

3.2 ANÁLISE MORFOLÓGICA

A análise morfológica é responsável por diferenciar palavras e expressões em uma frase, utilizando-se de delimitadores como espações em branco e pontuação (OLIVEIRA, 2004). As palavras são analisadas e classificadas de acordo com as categorias gramaticais da língua utilizada, que no português são substantivo, adjetivo,

(27)

numeral, verbo, advérbio, pronome, artigo, preposição, conjunção e interjeição (FARINON, 2015).

A análise morfológica permite compreender cada palavra que compõe uma frase, ajudando a formar uma estrutura coerente desta frase para que seja possível compreendê-la (OLIVEIRA, 2004).

3.3 ANÁLISE SINTÁTICA

A sintaxe em um idioma determina como as palavras se relacionam entre si e a forma como serão estruturadas dentro de uma frase (PEREIRA FILHO; DIAS, 2009). Já em PLN o analisador sintático irá processar o resultado gerado pelo analisador morfológico e categorizar as palavras de acordo com a estrutura da frase. Será construído árvores de derivação para cada sentença afim de estabelecer o relacionamento das palavras entre si (OLIVEIRA, 2004).

Figura 4 – Árvore de derivação da frase “O João ama a Maria”. Fonte: (FARINON, 2015).

A Figura 4 exemplifica visualmente como seria uma árvore de derivação montada por um analisador sintático da frase “O João ama a Maria”. A frase foi analisada de acordo com sua estrutura e relacionamento das palavras, e a árvore foi montada de acordo com os resultados dessa análise.

3.4 ANÁLISE SEMÂNTICA

A análise semântica, de maneira genérica, utiliza o resultado da análise sintática para identificar o significado da frase. A frase “O pensamento azul ficou molhado” por exemplo será rejeitada pelo analisador semântico, pois apesar de conter

(28)

todos os componentes sintáticos que compõem uma oração, não faz sentido (FARINON, 2015).

O autor Oliveira (2007) expande sobre semântica explicando que a compreensão da relação entre as palavras é tão importante quanto as próprias palavras em si. Como não existe uma relação imediata entre sintaxe e semântica, uma mesma frase pode ter dois significados distintos, como no exemplo “uma professora de capoeira pernambucana” pode se referir a uma mulher nascida em Pernambuco que ministra aulas de capoeira, ou a uma professora que ministra aulas de capoeira no estilo pernambucano.

3.5 ANÁLISE PRAGMÁTICA

Segundo Oliveira (2007) Análise Pragmática é a análise do todo, utilizando os resultados anteriores para interpretar o texto de acordo com seu contexto, afim de evitar ambiguidades de estruturas complexas como anáforas, elipses e outros fenômenos pragmáticos textuais.

O autor Farinon (2015) exemplifica a análise pragmática através da relação homem e máquina. Um computador quando receber uma ordem do usuário para executar uma tarefa com prioridade, a análise pragmática deve interpretar que além de executar a tarefa ordenada, as outras tarefas rodando atualmente devem ser temporariamente pausadas para dar prioridade a este novo comando.

3.6 HISTÓRICO

Pode se dizer que a área de PLN teve seu início nos anos 1940 com os estudos sobre tradução automática. Estes estudos foram influenciados pelos esforços de descriptografia de códigos na Segunda Guerra Mundial (VIEIRA; LOPES, 2010). Um dos pioneiros nesta área, Warren Weaver (1949), publicou um memorando em 1949 que discute a possibilidade e as dificuldades da tradução automática na época.

Apesar das dificuldades colocadas por Weaver, em 8 de janeiro de 1954, uma publicação na primeira página do jornal The New York Times chamou a atenção de muitos leitores. Essa reportagem, que também foi reproduzida em vários outros jornais americanos da época, descrevia o experimento de tradução instantânea conduzido pela parceria entre IBM e a Universidade de Georgetown, onde os funcionários da IBM Cuthbert Hurd e Peter Sheridan, e Leon Dostert and Paul Garvin membros do

(29)

instituto de línguas da Universidade de Georgetown desenvolveram um tradutor instantâneo do Russo para o Inglês (HUTCHINS, 2010).

Infelizmente, devido ao entusiasmo da mídia e dos pesquisadores, foi dada a falsa impressão de que tradução automatizada e de boa qualidade era algo para um futuro próximo. Após 10 anos de resultados insatisfatórios, os investidores no projeto de Georgetown decidiram criar um comitê assessor para processamento automático da língua – ALPAC, responsável por investigar e analisar o projeto do tradutor automático (HUTCHINS, 2010). No ano de 1966, após sua análise, o comitê decidiu por encerrar o projeto, e recomendou que esta área de estudo não receba mais fundos governamentais, pois segundo seu relatório o objetivo do grupo de pesquisa, tradução instantânea e automática, estava muito longe de ser alcançado (VIEIRA; LOPES, 2010).

Apesar da área de tradução instantânea ter perdido seu crédito e valor para os investidores, outra ramo de PLN estava em desenvolvimento, e no mesmo ano de publicação do relatório da ALPAC, no MIT, Joseph Weizenbaum (1966) criou Eliza, um programa que possibilita a conversação entre um computador e um ser humano utilizando linguagem natural.

Inspirada pela pesquisa e teste proposto por Alan Turing, Weizenbaum criou um chatbot que simula o papel de um psicólogo (LALIĆ; KRSTIĆ; HAVZI, 2018). O programa utiliza técnicas de PLN para interpretar o que o usuário escreve, e responder utilizando a mesma linguagem natural. Muitas pessoas na época acreditavam estar conversando com uma pessoa de verdade (FARINON, 2015).

(30)

4 CHATBOTS

O chatbot, também conhecido como chatterbot (Robô de Conversação), são programas de computador que tentam simular um ser humano em uma conversa, respondendo perguntas com o objetivo de fazer as pessoas pensarem estar conversando com uma pessoa normal, e não com um computador (TEIXEIRA; MENEZES, 2003). Outros autores como Shawar e Atwell (2007) afirmam que um chatbot é um software que interage com usuários utilizando linguagem natural.

Identificar palavras-chave em uma sentença; encontrar um contexto; alterar o texto se necessário; gerar respostas na ausência de uma palavra-chave, são os principais fundamentos de Eliza (WEIZENBAUM, 1966). Este modelo inspirou e foi base por muitos anos para os chatbots seguintes (TEIXEIRA; MENEZES, 2003).

Após o modelo apresentado pelo chatbot Eliza, outros dois modelos se destacam. Julia foi o primeiro chatbot a introduzir novas técnicas da IA, como redes neurais, em seu modelo. Essas técnicas permitiram a Julia aprender enquanto conversa, não dependendo apenas da base de conhecimento inicial (TEIXEIRA; MENEZES, 2003). Outro modelo proposto pelo chatbot A.L.I.C.E. utiliza-se da linguagem AIML para estruturar sua base de conhecimento. Um dos motivos de sua popularidade e diversas implementações se dá por que a plataforma A.L.I.C.E. e a linguagem AIML são independentes, diminuindo a dificuldade de implementação para o programador (LEONHARDT, 2005).

4.1 HISTÓRIA

Serão apresentados alguns chatbots históricos em ordem cronológica para melhor entender a evolução dos mesmos através dos anos.

4.1.1 Eliza

Inspirado pelo trabalho de Alan Turing publicado em 1950, Eliza é considerada a primeira chatbot conhecido, criado por Joseph Weisenbaum em 1966. Tinha como objetivo se comportar como um psicanalista, e sua estrutura é simples, na maioria das vezes retornando as respostas dos usuários em forma de perguntas. Sua habilidade de conversa não é muito boa, mas era o suficiente para confundir as pessoas da época, pois não havia nada parecido (BRADEŠKO; MLADENIĆ, 2012). O autor Michael Mauldin (1994) comenta que Eliza é um programa simples que obteve

(31)

sucesso na época pois utilizava alguns “truques”, como responder uma pergunta com outra pergunta.

4.1.2 Parry

Desenvolvido por Colby, Weber e Hilf (1971), Parry simula um comportamento paranoico através do rastreamento do seu estado emocional.

Inspirado em Eliza, sua premissa foi a falta de um mundo interno que influencia e rastreie a conversa. Colby submeteu Parry a vários testes onde pessoas conversavam com três pacientes paranoicos e o chatbot, e segundo os resultados transcritos, tanto psiquiatras quando cientistas da computação não tiveram sucesso em identificar com certeza qual dos entrevistados era o robô (MAULDIN, 1994).

4.1.3 Carla

Em 1984 o chatbot Carla foi desenvolvido com o objetivo de simular inteligência. Publicado originalmente na revista Microhobby, Carla pode ser considerado um dos primeiros chatbots publicados no Brasil. A solução envolve a procura de palavras-chave em várias tabelas que escolhem uma resposta pronta, essa resposta é somada a resposta do usuário se necessário para então ser apresentada (RENZETTI, 1984). A Figura 5 mostra um exemplo de conversa de Carla.

Figura 5 – Exemplo de diálogo com o chatbot Carla. Fonte: (RENZETTI, 1984)

(32)

4.1.4 Julia

Este chatbot nasceu dentro do mundo de TinyMUD (Multi-User Dungeons), um mundo virtual em um jogo, dentro deste mundo vive Julia. Foi criada em 1994 por Michael Mauldin com o objetivo de ajudar jogadores mapeando mapas e passando mensagens (MAULDIN, 1994). Tendo sua base em redes neurais, Julia tem um caráter e humor próprio, capacidade de aprender e guardar informações sobre os cenários, podendo até mesmo ser considerada como um agente autônomo (LEONHARDT, 2005).

4.1.5 A.L.I.C.E.

Artificial Linguistic Internet Computer Entity é um chatbot gratuito implementado por Wallace em 1995. O software implementa uma linguagem de marcação específica chamada de Artificial Intelligence Markup Language - AIML (SHAWAR; ATWELL, 2007). Esta nova linguagem possibilitou a criação de muitos outros projetos de chatbots, pois basta desenvolver uma nova base de conhecimentos AIML para que A.L.I.C.E. responda as perguntas desejadas (LEONHARDT, 2005).

(33)

5 DIALOGFLOW

Como mencionado no item 1.5.3.3 da metodologia, a ferramenta escolhida para o desenvolvimento do protótipo foi o Dialogflow que atualmente pertence a Google.

Dialogflow é uma solução de ponta-a-ponta, onde se desenvolve uma vez e implementa em qualquer lugar, criando interface de conversa para websites, celulares, plataformas de mensagem populares e dispositivos IoT (Internet das Coisas). Foi desenvolvido com algoritmos de aprendizado de máquina e roda totalmente na infraestrutura de nuvem da Google (GOOGLE, 2019a).

No início Dialogflow era conhecido como um aplicativo chamado SpeakToIt, e foi criado para competir com a Siri, assistente virtual da Apple. Em 2015 a tecnologia por trás desse aplicativo vai disponibilizada publicamente através da plataforma API.AI, que é conhecida atualmente como Dialogflow (JANARTHANAM, 2017).

Seria ideal se todo sistema entendesse o que o usuário quer dizer, ao invés de esperar que a resposta seja escrita da forma esperada. Isso pode deixar o usuário perdido. O Dialogflow utiliza sua estrutura de inteligência artificial para analisar o input do usuário e tentar entender o que o usuário quer. Algumas pessoas podem perguntar “Como está o tempo agora? ”, ou “Qual o tempo lá fora? ”, ambas as frases expressam o desejo de saber o tempo naquele momento, mas são escritas de forma diferente. O Dialogflow se encarrega de fazer a análise, e desde que haja exemplos suficientes, não será problema entender a intenção do usuário. A seguir será visto como o Dialogflow é estruturado, e como que ele entende a intenção do usuário (GOOGLE, 2019b).

Para organização e estruturação da conversa, o Dialogflow possui alguns conceitos que são importantes para seu funcionamento. Essas entidades são (GOOGLE, 2019b):  Agentes;  Intents;  Entities;  Context;  Follow-up Intents;  Respostas;  Fulfillment.

(34)

O agente é o chatbot em si, um módulo que lida com a comunicação com o usuário final, entende a linguagem humana e a transforma em dados estruturados que um sistema consiga entender, semelhante a um atendente de call center (GOOGLE, 2019b).

Cada agente possui muitos intents, que refletem a intenção de um usuário, e dizem ao agente as ações ou respostas de acordo com a entrada do usuário, e a combinação desses intents lidam com o diálogo completo. Para cada intent é definido exemplos de entradas para que o agente saiba quando acionar determinado intent, bem como os dados a serem extraídos, no formato de entities, que será discutido adiante (GOOGLE, 2019b).

A Figura 6 traz um exemplo de como os intents são classificados. O agente olha a frase e a classifica como pertencendo ao intent de Forecast (Previsão do Tempo). Dentro do intent Forecast são extraídos as entidades time e location que irão indicar a hora e local respectivamente da previsão desejada (GOOGLE, 2019b).

Figura 6 - Exemplo de classificação de intent. Fonte: (GOOGLE, 2019b).

Um intent básico contém os seguintes elementos (GOOGLE, 2019b):

 Frases de Treino: Exemplo de frases que o usuário pode falar para demonstrar determinada intenção. O agente utilizará essas frases para classificar a entrada do usuário. Não é necessário escrever todos os exemplos possíveis, pois o sistema de AM do Dialogflow irá expandir a lista de exemplos automaticamente com base nas frases fornecidas (GOOGLE, 2019b);

 Ação: É possível definir uma ação para cada intent. Quando o intent é acionado, o Dialogflow executa a ação (GOOGLE, 2019b);

 Parâmetros: Quando um intent é acionado, o Dialogflow extrai os parâmetros da entrada do usuário. Cada parâmetro tem um tipo, e uma opção para marca-lo como obrigatório e lista. O tipo do parâmetro é

(35)

chamado de entity type que o associa a uma entity e define como o dado será extraído, a opção “obrigatório” define se o parâmetro é necessário para que o intent seja concluído, neste caso, define-se perguntas direcionadas ao usuário caso o parâmetro não tiver sido fornecido, função também conhecida como spot-filling. A opção lista define se o parâmetro será extraído em formato de lista ou não (GOOGLE, 2019b);

 Respostas: Texto ou imagens que são direcionadas ao usuário final. Estas podem servir como resposta, pergunta ou finalizar a conversa (GOOGLE, 2019b).

A Figura 7 mostra o fluxograma de um intent. A entrada do usuário é processada pelo agente, classificada de acordo com as frases exemplo de cada intent, e após o processamento dos dados é gerada uma resposta de acordo com o que foi programado dentro do intent, essa resposta então é entregue ao usuário (GOOGLE, 2019b).

Figura 7 - Fluxograma de um intent. Fonte: (GOOGLE, 2019b)

As entities no Dialogflow representam os tipos dos parâmetros. O Dialogflow já possui algumas entities internas, chamadas de system entities, que mapeiam os tipos de dados mais comuns como: data, cor, numerais, horário, endereço eletrônico, entre outros. Também é possível customizar uma entity, por exemplo, uma entity de sabores de pizza, que irá definir os sabores de pizza que aquele agente reconhece (GOOGLE, 2019b).

(36)

Context, ou contexto em português, funciona da mesma forma no Dialogflow que uma conversa natural. Se alguém fala “Vamos neste lugar.”, que lugar? É necessário um contexto para entender o significado da frase. Da mesma forma o Dialogflow utiliza contextos vinculados aos intents para dar continuidade a conversa (GOOGLE, 2019b).

Contextos também são utilizados para controlar o fluxo da conversa através da configuração de entrada e saída de contexto em cada intent. Quando um intent é acionado, todos os contextos de saída deste intent são ativados, e o contexto é passado adiante para qualquer intent que tenha como contexto de entrada o contexto de saída do intent atual. Para que fique mais claro, a Figura 8 irá exemplificar este processo (GOOGLE, 2019b).

Seguindo o diagrama da Figura 8 temos:

1. O usuário pergunta ao agente informações sobre sua conta corrente; 2. O agente classifica a pergunta do usuário como pertencente ao

CheckingInfo intent, a partir deste momento o contexto Checking é ativado;

3. O intent processa a entrada e responde ao usuário perguntando qual tipo de informação ele gostaria de saber sobre sua conta corrente; 4. O usuário então responde à pergunta informando que gostaria de saber

seu saldo;

5. O agente classifica essa resposta como CheckingBalance intent, que só é acionado devido ao contexto Checking. A mesma resposta pode acionar o SavingsBalance intent, que dirá ao usuário o saldo de sua conta poupança, mas esse intent só será acionado caso o contexto Savings esteja ativo;

(37)

Figura 8 - Fluxograma do context. Fonte: (GOOGLE, 2019b)

Existe um tipo específico de intent chamado de Follow-up Intent. Ao criar-se um follow-up intent o Dialogflow automaticamente criar dois novos intents com uma relação pai-filho em relação ao intent inicial. O contexto de saída do intent pai, e o contexto de entrada dos dois intents filhos são adicionados automaticamente, e só possível entrar no intent filho através do intent pai. Também é possível criar vários níveis de follow-up intents aninhados. O caso de uso mais comum para este tipo de intent são perguntas com respostas como sim, não ou cancelar, que estão disponíveis como follow-up intent padrão para seleção, entretanto também é possível criar um follow-up intent personalizado (GOOGLE, 2019b).

As respostas do Dialogflow podem ser configuradas de duas formas: como texto estático, ou buscar a resposta em outro lugar através de uma função chamada webhook. As respostas de texto estático são bem simples, é possível configurar mais de uma resposta de texto estático para cada intent, e o Dialogflow irá escolher uma das respostas aleatoriamente, sem nunca repetir a mesma resposta duas vezes, até

(38)

que todas sejam utilizadas. Também é possível definir parâmetros na resposta, se o intent está extraindo uma entidade da entrada do usuário, é possível em um cenário de agendamento de horários, utilizar a seguinte resposta: “Seu horário está marcado para $date às $time. ”. Em uma situação real o usuário pode digitar “Gostaria de marcar um horário para 18 de setembro as duas da tarde”, e utilizando a resposta estática definida anteriormente ter-se-ia a seguinte resposta “Seu horário está marcado para 18/09/2019 às 14:00” (GOOGLE, 2019b).

Já com o webhook é possível retornar respostas dinâmicas ao usuário, e para entender como o webhook funciona, é necessário entender fulfillment primeiro. Quando um agente precisa de respostas dinâmicas, será necessário implementar um algum tipo de fulfillment que conecte o agente à um serviço externo. Existem dois tipos de fulfillment no Dialogflow, um deles permite escrever um código Javascript na própria plataforma que é executado via Cloud Functions para Firebase. A segunda forma é através de webhook que foi mencionado anteriormente. Quando o webhook está configurado, o agente cria um objeto JSON (JavaScript Object Notation) e o envia ao serviço configurado no webhook para processamento, e a resposta retornada é enviada ao usuário (GOOGLE, 2019b).

A integração de um agente com um webhook, como pode ser visualizado na Figura 9, funciona da seguinte forma:

1. O usuário faz a sua pergunta ou afirmação através de qualquer meio aceito pelo Dialogflow;

2. O agente analisa a entrada do usuário e chama o intent responsável; 3. É feito uma requisição ao webhook configurado;

4. O serviço configurado no webhook irá processar os dados enviados; 5. O agente recebe a resposta do webhook;

6. O agente envia a resposta para o usuário;

7. O usuário recebe a resposta pelo meio de comunicação que está utilizando.

(39)

Figura 9 - Integração do agente com um serviço externo através de webhook. Fonte: (GOOGLE, 2019b)

Este tipo de integração mencionado na Figura 9 é o mais simples pois toda a interação com o usuário é gerenciada pelo Dialogflow, e o desenvolvedor só é responsável pela integração com seu sistema através do webhook. Entretanto também é possível utilizar o Dialogflow da forma contrária ao mostrado na Figura 9, onde toda a interação do usuário e respostas dinâmicas são gerenciadas pelo sistema do desenvolvedor, e é confiado ao Dialogflow apenas a tarefa de entender o que o usuário está falando (GOOGLE, 2019b). Este tipo de integração é exemplificado na Figura 10, e ocorre da seguinte forma:

1. O usuário faz a sua pergunta ou afirmação através de qualquer meio aceito pelo sistema;

2. O agente analisa a entrada do usuário e chama o intent responsável; 3. O agente responde ao sistema com os dados extraídos da entrada do

usuário;

4. O sistema processa os dados e realiza alguma ação; 5. O sistema envia a resposta para o usuário;

6. O usuário recebe a resposta pelo meio de comunicação que está utilizando.

(40)

Figura 10 - Integração do agente com um sistema através de API. Fonte: (GOOGLE, 2019b)

Outros pontos importantes a se mencionar sobre o Dialogflow são o seu console e as integrações disponíveis. O console é uma interface disponível na internet para criar, construir e testar agentes. Todas as funções mencionadas anteriormente estão disponíveis no console, e é recomendado o uso do console na construção de um novo agente, apesar da possibilidade de utilizar a API para fazer as mesmas funções (GOOGLE, 2019b).

É possível integrar o Dialogflow com algumas plataformas populares de conversa, como por exemplo, Assistente da Google, Slack e Messenger do Facebook. Dentro do console com alguns cliques é possível integrar um agente com alguma dessas plataformas. Toda a integração é gerenciada pelo Dialogflow. Também é possível importar e exportar algumas funcionalidades para outras plataformas da área, como Alexa da Amazon ou Cortana da Microsoft (GOOGLE, 2019b).

(41)

6 IMPLEMENTAÇÃO E ANÁLISE DOS RESULTADOS

Neste capítulo é demonstrado como foi desenvolvido o protótipo de um chatbot utilizando a ferramenta Google Dialogflow.

Para construção do chatbot é necessário acessar o site do Google Dialogflow e criar uma conta de desenvolvedor para ter acesso ao serviço (Figura 11).

Figura 11 - Página inicial https://dialogflow.com/. Fonte: Adaptado de (DIALOGFLOW, 2019).

Ao clicar no botão “Go to Console”, a conta de desenvolvimento foi criada a partir da conta pessoal da Google do autor, conforme disposta na Figura 12:

Figura 12 - Página de login. Fonte: Adaptado de (GOOGLE, 2019c).

Após o registro da conta de desenvolvimento e feito o login, deu-se início a criação do agente. Mas antes de criar o agente, será apresentada a aplicação a ser

(42)

criada, seu escopo, e algumas características importantes para o desenvolvimento do agente.

O protótipo que foi construído irá desempenhar o papel de um atendente de pizzaria. Seu escopo de conversa será informar os sabores de pizzas disponíveis, o horário de atendimento da pizzaria, tempo médio de espera na fila de pedidos, e realizar um pedido de pizza. O pedido da pizza consiste em número de pizzas, tamanho, sabor, e tipo de borda da pizza. As informações do pedido da pizza serão separadas em entidades, e será discutido em detalhes em seguida. Também será feito o pedido de bebidas que consiste em marca, tamanho e quantidade.

Com o escopo do agente definido, a seguir será disposto os passos utilizados para criação do protótipo:

1. Foi clicado no botão “Create Agent” na parte superior do menu na lateral esquerda, e foi preenchido o nome do chatbot no campo que apareceu na parte central da página e clicado no botão “Create”;

2. Esta ação abriu a página de listagem dos intents. Como disposta na Figura 13, é possível perceber que o agente inicia com dois intents pré-cadastrados, sendo eles “Default Welcome Intent”, responsável por receber a saudação inicial do usuário, e “Default Fallback Intent”, que é acionado quando o agente não sabe como classificar a expressão de entrada do usuário.

Figura 13 - Página lista de intents. Fonte: Adaptado de (GOOGLE, 2019d).

(43)

3. Antes de criar os intents, foi definido as entities. Clicou-se no botão “Entities”, seguido do botão “CREATE ENTITY”. A primeira entity criada representa o sabor da pizza. Esta entity define todos os sabores aceitos pela pizzaria. A Figura 14 demonstra como é feito este cadastro, a primeira palavra à esquerda representa valor do sabor, que será salvo pelo agente como sabor da pizza, e o restante das palavras a direita são sinônimos que o usuário pode digitar para se referir ao determinado sabor. Para este protótipo foi definido uma quantidade limitada e estática de sabores, conforme mostra a Figura 14:

Figura 14 - Configuração da entity sabor. Fonte: Adaptado de (GOOGLE, 2019d).

4. O processo de criação de cada entity é similar, e as Figuras 15, 16, 17 e 18 mostram a configuração final das outras entities que foram utilizadas neste protótipo.

(44)

Figura 15 - Entity "borda". Fonte: Adaptado de (GOOGLE, 2019d).

b. A Figura 16 define os tamanhos de pizza disponíveis para pedido:

Figura 16 - Entity "tamanho". Fonte: Adaptado de (GOOGLE, 2019d).

(45)

Figura 17 - Entity "bebida_marca". Fonte: Adaptado de (GOOGLE, 2019d).

d. A Figura 18 define o tamanho da bebida:

Figura 18 - Entity "bebida_tamanho". Fonte: Adaptado de (GOOGLE, 2019d).

Apesar dos valores estarem estáticos nos exemplos anteriores, é possível, com a utilização de webhooks, buscar esses valores dinamicamente em um servidor a parte;

(46)

5. O próximo passo é criar os intents. Para isso foi clicado no botão “Entity” no menu lateral esquerdo, seguido do botão “CREATE ENTITY” na parte superior da página. Os intents foram configurados da seguinte forma:

a. Foi adicionado o contexto “pizza” nos campos de input e output de contexto (Figura 19);

Figura 19 - Contexto do intent "pedido". Fonte: Adaptado de (GOOGLE, 2019d).

(47)

Figura 20 - Frases de treinamento do intent "pedido". Fonte: Adaptado de (GOOGLE, 2019d).

c. Configurado os parâmetros, caso necessário. Foi marcado quais parâmetros são obrigatórios, se são lista ou não, e quando obrigatórios, cadastrou-se as perguntas de spot-filling (Figura 21);

(48)

Figura 21 - Parâmetros do intent "pedido". Fonte: Adaptado de (GOOGLE, 2019d).

d. Por último cadastrou-se as respostas estáticas do intent, quando houve necessidade (Figura 22).

Figura 22 - Resposta estática do intent "pedido". Fonte: Adaptado de (GOOGLE, 2019d).

(49)

Os mesmos passos foram tomados no cadastramento dos três principais intents, o intent que mostra o cardápio (cardapio), o intent que informa o horário de atendimento da pizzaria (horário_atendimento) e o intent que faz o pedido da pizza (pedido).

6. Como pode ser analisado na Figura 21, o intent de pedido recebe do usuário apenas o tamanho, sabor e borda da pizza. Para completar o pedido, ainda faltam os dados sobre a bebida, e o endereço de entrega. Para estes dois intents finais, foi utilizado follow-up intents. Para adicionar um follow-up intent foi necessário posicionar o mouse sobre o intent pai e clicado na opção “Add follow-up intent” que apareceu no canto direito. Foi então adicionado dois intents que representam a resposta positiva, ou negativa, à intenção do usuário de pedir uma bebida junto com sua pizza. A Figura 23 mostra como ficou a lista final com todos os intents cadastrados:

Figura 23 - Lista final de intents. Fonte: Adaptado de (GOOGLE, 2019d).

É possível analisar que a adição de um follow-up intent adiciona automaticamente um contexto de saída no intent pai, e um contexto de entrada no intent filho. Na Figura 19 é possível observar o contexto “pedidopizza-followup”, que foi adicionado automaticamente, e na Figura

(50)

24 no contexto de entrada do intent “pedido.pizza – não – bebida” tem-se o mesmo contexto.

Figura 24 - Contexto do intent "pedido.pizza - não - bebida". Fonte: Adaptado de (GOOGLE, 2019d).

6.1 ESTUDO DE CASO

Para validar o modelo proposto, foi elaborado um roteiro de perguntas separadas em diferentes casos de teste. A interação com chatbot neste estudo de caso está limitada a conversas baseadas em texto, ou seja, todas as conversas no estudo de caso foram realizadas por meio de texto digitado em uma plataforma digital disponibilizada pelo Dialogflow.

No primeiro caso de teste pretende-se utilizar linguagem coloquial em cada pergunta, e espera-se que o chatbot mantenha o fluxo da conversa. Este caso de teste tem como intuito exemplificar como é esperado que um pedido de pizza normal prossiga.

No segundo caso de teste pretende-se também utilizar linguagem informal, porém as frases contêm mais informações sobre o pedido, o usuário toma a iniciativa de informar o que deseja, ao invés de esperar o chatbot perguntar as informações que faltam através da função de spot-filling. Espera-se que o chatbot seja capaz de extrair várias informações de uma frase de forma precisa e correta para não atrapalhar o fluxo da conversa.

No terceiro caso de teste foi fornecido o mínimo de informações possível a cada interação com o chatbot. Espera-se que o chatbot pergunte ao usuário as informações necessárias para completar o pedido. Esta abordagem busca demonstrar e testar a configuração de spot-filling do chatbot, demonstrando que um pedido não é finalizado antes de obter as informações necessárias.

(51)

No quarto caso de teste pretende-se simular a indecisão de um usuário, que decide trocar o sabor de sua pizza. É esperado que o chatbot reconheça a troca do sabor, e atualize a informação corretamente. Este caso de teste tem como intuito demonstrar a capacidade do chatbot de entender o contexto da pergunta do usuário.

No quinto caso de teste foi demonstrado outras funcionalidades do chatbot, como informar os sabores de pizza disponíveis, ou o horário de funcionamento da pizzaria. Espera-se que mesmo durante um pedido, o chatbot seja capaz de informar o cardápio ou o horário de funcionamento da pizzaria sem perder as informações sobre o pedido em si.

No sexto caso de teste pretende-se fazer um pedido de pizza juntamente com a saudação inicial, e também apenas o pedido de pizza, sem a saudação inicial. Espera-se que o chatbot se comporte normalmente e prossiga com o pedido. Esta abordagem busca demonstrar um limite no modelo do chatbot.

No sétimo caso de teste foi feito um pedido de uma pizza, porém durante a escolha da bebida, o usuário tenta alterar o sabor de sua pizza. Espera-se que o chatbot altere o sabor da pizza, repita o pedido da pizza como confirmação, e continue com a escolha da bebida. Esta abordagem também procura demonstrar outro limite na modelagem da conversa do chatbot.

No oitavo caso de teste pretende-se utilizar linguagem informal, porém algumas palavras contêm erros ortográficos propositais. Espera-se que o chatbot entenda o significado das palavras com erros ortográficos, pois o mesmo é esperado de um ser humano. Este caso de teste tem como intuito mostrar do algoritmo do Google Dialogflow, e sua capacidade de entender palavras com erros ortográficos que um ser humano também conseguiria interpretar.

1. Caso de Teste

a. Pergunta: “Boa noite”

Resposta esperada: Saudação ao usuário

Resposta recebida: “Olá! Como posso te ajudar?” b. Pergunta: “quero pedir uma pizza”

Resposta esperada: Pergunta o sabor da pizza Resposta recebida: “Qual sabor você gostaria?” c. Pergunta: “quatro queijos”

Resposta esperada: Pergunta o tamanho da pizza Resposta recebida: “Qual tamanho você quer pedir?”

(52)

d. Pergunta: “grande”

Resposta esperada: Repete o pedido, e pergunta se deseja bebida Resposta recebida: “Seu pedido de 1 pizza grande de quatro queijos está sendo preparado! Você gostaria de alguma bebida junto com sua pizza?”

e. Pergunta: “não”

Resposta esperada: Finaliza a conversa informando o tempo de espera do pedido

Resposta recebida: “Sem problemas, sua pizza fica pronta daqui 40 minutos.”

2. Caso de Teste a. Pergunta: “oi”

Resposta esperada: Saudação ao usuário

Resposta recebida: “Oi! Como posso te ajudar?” b. Pergunta: “quero uma pizza grande de margarita”

Resposta esperada: Repete o pedido, e pergunta se deseja bebida Resposta recebida: “Seu pedido de 1 pizza grande de margherita está sendo preparado! Você gostaria de alguma bebida junto com sua pizza?”

c. Pergunta: “sim, uma coca 2 litros”

Resposta esperada: Repete o pedido de bebida e finaliza a conversa informando o tempo de espera do pedido

d. Resposta recebida: “1 coca-cola 2 litros confirmada. Seu pedido ficará pronto em aprox. 40 minutos.”

3. Caso de Teste

a. Pergunta: “ola”

Resposta esperada: Saudação ao usuário

Resposta recebida: “Oi! Como posso te ajudar?” b. Pergunta: “pizza”

Resposta esperada: Pergunta o sabor da pizza Resposta recebida: “Qual sabor você gostaria?” c. Pergunta: “frango com catupiry”

Resposta esperada: Pergunta o tamanho da pizza

Referências

Documentos relacionados

GOIOERÊ LETRAS PORTUGUÊS E LITERATURAS DE LÍNGUA PORTUGUESA - Educação a Distância ELENITA APARECIDA DA SILVA ALMEIDA GUARAPUAVA ADMINISTRAÇÃO CARLOS EDUARDO ALVES

CONSEQUÊNCIA NO PRODUTO: determinado queimador não funciona; CAUSA PROVÁVEL: peça exposta a choque térmico; batida brusca na peça; COMO CONSERTAR: trocar

Sendo assim, conclui-se que mesmo tendo acesso a rede pública de abastecimento, muitos usuários ainda utilizam as fontes alternativas para abastecimento de suas residências, sendo

www.live-place.com Tabela em vigor desde junho 2016 - Pode ser alterada sem aviso prévio | V.1.1. Aos valores apresentados acresce IVA à taxa legal

Esta reunião, como todos sabemos, consiste na posse dos membros da Comissão de Inquérito Parlamentar à Gestão do BES e do Grupo Espírito Santo.. Esta Comissão foi decidida em

Segundo Miranda (2011), é possível os professores se comunicar com os surdos, mesmo sem saber sua língua, basta que tenha um pouco de habilidade gestual, porém não

É preciso alterar as rotas e os procedimentos de controle de tráfego para reduzir o tempo médio de voo, diminuindo custos e favorecendo o crescimento do mercado – além de

- Após o término da prova todas as folhas, incluindo esta folha de instruções, deverão ser colocadas no envelope “Prova Escrita: Respostas”, o qual deverá ser lacrado