Interação

Equipe responsável por pesquisar e desenvolver a solução de interação do Fatequino com alunos, professores, funcionários e visitantes.

Requisitos:

  • Sistema de comunicação audível.
  • Reconhecimento prévio de alunos, professores e funcionários.
  • Conversação.
  • Esclarecimento de dúvidas. Exemplos: localização de salas de aula, disciplinas por sala, sala de cada professor, etc.
  • Armazenamento de conversas para fins de levantamentos estatísticos.

Integrantes

  • Andre Santos
  • Arthur Silveira
  • Diogo Rocha
  • Tulio Vieira
  • Yuri Barbosa

Introdução

O projeto proporcionou minha primeira experiência com a linguagem Python, que se mostrou muito pratica, por contar com diversas bibliotecas e opções para desenvolvimento, no projeto tive também a oportunidade de usar a biblioteca Chatterbot, que possibilita a criação de um chat que responde usando IA.


Construção do módulo de interação

Nesta parte iremos detalhar os passos que a equipe de interação utilizou para construção do modulo de interação do projeto ‘FATEQUINO’, tratando dos programas usados, códigos e referências para sua concepção.

Passo 1:

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 é opcional.

O download do Python pode ser feito por meio do seu site oficial e o processo é bem simples (next>next>finish).

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: Definir o Bot que utilizaremos para conversar com os usuários.

Passo 2:

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 forem informadas sejam analisadas, processadas e aprendidas conforme o tempo. Veremos abaixo todo o código detalhado:

from chatterbot.trainers import ListTraine
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(‘Fatequino Chat bot’)
saudacoes = [‘Oi’, ‘Olá’, ‘Tudo bem?’,’TudoOtimo’, ‘Como está seu dia ?’
, ‘Não tenho a mesma noção de tempo que você humano, mas vai bem’, ]
fatecPergunta= [‘Aonde é a sala dos professores?’, ‘primeiro andar ao lado da sala 110’
, ‘Aonde é a secretaria?’, ‘No primeiro predio da ETEC’
, ‘Qual o nome da Diretora?’, ‘Vanessa Priscila Salvador Lopes’, ‘Tem o link do SIGA ?’
, ‘https://siga.cps.sp.gov.br/aluno/home.aspx’ ]
perguntaRobotais= [‘Quem te criou?’, ‘Alunos desocupados da FATEC, turma da noite’, ‘Você gosta do que faz?’, ‘Não tenho escolha’]
bot.set_trainer(ListTrainer)
bot.train(saudacoes)
bot.train(fatecPergunta)
bot.train(perguntaRobotais)

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.

Em seguida 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:

whileTrue:
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)
whileTrue:
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 será necessário conversar alguns minutos com o 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 são exatas, mas este processo vai melhorando com o tempo. Basta indicarmos o caminho correto para o Bot que ele aprenderá mais rápido.