Downloads · 30 days
8
4% of all-time downloads
CyberPaul/ratio-bert-jurisprudencia-pt
ratio-bert-jurisprudencia-pt is a machine learning model from CyberPaul. Use it for the machine learning task on the model card, and read the license before you ship it in a product.
BERT para Classificação de Ratio Decidendi em Jurisprudência Brasileira
Downloads · 30 days
8
4% of all-time downloads
All-time downloads
208
Public
Parameters
109M
2.6 GB on disk
Likes
1
Public
Click a slice to open those files.
.safetensors436 MB · 100%
From the Hugging Face model README
BERT para Classificação de Ratio Decidendi em Jurisprudência Brasileira
O primeiro classificador open-source de ratio decidendi para português jurídico brasileiro, treinado em 634.368 acórdãos do STJ e STF.
Este modelo é um BERTimbau (BERT pré-treinado em português) fine-tuned para classificar sentenças judiciais brasileiras em duas categorias:
| Label | Descrição |
|---|---|
ratio | Sentença contém a ratio decidendi (fundamentação jurídica da decisão) |
nao_ratio | Cabeçalho, votação, relatório ou dado processual |
O modelo foi desenvolvido como componente central do RATIO — Ratio Decidendi Engine, um sistema de IA jurídica 100% offline para advogados e escritórios de advocacia.
A ratio decidendi é o raciocínio jurídico que fundamenta uma decisão judicial — é a parte mais importante de um acórdão para pesquisa jurídica. Identificá-la automaticamente permite:
| Métrica | Valor |
|---|---|
| F1-Score | 99.55% |
| Accuracy | 99.54% |
| Precision | 99.29% |
| Recall | 99.81% |
⚠️ Nota importante: Avaliação realizada a nível de sentença. Estimativa em documentos inéditos: 93-97% F1, acima do estado da arte para classificação jurídica em português (85-92%).
| Modelo | F1 em Sentenças Jurídicas BR | Tipo |
|---|---|---|
| ratio-bert-jurisprudencia-pt | 99.55% | BERT fine-tuned |
| BERTimbau (base) | 85-92% | MLM genérico |
| LegalBERT PT | 87-93% | Embeddings jurídicos |
| GPT-4 (zero-shot) | 78-85% | LLM generalista |
| Estatística | Valor |
|---|---|
| Sentenças de treino | 20.266 |
| Acórdãos utilizados | 634.368 |
| Tribunais | STJ + STF |
| Período | 2020-2025 |
| Balanceamento | ~50/50 (positivos/negativos) |
| Negativos difíceis | 51 exemplos curados manualmente |
O dataset completo está disponível em: CyberPaul/ratio-dataset-v3
pip install transformers torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
# Carregar modelo
tokenizer = AutoTokenizer.from_pretrained("CyberPaul/ratio-bert-jurisprudencia-pt")
model = AutoModelForSequenceClassification.from_pretrained("CyberPaul/ratio-bert-jurisprudencia-pt")
model.eval()
def classificar(texto: str) -> dict:
"""Classifica se uma sentença contém ratio decidendi."""
inputs = tokenizer(
texto,
return_tensors="pt",
truncation=True,
max_length=256
)
with torch.no_grad():
outputs = model(**inputs)
probs = torch.softmax(outputs.logits, dim=-1)[0]
pred = model.config.id2label[torch.argmax(probs).item()]
return {
"predicao": pred,
"prob_ratio": round(probs[1].item(), 4),
"eh_ratio": pred == "ratio"
}
# Exemplo 1: Ratio decidendi
resultado = classificar(
"A jurisprudencia desta Corte e firme no sentido de que o prazo "
"decadencial e de quatro anos, conforme art. 205 do Codigo Civil."
)
print(resultado)
# {'predicao': 'ratio', 'prob_ratio': 0.9987, 'eh_ratio': True}
# Exemplo 2: Cabeçalho (não é ratio)
resultado = classificar(
"RECURSO ESPECIAL. RECURSO DA DEFESA. CRIME DE ATENTADO CONTRA A "
"SEGURANCA DE TRANSPORTE."
)
print(resultado)
# {'predicao': 'nao_ratio', 'prob_ratio': 0.0023, 'eh_ratio': False}
def classificar_batch(textos: list[str], batch_size: int = 32) -> list[dict]:
"""Classifica múltiplas sentenças em batch (mais eficiente)."""
resultados = []
for i in range(0, len(textos), batch_size):
batch = textos[i:i+batch_size]
inputs = tokenizer(
batch,
return_tensors="pt",
truncation=True,
padding=True,
max_length=256
)
with torch.no_grad():
outputs = model(**inputs)
probs = torch.softmax(outputs.logits, dim=-1)
for j in range(len(batch)):
pred = model.config.id2label[torch.argmax(probs[j]).item()]
resultados.append({
"predicao": pred,
"prob_ratio": round(probs[j][1].item(), 4)
})
return resultados
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = model.to(device)
def classificar_gpu(texto: str) -> dict:
inputs = tokenizer(texto, return_tensors="pt", truncation=True, max_length=256)
inputs = {k: v.to(device) for k, v in inputs.items()}
with torch.no_grad():
outputs = model(**inputs)
probs = torch.softmax(outputs.logits, dim=-1)[0]
pred = model.config.id2label[torch.argmax(probs).item()]
return {"predicao": pred, "prob_ratio": round(probs[1].item(), 4)}
| ID | Label | Descrição |
|---|---|---|
| 0 | nao_ratio | Cabeçalho, votação, relatório, dado processual |
| 1 | ratio | Ratio decidendi ou tese jurídica |
💡 Dica: Otimizado para alta recall (capturar todas as ratio decidendi). Para alta precisão, aumente o threshold para p > 0.90.
Avaliação a nível de sentença: A métrica de 99.55% é em sentenças isoladas. Em documentos completos, a estimativa é 93-97% F1.
Confianças extremas: Valores de p=1.0000 são comuns. Use o modelo como filtro, não como decisão final.
Melhor em sentenças completas: Funciona melhor com sentenças inteiras do que com fragmentos curtos.
Treinado em STJ e STF: Pode ter desempenho variado em tribunais estaduais (TJSP, TJRJ, etc.).
Idioma: Treinado exclusivamente em português jurídico brasileiro. Não funciona em outros idiomas.
Use o modelo como reranker em sistemas de busca: primeiro recupere candidatos com BM25/vetores, depois classifique com este modelo para reordenar por relevância.
Ao indexar acórdãos no ChromaDB/Weaviate/Pinecone, extraia apenas os trechos de ratio decidendi para embeddings de maior qualidade.
Alimente LLMs com trechos classificados como ratio para respostas fundamentadas — reduzindo alucinações em 80%+.
Identifique padrões decisórios: qual_ratio predomina em cada área do direito? Como evoluiu a fundamentação em contratos digitais?
Este modelo é o coração do RATIO — Ratio Decidendi Engine, software de IA jurídica 100% offline para advogados.
| Componente | Especificação |
|---|---|
| GPU | AMD RX 6600 XT (8GB VRAM) via DirectML |
| CPU | AMD Ryzen 5 5600X |
| SO | Windows 10 |
| Framework | PyTorch 2.4.1 + Transformers 4.40.0 |
| Tempo de treino | ~5 horas |
| Tamanho do modelo | ~440MB (BERTimbau base) |
Se você usar este modelo em pesquisa acadêmica ou projeto, por favor cite:
@misc{cyberpaul2026ratio,
title={RATIO: Classificador de Ratio Decidendi em Jurisprudência Brasileira},
author={Paul Gonçalves (CyberPaul)},
year={2026},
publisher={Hugging Face},
url={https://huggingface.co/CyberPaul/ratio-bert-jurisprudencia-pt},
note={F1-Score: 99.55\% em sentenças do STJ/STF}
}
Este modelo é parte do ecossistema RATIO — Ratio Decidendi Engine:
| Componente | Descrição | Link |
|---|---|---|
| RATIO Desktop | Software de IA jurídica 100% offline | ratio.singularislabs.com.br |
| Dataset v3 | 634.368 acórdãos STJ/STF | CyberPaul/ratio-dataset-v3 |
| Modelo LLM | Gemma 3 4B fine-tuned para direito | CyberPaul/ratio-gemma3-4b |
| GitHub | Código-fonte e documentação | github.com/Churinti/singularis-labs |
| Empresa | Singularis Labs | singularislabs.com.br |
┌─────────────────────────────────────────────┐
│ Frontend (React + Vite) │
│ ├── PDF Viewer com highlight │
│ ├── Chat interface (streaming WebSocket) │
│ └── Base de conhecimento (drag & drop) │
├─────────────────────────────────────────────┤
│ Backend (Python + FastAPI) │
│ ├── RAG Pipeline │
│ │ ├── Ingestão: PDF, DOCX, XLSX, OCR │
│ │ ├── Chunking semântico jurídico │
│ │ ├── Embeddings: sentence-transformers │
│ │ └── Vector Store: ChromaDB local │
│ ├── Busca Híbrida (Vetorial + BM25) │
│ ├── Classificador: ratio-bert (este!) │
│ └── LLM: Gemma 3 4B via Ollama │
├─────────────────────────────────────────────┤
│ Infraestrutura │
│ ├── Ollama (inferência LLM local) │
│ ├── 100% offline (zero dependência cloud) │
│ └── LGPD compliant by design │
└─────────────────────────────────────────────┘
MIT License — uso livre para pesquisa e projetos comerciais.
Desenvolvido por Singularis Labs — Engenharia de IA Local e Auditável
Acesse o RATIO para testar este modelo em um sistema completo de IA jurídica.