Chatbot, ou assistente pessoal, é um programa de inteligência artificial, que busca simular uma conversa entre dois humanos, e surgiu pela necessidade de as pessoas quererem interagir com os computadores utilizando a linguagem natural, sendo através da fala ou da escrita.

Para facilitar este processo, existem plataformas específicas para a criação de chatbots, que facilitam e automatizam este processo, muitas vezes sem tornar necessário o conhecimento de programação e técnicas de inteligência artificial, um exemplo deste formato de plataforma é o Watson Assistent da IBM.

O Watson Assistent utiliza tecnologias como a PLN para extrair informações de textos, como a intenção (intent) e entidades (entity), ele disponibiliza um dashboard web para realizar a configuração do assistente, e também possui uma API que permite o desenvolvimento de aplicações personalizadas para a interação com o usuário.

Conceitos

O foco deste artigo será apresentar os conceitos básicos para criar um chatbot, e demonstrar os passos para a criação de um fluxo de conversa pelo Watson Assistent, sendo assim este trabalho não irá se ater aos quesitos mais técnicos, envolvendo técnicas de inteligência artificial, que realizam o processamento da linguagem natural e a classificação.

Antes de começar a configurar o chat, é importante compreender alguns conceitos que serão necessários para criar o fluxo de conversa.

  • Intenções

Uma intenção é um objetivo expresso nas informações de um cliente, por exemplo, se um chatbot ajuda os usuários a lidar com despesas, as intenções seriam coisas como “visualizar x (valor devido)”, “pagar y (fatura)” e “cancelar z (conta)”. Ao reconhecer a intenção expressa na entrada de um cliente, o serviço de Assistência escolhe o fluxo de diálogo correto para responder a ele.

  • Entidades

Uma entidade representa uma classe de objeto ou um tipo de dados que é relevante para a finalidade de um usuário. Ao reconhecer as entidades mencionadas na entrada do usuário, o serviço de Assistência pode escolher as ações específicas a serem executadas para cumprir uma intenção.

As entidades são também a maneira do Watson lidar com partes significativas de uma entrada que deve ser usada para alterar a maneira como responde à intenção. Por exemplo, caso o chatbot tenha questionado ao usuário em qual cidade ele mora, seria aguardado como resposta uma entidade do tipo cidade, sendo assim a reposta poderia parecer com algo do tipo “Eu moro em São Paulo”, neste caso “São Paulo” seria a entidade reconhecida.

  • Diálogo

O diálogo é onde será configurado todo o fluxo da conversa, e permear a maneira que o chatbot irá interagir com o usuário. A caixa de diálogo existente no dashboard do Watson é configurada como uma árvore lógica com muitas condições “se houver”. Cada intenção inicia um nó à esquerda e a lógica flui de cima para baixo através de suas intenções. Se uma determinada intenção é acionada por um enunciado, seu nó é aberto e a lógica continua para as entidades.

Criando o chatbot

A seguir será apresentado os passos para a implementação do chatbot, para poder replicar esta implementação, será necessário possuir uma conta na IBM Clound,  e criar uma nova instância do Watson Assistent.

Para a configuração do chatbot será utilizado como contexto uma loja de roupas, que possui uma filial em Caxias do Sul e outra em Porto Alegre, com horários de funcionamento diferentes, e o robô irá responder o horário de funcionamento de cada uma das lojas.

Configurando as intenções

A primeira parte será criar uma Intent, neste ponto será necessário informar um nome, que posteriormente servira como uma forma de identificar a intenção, e também uma descrição, para facilitar a compreensão de seu funcionamento. Para o exemplo atual, a intent se chamara “#horarios”.

A screenshot of a social media postDescription automatically generated
Figura 1 – Configuração de intent

Agora devem ser inseridos os exemplos de frases ou palavras que podem ser inseridos pelo usuário, e que devem representar esta intent. Para o exemplo de “#horarios” pode ser “Qual o horário de funcionamento?” e também “Horário de funcionamento”, o recomendado pela IBM é de no mínimo 5 exemplos, pois com mais exemplos, é maior a probabilidade do algoritmo identificar a intenção, esses exemplos devem ser preferencialmente únicos entre as intenções, para permitir uma classificação mais especifica e precisa.

Vale ressaltar que o algoritmo utilizado não irá classificar somente frases iguais aos exemplos, e sim aquelas que possuem uma semântica parecida, tornando necessário a utilização de frases diferentes, variando as palavras e maneira de escrever.

Figura 2 – Exemplos de intent

Configurando as entidades

Para responder à questão anterior, será necessário que o robô identifique a cidade da loja em questão, para isto é necessário uma entity de cidades, permitindo identificar a qual loja o usuário está se referindo.

O primeiro passo será informar o nome da entity, que assim como a intent, servirá para identificar a entidade posteriormente, para o exemplo atual a entity se chamara “@cidade”. Também será necessário a informação dos valores para esta entidade, que neste caso será “Caxias do Sul” e “Porto Alegre”.

Figura 3 – Configuração de entity

