MrBERT Legal Anonymization — Spanish NER

Fine-tune de BSC-LT/MrBERT-legal (ModernBERT, 307M params) para anonimización automática de textos legales mediante reconocimiento de entidades nombradas (NER).

El modelo identifica y clasifica entidades sensibles en documentos jurídicos: personas, direcciones, fechas, organizaciones, cantidades y tiempos.

Entidades reconocidas

Etiqueta Descripción Ejemplo
PERSON Nombres de personas físicas Juan García López
ADDRESS Direcciones y ubicaciones Calle Mayor 15, Madrid
DATE Fechas 14 de marzo de 2024
ORGANISATION Organizaciones e instituciones Tribunal Superior de Justicia
AMOUNT Cantidades monetarias o numéricas 15.000 euros
TIME Referencias temporales a las 10:30 horas

Esquema de etiquetas IOB: O, B-PERSON, I-PERSON, B-ADDRESS, I-ADDRESS, B-DATE, I-DATE, B-ORGANISATION, I-ORGANISATION, B-AMOUNT, I-AMOUNT, B-TIME, I-TIME (13 etiquetas).

Uso

from transformers import pipeline

ner = pipeline(
    "token-classification",
    model="pauvanbr/mrbert-legal-anonymization-es",
    aggregation_strategy="simple",
)

text = (
    "El señor Juan García López, residente en Calle Mayor 15, Madrid, "
    "presentó la demanda el 14 de marzo de 2024 contra la empresa "
    "Construcciones Pérez S.L. por un importe de 25.000 euros."
)

entities = ner(text)
for ent in entities:
    print(f"  {ent['entity_group']:15s} {ent['score']:.3f}{ent['word']}")

Anonimización de texto

def anonymize(text, ner_pipeline):
    """Reemplaza entidades sensibles por marcadores [ENTIDAD]."""
    entities = ner_pipeline(text)
    # Procesar de derecha a izquierda para mantener índices
    for ent in sorted(entities, key=lambda e: e["start"], reverse=True):
        label = ent["entity_group"]
        text = text[:ent["start"]] + f"[{label}]" + text[ent["end"]:]
    return text

print(anonymize(text, ner))
# → "El señor [PERSON], residente en [ADDRESS], presentó la demanda
#    el [DATE] contra la empresa [ORGANISATION] por un importe de [AMOUNT]."

Pipeline de anotación y evaluación

Los scripts de carga de datos, preanotación, y evaluación están en el Space de anotación:

👉 pauvanbr/ner-anotation — scripts/

Incluye:

  • Carga de leyes desde legalize-es con chunking por artículos
  • Preanotación con este modelo + langextract (Gemini)
  • Evaluación multi-modelo contra anotaciones humanas (exact + partial match)

Guía completa: PIPELINE.md

Resultados de evaluación

Mejor checkpoint (evaluación en validación — todas las lenguas)

⚠️ Estas métricas son sobre el dataset de entrenamiento (MAPA). Para una evaluación independiente, usa el pipeline de anotación con datos de legalize-es.

Métrica Valor
F1 0.8122
Precision 0.7767
Recall 0.8511
Accuracy 0.9918
Loss 0.0357

F1 por entidad (validación)

Entidad F1
DATE 0.9744
ADDRESS 0.8125
PERSON 0.7838
ORGANISATION 0.0
AMOUNT 0.0
TIME

Nota: Las puntuaciones de 0.0 en ORGANISATION y AMOUNT en el mejor checkpoint se deben a la selección por F1 global — en epochs posteriores estos valores mejoraron significativamente (AMOUNT alcanzó 0.83, ORGANISATION 0.53). El best model fue epoch 1 por F1 global. Consulta la tabla de entrenamiento completa abajo.

Dataset: MAPA

Entrenado con el dataset Joelito/mapaMultilingual Anonymisation for Public Administrations.

  • Fuente: Documentos de EUR-Lex (sentencias y disposiciones legales de la UE)
  • Idiomas: 21 lenguas oficiales de la UE (bg, cs, da, de, el, en, es, et, fi, fr, ga, hu, it, lt, lv, mt, nl, pt, ro, sk, sv)
  • Anotación: Esquema de etiquetado del proyecto MAPA con dos niveles (coarse/fine-grained)
  • Licencia: CC BY 4.0

Estrategia de entrenamiento: transferencia cross-lingüe

