--- 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