Desenvolvimento da Tais - Entendendo Chatbots
Durante o desenvolvimento da Tais diversas ferramentas foram estudadas e testadas antes da decisão de qual tecnológia seria escolhida de base para o projeto. Dentre essas ferramentas, o Rasa NLU e o Rasa Core se destacaram devido ao desempenho que possuem, por de serem flexíveis em relação as ferramentas compatíveis com o módulo de backend e por utilizarem a licença permissiva Apache License 2.0. Mais informações sobre o estudo de tecnológias podem ser acessados na página Estudo sobre ferramentas de bots.
Arquitetura do Rasa
O Rasa Core possui uma a seguinte arquitetura de funcionamento:
Esse diagrama segue os seguintes passos:
- 1: A messagem é recebida e passada para o Interpreter, que a converte em um dicionário incluindo o texto original, a intent, e qualquer entity que for encontrada;
- 2: O Tracker é o objeto que mantém controle do estado da conversa. Ele recebe a informação de que uma nova mensagem foi recebida;
- 3: O Policy recebe as informações atuais do Tracker;
- 4: O Policy decide qual ação deve ser tomada;
- 5: A ação escolhida é captada pelo Tracker;
- 6: A resposta é enviada para o usuário.
Essa arquitetura possibilita a conexão com diversas plataformas de comunicação para estruturação do bot, que varia de acordo com a necessidade do projeto. O modo de efetuar essa conexão pode ser visto na parte de Chat & Voice platforms da documentação do Rasa Core.
Já o Rasa NLU atua na parte de interpretação da linguagem natural. De modo mais específico, Rasa NLU é uma biblioteca NLP para classificação de intenções e extração de entidades, isso é, a frase enviada pelo usuário é passada para o Rasa NLU onde são aplicados diversos algoritmos para definir qual a provável intenção da sentença a partir da lista de intenções previamente fornecida pelo desenvolvedor. Mais detalhes do funcionamento do Rasa NLU podem ser lidos na documentação oficial do Rasa.
NLU: Natural Language Understanding NLP: Natural Language Processing
Criação/Atualização de conteúdos
Existem três pontos principais que relacionam os conteúdos analisados pelo bot dentro do Rasa, eles são as Intents, as Utters e as Stories.
-
Intents
As intents fazem referências as possíveis intenções que o usuário possui ao enviar mensagens, o processamento dessas mensagens para classificação da intent é feito pelo Rasa NLU, como foi explicado acima. Podem ser encontradas na pasta
/bot/data/intents
e ficam salvas em um arquivo markdown. O arquivo de Intent deve possuir diversas frases de exemplo para que o bot possa ter uma base para a análise no NLU. Uma intent deve ser escrita da seguinte forma:## intent:<nome_da_intent>
- <exemplo de frase>
- <texto>
- <texto>
Após criada, uma intent deve ser inserida no arquivo/bot/domain.yml
, na área de intents, da seguinte forma:<!-- área de intents -->
intents:
<!-- inserção da intent -->
` -` -
Utters
As Utters são as mensagens de respostas enviadas pelo bot para o usuário após a detecção de uma intent. Ficam localizadas no arquivo
/bot/domain.yml
. Elas devem ser inseridas na área de templates a partir do seguinte modelo:<!-- área de templates -->
templates:
<!-- inserção da utter -->
` utter_:` ` - text: |` ` ` e também deve ser listada na área de actions: `` `actions:` `` ` - utter_ ` -
Stories
A relação Utter-Intent é mapeada nas Stories, fornecendo ao bot uma base de possíveis diálogos e permitindo que ele gere novas relações e fluxos de conversa. Sua criação envolve as Intents e Utters já existentes no bot. Elas podem ser encontradas na pasta
/bot/data/stories
e ficam salvas em um arquivo markdown, assim como as intents. Elas podem envolver diversas intents e utters e devem ser feitas no seguinte padrão:## <nome_da_storie>
* <nome_da_intent_1>
` - utter_` `* ` ` - utter_ ` `* ` ` - utter_ ` ` - utter_ ` As stories não precisam ser listadas no arquivo `/bot/domain.yml`
Para uma melhor compreensão de como se criar intents é recomendada a leitura do texto Intents Eficientes.
Outras funcionalidades
O Rasa Core proporcina diversas funcionalidades para o projeto ao qual é aplicado, como a alteração das configurações de resposta padrão do bot (que pode ser visto no arquivo /bot/fallback.py
) e CustomActions, por exemplo. Essas funcionalidades podem ser estudadas a partir da documentação oficial do Rasa.
Referências
- https://canaltech.com.br/produtos/O-que-e-open-source/, acessado 23/04/2019
- https://github.com/RasaHQ, acessado 23/04/2019
- https://www.sas.com/pt_br/insights/analytics/machine-learning.html, acessado 23/04/2019
- https://rasa.com/docs/core/architecture/, acessado 23/04/2019
- https://rasa.com/products/rasa-nlu/, acessado 24/04/2019
- https://rasa.com/docs/core/domains/#utter-templates, acessado 24/04/2019
- https://rasa.com/products/rasa-nlu/, acessado 24/04/2019