PromoSense — Modelo de Análise de Sentimento (v3)

Modelo de classificação de sentimento em avaliações de e-commerce brasileiro, com foco em períodos promocionais (Double Dates, Black Friday).

Desenvolvido como parte do Projeto Integrador do curso de Tecnólogo em Análise e Desenvolvimento de Sistemas — Senac Recife.


Uso

from transformers import pipeline

clf = pipeline(
    "text-classification",
    model="Amand4priscil4/promosense-modelo",
    truncation=True,
    max_length=128
)

# Mapeamento de labels
LABEL_MAP = {
    "LABEL_0": "negativo",
    "LABEL_1": "neutro",
    "LABEL_2": "positivo"
}

texto = "Produto chegou antes do prazo, qualidade ótima, super recomendo!"
resultado = clf(texto)[0]
sentimento = LABEL_MAP[resultado["label"]]
print(f"{sentimento} ({resultado['score']:.2%})")
# positivo (98.45%)

Modelo Base

  • Arquitetura: BERT
  • Base: neuralmind/bert-base-portuguese-cased (BERTimbau)
  • Tarefa: Classificação de sequência (3 classes)

Labels

Label Sentimento
LABEL_0 negativo
LABEL_1 neutro
LABEL_2 positivo

Histórico dos Modelos

Modelo v1 — rotulagem por nota

  • Dataset: olist_processado.csv (35.246 avaliações)
  • Problema crítico: nunca previa neutro — F1 neutro = 0.00
  • Accuracy no ground truth v1: 83.6% (92/110)

Modelo v2 — rotulagem híbrida (léxico 150 expressões)

  • Dataset: olist_rotulado_hibrido.csv — neutros: 3.212
  • Accuracy treino: 87.03% | F1 macro: 79.50%
  • Accuracy ground truth v1: 90.00% (99/110)
  • Limitação: F1 neutro = 0.03

Modelo v3 (atual) — rotulagem híbrida (léxico 412 expressões)

  • Dataset: olist_rotulado_hibrido_v3.csv — neutros: 5.318
  • Léxico expandido de 150 para 412 expressões (módulo promosense-lexico)
  • Treinamento: HuggingFace Trainer, 3 épocas, batch 16, lr padrão, GPU T4, fp16

Dataset de Treinamento (v3)

  • Fonte: Olist (avaliações de e-commerce brasileiro)
  • Total de amostras: 35.246 avaliações
  • Rotulagem: Híbrida — nota + léxico de 412 expressões + conectivos de contraste
  • Distribuição após rotulagem híbrida v3:
Sentimento Quantidade
Positivo 19.440
Negativo 10.488
Neutro 5.318
Total 35.246

Hiperparâmetros de Treinamento

Parâmetro Valor
Épocas 3
Batch size 16
fp16 True
GPU T4 (Google Colab)
Framework HuggingFace Trainer

Avaliação

Treino (Olist — conjunto de teste 20%)

Época Train Loss Val Loss Accuracy F1
1 0.4263 0.3969 85.19% 83.13%
2 0.3026 0.3992 85.82% 85.56%
3 0.2429 0.4606 85.99% 85.65%

Relatório por Classe (conjunto de teste — 7.050 amostras)

Classe Precision Recall F1 Support
negativo 0.76 0.94 0.84 2.098
neutro 0.76 0.29 0.42 1.064
positivo 0.92 0.95 0.94 3.888
macro avg 0.81 0.73 0.73 7.050
weighted avg 0.85 0.85 0.83 7.050

Matriz de Confusão (conjunto de teste)

Pred. negativo Pred. neutro Pred. positivo
Real negativo 1.982 49 67
Real neutro 485 312 267
Real positivo 127 49 3.712

Ground Truth Manual (Shopee)

Ground Truth Amostras Accuracy
GT v1 — JBL Boombox 4, E6S TWS 110 90.00% (99/110)
GT v2 — PS4, E6S, JBL, Cozedor, Fone 165 59.39% (98/165)
Combinado 275 71.64% (197/275)

Comparativo entre Versões

Métrica v1 v2 v3
Expressões no léxico 150 412
Neutros no treino 3.212 3.212 5.318
Accuracy treino 87.03% 85.99%
F1 macro treino 79.50% 85.65%
F1 neutro 0.00 0.03 0.42
Accuracy GT v1 83.6% 90.0%

ABSA — Análise de Sentimento por Aspecto

Além da classificação geral, o PromoSense implementa ABSA híbrida: léxico de 412 expressões para detecção de sentimento + BERTimbau como fallback + léxico de palavras-chave para detecção de aspecto.

Métricas ABSA (418 avaliações do ground truth)

Métrica Valor
Accuracy ABSA completa (aspecto + sentimento) 53.8% (225/418)
Accuracy sentimento geral 69.1% (289/418)
Accuracy detecção de aspecto 74.2% (310/418)

Por aspecto

Aspecto Accuracy sentimento Amostras
Preço 84.1% 44
Entrega 64.5% 76
Qualidade 68.1% 298

Limitações Conhecidas

  • Neutro ainda subclassificado: F1 = 0.42 no treino — melhora significativa em relação ao v2 (0.03), mas ainda há espaço para evolução.
  • Avaliações mistas: Textos que combinam elogios e críticas tendem a ser classificados como positivo ou negativo, raramente neutro.
  • Entrega com precision baixa (0.44): Palavras como "chegou" e "embalado" aparecem em textos de outros aspectos na ABSA.

Trabalho Futuro

  • Melhorar F1 de neutro (meta: > 0.50)
  • Expandir léxico com expressões de gírias e neologismos
  • Melhorar detecção de aspecto "entrega" no léxico ABSA
  • Integrar resultados ABSA ao MongoDB + dashboard

Léxico

O léxico utilizado neste modelo está disponível como módulo Python independente:

kellvyno/promosense-lexico

pip install git+https://github.com/kellvyno/promosense-lexico.git

Equipe

Membro Papel
Amanda QA, anotação, modelagem, testes
Lucas Backend (FastAPI) e Frontend (dashboard)
Kellvyn Léxico (promosense-lexico)

Repositório

amand4priscil4/PROMOSENSE


Citação

@misc{promosense2026,
  title={PromoSense: Análise de Sentimento em Avaliações de E-commerce Brasileiro em Períodos Promocionais},
  author={Amanda and Lucas and Kellvyn},
  year={2026},
  institution={Senac Recife — Tecnólogo em Análise e Desenvolvimento de Sistemas}
}
Downloads last month
4
Safetensors
Model size
0.1B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Amand4priscil4/promosense-modelo

Finetuned
(217)
this model