Slide 1

Slide 1 text

fazer chatbots? Bora Chegue sem saber nada de chatbot e faça um que fala mais que minha vó na fila da lotérica

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

Chatbot O que tem dentro?

Slide 4

Slide 4 text

- agente conversacional - auto serviço - Chatbot

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

- link pro site: https://github.com/RasaHQ/ - link pra doc: https://rasa.com/docs/rasa/ - vantagens - open source - fácil de começar - não precisa, mas pode mexer no ML - canais de comunicação - fácil de integrar brokers - ações (auto serviço) Rasa

Slide 7

Slide 7 text

Rasa Core Actions chat

Slide 8

Slide 8 text

Rasa Entendimento de linguagem natural (NLU) Gerenciador de diálogo (ML) Actions (integrações) Natural Language Generation Qual a sua comida preferida? Não me alimento com os alimentos convencionais Conectores de chat Core

Slide 9

Slide 9 text

Conceitos importantes Conteúdo

Slide 10

Slide 10 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 11

Slide 11 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 12

Slide 12 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 13

Slide 13 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 14

Slide 14 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 15

Slide 15 text

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

Slide 16

Slide 16 text

Conceitos importantes Pipelines e policies

Slide 17

Slide 17 text

Pipeline de treinamento pipeline: # If you'd like to customize it, adjust the pipeline. # See https://rasa.com/docs/rasa/tuning-your-model for more information. - name: WhitespaceTokenizer - name: RegexFeaturizer - name: LexicalSyntacticFeaturizer - name: CountVectorsFeaturizer analyzer: char_wb min_ngram: 1 max_ngram: 4 - name: DIETClassifier epochs: 100 - name: EntitySynonymMapper - name: ResponseSelector epochs: 100 - name: FallbackClassifier threshold: 0.3 ambiguity_threshold: 0.1 Cada componente produz um output que pode ser usado por qualquer outro

Slide 18

Slide 18 text

Policies Através das policies, seu chatbot decide cada passo da conversa # Configuration for Rasa Core. # https://rasa.com/docs/rasa/core/policies/ policies: # If you'd like to customize them, adjust the policies. # See https://rasa.com/docs/rasa/policies for more information. - name: MemoizationPolicy - name: TEDPolicy max_history: 5 epochs: 100 - name: RulePolicy Como funcionam as policies no rasa 2.0

Slide 19

Slide 19 text

Conceitos importantes Métricas e análise

Slide 20

Slide 20 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 21

Slide 21 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 22

Slide 22 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 23

Slide 23 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 24

Slide 24 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 25

Slide 25 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 26

Slide 26 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 27

Slide 27 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 28

Slide 28 text

Gerar os dados rasa test ver resultados analisar e melhorar

Slide 29

Slide 29 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 30

Slide 30 text

Já sou espertão Quero fazer mais

Slide 31

Slide 31 text

Software livre Abre um PR

Slide 32

Slide 32 text

Arquitetura

Slide 33

Slide 33 text

Mais algumas coisinhas analytics canais conteúdo

Slide 34

Slide 34 text

Curiosidades O que mais?

Slide 35

Slide 35 text

lappis boilerplate 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 boilerplate no github

Slide 36

Slide 36 text

BOSS Big open source sibling 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 Vencedor do Gnome Challenge

Slide 37

Slide 37 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 #PL490Não