Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Usando o RASA boilerplate para criar chatbot

Bruna Moreira
November 04, 2020

Usando o RASA boilerplate para criar chatbot

Quer criar um chatbot, mas parece que é muita coisa pra aprender em pouco tempo?
Que tal começar a se aventurar no mundo dos bot conversacionais com um projeto de software livre brasileiro que já vai facilitar sua vida? Parece difícil, mas não é. Vem que eu te mostro como.

Bruna Moreira

November 04, 2020
Tweet

More Decks by Bruna Moreira

Other Decks in Technology

Transcript

  1. Quem sou eu Bruna Moreira Saudades de dançar um forró,

    mas feliz que tenho meus gatos e a barra de pole dance por perto. Engenheira de software PyLadies DF Organizadora da BOSS Acompanha Legis Forrozeira #praTodosVerem: foto estilo retrato, mulher branca com cabelos ondulados e curtos. Está sorrindo e com uma camiseta laranja. Aprendendo libras
  2. Chatbot 01 Exemplos práticos Problemas 03 Coisas quebradas Conceitos 02

    Conteúdo e Métricas Curiosidades 04 Apenas isso
  3. Comunicação Conteúdo Entendimento Ação Personalidade Análise de dados O que

    está envolvido? Projeto de chatbot Personalidade Sugestões de leitura
  4. BotFather ngrok Conector configurado Rodar E só isso! Telegram Configurando

    o bot no telegram #praTodosVerem: screenshot de um chat no telegram. O bot cumprimenta em resposta ao usuário. O usuário pergunta se o bot gosta de música, e o bot responde com o link de uma playlist. O bot não entende a pergunta sobre comida, e responde que sua licensa é GPL v3.0
  5. Só rodar um comando Incorporar ao site Webchat #praTodosVerem: screenshot

    de um chat no web chat. O bot responde um cumprimento do usuário. O usuário pergunta sobre a licensa e o bot responde que é GPL v3.0 e convida a fazer outra pergunta. Por último, o usuário pergunta sobre religião e a resposta do bot está cortada.
  6. Para rodar e contribuir • docker • docker-compose Requisitos docker

    docker-compose Documentação local • gitbook gitbook
  7. Bot no terminal git clone make first-run já pode conversar

    Pode demorar um pouco por conta do treinamento do modelo.
  8. Intents Intenção do usuário: o que ele quer falar e

    como ele fala ## intent:comida - Qual a sua comida preferida? - Que comida você gosta? - Que comida vc gosta? - qual a melhor comida? - Qual seu lanche preferido? ## intent:onde_voce_mora - onde voce mora - onde voce vive - onde voce habita - em que lugar você vive - onde voce está agora
  9. utter_comida: - text: "Na verdade, eu sou um bot. Não

    nos alimentamos com os alimentos convencionais ;P" - text: "Digamos que os bots não se alimentam dos mesmos alimentos que os humanos. Na verdade, Nem lembro da última vez que comi alguma coisa hahaha" utter_risada: - text: "Hahahaha... Engraçadinho" - text: "kkkkkkkkkk Você está feliz hoje, hein!?" Respostas possíveis: - definir uma ou mais respostas - o bot escolhe aleatoriamente Utters
  10. Fluxos de diálogos: • Intent + utter • Depende do

    objetivo da conversa ## path_onde_voce_mora 1 * onde_voce_mora - utter_onde_voce_mora - utter_continuar_conversa ## path_onde_voce_mora 2 * cumprimentar - utter_cumprimentar * onde_voce_mora - utter_onde_voce_mora - utter_continuar_conversa intents utters Stories
  11. Respostas diferentes screenshot de um chat no telegram Mesma pergunta

    feita duas vezes seguida Respostas com textos diferentes #praTodosVerem: screenshot de um chat no telegram. A pergunta repetida foi: "Qual sua licensa". A primeira resposta foi: "Eu sou e sempre serei um robô livre, open source, GNU v3.0". A segunda foi "Sou um software livre. Licenciado com a GNU v3.0". Após ambas ele pergunta: "E aí qual nosso próximo assunto?"
  12. Entities ## intent:relationship - Você tem [namorada](relationship)? - Você [namora](relationship)?

    - [Namora](relationship) comigo? - Quer [namorar](relationship)? - Tem [boyfriend](relationship)? - Tem [girlfriend](relationship)? ## synonym:lei_rouanet <!-- synonyms, method 2 --> - lei rouanet - Lei Rouanet - Lei de Incentivo a Cultura - ruane - ruanê - ruanet - rouane - rouanê As entidades são temas que ajudam a categorizar as conversas
  13. class ActionABC(Action): def name(self): return "action_abc" def run(self, params): ...

    return [] class ActionTeste(Action): def name(self): return "action_teste" def run(self, dispatcher, tracker, domain): comprar_ticket_do_cinema() return [] Ações que o desenvolvedor quer que o bot faça além de responder. Custom Actions
  14. Matriz de confusão intent 1 intent 2 intent 3 fallback

    intent 1 17 0 0 1 intent 2 1 13 2 0 intent 3 0 2 15 1 fallback 0 0 0 12 Predição Correta As colunas representam a predição de intenção feita pelo bot. As linhas representam as intenções reais. O ideal é que tenhamos a maior quantidade na diagonal da matriz. Ou seja, a predição foi correta.
  15. Matriz de confusão intent 1 intent 2 intent 3 fallback

    intent 1 17 0 0 1 intent 2 1 13 2 0 intent 3 0 2 15 1 fallback 0 0 0 12 Predição Correta Verdadeiro positivo: O bot entendeu corretamente Verdadeiro negativo: O bot sabe que não sabe Falso positivo: O bot entendeu errado Falso negativo: O bot pensou que não sabia, mas ele sabia
  16. Matriz de confusão intent 1 intent 2 intent 3 fallback

    intent 1 17 0 0 1 intent 2 1 13 2 0 intent 3 0 2 15 1 fallback 0 0 0 12 Predição Correta Verdadeiro positivo: O bot entendeu corretamente Verdadeiro negativo: O bot sabe que não sabe Falso positivo: O bot entendeu errado Falso negativo: O bot pensou que não sabia, mas ele sabia
  17. Matriz de confusão intent 1 intent 2 intent 3 fallback

    intent 1 17 0 0 1 intent 2 1 13 2 0 intent 3 0 2 15 1 fallback 0 0 0 12 Predição Correta Verdadeiro positivo: O bot entendeu corretamente Verdadeiro negativo: O bot sabe que não sabe Falso positivo: O bot entendeu errado Falso negativo: O bot pensou que não sabia, mas ele sabia
  18. Matriz de confusão intent 1 intent 2 intent 3 fallback

    intent 1 17 0 0 1 intent 2 1 13 2 0 intent 3 0 2 15 1 fallback 0 0 0 12 Predição Correta Verdadeiro positivo: O bot entendeu corretamente Verdadeiro negativo: O bot sabe que não sabe Falso positivo: O bot entendeu errado Falso negativo: O bot pensou que não sabia, mas ele sabia
  19. Matriz de confusão intent 1 intent 2 intent 3 fallback

    intent 1 17 0 0 1 intent 2 1 13 2 0 intent 3 0 2 15 1 fallback 0 0 0 12 Predição Correta Verdadeiro positivo: O bot entendeu corretamente Verdadeiro negativo: O bot sabe que não sabe Falso positivo: O bot entendeu errado Falso negativo: O bot pensou que não sabia, mas ele sabia
  20. Métricas Precisão vp / (vp+fp) Recall vp / (vp +

    fn) Acurácia acertos/total F1 2* (precision * recall)/ (precision + recall) Interpretação das métricas
  21. Histograma Confiança é a certeza que o bot tem da

    predição feita As barras da cor lilás representam os a quantidade de acertos. As barras da cor rosa representam os a quantidade de erros. Quanto mais a direita, mais certeza o bot tinha quanto a sua precisão. Acertos Erros Confiança Quantidade 100%
  22. Na pasta /bot/results • Relatório de intents • Erros de

    stories • Relatório de entidades • Matriz de confusão de stories Outros dados "license": { "precision": 0.7647058823529411, "recall": 0.9285714285714286, "f1-score": 0.8387096774193549, "support": 14 } "comida": { "precision": 1.0, "recall": 0.6923076923076923, "f1-score": 0.8181818181818181, "support": 13, "confused_with": { "cor": 4 } }, Relatório de intent Relatório de entidade
  23. Analytics Analytics com Kibana e Elasticsearch. Criação e visualização de

    dashboards. Outras métricas de negócio do chatbot. screenshot de dashboard
  24. Mensageria O rocketchat já está com um PR aberto para

    corrigir os problemas. Temos uma issue aberta para a integração com a twilio. rocketchat twilio
  25. Visualização de stories A visualização dos stories ajuda a entender

    quais são os fluxos de conversa. É possível identificar problemas de fluxo conversacional. screenshot ilegível com setas saindo de um nó inicial para nós com intents e utters de um fluxo conversacional e acabando em um nó final
  26. RASA X Ferramenta para desenvolvimento de conteúdo conversacional. Temos um

    PR aberto para resolver o bug do RASA X. screenshot ilegível da interface do RASA X para gerenciamento de conteúdo de chatbot Documentação do RASA X
  27. Origens O projeto surgiu a partir de um trabalho desenvolvido

    em parceria com o antigo Ministério da Cultura. Lei de incentivo à cultura. Universidade de Brasília - Laboratório LAPPIS Trabalho de conclusão de curso do Arthur Temporim gif animado de um chat da TAIS (Assistente virtual do MinC) sobre a lei de incentivo à cultura Link para o TCC do Temporim
  28. BOSS Big open source sister Programa para ajudar grupos sub-representados

    a darem seus primeiros passos em comunidades Open Source através de mentoria de desenvolvimento de projetos em comunidades reais Logo da iniciativa boss Aprendizado Criar bot Contribuição Autonomia
  29. Muito obrigada Às amigas que me incentivaram a submeter a

    palestra Às participantes e mentoras da BOSS À equipe de organização da Python Brasil pelo evento Pessoas que mais perturbei pra me ajudar nos últimos tempos
  30. CREDITS: This presentation template was created by Slidesgo, including icons

    by Flaticon, and infographics & images by Freepik. Contato brunanayara.github.io/ pra me achar: Juntas podemos criar coisas melhores Leiam Angela Davis Bebam água Comam vegetais #justiçapormariferrer