File size: 5,017 Bytes
a232563
ca5c1c2
 
 
a232563
ca5c1c2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8339f70
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a232563
 
42a91a7
a232563
ca5c1c2
a232563
ca5c1c2
a232563
ca5c1c2
 
 
 
a232563
ca5c1c2
a232563
ca5c1c2
a232563
ca5c1c2
 
8339f70
 
 
 
 
 
a232563
ca5c1c2
a232563
ca5c1c2
 
8339f70
 
a232563
ca5c1c2
a232563
ca5c1c2
 
a232563
8339f70
 
a232563
8339f70
 
 
a232563
ca5c1c2
a232563
ca5c1c2
a232563
ca5c1c2
 
 
a232563
ca5c1c2
 
 
a232563
ca5c1c2
 
8339f70
a232563
ca5c1c2
 
 
 
a232563
ca5c1c2
 
 
a232563
ca5c1c2
a232563
ca5c1c2
a232563
ca5c1c2
 
 
 
 
 
 
a232563
ca5c1c2
a232563
8339f70
 
 
a232563
ca5c1c2
a232563
ca5c1c2
 
8339f70
 
 
 
 
 
 
 
 
 
a232563
ca5c1c2
a232563
ca5c1c2
 
a232563
ca5c1c2
 
a232563
ca5c1c2
a232563
ca5c1c2
a232563
ca5c1c2
a232563
ca5c1c2
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
---
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