Views
No views yet
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.text-classification da biblioteca transformers. O código abaixo demonstra como obter as predições para uma nova sentença.1from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification
2import torch
3
4# Carregue o modelo e o tokenizer
5model_name = "DayCardoso/valueeval24-modern-bert-cos"
6tokenizer = AutoTokenizer.from_pretrained(model_name)
7model = AutoModelForSequenceClassification.from_pretrained(model_name)
8
9# Crie o pipeline de classificação
10classifier = pipeline(
11 "text-classification",
12 model=model,
13 tokenizer=tokenizer,
14 return_all_scores=True # Importante para multirr rótulo
15)
16
17# Exemplo de uso
18text = "She always tries to help people, even strangers. Her door is always open to those in need."
19
20# A saída do pipeline precisa ser processada com uma função sigmoid
21# para converter os logits em probabilidades independentes para cada classe.
22outputs = classifier(text)
23
24# Mapeamento de rótulos (verifique o arquivo de configuração do modelo para a lista completa e ordem correta)
25labels = model.config.id2label
26
27# Defina um limiar para considerar um rótulo como positivo
28threshold = 0.5
29
30print(f"Analisando texto: '{text}'\n")
31print("Valores identificados (probabilidade > 50%):")
32for output in outputs[0]:
33 label_name = output['label']
34 score = torch.sigmoid(torch.tensor(output['score'])).item() # Aplica sigmoid
35 if score > threshold:
36 print(f"- {label_name}: {score:.4f}")
37| 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. |
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.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.ModernBERT-base pré-treinado foi ajustado usando a API Trainer do transformers. Os hiperparâmetros e a configuração foram os seguintes:AutoModelForSequenceClassificationmulti_label_classificationlearning_rate de 3e-5cosine com warmup_ratio de 0.01EarlyStoppingCallback monitorando a métrica f1 com uma paciência de 5 épocas para prevenir overfitting.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 |
base, pode ter um desempenho inferior a modelos maiores (large) em tarefas com alta complexidade semântica.1@inproceedings{kiesel-etal-2024-semeval,
2 title = "Sem{E}val-2024 Task 3: The {V}alue{E}val 2.0 Shared Task on Identifying Human Values Behind Arguments",
3 author = "Kiesel, Johannes and ....",
4 booktitle = "Proceedings of the 18th International Workshop on Semantic Evaluation (SemEval-2024)",
5 year = "2024"
6}