Modelo de Classificação de Valores: ModernBERT em ValueEval'24
Este repositório contém o modelo answerdotai/ModernBERT-base após passar por um processo de ajuste fino (fine-tuning) para a tarefa de classificação de texto multirr rótulo (multi-label) do shared task ValueEval'24.
O modelo foi treinado para identificar 19 valores humanos fundamentais (baseados na Teoria de Valores Humanos Básicos de Schwartz) em sentenças em inglês. Como é uma tarefa multirr rótulo, uma única sentença pode ser associada a múltiplos valores simultaneamente.
O melhor checkpoint, com base na métrica F1 no conjunto de validação, alcançou os seguintes resultados:
- Loss: 0.1315
- F1 (micro): 0.4296
- ROC AUC (micro): 0.6834
- Accuracy: 0.2849
Como Usar
Para usar este modelo para inferência, você pode utilizar o pipeline text-classification da biblioteca transformers. O código abaixo demonstra como obter as predições para uma nova sentença.
from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification
import torch
# Carregue o modelo e o tokenizer
model_name = "DayCardoso/valueeval24-modern-bert-cos"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
# Crie o pipeline de classificação
classifier = pipeline(
"text-classification",
model=model,
tokenizer=tokenizer,
return_all_scores=True # Importante para multirr rótulo
)
# Exemplo de uso
text = "She always tries to help people, even strangers. Her door is always open to those in need."
# A saída do pipeline precisa ser processada com uma função sigmoid
# para converter os logits em probabilidades independentes para cada classe.
outputs = classifier(text)
# Mapeamento de rótulos (verifique o arquivo de configuração do modelo para a lista completa e ordem correta)
labels = model.config.id2label
# Defina um limiar para considerar um rótulo como positivo
threshold = 0.5
print(f"Analisando texto: '{text}'\n")
print("Valores identificados (probabilidade > 50%):")
for output in outputs[0]:
label_name = output['label']
score = torch.sigmoid(torch.tensor(output['score'])).item() # Aplica sigmoid
if score > threshold:
print(f"- {label_name}: {score:.4f}")
Detalhes do Treinamento
A Tarefa: ValueEval'24
A tarefa ValueEval'24 foca na identificação de valores humanos em textos. A tarefa envolve a classificação de um texto em uma ou mais das 19 categorias de valores humanos definidas pelos organizadores. Cada valor é definido por um objetivo específico e uma motivação, conforme detalhado abaixo:
| Nome do Valor | Objetivo |
|---|---|
| Self-direction: thought | Liberdade para cultivar as próprias ideias e habilidades. |
| Self-direction: action | Liberdade para determinar as próprias ações. |
| Stimulation | Excitação, novidade e mudança. |
| Hedonism | Prazer e gratificação sensual. |
| Achievement | Sucesso de acordo com os padrões sociais. |
| Power: dominance | Poder através do exercício de controle sobre as pessoas. |
| Power: resources | Poder através do controle de recursos materiais e sociais. |
| Face | Segurança e poder através da manutenção da imagem pública e evitando humilhação. |
| Security: personal | Segurança no ambiente imediato. |
| Security: societal | Segurança e estabilidade na sociedade em geral. |
| Tradition | Manter e preservar tradições culturais, familiares ou religiosas. |
| Conformity: rules | Conformidade com regras, leis e obrigações formais. |
| Conformity: interpersonal | Evitar chatear ou prejudicar outras pessoas. |
| Humility | Reconhecer a própria insignificância no esquema geral das coisas. |
| Benevolence: caring | Devoção ao bem-estar dos membros do grupo de pertença (in-group). |
| Benevolence: dependability | Ser um membro confiável e fidedigno do grupo de pertença (in-group). |
| Universalism: concern | Compromisso com a igualdade, justiça e proteção para todas as pessoas. |
| Universalism: nature | Preservação do ambiente natural. |
| Universalism: tolerance | Aceitação e compreensão daqueles que são diferentes de si mesmo. |
Dados de Fine-Tuning
O ajuste fino foi realizado utilizando os arquivos augmented_sentences_labeled.tsv e labels_labeled.tsv do dataset oficial. A natureza "aumentada" dos dados sugere que técnicas de data augmentation podem ter sido aplicadas para melhorar a robustez do modelo.
Pré-processamento
O tokenizer de answerdotai/ModernBERT-base foi adaptado para a tarefa. Tokens especiais (um para cada rótulo de valor, ex: <Benevolence: caring>) foram adicionados ao vocabulário. Esta técnica pode ajudar o modelo a criar representações distintas para cada classe, melhorando o foco durante a classificação. Os textos foram truncados e preenchidos (padded) para um comprimento máximo de 512 tokens.
Procedimento de Fine-Tuning
O modelo ModernBERT-base pré-treinado foi ajustado usando a API Trainer do transformers. Os hiperparâmetros e a configuração foram os seguintes:
- Modelo:
AutoModelForSequenceClassification - Problem Type:
multi_label_classification - Otimizador: AdamW com
learning_ratede3e-5 - LR Scheduler:
cosinecomwarmup_ratiode 0.01 - Épocas: 20 (com parada antecipada)
- Batch Size: 8 por dispositivo
- Precisão: Mista (FP16)
- Callback:
EarlyStoppingCallbackmonitorando a métricaf1com uma paciência de 5 épocas para prevenir overfitting.
Avaliação
Métricas Finais
O desempenho final é reportado usando o checkpoint que obteve o maior F1 Score no conjunto de validação, que ocorreu na Época 5.
- Métrica Principal (F1 micro): 0.4296
- ROC AUC (micro): 0.6834
- Accuracy: 0.2849
- Validation Loss: 0.1315
Trajetória de Desempenho
A tabela abaixo mostra a evolução das métricas no conjunto de validação a cada época. O treinamento foi interrompido após a época 10, pois a métrica f1 não melhorou por 5 épocas consecutivas após seu pico na época 5. Graças ao uso de load_best_model_at_end=True, o modelo salvo e reportado aqui é o da Época 5.
| Training Loss | Epoch | Step | Validation Loss | F1 | Roc Auc | Accuracy |
|---|---|---|---|---|---|---|
| 0.1158 | 1.0 | 2883 | 0.0913 | 0.3100 | 0.6016 | 0.1966 |
| 0.0771 | 2.0 | 5766 | 0.0871 | 0.3997 | 0.6464 | 0.2675 |
| 0.0494 | 3.0 | 8649 | 0.0970 | 0.3983 | 0.6513 | 0.2757 |
| 0.025 | 4.0 | 11532 | 0.1187 | 0.4085 | 0.6699 | 0.2805 |
| 0.0132 | 5.0 | 14415 | 0.1315 | 0.4296 | 0.6834 | 0.2849 |
| 0.0077 | 6.0 | 17298 | 0.1478 | 0.4066 | 0.6707 | 0.2668 |
| 0.0044 | 7.0 | 20181 | 0.1619 | 0.4123 | 0.6716 | 0.2734 |
| 0.0029 | 8.0 | 23064 | 0.1705 | 0.4124 | 0.6653 | 0.275 |
| 0.0022 | 9.0 | 25947 | 0.1766 | 0.4082 | 0.6626 | 0.2764 |
| 0.0014 | 10.0 | 28830 | 0.1822 | 0.4181 | 0.6703 | 0.28 |
Usos Pretendidos & Limitações
Uso Pretendido: Este modelo é destinado à pesquisa acadêmica e a aplicações que buscam analisar o conteúdo de textos (como postagens de mídia social ou artigos de notícias) para identificar os valores humanos que estão sendo expressos.
Limitações:
- Especificidade de Domínio: O modelo foi treinado em dados do ValueEval'24 e pode não generalizar bem para domínios textuais muito diferentes.
- Vieses Herdados: O modelo pode refletir vieses linguísticos e sociais presentes tanto no corpus de pré-treinamento do ModernBERT quanto no dataset de fine-tuning.
- Interpretação: O modelo identifica a expressão de um valor no texto, o que não é necessariamente um reflexo dos valores pessoais do autor.
- Tamanho do Modelo: Sendo um modelo de tamanho
base, pode ter um desempenho inferior a modelos maiores (large) em tarefas com alta complexidade semântica.
Citação
Se você usar este modelo ou o dataset em sua pesquisa, por favor, cite o trabalho original do ValueEval'24:
@inproceedings{kiesel-etal-2024-semeval,
title = "Sem{E}val-2024 Task 3: The {V}alue{E}val 2.0 Shared Task on Identifying Human Values Behind Arguments",
author = "Kiesel, Johannes and ....",
booktitle = "Proceedings of the 18th International Workshop on Semantic Evaluation (SemEval-2024)",
year = "2024"
}
Versões das Frameworks
- Transformers 4.53.0
- Pytorch 2.5.1+cu121
- Datasets 3.6.0
- Tokenizers 0.21.2
- Downloads last month
- -
Model tree for DayCardoso/valueeval24-modern-bert-cos
Base model
answerdotai/ModernBERT-baseEvaluation results
- F1 (micro) on ValueEval'24self-reported0.430
- ROC AUC (micro) on ValueEval'24self-reported0.683
- Accuracy on ValueEval'24self-reported0.285