BERTimbau — avaliações positivas/negativas (pt-BR)
Fine-tuning de neuralmind/bert-base-portuguese-cased para dizer se uma avaliação de compra em português é positiva ou negativa.
Código, notebook de treino e baseline: github.com/Vwhatrj/classificador-avaliacoes
Como usar
from transformers import pipeline
clf = pipeline("text-classification", model="Vwhtarj/bertimbau-avaliacoes-olist")
clf("Chegou rápido e funciona perfeitamente!")
# [{'label': 'positivo', 'score': 0.99...}]
Dados
Avaliações com texto do dataset público Olist Brazilian E-Commerce (Kaggle).
- Nota 1–2 →
negativo; nota 4–5 →positivo; nota 3 descartada por ser ambígua. - Título e mensagem concatenados; textos duplicados removidos.
- Divisão estratificada: 26466 treino / 3308 validação / 3309 teste (seed 42).
- Proporção de positivos: 68.6%.
Resultados (conjunto de teste)
| Modelo | Acurácia | F1 macro |
|---|---|---|
| TF-IDF + Regressão Logística (baseline) | 0.9293 | 0.9206 |
| Este modelo | 0.9516 | 0.9442 |
F1 macro é a métrica principal porque as classes são desbalanceadas.
Treino
2 épocas, learning rate 2e-05, batch 32, max_length 128, fp16, GPU T4 (Google Colab gratuito). Melhor checkpoint escolhido pelo F1 macro na validação.
Limitações
- Treinado só com avaliações de e-commerce; em outros domínios (filmes, restaurantes, política) o desempenho deve cair.
- Binário: não existe classe "neutro". Textos mistos ("veio com defeito, mas trocaram rápido") recebem uma das duas.
- Ironia e sarcasmo continuam difíceis.
- Notas dos clientes são um rótulo ruidoso: há quem dê nota 5 reclamando, e vice-versa.