Equipe: Caio Marcon Hobold Gabriel Gonçalves Flôr Kaue da Silva Elias Miguel Lumertz Espíndola
Trabalho Final — Inteligência Artificial — UNESC
Chatbot de atendimento ao público para a ACEC, uma associação cívica fictícia. O sistema usa Processamento de Linguagem Natural para responder dúvidas frequentes mesmo quando a pergunta é formulada de forma diferente das frases de treinamento.
- Python 3.11 ou superior
- Node.js 18 ou superior
# 1. Entre na pasta do backend
cd backend
# 2. Crie e ative o ambiente virtual
python3 -m venv venv # Mac/Linux
source venv/bin/activate # Mac/Linux
venv\Scripts\activate # Windows
# 3. Instale as dependências
pip install -r requirements.txt
# 4. Baixe o modelo spaCy para português (necessário pelo ChatterBot)
python -m spacy download pt_core_news_sm
# 5. Baixe os recursos do NLTK
python -c "import nltk; nltk.download('punkt_tab'); nltk.download('stopwords'); nltk.download('rslp')"
# 6. Inicie a API (o bot treina automaticamente no primeiro start)
uvicorn main:app --reload --host 0.0.0.0 --port 8000A API estará disponível em: http://localhost:8000
# Em outro terminal, entre na pasta do frontend
cd frontend
# Instale as dependências
npm install
# Inicie o servidor de desenvolvimento
npm run devA interface estará disponível em: http://localhost:5173
ChatBotRotary/
├── README.md
├── backend/
│ ├── requirements.txt # Dependências Python
│ ├── main.py # API FastAPI (/chat, /health, /info)
│ ├── bot.py # Motor principal (ChatterBot + TF-IDF)
│ ├── tfidf_adapter.py # Logic Adapter customizado (TF-IDF + NLTK)
│ ├── nlp_utils.py # Pipeline NLTK (normalização, stemming RSLP)
│ ├── evaluate.py # Métricas: acurácia, F1, matriz de confusão
│ └── data/
│ ├── faq.yml # Base de conhecimento (16 intenções, 119 pares)
│ ├── test_set.json # 28 perguntas de teste rotuladas
│ └── chatterbot.sqlite3 # Banco de dados do ChatterBot (gerado automaticamente)
│ └── resultados/
│ ├── matriz_confusao.png
│ └── distribuicao_confianca.png
└── frontend/
├── package.json
├── vite.config.ts
├── index.html
└── src/
├── App.tsx # Componente principal + lógica de chat
├── App.css # Estilos
├── main.tsx # Entry point React
├── api.ts # Chamadas ao backend (axios)
└── components/
└── ChatWindow.tsx # Histórico de mensagens
# Dentro de backend/ com o venv ativo:
# Testar o bot no terminal (retreina e exibe resultados)
python bot.py
# Demonstrar pipeline PLN no terminal
python nlp_utils.py
# Gerar métricas de avaliação + gráficos
python evaluate.py
# Iniciar a API
uvicorn main:app --reload