Os chatbots são aplicações que trocam e gerenciam mensagens. Atualmente, várias empresas estão investindo neste segmento para a criação de assistentes virtuais (robôs que interagem com o usuário e realizam determinadas tarefas cotidianas).
Neste artigo veremos como criar um chatbot com Python que interage com o usuário e aprende enquanto conversa em um jogo de perguntas e respostas.
Instalando as ferramentas
O primeiro passo para o desenvolvimento do nosso chatbot é instalar as ferramentas necessárias. Para isso, vamos precisar do Python, PIP e da biblioteca Chatterbot. Também vamos utilizar o PyCharm em sua versão Community para ajudar no desenvolvimento, mas seu uso é opicional.
O download do Python pode ser feita por meio do seu site oficial e o processo é bem simples (next > next > finish).
Já o PIP, gerenciador de pacotes do Python, pode ser baixado também por meio de seu site oficial. Todo o processo de instalação do PIP pode ser visto neste post do blog da TreinaWeb.
Por fim, com o Python e o PIP instalados, precisamos instalar a biblioteca Chatterbot. Para isso, após criar o projeto no PyCharm, vamos até a aba “Project Interpreter”, localizado em “Preferences” dentro do PyCharm. Lá, vamos buscar pela biblioteca Chatterbot e realizar sua instalação, como podemos ver abaixo:
Feito isso, todas as ferramentas necessárias já estão instaladas e prontas para serem utilizadas.
Criando o Chatbot
O processo de criação do Chatbot é bem simples. Basicamente, vamos criar uma lista de perguntas e respostas que serão usadas como aprendizado inicial do nosso Bot. A partir daí, utilizaremos alguns métodos para que todas as perguntas e respostas que vamos informando para ele, sejam analisadas, processadas e aprendidas conforme o tempo. Veremos abaixo todo o código detalhado:
from chatterbot.trainers import ListTrainer
from chatterbot import ChatBot
O primeiro passo para a criação do nosso chatbot é importar o método ListTrainer responsável por permitir que uma lista de strings seja utilizada no processo de aprendizagem do Bot. Após isso, importamos o construtor Chatbot para que possamos criá-lo em nosso programa.
Feito isso, precisamos inicializar nosso Chatbot e determinar a lista inicial de mensagens que serão utilizadas como base para o aprendizado do Bot:
bot = ChatBot('TW Chat Bot')
conversa = ['Oi', 'Olá', 'Tudo bem?', 'Tudo ótimo',
'Você gosta de programar?', 'Sim, eu programo em Python']
bot.set_trainer(ListTrainer)
bot.train(conversa)
Com isso, nós registramos três perguntas. Por padrão, cada resposta se refere ao item anterior da lista. Por exemplo, a string ‘Olá’ se refere como resposta da pergunta ‘Oi’. Já a string ‘Tudo ótimo’ é resposta da pergunta ‘Tudo bem?’ e assim por diante.
Após isso, definimos, através do método train()
, que utilizaremos a lista conversa
como ponto de partida para o aprendizado do Bot.
Finalmente, criamos um loop infinito que vai capturar a pergunta do usuário, buscar uma possível resposta e retornar ao usuário. Definimos, também, que se o grau de confiança da resposta for menor que 0.5, o Bot vai informar que ainda não sabe responder tal pergunta:
while True:
pergunta = input("Usuário: ")
resposta = bot.get_response(pergunta)
if float(resposta.confidence) > 0.5:
print('TW Bot: ', resposta)
else:
print('TW Bot: Ainda não sei responder esta pergunta')
Sendo assim, o código final do nosso Chatbot pode ser visto abaixo:
from chatterbot.trainers import ListTrainer
from chatterbot import ChatBot
bot = ChatBot('TW Chat Bot')
conversa = ['Oi', 'Olá', 'Tudo bem?', 'Tudo ótimo', 'Você gosta de programar?', 'Sim, eu programo em Python']
bot.set_trainer(ListTrainer)
bot.train(conversa)
while True:
pergunta = input("Usuário: ")
resposta = bot.get_response(pergunta)
if float(resposta.confidence) > 0.5:
print('TW Bot: ', resposta)
else:
print('TW Bot: Ainda não sei responder esta pergunta')
Vale ressaltar que as perguntas e respostas do nosso ChatBot vão sendo armazenadas em um banco de dados SQLite criado automaticamente. Um outro ponto importante é que o processo de aprendizado é um pouco lento, então você terá que conversar alguns minutos com seu ChatBot até que ele aprenda novas perguntas e suas respectivas respostas.
Após isso, podemos executar nosso ChatBot e conversar com nosso novo amigo. Para isso, clicamos com o botão direito no arquivo e selecionamos a opção “Run”:
Nosso ChatBot será inicializado e nós podemos trocar mensagens com ele. Após alguns minutos de conversa, você perceberá que o ChatBot fará perguntas que não estão cadastradas em nossa lista conversa
. Estas perguntas são aprendidas com o tempo e armazenadas no banco de dados:
Nem sempre as respostas possuem exatidão, mas este processo vai melhorando com o tempo. Basta você indicar o caminho correto para o Bot que ele aprenderá mais rápido.
Concluindo
Neste artigo vimos como é simples criar um ChatBot com Python. O processo de aprendizado, no início, é demorado, mas vai melhorando com o tempo. Após alguns minutos de conversa, você terá um amigo pra dialogar nas horas vagas sobre os assuntos que você mais gosta. :D