12 apps em 1 ano: Ensinando um bot a conversar através de dialogo de filmes

Ano passado foi o ano dos chatbots, plataformas como Skype, Facebook, WeChat e várias outras hoje hospedam chatbots criados por diversos desenvolvedores e marcas começaram a tentar capitalizar em cima dessa tendência. Um dos fatores para este fenômeno é que a maior parte dos apps é usada apenas uma vez, enquanto chatbots não precisam ser baixados e são acessados diretamente dentro de apps que você já usa.

Competir por espaço na tela inicial dos smartphones está cada vez mais difícil, então a estratégia é ir para a segunda tela mais vista. Muitos apostam que os chatbots são os novos apps — eu acredito que ainda é muito cedo para sabermos isso, mas os gigantes da tecnologia apostam nessa tendência.

Como os chatbots são desenvolvidos

A abordagem mais comum para criar chatbots é definir padrões de perguntas e as respectivas respostas que o chatbot deve dar em cada situação. Um programador precisa manualmente colocar as regras de como o chatbot deve responder as perguntas dos usuários. O resultado final é bastante dependente da capacidade do programador de pensar em todas as perguntas possíveis que um usuário pode fazer.

Uma abordagem diferente é usar algoritmos de Machine Learning para criar um sistema que aprenda sozinho como responder a perguntas. Com essa abordagem, podemos dividir a tarefa de responder a uma pergunta em subsistemas, como por exemplo interpretar a pergunta, guardar o estado atual da conversa, escolher uma boa resposta, etc. Para cada subsistema treinamos algoritmos para conseguir o melhor resultado e combinamos todos eles para gerar o nosso chatbot.

Nos últimos anos, com o crescimento de pesquisas ao redor de algoritmos de Deep Learning (redes neurais profundas e similares), uma outra abordagem surgiu. Agora podemos criar sistemas que aprendem ponta a ponta (end to end) a responder perguntas. A ideia é treinar o sistema com exemplos de diálogos e idealmente o algoritmo aprenderia a conversar por meio desses dados.

Em 2015 o Google desenvolveu um chatbot baseado em diálogos extraídos de filmes, o que talvez tenha sido um dos primeiros casos de uso dessa abordagem.

A minha tentativa

Eu fiquei bastante surpreso com a elegância dessa solução. Do ponto de vista de engenharia de software, ir de apenas exemplos de diálogos para um sistema que consegue ter uma conversa (ainda que básica e com erros) é um grande feito. Como já havia brincado de criar um chatbot em um texto anterior  decidi reproduzir o trabalho dos pesquisadores do Google.

Encontrando os diálogos

Inicialmente, precisei procurar um dataset contendo muitos diálogos de filmes. Encontrei uma ótima fonte de dados chamada “Cornell Movie — Dialogues Corpus”, que contém 220 mil conversas entre mais de 9 mil personagens em 617 filmes. Uma vez que tinha esses dados em mãos, escolhi qual arquitetura de rede neural usar.

Para esse tipo de tarefa uma das melhores escolhas de modelo seria um “sequence to sequence model”. Esse modelo consiste de uma rede neural recorrente acoplada a outra rede neural recorrente, a primeira serve como encoder que processa os dados de entrada e a segunda como decoder que gerar um resultado baseado nos dados de entrada. Um exemplo desse tipo de arquitetura pode ser visto abaixo:

O framework

O próximo passo foi escolher o framework ideal para escrever o código. O Google disponibiliza o seu próprio framework de Deep Learning, chamado TensorFlow. Desde o seu lançamento, em novembro de 2015, esse framework vem ganhando força na comunidade de Deep Learning e hoje já desponta como o mais usado.

Depois de escrever o modelo seguindo a documentação do framework, coloquei para treinar por algumas horas. Depois do modelo treinado, esses foram os resultados que eu obtive:

Exemplo 1: 

Eu: Hey

Bot: Shut up.

Eu: You shut up

Bot: You could have come the gun.

Eu: I have a gun

Bot: What ?

Eu: fuck you.

Bot: I’m not sure i’ll be able to…

Exemplo 2:

Eu: hey

Bot: What?
Eu: hello
Bot: You ready?
Eu: yes
Bot: Then, you’d be the only one i can say…
Eu: yes, I am the only one
Bot: You can’t go on.

Eu: shut up!

Bot: I’m an ultrasound technician, ma’am.
Eu: really ?
Bot: Yeah.
Eu: what are you doing ?
Bot: I’m going to see a guy.
Eu: who is this guy ?
Bot: You know, i’ve been thinking.
Eu: thinking ?
Bot: Yes, sir.
Eu: about …
Bot: I’m sorry, but i don’t believe it.
Eu: why you don’t believe it ?
Bot: I’m gonna make love to you. That’s what I’m gonna do.

Ainda será necessário muito desenvolvimento para conseguirmos criar do zero chatbots que realmente consigam ter uma verdadeira conversa. O que me surpreendeu foram os resultados gerados por uma abordagem tão automática. Mesmo que os algoritmos usados possam ser considerados complexos, o fato de não ser necessária intervenção humana durante o processo significará um desenvolvimento mais rápido de chatbots cada vez mais interessantes.

E você? O que sabe sobre os chatbots? Deixe seu comentário abaixo e participe da conversa!

FIQUE ATUALIZADO!

Insira aqui o seu email para receber gratuitamente as atualizações do blog!

Powered by ConvertKit

Edmar Ferreira é Co-Fundador e CEO da Rock Content, líder em Marketing de Conteúdo no Brasil, e é membro ativo do SanPedroValley, comunidade auto-gerenciada de startups de Belo Horizonte.

  • Lilian Jordão

    Olá tudo bem? como você usou o TensorFlow para escrever o código e fazer seu projeto funcionar?

  • clã Los Fodas

    Eu queria saber como vc conseguiu criar este chatbot eu gostaria de aprender, tenho algumas ideias para utilizar chatbots porém não sei como fazer um do jeito que vc fez, aprendendo com conversas

Site Footer