BERTimbau Base — Stance em Episódios de Cancelamento (PT-BR)
Modelo de classificação de stance (postura discursiva) em tweets em português sobre episódios de cancelamento: dado um tweet, prediz se o autor se posiciona como acusador, defensor ou neutro em relação ao alvo do cancelamento.
Fine-tuning de neuralmind/bert-base-portuguese-cased (BERTimbau Base), desenvolvido como parte do MVP da Sprint de Machine Learning & Analytics da Pós-Graduação em Ciência de Dados e Analytics (PUC-Rio) e de uma pesquisa mais ampla sobre dinâmica mimética em redes sociais.
Uso
from transformers import pipeline
clf = pipeline("text-classification", model="carlospaes120/bertimbau-base-stance")
clf("Ele errou feio, tem que responder pelo que disse.")
# [{'label': 'acusador', 'score': ...}]
Dados de treinamento
1.569 tweets em português rotulados manualmente, de dois episódios de cancelamento brasileiros — caso Monark (fev/2022, 600 tweets) e caso Wagner Schwartz (set/2017, 969 tweets) — divididos em treino (1.255), validação (157) e teste (157), com estratificação por classe. Distribuição: acusador 61%, neutro 23%, defensor 16%.
Dataset e notebook completos: github.com/carlospaes120/scapegoat (pasta mvp/).
Receita de treinamento
- Até 8 épocas, learning rate
2e-5, warmup de 10%, batch 8, weight decay0.01, seed 42 EarlyStoppingCallback(paciência 2) monitorando o F1-macro da validação; melhor época restaurada ao finalCrossEntropyLossponderada com class weights balanced (calculados apenas no treino), para mitigar o desbalanceamento- Sem data augmentation
Reprodução
O notebook completo do MVP está em github.com/carlospaes120/scapegoat (pasta mvp/). Ele roda de ponta a ponta no Google Colab, baixando os dados automaticamente do repositório.
O comportamento padrão do notebook (flag TRAIN_BERT_FROM_SCRATCH = False) carrega este checkpoint em vez de re-treinar: usa a pasta local se existir e, caso contrário, baixa estes pesos do Hugging Face Hub. Assim a avaliação no conjunto de teste roda em segundos, sem GPU. Para reproduzir o treino do zero a partir de neuralmind/bert-base-portuguese-cased, basta definir a flag como True.
Métricas (teste congelado, n=157)
| Classe | Precisão | Revocação | F1 | Suporte |
|---|---|---|---|---|
| acusador | 0,846 | 0,802 | 0,824 | 96 |
| defensor | 0,452 | 0,560 | 0,500 | 25 |
| neutro | 0,686 | 0,667 | 0,676 | 36 |
| Acurácia | 0,732 | 157 | ||
| F1-macro | 0,667 | 157 |
Limitações
- A classe
defensoré minoritária (16%) e a mais difícil; com apenas 25 exemplos no teste, seu F1 é volátil. - O stance é tratado como propriedade apenas do texto — ironia e sarcasmo que dependem de contexto externo (timing, autor, evento) são fontes conhecidas de erro.
- Treinado em dois episódios específicos; a generalização para outros casos de cancelamento não foi avaliada (sem validação leave-one-case-out).
- Anotação por um único anotador, sem medida de concordância inter-anotador.
Uso pretendido
Modelo de pesquisa, para fins acadêmicos. Não recomendado para moderação de conteúdo ou qualquer decisão automatizada sobre pessoas.
- Downloads last month
- 59
Model tree for carlospaes120/bertimbau-base-stance
Base model
neuralmind/bert-base-portuguese-cased