Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pipeline_sentimento-0.2.0.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pipeline_sentimento-0.2.0-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

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

Hashes for pipeline_sentimento-0.2.0.tar.gz
Algorithm Hash digest
SHA256 40845e92756e080c57a23fb9965b5ebe8de24a0fbb478465f2cbe054bc01a91b
MD5 786c558290c4b505647a314f25b1a57d
BLAKE2b-256 fe4e94ccbc80b8fb4653e4ad0d41b2e056dee1004ef379996dfc2c98e2d1bc29

See more details on using hashes here.

File details

Details for the file pipeline_sentimento-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pipeline_sentimento-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b4638fae383157cb05d9e5a193711aa0fc9f804d80d77e6ac94bd4c14b1faaba
MD5 dc426c96908894367f47438b26f2cedb
BLAKE2b-256 983000a6e104dfaabd1ccc12036c9ce2b1976c3e0d877a35eb76391e9190503b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page