Update README.md
Browse files
README.md
CHANGED
|
@@ -3,58 +3,159 @@ library_name: transformers
|
|
| 3 |
license: apache-2.0
|
| 4 |
base_model: answerdotai/ModernBERT-base
|
| 5 |
tags:
|
|
|
|
|
|
|
|
|
|
| 6 |
- generated_from_trainer
|
| 7 |
metrics:
|
| 8 |
- f1
|
|
|
|
| 9 |
- accuracy
|
| 10 |
model-index:
|
| 11 |
- name: valueeval24-modern-bert-cos
|
| 12 |
-
results:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
language:
|
| 14 |
- en
|
| 15 |
pipeline_tag: text-classification
|
| 16 |
---
|
| 17 |
|
| 18 |
-
|
| 19 |
-
should probably proofread and complete it, then remove this comment. -->
|
| 20 |
|
| 21 |
-
|
| 22 |
|
| 23 |
-
|
| 24 |
-
It achieves the following results on the evaluation set:
|
| 25 |
-
- Loss: 0.1822
|
| 26 |
-
- F1: 0.4181
|
| 27 |
-
- Roc Auc: 0.6703
|
| 28 |
-
- Accuracy: 0.28
|
| 29 |
|
| 30 |
-
|
| 31 |
|
| 32 |
-
|
|
|
|
|
|
|
|
|
|
| 33 |
|
| 34 |
-
##
|
| 35 |
|
| 36 |
-
|
| 37 |
|
| 38 |
-
|
|
|
|
|
|
|
| 39 |
|
| 40 |
-
|
|
|
|
|
|
|
|
|
|
| 41 |
|
| 42 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 43 |
|
| 44 |
-
|
|
|
|
| 45 |
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
- eval_batch_size: 8
|
| 50 |
-
- seed: 42
|
| 51 |
-
- optimizer: Use adamw_torch with betas=(0.9,0.999) and epsilon=1e-08 and optimizer_args=No additional optimizer arguments
|
| 52 |
-
- lr_scheduler_type: cosine
|
| 53 |
-
- lr_scheduler_warmup_ratio: 0.01
|
| 54 |
-
- num_epochs: 20
|
| 55 |
-
- mixed_precision_training: Native AMP
|
| 56 |
|
| 57 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 58 |
|
| 59 |
| Training Loss | Epoch | Step | Validation Loss | F1 | Roc Auc | Accuracy |
|
| 60 |
|:-------------:|:-----:|:-----:|:---------------:|:------:|:-------:|:--------:|
|
|
@@ -62,17 +163,45 @@ The following hyperparameters were used during training:
|
|
| 62 |
| 0.0771 | 2.0 | 5766 | 0.0871 | 0.3997 | 0.6464 | 0.2675 |
|
| 63 |
| 0.0494 | 3.0 | 8649 | 0.0970 | 0.3983 | 0.6513 | 0.2757 |
|
| 64 |
| 0.025 | 4.0 | 11532 | 0.1187 | 0.4085 | 0.6699 | 0.2805 |
|
| 65 |
-
| 0.0132
|
| 66 |
| 0.0077 | 6.0 | 17298 | 0.1478 | 0.4066 | 0.6707 | 0.2668 |
|
| 67 |
| 0.0044 | 7.0 | 20181 | 0.1619 | 0.4123 | 0.6716 | 0.2734 |
|
| 68 |
| 0.0029 | 8.0 | 23064 | 0.1705 | 0.4124 | 0.6653 | 0.275 |
|
| 69 |
| 0.0022 | 9.0 | 25947 | 0.1766 | 0.4082 | 0.6626 | 0.2764 |
|
| 70 |
| 0.0014 | 10.0 | 28830 | 0.1822 | 0.4181 | 0.6703 | 0.28 |
|
| 71 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
|
| 73 |
-
|
| 74 |
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
- Datasets 3.6.0
|
| 78 |
-
- Tokenizers 0.21.2
|
|
|
|
| 3 |
license: apache-2.0
|
| 4 |
base_model: answerdotai/ModernBERT-base
|
| 5 |
tags:
|
| 6 |
+
- text-classification
|
| 7 |
+
- multi-label-classification
|
| 8 |
+
- human-values
|
| 9 |
- generated_from_trainer
|
| 10 |
metrics:
|
| 11 |
- f1
|
| 12 |
+
- roc_auc
|
| 13 |
- accuracy
|
| 14 |
model-index:
|
| 15 |
- name: valueeval24-modern-bert-cos
|
| 16 |
+
results:
|
| 17 |
+
- task:
|
| 18 |
+
type: text-classification
|
| 19 |
+
name: Multi-label Text Classification
|
| 20 |
+
dataset:
|
| 21 |
+
name: ValueEval'24
|
| 22 |
+
type: valueeval24
|
| 23 |
+
config: en
|
| 24 |
+
metrics:
|
| 25 |
+
- name: F1 (micro)
|
| 26 |
+
value: 0.4296
|
| 27 |
+
type: f1
|
| 28 |
+
- name: ROC AUC (micro)
|
| 29 |
+
value: 0.6834
|
| 30 |
+
type: roc_auc
|
| 31 |
+
- name: Accuracy
|
| 32 |
+
value: 0.2849
|
| 33 |
+
type: accuracy
|
| 34 |
language:
|
| 35 |
- en
|
| 36 |
pipeline_tag: text-classification
|
| 37 |
---
|
| 38 |
|
| 39 |
+
# Modelo de Classificação de Valores: ModernBERT em ValueEval'24
|
|
|
|
| 40 |
|
| 41 |
+
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](https://zenodo.org/doi/10.5281/zenodo.10396293).
|
| 42 |
|
| 43 |
+
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
|
| 45 |
+
O melhor checkpoint, com base na métrica F1 no conjunto de validação, alcançou os seguintes resultados:
|
| 46 |
|
| 47 |
+
* **Loss**: 0.1315
|
| 48 |
+
* **F1 (micro)**: 0.4296
|
| 49 |
+
* **ROC AUC (micro)**: 0.6834
|
| 50 |
+
* **Accuracy**: 0.2849
|
| 51 |
|
| 52 |
+
## Como Usar
|
| 53 |
|
| 54 |
+
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.
|
| 55 |
|
| 56 |
+
```python
|
| 57 |
+
from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification
|
| 58 |
+
import torch
|
| 59 |
|
| 60 |
+
# Carregue o modelo e o tokenizer
|
| 61 |
+
model_name = "DayCardoso/valueeval24-modern-bert-cos"
|
| 62 |
+
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
| 63 |
+
model = AutoModelForSequenceClassification.from_pretrained(model_name)
|
| 64 |
|
| 65 |
+
# Crie o pipeline de classificação
|
| 66 |
+
classifier = pipeline(
|
| 67 |
+
"text-classification",
|
| 68 |
+
model=model,
|
| 69 |
+
tokenizer=tokenizer,
|
| 70 |
+
return_all_scores=True # Importante para multirr rótulo
|
| 71 |
+
)
|
| 72 |
|
| 73 |
+
# Exemplo de uso
|
| 74 |
+
text = "She always tries to help people, even strangers. Her door is always open to those in need."
|
| 75 |
|
| 76 |
+
# A saída do pipeline precisa ser processada com uma função sigmoid
|
| 77 |
+
# para converter os logits em probabilidades independentes para cada classe.
|
| 78 |
+
outputs = classifier(text)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 79 |
|
| 80 |
+
# Mapeamento de rótulos (verifique o arquivo de configuração do modelo para a lista completa e ordem correta)
|
| 81 |
+
labels = model.config.id2label
|
| 82 |
+
|
| 83 |
+
# Defina um limiar para considerar um rótulo como positivo
|
| 84 |
+
threshold = 0.5
|
| 85 |
+
|
| 86 |
+
print(f"Analisando texto: '{text}'\n")
|
| 87 |
+
print("Valores identificados (probabilidade > 50%):")
|
| 88 |
+
for output in outputs[0]:
|
| 89 |
+
label_name = output['label']
|
| 90 |
+
score = torch.sigmoid(torch.tensor(output['score'])).item() # Aplica sigmoid
|
| 91 |
+
if score > threshold:
|
| 92 |
+
print(f"- {label_name}: {score:.4f}")
|
| 93 |
+
|
| 94 |
+
````
|
| 95 |
+
|
| 96 |
+
## Detalhes do Treinamento
|
| 97 |
+
|
| 98 |
+
### A Tarefa: ValueEval'24
|
| 99 |
+
|
| 100 |
+
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:
|
| 101 |
+
|
| 102 |
+
| Nome do Valor | Objetivo |
|
| 103 |
+
|:-----------------------------|:--------------------------------------------------------------------------------------|
|
| 104 |
+
| Self-direction: thought | Liberdade para cultivar as próprias ideias e habilidades. |
|
| 105 |
+
| Self-direction: action | Liberdade para determinar as próprias ações. |
|
| 106 |
+
| Stimulation | Excitação, novidade e mudança. |
|
| 107 |
+
| Hedonism | Prazer e gratificação sensual. |
|
| 108 |
+
| Achievement | Sucesso de acordo com os padrões sociais. |
|
| 109 |
+
| Power: dominance | Poder através do exercício de controle sobre as pessoas. |
|
| 110 |
+
| Power: resources | Poder através do controle de recursos materiais e sociais. |
|
| 111 |
+
| Face | Segurança e poder através da manutenção da imagem pública e evitando humilhação. |
|
| 112 |
+
| Security: personal | Segurança no ambiente imediato. |
|
| 113 |
+
| Security: societal | Segurança e estabilidade na sociedade em geral. |
|
| 114 |
+
| Tradition | Manter e preservar tradições culturais, familiares ou religiosas. |
|
| 115 |
+
| Conformity: rules | Conformidade com regras, leis e obrigações formais. |
|
| 116 |
+
| Conformity: interpersonal | Evitar chatear ou prejudicar outras pessoas. |
|
| 117 |
+
| Humility | Reconhecer a própria insignificância no esquema geral das coisas. |
|
| 118 |
+
| Benevolence: caring | Devoção ao bem-estar dos membros do grupo de pertença (in-group). |
|
| 119 |
+
| Benevolence: dependability | Ser um membro confiável e fidedigno do grupo de pertença (in-group). |
|
| 120 |
+
| Universalism: concern | Compromisso com a igualdade, justiça e proteção para todas as pessoas. |
|
| 121 |
+
| Universalism: nature | Preservação do ambiente natural. |
|
| 122 |
+
| Universalism: tolerance | Aceitação e compreensão daqueles que são diferentes de si mesmo. |
|
| 123 |
+
|
| 124 |
+
### Dados de Fine-Tuning
|
| 125 |
+
|
| 126 |
+
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.
|
| 127 |
+
|
| 128 |
+
### Pré-processamento
|
| 129 |
+
|
| 130 |
+
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.
|
| 131 |
+
|
| 132 |
+
### Procedimento de Fine-Tuning
|
| 133 |
+
|
| 134 |
+
O modelo `ModernBERT-base` pré-treinado foi ajustado usando a API `Trainer` do `transformers`. Os hiperparâmetros e a configuração foram os seguintes:
|
| 135 |
+
|
| 136 |
+
* **Modelo**: `AutoModelForSequenceClassification`
|
| 137 |
+
* **Problem Type**: `multi_label_classification`
|
| 138 |
+
* **Otimizador**: AdamW com `learning_rate` de `3e-5`
|
| 139 |
+
* **LR Scheduler**: `cosine` com `warmup_ratio` de 0.01
|
| 140 |
+
* **Épocas**: 20 (com parada antecipada)
|
| 141 |
+
* **Batch Size**: 8 por dispositivo
|
| 142 |
+
* **Precisão**: Mista (FP16)
|
| 143 |
+
* **Callback**: `EarlyStoppingCallback` monitorando a métrica `f1` com uma paciência de 5 épocas para prevenir overfitting.
|
| 144 |
+
|
| 145 |
+
## Avaliação
|
| 146 |
+
|
| 147 |
+
### Métricas Finais
|
| 148 |
+
|
| 149 |
+
O desempenho final é reportado usando o checkpoint que obteve o maior F1 Score no conjunto de validação, que ocorreu na **Época 5**.
|
| 150 |
+
|
| 151 |
+
* **Métrica Principal (F1 micro)**: **0.4296**
|
| 152 |
+
* **ROC AUC (micro)**: 0.6834
|
| 153 |
+
* **Accuracy**: 0.2849
|
| 154 |
+
* **Validation Loss**: 0.1315
|
| 155 |
+
|
| 156 |
+
### Trajetória de Desempenho
|
| 157 |
+
|
| 158 |
+
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.
|
| 159 |
|
| 160 |
| Training Loss | Epoch | Step | Validation Loss | F1 | Roc Auc | Accuracy |
|
| 161 |
|:-------------:|:-----:|:-----:|:---------------:|:------:|:-------:|:--------:|
|
|
|
|
| 163 |
| 0.0771 | 2.0 | 5766 | 0.0871 | 0.3997 | 0.6464 | 0.2675 |
|
| 164 |
| 0.0494 | 3.0 | 8649 | 0.0970 | 0.3983 | 0.6513 | 0.2757 |
|
| 165 |
| 0.025 | 4.0 | 11532 | 0.1187 | 0.4085 | 0.6699 | 0.2805 |
|
| 166 |
+
| **0.0132** | **5.0** | **14415** | **0.1315** | **0.4296** | **0.6834** | **0.2849** |
|
| 167 |
| 0.0077 | 6.0 | 17298 | 0.1478 | 0.4066 | 0.6707 | 0.2668 |
|
| 168 |
| 0.0044 | 7.0 | 20181 | 0.1619 | 0.4123 | 0.6716 | 0.2734 |
|
| 169 |
| 0.0029 | 8.0 | 23064 | 0.1705 | 0.4124 | 0.6653 | 0.275 |
|
| 170 |
| 0.0022 | 9.0 | 25947 | 0.1766 | 0.4082 | 0.6626 | 0.2764 |
|
| 171 |
| 0.0014 | 10.0 | 28830 | 0.1822 | 0.4181 | 0.6703 | 0.28 |
|
| 172 |
|
| 173 |
+
## Usos Pretendidos & Limitações
|
| 174 |
+
|
| 175 |
+
**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.
|
| 176 |
+
|
| 177 |
+
**Limitações**:
|
| 178 |
+
|
| 179 |
+
* **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.
|
| 180 |
+
* **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.
|
| 181 |
+
* **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.
|
| 182 |
+
* **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.
|
| 183 |
+
|
| 184 |
+
## Citação
|
| 185 |
+
|
| 186 |
+
Se você usar este modelo ou o dataset em sua pesquisa, por favor, cite o trabalho original do ValueEval'24:
|
| 187 |
+
|
| 188 |
+
```bibtex
|
| 189 |
+
@inproceedings{kiesel-etal-2024-semeval,
|
| 190 |
+
title = "Sem{E}val-2024 Task 3: The {V}alue{E}val 2.0 Shared Task on Identifying Human Values Behind Arguments",
|
| 191 |
+
author = "Kiesel, Johannes and ....",
|
| 192 |
+
booktitle = "Proceedings of the 18th International Workshop on Semantic Evaluation (SemEval-2024)",
|
| 193 |
+
year = "2024"
|
| 194 |
+
}
|
| 195 |
+
```
|
| 196 |
+
|
| 197 |
+
### Versões das Frameworks
|
| 198 |
+
|
| 199 |
+
- Transformers 4.53.0
|
| 200 |
+
- Pytorch 2.5.1+cu121
|
| 201 |
+
- Datasets 3.6.0
|
| 202 |
+
- Tokenizers 0.21.2
|
| 203 |
|
| 204 |
+
<!-- end list -->
|
| 205 |
|
| 206 |
+
```
|
| 207 |
+
```
|
|
|
|
|
|