É possível a inserção de sinônimos e padrões para a identificação da entity, para a opção de padrões ou petterns, são utilizados regex, que são comumente utilizados para obter valores numéricos ou e-mails. No exemplo atual será utilizado somente os sinônimos, e isto se torna bastante útil para cidades, pois “Caxias do Sul” por exemplo, é normalmente referenciada somente como “Caxias”, já “Porto Alegre” pode ser chamada de “POA”, e sem estes sinônimos se torna inviável para o robô identificar a entidade.

A screenshot of a cell phoneDescription automatically generated
Figura 4 – Configuração de sinônimos de entity

Configurando o diálogo

Com as intenções e entidades definidas, já é possível criar o diálogo. Para esta etapa existe uma grande variedade de opções, e elas variam de acordo com a aplicação, então para não se aprofundar em cada uma destas opções, será focada apenas nas que serão utilizadas para a proposta atual.

Por padrão, já existem dois nodos, ou nós, um para as mensagens iniciais, como “Olá” ou “Boa Tarde”, e o outro para quando o robô não compreende uma das intenções do usuário, eles podem ser utilizados como base para os futuros nodos.

Para o diálogo dos horários, primeiro será necessário criar um nodo, isso pode ser feito clicando em “Add node” conforme a figura abaixo.

Figura 5 – Criação de novos nodos de diálogo

 O próximo passo é configurar o nodo, para isto basta clicar sobre ele. O primeiro campo é seu nome, que pode ser de acordo com o diálogo que ele representa, depois deve ser configurado a condição para que caia neste diálogo, para este exemplo é a intent “#horarios”.

Figura 6 – Configuração do nodo de diálogo

Para a próxima configuração deve ser acessado a opção de customização no nodo, acessível pelo botão “Customize”, conforme aparece na imagem anterior. A opção “Slots” deverá ser ativada, isto fara com que o usuário fique preso no nodo em questão, enquanto não fornecer a informação necessária, no caso, a cidade da loja.

Figura 7 – Configuração de Slot de conversa

Esta opção fara com que libere um novo campo de configuração para o nodo, que é onde deverá ser informado qual a condição de saída do nodo.

Figura 8 – Campos para checagem de slot de conversa

Para a configuração desta checagem deverá ser acessado a opção de customização do slot, acessível pelo botão com símbolo de engrenagem, conforme aparece na figura anterior. A primeira opção a ser configurada, é o valor que deverá ser checado, no caso, é a entidade de cidades, a opção “Save it as”, é o nome da variável de contexto em que o valor detectado deverá ser salvo.

Abaixo das opções anteriores deverá ser configurado uma mensagem de texto para quando a mensagem não atende a condição, que neste caso é o questionamento sobre a cidade da loja, aqui podem ser inseridas mais que uma mensagem, e elas poderão ser enviadas tanto de maneira sequencial, quanto randômica.

Figura 9 – Configuração inicial de slot de conversa

Por último deverá ser configurado a mensagem final de acordo com a cidade escolhida pelo usuário, esta configuração fica logo abaixo das configurações anteriores. Deverá ser inserido uma condição para cada cidade, conforme os campos a esquerda, e a direita deve ser informado o texto de resposta de acordo com a condição.

Figura 10 – Mensagens finais de horários de funcionamento

Testando o chatbot

Com a execução dos passos anteriores já é possível realizar o diálogo proposto, para testar o que foi implementado, é possível utilizar o chat integrado do Watson Assistent, acessível no botão “Try it”.

Figura 11 – Chat para teste da configuração

Será apresentado um chat com o input de mensagem, onde pode ser enviado mensagens, simulando a ação do cliente. A resposta será de acordo com o que foi configurado até então, além de trazer as informações detalhadas do que foi identificado. Nas figuras a seguir é possível visualizar o resultado da conversa com o chatbot recém criado.

Figura 12 – Mensagem inicial para o chatbot
Figura 13 – Resposta final do chatbot

Conclusão

Os passos para a criação de chatbots apresentados aqui são específicos para a plataforma Watson Assistent, porém conceitos como Intent e Entity, são aplicáveis para outras plataformas do mercado. Os exemplos citados são de junho de 2020, e é possível que alguns aspectos e nomenclaturas alterem com o tempo, pois a plataforma sofre constantes alterações para sua melhoria.

O fluxo de conversa utilizado como exemplo é relativamente simples, e possui um objetivo acadêmico, buscando apresentar uma visão geral da plataforma. Para aplicações reais é comum que se utilize um número maior de intent, entity, e diálogos, assim como configurações mais complexas.

Para aplicações reais pode se tornar necessário também, a integração do chatbot com outros sistemas, permitindo a criação de novas interfaces, desenvolvimento de lógicas mais complexas e consumir dados do próprio sistema.

REFERÊNCIAS

https://cloud.ibm.com/docs/assistant?topic=assistant-getting-started

https://medium.com/ibmdeveloperbr/watson-assistant-como-criar-o-seu-chatbot-usando-skills-e-assistants-755b4677984b

https://ibm.com/cloud/watson-assistant/

https://www.ibm.com/watson/how-to-build-a-chatbot

https://www.devmedia.com.br/chatbot-ibm-watson/40166

https://medium.com/ibm-garage/designing-a-chatbot-with-ibm-watson-assistant-7e11b94c2b3d

https://repositorio-aberto.up.pt/bitstream/10216/119703/2/332692.pdf

Autor: João Pedro Kaspary