Desenvolvimento
de Bots com IA
Gustavo Castro
II Congresso de Tecnologia da Informação (IFSUL)
Passo Fundo - RS
2019
Quem sou eu
Gustavo Castro
Tecnólogo em Sistemas para Internet (IFSUL - Passo Fundo)
Especializando em Ciência de Dados (Unopar - Passo Fundo)
Desenvolvedor PHP
Áreas de interesse: Bots, IoT, Embarcados, Programação paralela e distribuída.
Roteiro
● Bots, o que são, de onde vem e do que se alimentam?
● Como os bots aprendem?
● NLP, NLU e NLG
● RASA
● Criando um bot com Rasa
Bots, o que são, de onde
vem e do que se
alimentam?
Bots, o que são, de onde vem e do que se
alimentam?
O que são?
● São aplicações com objetivo de automatizar tarefas
● Facilitar a comunicação homem/máquina
● Web crawlers, Chatbots, Social Bots...
Bots, o que são, de onde vem e do que se
alimentam?
De onde vem, onde estão e onde estarão?
● Qualquer tarefa que pudesse ser automatizada
● Carros, smartphones, elevadores…
● Assistentes virtuais
Bots, o que são, de onde vem e do que se
alimentam?
Do que se alimentam?
● Dados, informações, estatísticas…
● É partindo daqui que são desenvolvidas as IA.
Como os bots aprendem?
Como os bots aprendem?
Deve-se levar em consideração que uma I.A. “ é
capaz de apresentar conclusões sobre um
determinado tema, desde que devidamente
orientado e alimentado (...)” - PASSOS (1989)
CARRO
Fonte: https://pixabay.com/pt/photos/beatles-vancouver-rua-mulher-carro-1136533/
VOLKSWAGEN FUSCA
Fonte: https://pixabay.com/pt/photos/beatles-vancouver-rua-mulher-carro-1136533/
Como os bots aprendem?
● Machine Learning
○ Aprendizagem supervisionada
○ Múltiplas entradas de dados pré-definidas
○ Aprendizagem através do reconhecimento de padrões
NLP, NLU e NLG
NLP - Natural Language Processing
● Tem como objetivo processar os dados, compreender o significado e determinar a
próxima ação e responder de uma forma inteligível para o usuário;
● É composto pela NLU e a NLG.
NLU - Natural Language Understanding
● A máquina tenta compreender o que é transmitido verbalmente
● Tenta transcrever diálogos em informações não-binárias
● INTENÇÕES e ENTIDADES
NLU - Intenções (intents)
● O objetivo das intenções é categorizar o significado da entrada de dados (frases)
Ex:
● Parabéns pelo bom trabalho!
○ Intenção => Elogio;
● Você aceita pagamento pelo celular?
○ Intenção => Forma de pagamento
● Quais os sabores de pastel?
○ Intenção => Opções do cardápio
NLU - Entidades (entities)
● As entidades têm o objetivo de ressaltar algo de importância na entrada de dados (frase)
● Essas entidades serão utilizadas para determinar o fluxo do processo e fazem parte de
uma ação
Ex:
● Vou pagar com o cartão de crédito.
○ REALIZAR_PAGAMENTO: forma_pagamento => cartão de crédito
● Vou querer um pastel de frango.
○ REALIZAR_PEDIDO: produto => pastel, sabor => frango
● Fala Zé, é o Fabrício, reserva pra mim, uma mesa pra 5, amanhã de meio-dia.
○ REALIZAR_RESERVA: reservado => Fabrício, lugares => 5, horario => 01/11/2019 12:00
NLG - Natural Language Generation
● Após compreender os dados de entrada
● Processar os dados fornecidos
● Gera uma saída compreensível ao usuário a partir dos dados computados
Ex:
U: Olá, preciso de quatro ingressos para o show
(Verifica que existe mais de um show)
B: Olá, para qual o show ?
U: Iron Maiden, em Porto Alegre
(Verifica se existe a quantidade de lugares
disponíveis)
(Exibe quais os lugares
disponíveis)
B: Temos as cadeiras 9, 10, 11, 12
livres
B: Pode ser?
Fonte: https://rasa.com
Rasa Bot AI
● “É uma ferramenta de Machine Learning, para
desenvolver, melhorar e implementar chatbots
(...)”
● OpenSource
● Python
● Fácil integração com chats (Rocketchat, Slack,
Messenger...)
● Promete aprendizado utilizando IA a partir dos
dados repassados para o bot em
desenvolvimento
Fonte: https://rasa.com
Rasa Bot - Como funciona?
● Baseado em NLU e Core
○ Apenas como NLU:
■ É possível utilizar apenas a parte de interpretação da ferramenta
■ Possível disponibilizar como um serviço que, por exemplo, retorna o nível de confiabilidade
sobre intenção de uma frase e/ou os elementos presentes nela
Rasa Core
● Basicamente é a engine de conversação para bots com inteligência artificial
● Determina as ações a serem tomadas de acordo com o fluxo das conversações
○ Técnicas de machine learning
Fonte: https://www.analyticsvidhya.com/blog/2019/04/learn-build-chatbot-rasa-nlp-ipl/
Rasa - Estrutura do bot
__init__.py Arquivo em branco para facilitar a localização do
arquivo de actions
actions.py Arquivo para definição de custom actions
config.yml Configurações da NLU e Core
credentials.yml Configurações de conexões externas
data/nlu.md Dados de treinamento da NLU
data/stories.md Roteiros de conversação
domain.yml São definidas as áreas de conhecimento do bot
endpoints.yml Arquivo de conexões para canais de
comunicação
models/<timestamp>.tar.gz Modelos treinados
Rasa - Domain
● É o local onde é definido a área de conhecimento do bot
● Nesse arquivo são especificados as intents, entities, slots, actions e templates
Rasa - Domain
Fonte: Do autor
Rasa - Domain - templates
● São mensagens pré-definidas que serão enviadas para o usuário num determinado roteiro
Fonte: Do autor
Fonte: Do autor
Rasa - Domain - slots
● São a memória do bot
● Influenciam no diálogo com o bot
● Controle de tipos
Fonte: Do autor
Rasa - data/nlu.md
● Nesse arquivo são definidos as Intents e entities
● Intents e entities, necessários para o bot compreender o que está sendo dito
● É preciso dar exemplos para o bot aprender o significado das coisas
● Cria-se uma biblioteca de exemplos
data/nlu.md
domain.yml
Fonte: Do autor
Fonte: Do autor
Rasa - actions
● Respostas computadas pelo bot a partir da entrada do usuário
● Pode ser dividas em 4 categorias
○ Utterance Actions
■ Retornar uma mensagem predefinida para o usuário
○ Retrieval Actions
○ Custom Actions
■ Computa dados enviados pelo usuário e pode retornar várias ou nenhuma resposta
■ Funciona como funções
○ Default Actions
■ action_listen
● Aguarda a mensagem do usuário
■ action_restart
● Reinicia uma conversa
■ action_default_fallback
● Desconsidera a última mensagem do usuário
Rasa - Stories
● São estruturas de dados utilizados para treinar os diálogos do bot
● São exemplos minimalistas baseados intents e actions
Fonte: Do autor
Rasa - Stories
● É possível gerar Stories a partir de um treinamento interativo
Fonte: https://rasa.com/docs/rasa/core/interactive-learning
Rasa - Stories
● Treinamento interativo com visualização do diálogo
○ rasa interactive --skip-visualization
Fonte: https://rasa.com/docs/rasa/core/interactive-learning
Rasa - config.yml
● Discriminam-se as regras do NLU e Core
● As principais regras definidas são pipeline e policies
Fonte: Do autor
Rasa - Policies
● Definem qual ação o bot deve tomar de acordo com fluxo da conversa
● Cada uma possui uma forma de tratamento específico para cada situação
○ Memoization Policy
○ Fallback Policy
○ Mapping Policy
○ Keras Policy
○ Embedding Policy
○ Two-Stage Fallback Policy
○ Form Policy
Rasa - Pipeline
● Processamento dos componentes em sequência
● Componentes
○ Extração entidades
○ Classificação de intenções
○ Seleção de respostas
● Pipelines pré-configuradas
○ pretrained_embeddings_spacy
■ Menos de 1000 exemplos
○ supervised_embeddings
■ Mais de 1000 exemplos
● Pipelines customizadas
Rasa - Pipeline
Fonte: https://rasa.com/docs/rasa/nlu/choosing-a-pipeline/
Rasa - Suporte de Idiomas
● Suporta qualquer idioma
○ Utilizando a pipeline surpevised_embeddings
● Modelos e vetores de palavras pré-treinados
○ pretrained_embeddings_spacy
○ spaCy
■ Modelos de linguagem pré-treinados
■ fastText Vectors
○ MITIE
■ Permite você construir seu próprio vetor de palavras
● Exige muita memória para realizar o build ( ≃128GB RAM)
Criando um bot com
Rasa
Criando um bot Rasa
1. Instalação do Rasa
a. É requisitado uma versão do Python 3>= instalada.
b. pip install rasa
2. Estruturação do bot
a. Deve seguir conter no mínimo os arquivos dispostos no slide 20
b. rasa init
3. Configuração
a. Definição de pipelines e policies (slides 30, 31 e 32)
4. Treinamento do bot
a. Adicionar vários exemplos de intents
b. Adicionar vários exemplos de stories ou utilizar o treinamento interativo
i. rasa run actions --actions actions&
rasa interactive -m models/modulo.tar.gz --endpoints endpoints.yml
c. rasa train
5. Iniciar conversação com o bot
a. rasa run actions --actions actions&
rasa shell
Rasa X
● Interface gráfica de conversação para o Rasa
○ pip install rasa-x --extra-index-url https://pypi.rasa.com/simple
○ rasa-x
Fonte: https://rasa.com/docs/rasa-x/annotate-conversations/
Projeto Rasa Boilerplate
● Projeto com uma grande análise de dados para o desenvolvimento de um bot com Rasa
https://github.com/lappis-unb/rasa-ptbr-boilerplate
That’s all folks!
Gustavo Castro
Github: github.com/debgustavocastro
Linkedin: linkedin.com/in/gustavocastro78
SlideShare: pt.slideshare.net/GustavoCastro35
E-mail: deb.gustavocastro@gmail.com
Referências
PASSOS, E. Inteligência artificial e sistemas especialistas ao alcance de todos. Rio de Janeiro:
LTC, 1989;
https://www.datageeks.com.br/algoritmos-de-machine-learning/
https://ubots.com.br/blog/afinal-o-que-e-nlu/
https://rasa.com/docs/
https://spacy.io/usage/models#languages
https://github.com/facebookresearch/fastText/blob/master/docs/crawl-vectors.md
https://www.analyticsvidhya.com/blog/2019/04/learn-build-chatbot-rasa-nlp-ipl/

