vic35get's picture
Add detailed Model Card with metrics
8339f70 verified
---
license: mit
language:
- pt
library_name: transformers
tags:
- text-classification
- binary-classification
- modernbert
- pytorch
- transformers
datasets:
- tcepi/prog_integridade_dataset
metrics:
- accuracy
- f1
- precision
- recall
- roc_auc
base_model: answerdotai/ModernBERT-base
pipeline_tag: text-classification
model-index:
- name: prog_integridade_model
results:
- task:
type: text-classification
name: Binary Text Classification
dataset:
name: tcepi/prog_integridade_dataset
type: tcepi/prog_integridade_dataset
split: test
metrics:
- name: Accuracy
type: accuracy
value: 0.9944
- name: F1
type: f1
value: 0.9944
- name: Precision
type: precision
value: 0.9944
- name: Recall
type: recall
value: 0.9944
- name: ROC-AUC
type: roc_auc
value: 0.9984
---
# Programa de Integridade Classification Model
Este modelo é um fine-tune do [ModernBERT-base](https://huggingface.co/answerdotai/ModernBERT-base) para classificação binária, treinado no dataset [tcepi/prog_integridade_dataset](https://huggingface.co/datasets/tcepi/prog_integridade_dataset).
## Descrição do Modelo
- **Modelo Base:** answerdotai/ModernBERT-base
- **Tarefa:** Classificação Binária de Texto
- **Linguagem:** Português (pt)
- **Framework:** PyTorch + Transformers
## Métricas de Performance
### Conjunto de Teste
| Métrica | Valor |
|---------|-------|
| **Accuracy** | 0.9944 |
| **F1-Score** | 0.9944 |
| **Precision** | 0.9944 |
| **Recall** | 0.9944 |
| **ROC-AUC** | 0.9984 |
| **Specificity** | 0.9905 |
### Matriz de Confusão
| | Predito Negativo | Predito Positivo |
|--|-----------------|-----------------|
| **Real Negativo** | 522 (TN) | 5 (FP) |
| **Real Positivo** | 1 (FN) | 541 (TP) |
### Relatório de Classificação
```
precision recall f1-score support
Negativo 0.9981 0.9905 0.9943 527
Positivo 0.9908 0.9982 0.9945 542
accuracy 0.9944 1069
macro avg 0.9945 0.9943 0.9944 1069
weighted avg 0.9944 0.9944 0.9944 1069
```
## Uso
```python
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
# Carregar modelo e tokenizer
tokenizer = AutoTokenizer.from_pretrained("tcepi/prog_integridade_model")
model = AutoModelForSequenceClassification.from_pretrained("tcepi/prog_integridade_model")
# Classificar texto
text = "Seu texto aqui"
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=8192)
with torch.no_grad():
outputs = model(**inputs)
predictions = torch.softmax(outputs.logits, dim=-1)
predicted_class = torch.argmax(predictions, dim=-1).item()
print(f"Classe predita: {model.config.id2label[predicted_class]}")
print(f"Probabilidades: {predictions.tolist()}")
```
## Treinamento
### Hiperparâmetros
- **Épocas:** 10
- **Learning Rate:** 2e-5
- **Batch Size:** 8
- **Weight Decay:** 0.01
- **Warmup Ratio:** 0.1
- **Mixed Precision:** FP16
- **Optimizer:** AdamW
### Informações de Treinamento
- **Tempo Total:** 2731.90 segundos
- **Samples/segundo:** 14.07
- **Loss Final:** 0.0701
### Tabela de Métricas por Época
| epoch | eval_loss | eval_accuracy | eval_f1 | eval_roc_auc | eval_specificity |
|--------:|------------:|----------------:|----------:|---------------:|-------------------:|
| 1 | 0.188758 | 0.946262 | 0.946277 | 0.997855 | 0.985294 |
| 2 | 0.0218751 | 0.990654 | 0.990654 | 0.999912 | 0.990196 |
| 3 | 0.0222455 | 0.992991 | 0.992993 | 0.999869 | 1 |
| 4 | 0.0971301 | 0.983645 | 0.983653 | 0.999934 | 1 |
| 5 | 0.0337453 | 0.990654 | 0.990649 | 1 | 0.980392 |
| 6 | 0.0275761 | 0.997664 | 0.997664 | 0.999956 | 1 |
| 7 | 0.0167756 | 0.997664 | 0.997664 | 1 | 1 |
| 8 | 0.0292979 | 0.997664 | 0.997664 | 0.999912 | 1 |
| 9 | 0.0309485 | 0.997664 | 0.997664 | 0.999912 | 1 |
| 10 | 0.0248101 | 0.997664 | 0.997664 | 0.999956 | 1 |
### Curvas de Treinamento
#### Loss curve
![Loss Curve](./assets/loss_curve.png)
#### Métricas por Época
![Métricas por Época](./assets/metrics_curve.png)
## Dataset
O modelo foi treinado usando o dataset [tcepi/prog_integridade_dataset](https://huggingface.co/datasets/tcepi/prog_integridade_dataset).
## Limitações
- O modelo foi treinado especificamente para o domínio do dataset Programa de Integridade, e pode não generalizar bem para outros tipos de texto ou domínios.
- Performance pode variar em textos de outros domínios
- Recomenda-se avaliar o modelo antes de usar em produção