Se utilizaron todas las lenguas del dataset para entrenamiento (~28K+ muestras), aprovechando la naturaleza multilingüe de MrBERT-legal para maximizar los datos de entrenamiento. La evaluación final se realiza sobre el subconjunto en español.

Split Muestras
Train (todas las lenguas) ~27.8K
Validation (todas las lenguas) ~3.4K
Test — español ~155

Modelo base: MrBERT-legal

BSC-LT/MrBERT-legal es un modelo ModernBERT de 307M parámetros pre-entrenado por el Barcelona Supercomputing Center (BSC) específicamente para el dominio legal en español e inglés. Soporta secuencias de hasta 8192 tokens.

  • Arquitectura: ModernBERT (22 capas, 768 hidden, 12 attention heads)
  • Atención: Combinación de full attention y sliding attention (ventana local de 128)
  • Referencia: arXiv:2602.21379

Procedimiento de entrenamiento

Hiperparámetros

Parámetro Valor
Learning rate 3e-05
LR scheduler Cosine con warmup 10%
Batch size (train) 16
Batch size (eval) 32
Épocas 10 (early stopping patience=3)
Max sequence length 512
Optimizer AdamW (fused)
Weight decay 0.01
Precisión bf16
Gradient checkpointing
Seed 42

Progresión del entrenamiento

Training Loss Epoch Step Val Loss Precision Recall F1 Accuracy F1 Person F1 Address F1 Date F1 Organisation F1 Amount
0.0437 1.0 1739 0.0854 0.5071 0.5717 0.5375 0.9796 0.3997 0.2391 0.8531 0.2164 0.3944
0.0238 2.0 3478 0.0477 0.6579 0.6754 0.6665 0.9883 0.5831 0.4440 0.9214 0.5345 0.0711
0.0158 3.0 5217 0.0549 0.6709 0.7076 0.6888 0.9875 0.5928 0.3881 0.9175 0.5187 0.7373
0.0158 4.0 6956 0.0579 0.6801 0.6936 0.6868 0.9883 0.5846 0.3805 0.9329 0.4802 0.8257
0.0045 5.0 8695 0.0639 0.6964 0.7127 0.7045 0.9886 0.5771 0.4435 0.9398 0.5255 0.7650
0.0046 6.0 10434 0.0709 0.6825 0.7122 0.6970 0.9882 0.6281 0.4962 0.9367 0.4399 0.8056
0.0014 7.0 12173 0.0725 0.7019 0.7283 0.7148 0.9891 0.6494 0.4144 0.9435 0.5271 0.7963
0.0017 8.0 13912 0.0823 0.7064 0.7190 0.7127 0.9888 0.6395 0.4508 0.9367 0.5112 0.8208
0.0008 9.0 15651 0.0872 0.7057 0.7224 0.7139 0.9887 0.6380 0.4577 0.9461 0.4992 0.8302
0.0008 10.0 17390 0.0876 0.7052 0.7237 0.7143 0.9888 0.6409 0.4499 0.9456 0.5035 0.8302

Limitaciones

  • Dominio: Entrenado exclusivamente con documentos legales de EUR-Lex; el rendimiento puede degradarse en otros tipos de textos legales (contratos, escrituras notariales, etc.).
  • Entidades infrecuentes: ORGANISATION y AMOUNT tienen scores más bajos debido a su baja frecuencia en el dataset MAPA.
  • Idioma: Aunque usa transferencia cross-lingüe, el rendimiento es óptimo en textos legales en español.

Cita del dataset

@article{DeGibertBonet2022,
  author    = {{de Gibert Bonet}, Ona and {García Pablos}, Aitor and Cuadros, Montse and Melero, Maite},
  title     = {{Spanish Datasets for Sensitive Entity Detection in the Legal Domain}},
  journal   = {Proceedings of the Language Resources and Evaluation Conference},
  pages     = {3751--3760},
  year      = {2022},
  url       = {https://aclanthology.org/2022.lrec-1.400}
}

Versiones de frameworks

  • Transformers 5.6.1
  • PyTorch 2.11.0+cu130
  • Datasets 4.8.4
  • Tokenizers 0.22.2
Downloads last month
197
Safetensors
Model size
0.3B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for pauvanbr/mrbert-legal-anonymization-es

Base model

BSC-LT/MrBERT
Finetuned
(1)
this model

Paper for pauvanbr/mrbert-legal-anonymization-es

Evaluation results