Desenvolvimento de Bots com Inteligência Artificial

  • 1.
    Desenvolvimento de Bots comIA Gustavo Castro II Congresso de Tecnologia da Informação (IFSUL) Passo Fundo - RS 2019
  • 2.
    Quem sou eu GustavoCastro Tecnólogo em Sistemas para Internet (IFSUL - Passo Fundo) Especializando em Ciência de Dados (Unopar - Passo Fundo) Desenvolvedor PHP Áreas de interesse: Bots, IoT, Embarcados, Programação paralela e distribuída.
  • 3.
    Roteiro ● Bots, oque são, de onde vem e do que se alimentam? ● Como os bots aprendem? ● NLP, NLU e NLG ● RASA ● Criando um bot com Rasa
  • 4.
    Bots, o quesão, de onde vem e do que se alimentam?
  • 5.
    Bots, o quesão, de onde vem e do que se alimentam? O que são? ● São aplicações com objetivo de automatizar tarefas ● Facilitar a comunicação homem/máquina ● Web crawlers, Chatbots, Social Bots...
  • 6.
    Bots, o quesão, de onde vem e do que se alimentam? De onde vem, onde estão e onde estarão? ● Qualquer tarefa que pudesse ser automatizada ● Carros, smartphones, elevadores… ● Assistentes virtuais
  • 7.
    Bots, o quesão, de onde vem e do que se alimentam? Do que se alimentam? ● Dados, informações, estatísticas… ● É partindo daqui que são desenvolvidas as IA.
  • 8.
    Como os botsaprendem?
  • 9.
    Como os botsaprendem? Deve-se levar em consideração que uma I.A. “ é capaz de apresentar conclusões sobre um determinado tema, desde que devidamente orientado e alimentado (...)” - PASSOS (1989)
  • 10.
  • 11.
  • 12.
    Como os botsaprendem? ● Machine Learning ○ Aprendizagem supervisionada ○ Múltiplas entradas de dados pré-definidas ○ Aprendizagem através do reconhecimento de padrões
  • 13.
  • 14.
    NLP - NaturalLanguage Processing ● Tem como objetivo processar os dados, compreender o significado e determinar a próxima ação e responder de uma forma inteligível para o usuário; ● É composto pela NLU e a NLG.
  • 15.
    NLU - NaturalLanguage Understanding ● A máquina tenta compreender o que é transmitido verbalmente ● Tenta transcrever diálogos em informações não-binárias ● INTENÇÕES e ENTIDADES
  • 16.
    NLU - Intenções(intents) ● O objetivo das intenções é categorizar o significado da entrada de dados (frases) Ex: ● Parabéns pelo bom trabalho! ○ Intenção => Elogio; ● Você aceita pagamento pelo celular? ○ Intenção => Forma de pagamento ● Quais os sabores de pastel? ○ Intenção => Opções do cardápio
  • 17.
    NLU - Entidades(entities) ● As entidades têm o objetivo de ressaltar algo de importância na entrada de dados (frase) ● Essas entidades serão utilizadas para determinar o fluxo do processo e fazem parte de uma ação Ex: ● Vou pagar com o cartão de crédito. ○ REALIZAR_PAGAMENTO: forma_pagamento => cartão de crédito ● Vou querer um pastel de frango. ○ REALIZAR_PEDIDO: produto => pastel, sabor => frango ● Fala Zé, é o Fabrício, reserva pra mim, uma mesa pra 5, amanhã de meio-dia. ○ REALIZAR_RESERVA: reservado => Fabrício, lugares => 5, horario => 01/11/2019 12:00
  • 18.
    NLG - NaturalLanguage Generation ● Após compreender os dados de entrada ● Processar os dados fornecidos ● Gera uma saída compreensível ao usuário a partir dos dados computados Ex: U: Olá, preciso de quatro ingressos para o show (Verifica que existe mais de um show) B: Olá, para qual o show ? U: Iron Maiden, em Porto Alegre (Verifica se existe a quantidade de lugares disponíveis) (Exibe quais os lugares disponíveis) B: Temos as cadeiras 9, 10, 11, 12 livres B: Pode ser?
  • 19.
  • 20.
    Rasa Bot AI ●“É uma ferramenta de Machine Learning, para desenvolver, melhorar e implementar chatbots (...)” ● OpenSource ● Python ● Fácil integração com chats (Rocketchat, Slack, Messenger...) ● Promete aprendizado utilizando IA a partir dos dados repassados para o bot em desenvolvimento Fonte: https://rasa.com
  • 21.
    Rasa Bot -Como funciona? ● Baseado em NLU e Core ○ Apenas como NLU: ■ É possível utilizar apenas a parte de interpretação da ferramenta ■ Possível disponibilizar como um serviço que, por exemplo, retorna o nível de confiabilidade sobre intenção de uma frase e/ou os elementos presentes nela
  • 22.
    Rasa Core ● Basicamenteé a engine de conversação para bots com inteligência artificial ● Determina as ações a serem tomadas de acordo com o fluxo das conversações ○ Técnicas de machine learning
  • 23.
  • 24.
    Rasa - Estruturado bot __init__.py Arquivo em branco para facilitar a localização do arquivo de actions actions.py Arquivo para definição de custom actions config.yml Configurações da NLU e Core credentials.yml Configurações de conexões externas data/nlu.md Dados de treinamento da NLU data/stories.md Roteiros de conversação domain.yml São definidas as áreas de conhecimento do bot endpoints.yml Arquivo de conexões para canais de comunicação models/<timestamp>.tar.gz Modelos treinados
  • 25.
    Rasa - Domain ●É o local onde é definido a área de conhecimento do bot ● Nesse arquivo são especificados as intents, entities, slots, actions e templates
  • 26.
  • 27.
    Rasa - Domain- templates ● São mensagens pré-definidas que serão enviadas para o usuário num determinado roteiro Fonte: Do autor Fonte: Do autor
  • 28.
    Rasa - Domain- slots ● São a memória do bot ● Influenciam no diálogo com o bot ● Controle de tipos Fonte: Do autor
  • 29.
    Rasa - data/nlu.md ●Nesse arquivo são definidos as Intents e entities ● Intents e entities, necessários para o bot compreender o que está sendo dito ● É preciso dar exemplos para o bot aprender o significado das coisas ● Cria-se uma biblioteca de exemplos data/nlu.md domain.yml Fonte: Do autor Fonte: Do autor
  • 30.
    Rasa - actions ●Respostas computadas pelo bot a partir da entrada do usuário ● Pode ser dividas em 4 categorias ○ Utterance Actions ■ Retornar uma mensagem predefinida para o usuário ○ Retrieval Actions ○ Custom Actions ■ Computa dados enviados pelo usuário e pode retornar várias ou nenhuma resposta ■ Funciona como funções ○ Default Actions ■ action_listen ● Aguarda a mensagem do usuário ■ action_restart ● Reinicia uma conversa ■ action_default_fallback ● Desconsidera a última mensagem do usuário
  • 31.
    Rasa - Stories ●São estruturas de dados utilizados para treinar os diálogos do bot ● São exemplos minimalistas baseados intents e actions Fonte: Do autor
  • 32.
    Rasa - Stories ●É possível gerar Stories a partir de um treinamento interativo Fonte: https://rasa.com/docs/rasa/core/interactive-learning
  • 33.
    Rasa - Stories ●Treinamento interativo com visualização do diálogo ○ rasa interactive --skip-visualization Fonte: https://rasa.com/docs/rasa/core/interactive-learning
  • 34.
    Rasa - config.yml ●Discriminam-se as regras do NLU e Core ● As principais regras definidas são pipeline e policies Fonte: Do autor
  • 35.
    Rasa - Policies ●Definem qual ação o bot deve tomar de acordo com fluxo da conversa ● Cada uma possui uma forma de tratamento específico para cada situação ○ Memoization Policy ○ Fallback Policy ○ Mapping Policy ○ Keras Policy ○ Embedding Policy ○ Two-Stage Fallback Policy ○ Form Policy
  • 36.
    Rasa - Pipeline ●Processamento dos componentes em sequência ● Componentes ○ Extração entidades ○ Classificação de intenções ○ Seleção de respostas ● Pipelines pré-configuradas ○ pretrained_embeddings_spacy ■ Menos de 1000 exemplos ○ supervised_embeddings ■ Mais de 1000 exemplos ● Pipelines customizadas
  • 37.
    Rasa - Pipeline Fonte:https://rasa.com/docs/rasa/nlu/choosing-a-pipeline/
  • 38.
    Rasa - Suportede Idiomas ● Suporta qualquer idioma ○ Utilizando a pipeline surpevised_embeddings ● Modelos e vetores de palavras pré-treinados ○ pretrained_embeddings_spacy ○ spaCy ■ Modelos de linguagem pré-treinados ■ fastText Vectors ○ MITIE ■ Permite você construir seu próprio vetor de palavras ● Exige muita memória para realizar o build ( ≃128GB RAM)
  • 39.
  • 40.
    Criando um botRasa 1. Instalação do Rasa a. É requisitado uma versão do Python 3>= instalada. b. pip install rasa 2. Estruturação do bot a. Deve seguir conter no mínimo os arquivos dispostos no slide 20 b. rasa init 3. Configuração a. Definição de pipelines e policies (slides 30, 31 e 32) 4. Treinamento do bot a. Adicionar vários exemplos de intents b. Adicionar vários exemplos de stories ou utilizar o treinamento interativo i. rasa run actions --actions actions& rasa interactive -m models/modulo.tar.gz --endpoints endpoints.yml c. rasa train 5. Iniciar conversação com o bot a. rasa run actions --actions actions& rasa shell
  • 41.
    Rasa X ● Interfacegráfica de conversação para o Rasa ○ pip install rasa-x --extra-index-url https://pypi.rasa.com/simple ○ rasa-x
  • 42.
  • 43.
    Projeto Rasa Boilerplate ●Projeto com uma grande análise de dados para o desenvolvimento de um bot com Rasa https://github.com/lappis-unb/rasa-ptbr-boilerplate
  • 44.
    That’s all folks! GustavoCastro Github: github.com/debgustavocastro Linkedin: linkedin.com/in/gustavocastro78 SlideShare: pt.slideshare.net/GustavoCastro35 E-mail: deb.gustavocastro@gmail.com
  • 45.
    Referências PASSOS, E. Inteligênciaartificial e sistemas especialistas ao alcance de todos. Rio de Janeiro: LTC, 1989; https://www.datageeks.com.br/algoritmos-de-machine-learning/ https://ubots.com.br/blog/afinal-o-que-e-nlu/ https://rasa.com/docs/ https://spacy.io/usage/models#languages https://github.com/facebookresearch/fastText/blob/master/docs/crawl-vectors.md https://www.analyticsvidhya.com/blog/2019/04/learn-build-chatbot-rasa-nlp-ipl/