Fala Galera! Tudo bem por aí? O tema de hoje já faz parte da vida de todos. Quem nunca conversou com um chatbot? Então, agora você pode criar um chatbot para chamar de seu. A área de processamento de linguagem natural, também conhecida como NLP, é fascinante. Além do mais, tem evoluído de uma forma exponencial com o avanço da inteligência artificial.
A ideia é apresentar a criação de um chatbot de uma forma bem simplista. Criar um chatbot em python, como vamos fazer aqui, não quer dizer que você é um especialista. Mas, já dá para ter uma noção do que pode ser feito, além de entender a estrada que tem pela frente para ser um profissional especialista na área.
Primeiramente, vamos entender alguns conceitos importantes. Em seguida, conhecer um pouco mais sobre o Rasa. E para finalizar, um parque de diversões na prática com o Rasa. Sem mais delongas, partiu criar um chatbot.
Iniciamos com alguns conceitos que devem estar claros para começar a brincadeira. O funcionamento de um chatbot acontece a partir da interação de uma pessoa com a máquina. Dessa forma, para que isso seja possível, precisamos estruturar o chatbot para que ele compreenda a interação do usuário e o mesmo seja direcionado para o objetivo final.
Vamos exemplificar para ficar mais claro. Pense em um chatbot que diz ao usuário qual o artigo do site que é mais adequado para o problema dele. Sendo assim, de uma forma bem simples, o usuário acessa o site digita uma frase para o bot, que por sua vez indica quais artigos podem auxiliar o usuário com seu problema.
Cada ação, seja do usuário ou do chatbot, requer programação. Então, vamos a cada uma dessas etapas a seguir.
A intenção está no núcleo do chatbot, é onde ocorre a compreensão de linguagem natural (também conhecida como NLU). Esse é o momento quando o usuário interage com o bot, demonstrando o que deseja. Essa intenção é alimentada com exemplos para treinamento do modelo do chatbot. Ao receber uma intenção, como resultado será emitida uma resposta programada.
A resposta é a voz do bot. Nesta etapa precisamos programar todas as respostas possíveis para o bot. Assim, a cada interação do usuário o bot tem uma resposta programada. Em alguns casos, se programado, essa resposta pode vir em forma de uma ação do bot.
A ação é um evento em forma de programa. Sendo assim, algumas intenções do usuário podem acioná-lo. Esta ação pode ser uma consulta no banco de dados, algum cálculo ou qualquer outro exemplo nesse sentido. Todas essas etapas configuram o fluxo do chatbot.
Os fluxos do chatbot são as histórias exemplos para treinamento do bot. Dessa forma, o bot aprende como interagir com o usuário em determinada situação. A estrutura da interação direciona a intenção do usuário para uma resposta ou ação do bot.
Agora, que já estamos familiarizados com esses conceitos, podemos conhecer o Rasa. Apresentaremos essa ferramenta na criação do chatbot.
O Rasa é um framework de machine learning open source para criação de chatbots. Uma das vantagens do Rasa é a sua documentação e a comunidade, ambos fornecem uma gama de exemplos e até soluções pré-prontas. Em seguida vamos para a melhor parte, bater código. Vamos lá!!!
Temos alguns pré-requisitos para a instalação do Rasa. O python deve estar instalado e de forma opcional, a criação de um ambiente virtual. Lembrando que vamos trabalhar em ambiente Linux Ubuntu, caso utilize outro sistema operacional, basta procurar o comando semelhante do seu SO.
Com o python configurado, podemos verificar se está tudo certo checando a versão com o comando abaixo.
python3 --version
Em seguida, vamos verificar a configuração do pip, com o comando abaixo.
pip3 --version
A imagem abaixo exibirá a saída dos comandos de versões do Python e do pip quando executados.
Caso precise instalar o python ou o pip, aqui vai encontrar tudo o que precisa Instalando o Python no Linux.
Para configurar o ambiente virtual, vamos utilizar o venv. Caso o venv não esteja instalado, utilize o comando a seguir:
sudo apt-get install python3-venv.
Com o comando abaixo criamos o ambiente virtual, note que no lugar de nome_ambiente_virtual você pode optar pelo nome que lhe for mais conveniente.
python3 -m venv ./nome_ambiente_virtual
Em seguida, precisamos ativar o ambiente com o comando abaixo.
source ./nome_ambiente_virtual/bin/activate
Após ativar o ambiente virtual, ele exibirá conforme a última linha da imagem abaixo. Note que o nome do ambiente virtual é exibido entre parênteses (venv) no início, o que significa que o ambiente virtual está ativo.
Com o ambiente virtual configurado, conseguimos separar os ambientes de desenvolvimentos. Assim é possível instalar versões do python e de bibliotecas diferentes em cada ambiente. Agora vamos instalar o Rasa no ambiente virtual criado acima.
Mais simples de instalar impossível, através do comando pip abaixo tudo vai ficar pronto para começar a brincadeira.
pip3 install rasa
Após a instalação, podemos verificar se o Rasa foi instalado corretamente através do comando.
rasa --version
Rasa instalado, vamos ver os comandos para trabalhar com ele.
O rasa possui uma série de comandos para que seja possível, configurar, treinar e testar o nosso chatbot. Abaixo uma relação extraída da documentação do próprio Rasa. Mas vamos por partes, aqui só vamos ver alguns desses comandos.
Basicamente vamos, iniciar um novo projeto, treinar o modelo e fazer testes com ele. Então, precisamos conhecer os comandos abaixo:
1 – rasa init —> Para criar um novo projeto exemplo com toda a estrutura necessária para desenvolvimento.
2 – rasa train —> Para treinar o modelo de acordo com as configurações de intenções, respostas, ações e histórias.
3 – rasa shell —> Para carregar o modelo treinado e interagir com o bot via linha de comando.
Ao executar o rasa init, você criará a estrutura de arquivos abaixo. Nesses arquivos podemos fazer as modificações necessárias para que o bot funcione da forma como você espera.
Observe na imagem abaixo que temos exatamente a mesma estrutura prevista para iniciar o projeto com o Rasa.
Dando sequência a configuração do rasa init veremos algumas perguntas que serão feitas para configuração do projeto.
Perguntas na configuração do rasa init.
Mesmo sem fazer nenhuma alteração, já podemos treinar esse modelo padrão e ver ele em funcionamento, com as respostas dadas acima. Observe na imagem abaixo.
Já podemos interagir com o bot, será que ele já entende alguma coisa?
O modelo padrão inicial já vem com uma configuração básica, porém no idioma em inglês. Agora, algumas modificações para compreender o funcionamento do chatbot.
A primeira alteração a ser feita, será do idioma. No arquivo config.yml podemos informar a linguagem que o bot irá trabalhar. Então, na linha 3 no campo language deve ser alterado de en para pt ou simplesmente de inglês para português.
Alteração realizada e salva, vamos configurar a intenção.
O nosso arquivo de intenção é o nlu.yml, e ele tem a seguinte estrutura:
nlu: - intent: nome_da_intenção examples: - exemplo_1 - exemplo_2
Pensando na nossa primeira interação com o bot, colocamos a mensagem Olá e ele não entendeu. Então, com a intenção de saudação greet vamos acrescentar mais um exemplo, que pode ser observado na linha 6 do arquivo nlu.yml.
Após as alterações feitas, precisamos treinar novamente o modelo através do comando rasa train. Em seguida vamos iniciar a interação através do comando rasa shell.
Observe que agora o nosso bot entendeu a mensagem e retornou perguntando como eu estava. Mas, ainda no idioma em inglês, apesar da alteração do idioma principal do bot, ainda precisamos alterar as intenções e respostas para o idioma configurado.
Devemos criar as respostas no arquivo domain.yml, que possui a seguinte estrutura:
intents: - nome_da_intenção_1 - nome_da_intenção_2 responses: nome_da_resposta: - text: "texto da resposta"
Sendo assim, vamos responder a intenção de saudação greet com a resposta utter_greet na linha 13 informando um texto resposta a ser dado pelo bot na linha 14, Oi! Como você está?.
Mais uma vez, precisamos treinar novamente o modelo através do comando rasa train. Em seguida vamos iniciar a interação através do comando rasa shell.
Agora o nosso boot além de entender a mensagem Olá respondeu adequadamente com o texto Oi! como você está?, que configuramos na resposta. Dessa forma, começamos a construir um fluxo de interação entre o usuário e o bot.
A configuração do fluxo ou histórias é feita no arquivo stories.yml, mas pode ser necessário voltar nos dois passos acima ( intenções e respostas). Abaixo a estrutura do arquivo stories.yml:
stories: - story: nome_da_história steps: - intent: nome_da_intenção_1 - action: nome_da_resposta_1 - intent: nome_da_intenção_2 - action: nome_da_resposta_2
Seguindo o fluxo de conversa com o bot. Ao inserir uma intenção com a mensagem mais ou menos, não foi possível interpretar essa intenção. Então, precisamos criar um fluxo para essa nova possibilidade de intenção.
O primeiro passo é criar uma intenção para as novas possibilidades de interações do usuário. Vamos chamar de mood_so e citar alguns exemplos possíveis para essa nova intenção. Abaixo os detalhes da criação da nova intenção no arquivo nlu.yml, da linha 4 a 8.
Em seguida, criaremos uma resposta para esta nova interação do usuário. Batizada pelo nome de utter_mood_so e descrito o texto resposta do bot, nas linhas 14 e 15. Ainda incluímos a nova intenção criada também no arquivo domain.yml como se vê na linha 11.
Para finalizar, incluímos a intenção do usuário e a resposta dada pelo bot na criação do fluxo. Aproveitando a história happy path, adicionamos a intenção mood_so e a resposta utter_mood_so como pode ser observado abaixo no arquivo stories.yml nas linhas 9 e 10.
Fluxo devidamente configurado partiu treinar o modelo e interagir.
Antes da criação do fluxo ao inserir mensagem mais ou menos o bot não entendeu a intenção do usuário. Porém, após o fluxo devidamente configurado, observe como a interação do bot foi muito mais coerente. E assim devemos criar todos os fluxos necessários para que o chatbot resolva o seu problema. Seja de sugestão de conteúdo ou para pedir uma pizza.
E assim finalizamos essa introdução de como criar um chatbot com Rasa Open Source. Aprendemos alguns conceitos importantes sobre chatbots. Fizemos a instalação do Rasa no detalhes e começamos as alterações do modelo padrão para entender o funcionamento e a lógica por trás dele.
Mas lembre-se que esse conteúdo é só o dedo mindinho, dá para fazer muita coisa legal com o Rasa. A sua criatividade é o limite!
Então, espero que vocês tenham curtido essa introdução a criação de chatbot com Rasa, compartilhem com a sua rede e não esqueçam de mandar aquele feedback do que você achou do conteúdo. Um abraço e até a próxima.
Por fim, deixo algumas sugestões de conteúdos que você pode encontrar no Dados ao Cubo, sempre falando sobre o mundo dos dados.
Então, finalizo com um convite para você ser Parceiro de Publicação Dados ao Cubo e escrever o próximo artigo, compartilhando conhecimento para toda a comunidade de dados. Mas, não esqueça de assinar a nossa Newsletter para ficar por dentro de todas as novidades.
Apaixonado por dados e tecnologia ❤️ , criando soluções com dados 📊 📈 , desde 2015, sempre buscando tornar os processos orientados! Com formação em Engenharia da Computação 💾 , MBA Gestão da Informação e Business Intelligence e Especialização em Data Science.
Também atuo como professor na área de dados. Nas horas vagas crio modelos de Machine Learning 🤖 com Python em desafios do Kaggle e escrevo no Dados ao Cubo sobre o mundo dos dados 🎲 !
Compartilhando conhecimentos sempre 🚀
Fala Galera do mundo dos dados, hora de manipular dados no MongoDB com Python. Dessa…
Fala Galera do mundo dos dados, hora de manipular dados no Cassandra com Python. Dessa…
Fala galera do mundo dos dados, hoje é dia de aprender a função Select do Spark.…
Fala galera do mundo dos dados, hoje é dia de transformar consultas SQL em visualizações…
Fala galera do mundo dos dados, dando continuidade às consultas de banco de dados com…
Fala galera do mundo dos dados, hora de conhecer os bancos de dados NoSQL com…