Tensorflow por Brasileiros — Construindo seu próprio Chatbot (Parte1)

Adilmar Coelho Dantas
3 min readMay 14, 2019

Salve galera, tudo bem com vocês ? Agora que vocês já conhecem o TensorFlow e Deep Learning através das minhas postagens anteriores, iremos nesse post de hoje desenvolver nosso próprio chatbot capaz de classificar a intenção e de responder algumas perguntas, e o melhor de tudo usando nosso querido Tensorflow.

Tensorflow + ChatBot

Certamente você já deve ter conversado com algum robô, especialmente aqueles de atendimento nos canais digitais. Nesse tutorial vou ensinar vocês a usar o recursos do Tensorflow para criar seu próprio bot para uma loja assim como é feito no Dialogflow, porém dessa vez vamos fazer tudo na mão e entender todo o processo, para isso teremos que executar os seguintes passos:

  • Transformar as definições de intenção em um modelo Tensorflow;
  • Desenvolver uma estrutura para o chatbot processar as respostas;
  • Exibir o contexto básico pode ser incorporado ao nosso processador de respostas.

Para isso usaremos o tflearn, uma camada acima do tensorflow e, é claro, do Python.

Transformando as definições de intenção de conversação em um modelo de tensorflow

Para inciarmos uma boa estratégia para se fazer isso é utilizando um arquivo JSON com as seguintes informações:

Note que cada uma das intenções possui:

  • tag: um nome único;
  • patterns: sequência de frases ditas pelo usuário;
  • responses: respostas possíveis para o chatbot.

Feito isso o próximo passo é importar nossas dependências:

Com nosso arquivo JSON devidamente carregado, podemos então começar a organiza-lo separando os documentos, respostas e classes.

Feito isso termos como resultado uma lista de documentos (frases), lista de palavras e classes possíveis.

24 documents
7 classes ['agradecimento', 'cardapio', 'despedida', 'horario', 'pagamentos', 'produto', 'saudacao']
51 unique stemmed words [':', 'a', 'abr', 'abraco', 'abrem', 'aceit', 'aceitam', 'ai', 'ajud', 'ajudou', 'alguem', 'at', 'bem', 'cardapio', 'cartao', 'com', 'credito', 'de', 'est', 'funcionamento', 'hora', 'horario', 'loj', 'mai', 'mand', 'mastercard', 'me', 'muito', 'o', 'obrgado', 'obrigado', 'oi', 'ol', 'os', 'pag', 'pel', 'pizz', 'pod', 'posso', 'produto', 'qua', 'qual', 'que', 'sab', 'seu', 'tchau', 'tem', 'tudo', 'vend', 'vendem', 'voc']

Note que nessa parte também removemos algumas duplicadas com a finalidade deixar a base limpa. Nosso próximo passo agora é transformar esses documentos em dados numéricos para o tensorflow.

Observando atentamente repare que transformamos os textos em duas listas (intenção, classe) que servirão de treinamento para nossa rede neural, com os seguintes parâmetros:

  • entrada (input): será o vetor train_x;
  • camadas ocultas: 2 com 8 nós ;
  • saída (output): train_y;
  • épocas: 1000 (aumente caso necessário)

Como saída você terá as informações sobre a execução do treinamento.

Finalizado o treinamento devemos salvar nosso modelo para a parte 2 desse tutorial onde faremos a predição da classe e das respostas do chatbot.

Para testar o modelo treinado iremos realizar uma pequena demonstração de predição que será trabalhada na parte 2 desse post.

Observe que a predição foi realizada corretamente:

Com isso enceramos nosso post de hoje, espero que vocês tenham gostado desse tutorial com uma serie de novos conhecimentos, o fonte completo para treinamento do seu chatbot você encontra no meu github.

Abraços e até a parte 2 desse post.

bye bye !

--

--

Adilmar Coelho Dantas

PhD in Computer Science, Msc in Computer Science (Artificial Intelligence) — Universidade Federal de Uberlândia