Como Criar um Bot Utilizando o Wit.ai

Na série de posts que publiquei sobre como utilizar o DialogFlow como plataforma de auxílio ao desenvolvimento de bots foi possível notar (se ainda não leu, corre lá!) como o processo de treinamento ficou simples. Imagina o tempo que levaria para você modelar e implementar uma machine learning para que seu bot entendesse as mensagens enviadas pelos seus usuários!

Agora que você está consciente do poder desse tipo de plataforma, que tal aprendermos a usar mais uma?

Quanto mais plataformas aprendermos, mais opções teremos quando precisarmos criar algum bot, não é mesmo? xD

Sendo assim, neste post, eu irei demonstrar como criar um bot na plataforma Wit.ai. Como já é de costume (não é preguiça de pensar, é que fica mais fácil de comparar os projetos =p), vou demonstrar o uso da Wit.ai no desenvolvimento de um bot que, quando solicitado, envia os resultados da loteria ao usuário.

A Wit.ai possui uma documentação bem detalhada sobre todos os seus recursos, por isso não irei ser muito detalhista. Sendo assim, neste post, irei apenas explicar como criar uma conta no Wit.ai e treinar um bot. Esse bot servirá como base para a integração com aplicativos de mensagens como o Telegram e o Facebook Messenger (aguarde as cenas dos próximos capítulos kkk).

Vamos lá!

1- Criando uma Conta no Wit.ai

O primeiro passo antes de iniciarmos a construção do bot é a criação da conta no Wit.ai. Para isso, basta acessar o site https://wit.ai e clicar no botão “Log in with GitHub” ou “Log in with Facebook”.

Após realizar o login, será exibida uma tela semelhante a que está abaixo. Nessa tela, para criarmos um novo app, clicamos no botão “+” no canto superior direito.

Na tela de criação do app, devemos preencher o nome do app e a descrição. Além disso, precisamos definir o idioma da nossa aplicação, ou seja, o idioma no qual a interação com o bot e o seu treinamento serão realizados (no nosso caso, Português). Feito isso, marcamos o compartilhamento de dados como “Private” (isso serve para não deixar os dados do app públicos) e clicamos em “Create App”.

A tela abaixo será exibida após o app ser criado.

2 – Treinando o App

Com o app criado, podemos partir para o treinamento. Esse treinamento irá “ensinar” ao app sobre o que o usuário quis dizer com a mensagem que foi enviada. Sendo assim, quanto mais frases usarmos no treinamento, mais eficiente nosso app ficará.

A lógica de treinamento no Wit.ai é baseada em entidades (entities). Uma entidade representa a informação que você gostaria de detectar na mensagem do usuário. O Wit.ai já conta com algumas entidades já prontas (conhecidas como built-in expressions), ou seja, treinadas para identificar frases sobre temperatura, duração de tempo, localização, expressões matemáticas, entre outras.

Como nosso objetivo é treinar o app para entender frases relacionadas a loterias e essa entidade não existe, precisaremos criar uma nova. Para isso, informamos uma frase como “Qual foi o resultado da mega?” e inserimos um nome para a nova entidade, neste caso, “loteria”. Essa entidade será do tipo trait, ou seja, irá interpretar a frase inteira para tentar inferir o significado. Junto com a entidade precisamos inserir um valor, o qual nomeamos “resultados”. Esse valor serve para rotular as frases dentro da entidade “loteria”, onde poderíamos ter frases associadas a resultados e outras a localização de lotéricas, por exemplo.

Na etapa acima, a entidade “loteria” será vinculada quando o contexto da mensagem recebida for relacionado a resultados de loterias. Porém, precisamos extrair também qual o jogo de loteria o usuário quer saber o resultado. Isso pode ser feito, por exemplo, passando a frase “Qual foi o resultado da lotofacil?” e selecionando a palavra “lotofacil”. Feito isso, criamos uma nova entidade chamada “nome_loteria”, a qual servirá para identificar os nomes dos jogos (serão nossas keywords) na frase.

Em resumo, o treinamento consistirá em informar mais frases como “Resultado da mega”, “Qual resultado da quina?”, “Lotofacil” e  “Gostaria de saber o resultado da lotomania”, atribuindo a elas a entidade “loteria” no valor “resultados” e selecionando o nome do jogo para a entidade “nome_loteria”. Quanto mais exemplos forem submetidos ao app, mais eficiente ele vai ficar. Para medir essa eficiência, basta observar os números verdes ao lado das entidades durante o treinamento. Esse números representam a taxa de correspondência entre a sentença passada e a entidade associada.

É importante observar que, logo abaixo da “zona de treinamento”, é exiba uma tabela onde é exposto um pequeno resumo das entidades criadas e seus respectivos valores. Essa tabela ajuda a acompanhar o processo de construção das entidades durante o treinamento.

3-Testando o App

Após o treinamento, a próxima etapa é testar o app. Com esse objetivo, o Wit.ai disponibiliza vários tipos de integração, porém utilizaremos apenas a via HTTP (por ser independente de linguagem). Para ver o modelo que a requisição HTTP deve seguir, basta acessar o menu “Settings”.

Na tela das “Settings” é apresentada a requisição HTTP contendo o token do seu app e a URL como os parâmetros as serem passados. Essa requisição deve ser feita via GET e o parâmetro “q” deve conter a frase que deve ser interpretada.

Para testar a requisição utilizaremos o Postman,  uma extensão do Chrome serve para trabalhar com requisições a APIs (você pode executar a requisição onde achar melhor, essa extensão é só um exemplo). Ao abrir a extensão, passamos a URL no método GET, atribuindo ao parâmetro “q” a frase “Qual foi o resultado da mega?”. Além disso, na aba “Headers” da extensão,  precisamos inserir nosso token na chave Authorization do cabeçalho HTTP. Feito isso, basta clicar em “Send”.

Como resposta para a requisição, o app envia um JSON contendo a frase informada, a entidades associadas e a taxa de correspondência (confidence) de cada uma. Com a interpretação da mensagem presente nesse JSON, é possível implementar no código fonte do seu bot uma resposta para o usuário.

Bom, é isso! Eu espero ter te ajudado a entender como a Wit.ai funciona e pode te auxiliar no desenvolvimento dos seus bots. Para o post não ficar muito longo deixarei as integrações com o Telegram e o Messenger para outros posts.

Qualquer dúvida, deixa um comentário. =]

 

 

 

Deixe uma resposta