Pipeline configurável de análise de sentimentos
Project description
Pipeline configurável de análise de sentimentos em Python.
Permite configurar pré-processamento, vetorização e seleção automática de modelo, comparando múltiplas combinações e retornando a melhor configuração.
Requisitos
- Python 3.9 ou superior
- pip instalado
Instalação
1. Instale via pip
pip install sentiment-pipeline
2. Baixe os recursos necessários
python -m spacy download pt_core_news_sm
python -c "import nltk; nltk.download('stopwords'); nltk.download('rslp'); nltk.download('punkt')"
### 3. Instale o pacote e as dependências
```bash
pip install -e .
4. Baixe os recursos necessários
python -m spacy download pt_core_news_sm
python -c "import nltk; nltk.download('stopwords'); nltk.download('rslp'); nltk.download('punkt')"
Como rodar a interface web
streamlit run app.py
O navegador vai abrir automaticamente em http://localhost:8501.
Como usar via código Python
from sentiment_pipeline.pipeline import Pipeline
# 1. Configure o pré-processamento
config_pre = {
"lowercase": True, # 'NÃO' → 'não'
"remove_urls": True, # remove http://...
"normalize_emojis": True, # 😡 → ':rosto_furioso:'
"handle_negations": True, # 'não gostei' → 'não gostei_NEG'
"remove_stopwords": "keep_negations", # remove stopwords mas preserva negações
"normalization": "stemming" # 'correndo' → 'corr'
}
# 2. Configure a vetorização
config_vet = {
"estrategia": "tfidf", # bow | tfidf | tfidf_svd | word2vec
"max_features": 10000,
"ngram_range": (1, 2),
"sublinear_tf": True,
}
# 3. Crie e execute o pipeline
pipeline = Pipeline(config_pre, config_vet)
pipeline.carregar_dados("dataset.csv", coluna_texto="text", coluna_label="label")
pipeline.treinar()
# 4. Avalie na validação (use para comparar configurações)
pipeline.avaliar_validacao()
# 5. Avalie no teste — use SOMENTE no final, depois de escolher a melhor configuração
pipeline.avaliar_teste()
Como comparar múltiplas combinações automaticamente
from sentiment_pipeline.pipeline import comparar_combinacoes
# Testa várias combinações de pré-processamento e vetorização
# e retorna uma tabela ordenada pelo F1-macro
resultados = comparar_combinacoes("dataset.csv", "text", "label")
print(resultados)
Parâmetros do pré-processamento
| Parâmetro | Valores possíveis | O que faz |
|---|---|---|
lowercase |
True / False |
Converte texto para minúsculo |
remove_urls |
True / False |
Remove links do texto |
normalize_emojis |
True / False |
Converte emojis em texto descritivo |
handle_negations |
True / False |
Marca palavras após negação com _NEG |
remove_stopwords |
True / False / "keep_negations" |
Remove palavras sem sentimento. keep_negations preserva "não", "nunca", "jamais", "nem" |
normalization |
"stemming" / "lemmatization" / None |
Reduz palavras à forma base |
Estratégias de vetorização
| Estratégia | Modelo automático | Quando usar |
|---|---|---|
bow |
Naive Bayes | Textos curtos e simples |
tfidf |
Regressão Logística | Melhor opção geral |
tfidf_svd |
LinearSVC | Vocabulário muito grande |
word2vec |
LightGBM | Quando contexto semântico importa |
Estrutura do projeto
sentiment_pipeline/
├── preprocessamento.py # limpeza e normalização do texto
├── vetorizacao.py # transforma texto em vetores numéricos
├── classificador.py # treina e avalia os modelos
└── pipeline.py # coordena todas as etapas
app.py # interface web (streamlit)
pyproject.toml # configuração do pacote
README.md # documentação
Dataset
O pipeline funciona com qualquer arquivo CSV ou TSV com pelo menos duas colunas:
- Uma coluna com o texto
- Uma coluna com o rótulo (0 ou 1)
Datasets recomendados para teste:
- HatEval 2019 PT — detecção de discurso de ódio em tweets em português
- B2W-Reviews01 — avaliações de e-commerce em PT-BR
- IMDB Dataset — reviews de filmes em inglês
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pipeline_sentimento-0.2.0.tar.gz.
File metadata
- Download URL: pipeline_sentimento-0.2.0.tar.gz
- Upload date:
- Size: 11.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
40845e92756e080c57a23fb9965b5ebe8de24a0fbb478465f2cbe054bc01a91b
|
|
| MD5 |
786c558290c4b505647a314f25b1a57d
|
|
| BLAKE2b-256 |
fe4e94ccbc80b8fb4653e4ad0d41b2e056dee1004ef379996dfc2c98e2d1bc29
|
File details
Details for the file pipeline_sentimento-0.2.0-py3-none-any.whl.
File metadata
- Download URL: pipeline_sentimento-0.2.0-py3-none-any.whl
- Upload date:
- Size: 12.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b4638fae383157cb05d9e5a193711aa0fc9f804d80d77e6ac94bd4c14b1faaba
|
|
| MD5 |
dc426c96908894367f47438b26f2cedb
|
|
| BLAKE2b-256 |
983000a6e104dfaabd1ccc12036c9ce2b1976c3e0d877a35eb76391e9190503b
|