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 decay 0.01, seed 42
  • EarlyStoppingCallback (paciência 2) monitorando o F1-macro da validação; melhor época restaurada ao final
  • CrossEntropyLoss ponderada 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
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 carlospaes120/bertimbau-base-stance

Finetuned
(215)
this model