Introdução ao Serviço Watson Conversation

Este será o primeiro de uma série de posts sobre o serviço Watson Conversation onde pretendo explicar todo o potencial desta API e como utilizá-la seguindo uma metodologia desenvolvida após diversos projetos.

Neste primeiro post serão abordados os seguintes tópicos:

  • Visão geral
  • Instanciando um Conversation
  • Criando intenções
  • Criando entidades
  • Criando um fluxo básico de diálogo
  • Testando o fluxo de diálogo

Visão geral

O Conversation é um serviço que permite construir de forma rápida uma aplicação que entende entradas em linguagem natural e que responde simulando uma interação entre humanos. Este serviço se adapta muito bem para a construção de um bot ou assistente.

Para permitir esta construção, o Conversation possui uma tool que permite realizar todas as operações necessárias de forma bastante intuitiva, sem necessidade do domínio de nenhuma linguagem de programação.

Para entender e utilizar o conversation de forma eficiente, deve-se familiarizar com os conceitos abaixo:

Workspace

Um workspace é um container para todos os artefatos que definem o fluxo de conversação de uma aplicação. Todo o processamento de linguagem natural ocorre dentro do workspace.

Um único serviço de conversation pode conter até 20 workspaces (versão standard) ou 3 workspaces (versão free).

Cada workspace contém intenções, entidades e diálogos, que são a base da construção do fluxo de conversação.

Intenções

Intenções representam o objetivo do usuário, ou seja, o propósito pelo qual ele enviou determinada mensagem. Por exemplo, a mensagem “Qual o saldo da minha conta corrente?” poderia representar a intenção consultar_saldo_conta_corrente.

Para cada intenção devem ser fornecidos exemplos que representem aquela intenção, sendo que é recomendável um mínimo de 5 exemplos por intenção. Após isso, o conversation será capaz de treinar o modelo preditivo (a partir de algoritmos de aprendizagem de máquina) e com isso prever a intenção desejada pelo usuário. Em um post futuro eu explicarei com mais detalhes este processo de treinamento e classificação.

Na versão free é possível ter até 25 intenções, enquanto que na versão standard este limite é de 2.000. Em ambas as versões, o limite para a quantidade de exemplos é de 25.000.

No diálogo da tool, sempre que for referenciar uma intenção, pode-se utilizar o símbolo “#” antes do nome da intenção.

Entidades

Entidades representam termos/objetos que são relevantes para o contexto da aplicação ou que fornecem uma clarificação para uma intenção. Por exemplo, caso houvesse uma intenção chamada consultar_saldo_conta, poderia ser necessário clarificar com o usuário se ele está se referindo à uma conta corrente ou conta poupança. Esta desambiguação pode ser feita utilizando entidades.

As entidades são como modelos baseados em regra, no qual ela só será reconhecida caso o usuário tenha digitado exatamente o que foi cadastrado nela. Por exemplo, caso haja a entidade “conta corrente” e o usuário digite “conta corrent”, esta entrada não será reconhecida pela entidade. Apesar disso, as entidades são levadas em consideração no treinamento do modelo. Explicarei mais sobre este detalhe em um post futuro.

Na versão free é possível ter até 25 entidades, enquanto que na versão standard este limite é de 1.000. Em ambas as versões, o limite para a quantidade de valores e sinônimos é de 100.000 cada.

No diálogo da tool, sempre que for referenciar uma entidade, pode-se utilizar o símbolo “@” antes do nome da entidade.

Diálogos

Os diálogos são responsáveis por guiar o usuário até a resposta final. Eles se baseiam em condições, que podem por exemplo verificar se uma certa intenção e/ou entidade foi reconhecida, e em caso positivo devolver uma resposta para o usuário ou disparar um fluxo, solicitando mais informações.

Na versão free é possível ter até 25.000 nós de diálogo, enquanto que na versão standard este limite é de 100.000.

Criando um Serviço do Conversation

  • Acesse a página de criar o serviço do Conversation clicando aqui. Entre com sua conta do Bluemix ou crie uma gratuitamente caso não tenha.
  • Após logar, pode-se dar um nome para o serviço do conversation ou apenas clicar em Create.
  • Em seguida clique no botão Launch Tool para abrir a ferramenta de edição do conversation.

Criando um workspace

  • Após abrir a tool, selecione o botão Create (é possível também importar um workspace clicando no botão Import).
  • Escolha um nome para o workspace e selecione Portuguese (Brazilian) como língua do workspace. Em seguida clique em Create e o workspace será criado.

Criando uma intenção

  • Após criar o workspace, você será levado diretamente para a aba Intents, onde é possível criar intenções. Clique no botão Create New
  • Coloque o nome da intenção como “saudacao”
  • Digite “olá” como exemplo e aperte enter
  • Em seguida adicione os seguintes exemplos: “ola”, “bom dia”, boa tarde”, “boa noite”
  • Clique em Create para criar a intenção
  • Agora crie a intenção “consulta_saldo_conta” com os seguintes exemplos: “quero consultar o saldo da minha conta”, “qual o saldo da minha conta”, “quanto eu tenho na conta”, “tenho algo na conta”, “o que eu tenho na conta”

