Projeto de análise de sentimentos com processamento de linguagem natural e aprendizado de máquina.
O Senti-Pred é um projeto de análise de sentimentos que utiliza técnicas de processamento de linguagem natural e aprendizado de máquina para classificar textos de acordo com o sentimento expresso. Este repositório oferece diferentes abordagens para explorar e utilizar o pipeline de análise de sentimentos.
O dataset utilizado neste projeto foi obtido a partir do repositório público no Kaggle:
https://www.kaggle.com/datasets/jp797498e/twitter-entity-sentiment-analysis
Por favor, verifique os termos de uso e a licença do dataset no Kaggle antes de redistribuir os dados.
O projeto pode ser executado de três maneiras principais, cada uma com sua própria documentação detalhada:
-
Scripts Python Modulares: Para uma execução mais controlada e modular, ideal para integração em outros sistemas ou automação.
- Os scripts atualizados estão em
src/scripts/e seguem a divisão em etapas:01_eda.py— Análise exploratória e geração de PNGs emreports/visualizacoes/.02_preprocessing.py— Pré-processamento em inglês; gera um artefato binário emdata/processed/processed_data.pkl.03_modeling.py— Treina modelos a partir do pickle processado, salva o melhor emsrc/models/sentiment_model.pkl, gera métricas JSON e gráficos comparativos (ROC/PR/confusion) emreports/visualizacoes/.04_evaluation.py— Avaliação do modelo salvo; gera imagens ereports/metrics/model_metrics.jsoncom estrutura contendobest_modeleresults.
- Veja o guia completo em: README_scripts.md
- Os scripts atualizados estão em
-
Notebook Jupyter: Para uma exploração interativa e desenvolvimento passo a passo do pipeline completo.
- Veja o guia completo em: README_jupyter.md
-
GCP Vertex AI + Docker: Para deploy em ambiente de produção utilizando a infraestrutura do Google Cloud Platform e Docker.
- Veja o guia completo em: README_gcp.md
-
Dashboard Interativo R Shiny: Para análise exploratória de dados (EDA) interativa dos dados brutos, processados e de previsão.
- Veja o guia completo em: README_r.md
- Deploy Online: O dashboard está disponível publicamente em: Senti-Pred EDA Dashboard
-
Dashboard de Métricas Streamlit: Para visualizar as métricas de avaliação do modelo de forma interativa.
- NOVO: Agora permite predição interativa de textos e predição em lote via upload de CSV
- NOVO: Script de retreinamento para Python 3.13+ (
retrain_model.py) - Deploy Online: O dashboard está disponível publicamente em: Senti-Pred Metrics Dashboard
- Execução Local (resumo):
- Instale dependências:
pip install -r streamlit_dashboard/requirements.txt - Gere artefatos do pipeline:
python src/scripts/02_preprocessing.pypython src/scripts/03_modeling.py(gera também o modelo para predições)- Opcional:
python src/scripts/04_evaluation.py(gera métricas detalhadas)
- Navegue até
streamlit_dashboarde execute:python -m streamlit run app.py - Alternativamente, pela raiz:
python -m streamlit run streamlit_dashboard/app.py
- Instale dependências:
- Retreinamento: Use
python streamlit_dashboard/retrain_model.pypara retreinar o modelo com Python 3.13+ - Funcionalidades: Métricas comparativas, visualizações, predição de texto único, predição em lote de CSV, download de resultados, retreinamento do modelo
- Documentação Completa: veja
streamlit_dashboard/README.mdpara detalhes, estrutura esperada e troubleshooting.
-
Agente de Geração de Testes Unitários: Para gerar automaticamente testes unitários para código Python usando IA.
- Funcionalidade: Gera testes unitários abrangentes usando Azure OpenAI e pytest
- Documentação Completa: veja
test_agent/README.mdpara instruções detalhadas de uso e configuração.
senti-pred/
├── README.md
├── README_scripts.md
├── README_jupyter.md
├── README_gcp.md
├── README_r.md
├── data/
│ ├── raw/ (dados originais)
│ └── processed/ (dados processados)
├── r_shiny/
│ └── app.R (Aplicativo R Shiny)
├── streamlit_dashboard/
│ ├── app.py (Dashboard Streamlit)
│ ├── retrain_model.py (Script para retreinar modelo - Python 3.13+)
│ ├── requirements.txt (Dependências do dashboard)
│ ├── Dockerfile (Containerização)
│ └── README.md (Documentação do dashboard)
├── test_agent/
│ ├── agent.py (Agente de geração de testes)
│ ├── example_code.py (Código de exemplo)
│ ├── requirements.txt (Dependências do agente)
│ └── README.md (Documentação do agente)
├── full_pipeline.ipynb (Pipeline completo)
├── src/
│ ├── models/
│ │ └── sentiment_model.pkl (Modelo treinado)
│ ├── api/ (Django API)
│ └── scripts/
│ ├── 01_eda.py (Análise exploratória)
│ ├── 02_preprocessing.py (Pré-processamento)
│ ├── 03_modeling.py (Treinamento de modelos)
│ └── 04_evaluation.py (Avaliação e métricas)
├── reports/
│ ├── relatorio_tecnico.md
│ ├── metrics/
│ │ └── model_metrics.json (Métricas do modelo)
│ └── visualizacoes/ (gráficos e visualizações)
├── .env.example
├── .env
├── .gitignore
├── requirements.txt
├── docker-compose.yml
└── retreinar_para_cloud.py (Script auxiliar para retreinar)
O arquivo reports/metrics/model_metrics.json contém a estrutura padronizada de métricas do projeto:
{
"best_model": "LinearSVC",
"results": {
"LinearSVC": {
"accuracy": 0.938,
"f1_macro": 0.937,
"train_time_seconds": 0,
"predict_time_seconds": 0,
"classification_report": {
"Positive": {"precision": 0.929, "recall": 0.939, "f1-score": 0.934, "support": 285},
"Negative": {"precision": 0.921, "recall": 0.962, "f1-score": 0.941, "support": 266},
"Neutral": {"precision": 0.974, "recall": 0.916, "f1-score": 0.944, "support": 285},
"Irrelevant": {"precision": 0.925, "recall": 0.936, "f1-score": 0.931, "support": 172},
"macro avg": {"precision": 0.937, "recall": 0.938, "f1-score": 0.937, "support": 1008}
},
"confusion_matrix": [[...]]
}
},
"model_classes": ["Positive", "Negative", "Neutral", "Irrelevant"]
}Esta estrutura é utilizada pelo dashboard Streamlit para exibir:
- Melhor modelo identificado automaticamente
- Acurácia global e F1-score macro
- Métricas por classe (precision, recall, f1-score, support)
- Médias macro dos valores por classe
- Python 3.8+ (Compatível com Python 3.13 - ideal para Streamlit Cloud)
- Pip (gerenciador de pacotes Python)
- Docker e Docker Compose (para deploy com Docker)
- Virtualenv (opcional, mas recomendado)
O projeto é totalmente compatível com o Streamlit Cloud (limite Python 3.13):
- ✅ Modelo treinado com Python 3.13.1
- ✅ Dependências atualizadas para compatibilidade
- ✅ Script de retreinamento disponível em
streamlit_dashboard/retrain_model.py - ✅ Dashboard pronto para deploy na nuvem
-
Clone o repositório:
git clone https://github.com/PedroM2626/Senti-Pred.git cd senti-pred -
Crie e ative um ambiente virtual (opcional):
python -m venv venv source venv/bin/activate # No Windows: venv\Scripts\activate
-
Instale as dependências:
pip install -r requirements.txt
-
Configure as variáveis de ambiente:
cp .env.example .env # Edite o arquivo .env com suas configurações
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/nova-feature) - Faça commit das suas alterações (
git commit -am 'Adiciona nova feature') - Faça push para a branch (
git push origin feature/nova-feature) - Abra um Pull Request
Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para detalhes.