Rasa 2.0: Criando um chatbot com uma poderosa ferramenta Open Source

Odilio Noronha
RapaduraTech
Published in
6 min readOct 25, 2020

Os sistemas de conversação artificial estão se tornando uma parte indispensável do ecossistema humano. Exemplos bem conhecidos de IA de conversação incluem o Siri da Apple, o Alexa da Amazon e a Cortana da Microsoft.

Um chatbot entende o contexto da conversa e pode lidar com qualquer objetivo do usuário normalmente e ajudar a realizá-lo da melhor forma possível. Isso nem sempre significa que o bot poderá responder a todas as perguntas, mas pode lidar bem com a conversa.

Rasa Stack

Atualmente o Rasa está em sua versão 2.0.1 e é essa versão que iremos usar para implementar o nosso bot.

A Rasa possui dois módulos principais:

  • NLU para entender mensagens do usuário
  • CORE para manter conversas e decidir o que fazer em seguida
  • Rasa x é uma plataforma para criar visualmente os fluxos conversacionais

Um chatbot equipado com NLU pode entender as perguntas mais frequentes.

O principal benefício de usar NLU é que o bot aprende com a entrada de dados e interações com os usuários. Com o tempo, o bot se torna mais inteligente e fornece recomendações melhores com base nas preferências dos clientes.

Depois de fornecer a resposta, adicione uma parte de acompanhamento ao fluxo. Pergunte ao cliente “Foi útil?” Ou “Tem outra pergunta?”. Finalmente, a conversa deve ser encerrada com uma despedida adequada.

Instalação

É necessário que você tenha pré instalado o python e preferível que instale o pip, então poderá usar esse comando para instalar o rasa e o rasa x

Vamos começar pelo virtual enviroment, esta etapa é opcional, mas é altamente recomendável isolar projetos Python usando ambientes virtuais. Ferramentas como virtualenv e virtualenvwrapper fornecem ambientes Python isolados, que são mais limpos do que a instalação de pacotes em todo o sistema (pois evitam conflitos de dependência). Eles também permitem que você instale pacotes sem privilégios de root.

$python3 -m venv ./venv

Ative o ambiente virtual:

$.\venv\Scripts\activate

Instale o rasa

$pip3 install rasa

O primeiro passo é criar um novo projeto Rasa. Para fazer isso, execute:

$rasa init

O comando rasa init cria todos os arquivos que um projeto Rasa precisa. Se você deixar de fora a sinalização — no-prompt, você será perguntado sobre como deseja que seu projeto seja configurado.

Entendendo os termos

Intenções/Intents: A intenção descreve quais são as mensagens. Por exemplo, para um bot de previsão de tempo, a frase: como está o tempo amanhã? ”Tem uma intenção request_weather.

Entidades/Entitys: Pedaços de informação que ajudam um chatbot a entender o que especificamente um usuário está perguntando, reconhecendo os dados estruturados na sentença.

Ações/Actions: Coisas que seu bot pode fazer ou dizer. Seu bot poderia por exemplo acessar um serviço externo e consultar a previsão de tempo para amanhã.

Respostas/Responses: São os textos em si que seu bot pode dizer.

Conhecendo os arquivos

Esta é nossa estrutura de pastas em nosso projeto rasa, Deu fome

Comecemos pelo config.yml nosso arquivo gerado deve parecer com isso

O arquivo de configuração define os componentes e políticas que seu modelo usará para fazer previsões com base na entrada do usuário.

Por hora só precisamos alterar a linha language: en para utilizar o português

language: pt

Agora vamos em data/nlu.yml

O primeiro ponto de um chatbot Rasa é o modelo NLU. NLU significa Natural Language Understanding, que significa transformar as mensagens do usuário em dados estruturados. Para fazer isso com o Rasa, você fornece exemplos de treinamento que mostram como a Rasa deve entender as mensagens do usuário e, em seguida, treina um modelo mostrando esses exemplos.

As linhas que começam com - intent: definem os nomes das suas intenções, que são grupos de mensagens com o mesmo significado. O trabalho do Rasa será prever a intenção correta quando seus usuários enviarem mensagens novas e invisíveis ao seu assistente. Você pode encontrar todos os detalhes do formato de dados no formato de dados de treinamento.

Agora vamos em domain.yml para criar os textos de resposta do nosso bot.

O domínio define o universo em que seu assistente opera. Ele especifica as intents, entidades, slots, respostas, formulários e ações que seu bot deve conhecer. Ele também define uma configuração para sessões de conversação

Agora que temos definidos todos os elementos do nosso bot iremos criar uma Stories, As Stories são um tipo de dado de treinamento usado ​​para treinar o modelo de gerenciamento de diálogo de seu assistente. As Stories podem ser usadas para treinar modelos capazes de generalizar caminhos de conversação. Você irá criar a storie em data/stories.yml, como mostrado na imagem abaixo.

Uma ótima ferramenta pra aumentar as capacidades do nosso bot são as Rules, que encontramos no arquivo data/rules.yml. As Rules são um tipo de dados de treinamento usados ​​para treinar o modelo de diálogo de seu assistente. As Rules descrevem pequenas partes de conversas que devem sempre seguir o mesmo caminho.

Actions

Ações são as coisas que seu bot pode realmente fazer. Por exemplo, uma ação poderia:

  • Responder um usuário
  • Fazer uma chamada a uma API externa
  • Consultar um banco de dados
  • Alguma outra ação via código

No nosso exemplo as actions estão respondendo apenas texto(responses), então não precisamos declarar como actions e sim como responses, nas outras versões, nos criaríamos as actions e depois declararíamos o retorno nos templates, mas agora podemos criar diretamente com as responses, também poderíamos criar uma classe e um processor para alguma chamada pra trazer a resposta, para essas custom actions usamos a classificação de actions realmente.

Aqui um exemplo de uma custom action.

O trabalho da Rasa Core é escolher a ação correta a ser executada em cada etapa da conversa. Nesse caso, nossas ações simplesmente enviam uma mensagem para o usuário.

Treinando um modelo

O próximo passo é treinar uma rede neural em nossas histórias de exemplo e dados NLU. Para fazer isso, execute o comando abaixo. Este comando chamará as funções de trem Rasa Core e NLU e armazenará o modelo treinado no diretório models/.

$rasa train

O comando rasa train procurará pelos dados do seu bot e treinará um modelo.

Converse com seu bot

O próximo passo é experimentá-lo! Comece a conversar com seu assistente executando:

$rasa shell

Agora você pode conversar com o seu bot usando pelo seu terminal, no próximo tutorial veremos como usar o rasa x para aprimorar o nosso bot.

Outro grande Beneficio do Rasa são suas ferramentas e comunidade ativa, alem do projeto rasa x que é a plataforma padrão do rasa para criar o bot visualmente como no Dialog Flow do google e Watson da IBM também temos varias ótimas ferramentas open source, vou deixar duas que já testei aqui.

--

--