Slide 1

Slide 1 text

rasa boilerplate Chegue sem saber nada de chatbot e faça um que fala mais que minha vó na fila da lotérica from zero to hero

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

Mão na massa 01 Instalação Criar entidade 03 Sinônimos Criar conversa 02 Intent, utter, story Criar ações 04 Python!!!

Slide 4

Slide 4 text

Rasa webchat 05 Bot no navegador Telegram 06 Bot no telegram Análise 07 Métricas e mais métricas

Slide 5

Slide 5 text

Comunicação Conteúdo Entendimento Ação Personalidade Análise de dados O que está envolvido? Projeto de chatbot Personalidade Sugestões de leitura

Slide 6

Slide 6 text

Bot em ação Telegram, webchat e terminal

Slide 7

Slide 7 text

RASA boilerplate Projeto de software livre brasileiro para a criação de chatbots RASA

Slide 8

Slide 8 text

Projeto brasileiro GPL 3.0 Link para o repositório #praTodosVerem: screenshot do repositório no github

Slide 9

Slide 9 text

Para rodar e contribuir ● docker ● docker-compose Requisitos docker docker-compose Documentação local ● gitbook gitbook

Slide 10

Slide 10 text

Mão na massa instalar 01

Slide 11

Slide 11 text

Instalar ● docker ● docker-compose Passos Clonar Rodar o primeiro comando

Slide 12

Slide 12 text

Bot no terminal git clone make first-run já pode conversar

Slide 13

Slide 13 text

Bot no terminal git clone make first-run já pode conversar Pode demorar um pouco por conta do treinamento do modelo.

Slide 14

Slide 14 text

Conceitos importantes Conteúdo

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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?"

Slide 19

Slide 19 text

Criar conversa 02

Slide 20

Slide 20 text

Conceitos importantes Conteúdo de novo

Slide 21

Slide 21 text

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 - 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

Slide 22

Slide 22 text

Criar entidade 03

Slide 23

Slide 23 text

Conceitos importantes Conteúdo mais uma vez

Slide 24

Slide 24 text

Ações que o desenvolvedor quer que o bot faça além de responder. Custom Actions

Slide 25

Slide 25 text

Criar ações 04 Criar entidade na nlu.md Colocar entidade na domain.yml Criar action na actions.py Colocar action como resposta na stories.md

Slide 26

Slide 26 text

Criar entidade na nlu.md Colocar entidade na domain.yml Criar action na actions.py Colocar action na domain.yml Colocar action como resposta na stories.md Treinar: make train

Slide 27

Slide 27 text

Request para API http://makeup-api.herokuapp.com/ https://apilist.fun/ https://dadosabertos.camara.leg.br/swagger/api.html https://order-pizza-api.herokuapp.com/api/ui/ Sugestões Usar algum lib diferente spotipy

Slide 28

Slide 28 text

Bot por aí Webchat

Slide 29

Slide 29 text

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.

Slide 30

Slide 30 text

Rodar webchat 05

Slide 31

Slide 31 text

Bot webchat make run-webchat abrir o navegador já pode conversar

Slide 32

Slide 32 text

Bot por aí Telegram

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

Telegram bot 06

Slide 35

Slide 35 text

Conversar com BotFather ● Criar username ● Ter um token Passos Ngrok ● Download ● Extrair ● Executar o comando

Slide 36

Slide 36 text

Exportar as variáveis ● Abrir arquivo env/bot-telegram.env ● Adicionar username ● Adicionar token ● Adicionar webhook Mais passos

Slide 37

Slide 37 text

Atualizar credenciais ● Descomentar blocos ● Não precisa mexer em mais nada Outros passos Rodar o comando ● Rodar o bot ● Conversar no telegram

Slide 38

Slide 38 text

Hora da análise Vendo problemas

Slide 39

Slide 39 text

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.

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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%

Slide 47

Slide 47 text

Gerar os dados make test ver resultados analisar e melhorar

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

Analisando 07

Slide 50

Slide 50 text

Teste ● make run test ● make run test-cross Passos Avaliar ● E aí como tá

Slide 51

Slide 51 text

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