carlospaes120's picture
Update README.md
a483947 verified
|
Raw
History Blame Contribute Delete
3.65 kB
metadata
language: pt
license: mit
base_model: neuralmind/bert-base-portuguese-cased
pipeline_tag: text-classification
tags:
  - stance-detection
  - twitter
  - portuguese
  - bertimbau
metrics:
  - accuracy
  - f1

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.