Temos então duas intenções que serão usadas para construir o diálogo posteriormente

Criando uma entidade

  • Clique na aba Entities no menu superior
  • Clique em Create new para criar uma nova entidade
  • Insira o nome da entidade como “tipo_conta”
  • No campo Value, adicione o valor “conta corrente” e como sinônimo coloque “cc”. Clique no botão + para adicionar o valor
  • Em seguida, adicione um novo valor, “conta poupança”. Nos sinônimos coloque “conta poupanca” e “cp” (para adicionar um novo sinônimo aperte enter). Clique no botão + para adicionar o valor. Obs: como as entidades são baseadas em regras é necessário adicionar os sinônimos exatamente como os usuários podem digitar, por isso foi adicionado o sinônimo “conta poupanca”, já que os usuários podem usar o c ao invés do ç.
  • Clique no botão Create para criar a entidade

Criando um fluxo básico de diálogo

  • Clique na aba Dialog no menu superior
  • Clique em Create para criar um diálogo
  • O diálogo será criado automaticamente com um nó vazio. O primeiro nó geralmente é utilizado para retornar uma mensagem de boas vindas. Para isso, no campo “Enter a condition” (logo após o if) digite “conversation_start” e em seguida clique em “conversation_start (create new condition)”. Obs: Esta é uma condição especial do conversation que só é verdadeira no início de uma conversa.
  • No campo “Enter a response” digite “Bem vindo ao conversation!”
  • Você perceberá que um novo nó foi adicionado automaticamente, com a condição “anything_else”. Este nó geralmente é utilizado para retornar mensagens quando o diálogo não consegue resolver o que foi dito pelo usuário, de modo a retornar um mensagem de aviso e não deixar o usuário sem nenhuma reposta. Sempre que o fluxo chegar neste nó ele irá ser executado. Clique neste nó e adicione a resposta “Desculpe, não entendi o que você falou.”
  • Clique no primeiro nó, e em seguida logo abaixo dele no símbolo de +, para adicionar um novo nó abaixo
  • Para este novo nó, digite na condição “#saudacao” e na resposta digite “Olá para você também.”
  • Agora iremos criar um fluxo onde é necessário solicitar mais informações do usuário para chegar na resposta final. Para isso adicione um novo nó abaixo do nó contento a condição “#saudacao”. Para este novo nó, coloque a condição como “#consulta_saldo_conta” e na resposta digite “A qual tipo de conta você se refere, conta corrente ou conta poupança?”
  • Desta vez, adicione um novo nó a direita do nó contendo a condição “#consulta_saldo_conta” (clique no + a direita do nó). Neste nó coloque a condição como “@tipo_conta:(conta corrente)” e na resposta digite “Você possui 10 reais na sua conta corrente.”
  • Agora digite um novo nó abaixo do nó com a condição “@tipo_conta:(conta corrente)” para tratar o caso onde o usuário se refere a conta poupança. Neste nó coloque como condição “@tipo_conta:(conta poupança)” e na resposta digite “Você possui 5 reais na sua conta poupança.”
  • Temos então um diálogo básico que você pode conferir abaixo:

Testando o fluxo de diálogo

  • Clique no botão da figura abaixo que se encontra no canto superior direito da tela para abrir o chat de teste
  • Insira a mensagem “Ola, bom dia!” e aperte enter. Perceba que a intenção “#saudacao” aparece em verde, o que indica que esta foi a intenção reconhecida pelo conversation para a frase enviada. Como resposta, foi retornada a mensagem “Olá para você também.”, que corresponde a mensagem configurada no diálogo para o caso em que a intenção “#saudacao” seja reconhecida
  • Agora digite a frase “e minha conta, como tá?”. Perceba que desta vez a intenção reconhecida foi “#consulta_saldo_conta” e que a resposta retornada foi conforme cadastrada anteriormente, solicitando mais informações
  • Digite como resposta “conta poupanca” e aperte enter. Perceba no retorno, em azul, que a entidade “@tipo_conta:conta poupança” e que a resposta retorna também foi conforme cadastrada no diálogo. Obs: Apesar da intenção “#consulta_saldo_conta” ter sido reconhecida, ela não é utilizada para nada, pois neste momento do fluxo as únicas condições utilizadas são as entidades

O que fazer em seguida

Para continuar o aprendizado, você pode tentar criar novas intenções, entidades e diálogos, sempre utilizando o chat de teste para verificar se está tudo funcionando perfeitamente.

Utilize o espaço de comentários abaixo para dúvidas e sugestões!

Referências

Documentação Conversation (em inglês)

Originally published at franklinlindemberg.wordpress.com on March 29, 2017.

Senior Software Engineer @ LogMeIn

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store