Instructions to use PENCR/mrbert-es-ld1-pe2-multilabel with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use PENCR/mrbert-es-ld1-pe2-multilabel with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="PENCR/mrbert-es-ld1-pe2-multilabel")# Load model directly from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained("PENCR/mrbert-es-ld1-pe2-multilabel") model = AutoModelForSequenceClassification.from_pretrained("PENCR/mrbert-es-ld1-pe2-multilabel", device_map="auto") - Notebooks
- Google Colab
- Kaggle
MrBERT-es LD1–PE2 — Clasificador multi-etiqueta de posiciones políticas (Costa Rica)
Modelo de clasificación multi-etiqueta de textos de política pública costarricense en 39 categorías de posición (LD1–PE2) del esquema Manifesto Project adaptado por el Programa Estado de la Nación (PEN), organizadas en 7 dominios. Un mismo texto puede pertenecer a varias categorías a la vez.
- Encoder base:
BSC-LT/MrBERT-es(ModernBERT, contexto de 8192 tokens). - Método: destilación de conocimiento a partir de un teacher LLM (
Qwen3-30B-A3B-Instruct-2507), con soft labels por categoría (método logit A/B, pregunta del manual PEN) y pérdida BCE Bernoulli independiente por etiqueta. - Corpus de destilación: 38 812 textos de tres dominios — propuestas de programa de gobierno, actas legislativas de control político y noticias de medios.
- Formato:
ModernBertForSequenceClassificationestándar — se carga confrom_pretrained, sintrust_remote_code.
Los 7 dominios y 39 categorías
| Dominio | # categorías |
|---|---|
| Libertad y Democracia (LD) | 3 |
| Sistema Político (SP) | 4 |
| Economía (ECO) | 10 |
| Bienestar y Calidad de Vida (BCD) | 7 |
| Tejido Social (TS) | 8 |
| Clases Sociales (CS) | 5 |
| Política Exterior (PE) | 2 |
Uso rápido
El modelo emite una probabilidad por cada una de las 39 categorías. La probabilidad de cada
dominio se deriva por el módulo de máxima restricción (MCM): el máximo de las probabilidades de
sus categorías hijas. La función clasificar devuelve ambos niveles estructurados.
import torch, numpy as np
from transformers import AutoModelForSequenceClassification, AutoTokenizer
repo = "PENCR/mrbert-es-ld1-pe2-multilabel"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForSequenceClassification.from_pretrained(repo).eval()
def clasificar(texto, max_length=512):
enc = tok(texto, truncation=True, max_length=max_length, return_tensors="pt")
with torch.no_grad():
p = torch.sigmoid(model(**enc).logits)[0].numpy() # (39,) prob por categoría
cfg = model.config
parent = {int(k): int(v) for k, v in cfg.spml_parent_of.items()}
umbral = np.array(cfg.spml_umbrales_por_categoria)
dom_nom = {int(k): v for k, v in cfg.spml_dominio_idx_names.items()}
salida = []
for d in range(len(dom_nom)):
hijos = [s for s in range(39) if parent[s] == d]
cats = sorted([{"categoria": cfg.id2label[s], "prob": round(float(p[s]), 3),
"activo": bool(p[s] >= umbral[s])} for s in hijos], key=lambda x: -x["prob"])
salida.append({"dominio": dom_nom[d], "prob_dominio": round(float(p[hijos].max()), 3),
"categorias": cats})
return sorted(salida, key=lambda x: -x["prob_dominio"])
texto = ("Reformar el Codigo Penal para aumentar las penas y fortalecer la seguridad ciudadana.")
for d in clasificar(texto):
print(f"{d['prob_dominio']:.3f} {d['dominio']}")
for c in d["categorias"]:
if c["activo"]: print(f" · {c['prob']:.3f} {c['categoria']}")
Umbral por categoría
Cada categoría tiene un umbral propio calibrado (rango 0.1–0.9), en
model.config.spml_umbrales_por_categoria (39 valores). Usar el umbral por categoría en lugar de
un 0.5 uniforme reduce la sobre-predicción y mejora el F1.
Rendimiento
Evaluado sobre un conjunto held-out de propuestas de gobierno 2026 (PLN + PPSO, n=1340, con etiqueta humana nativa de las 39 categorías, cardinalidad humana 2.01):
| Métrica | Valor |
|---|---|
| F1-micro (umbral por categoría) | 0.515 |
| F1-macro | 0.423 |
| mAP | 0.408 |
| recall@3 / recall@5 | 0.678 / 0.818 |
| cardinalidad predicha | 3.75 |
Por soporte: el modelo es fiable en las categorías frecuentes (AP medio 0.61 en las 11 categorías con ≥80 ejemplos; p.ej. Protección del medio ambiente AP 0.82, Tecnología e infraestructura 0.79, Ley y orden 0.76) y ruidoso en las raras — sobre todo las categorías de posición negativa del esquema Manifesto, escasas en el discurso programático. Es un límite del tamaño del dato, no de la arquitectura. Fidelidad al teacher (held-out de destilación): correlación de probabilidades 0.869, MAE 0.071.
Detalles del modelo
- Arquitectura: MrBERT-es (ModernBERT) + cabeza de clasificación de secuencia estándar, 39 salidas, activación sigmoidal por etiqueta, pooling sobre el token CLS.
- Esquema: 39 categorías de posición Manifesto Project adaptadas por el PEN (LD1–PE2), 7 dominios.
- Idioma: español.
Citación
Encoder: Tamayo, D. et al. (2026). MrBERT: Modern Multilingual Encoders via Vocabulary, Domain, and Dimensional Adaptation. arXiv:2602.21379. Barcelona Supercomputing Center — Language Technologies Lab. · Arquitectura base ModernBERT: Warner, B. et al. (2024). arXiv:2412.13663. · Teacher: Yang, A. et al. (2025). Qwen3 Technical Report. arXiv:2505.09388.
Infraestructura: entrenado en la supercomputadora Kabré del Centro Nacional de Alta Tecnología de Costa Rica (CeNAT/CNCA).
Modelo desarrollado para el Programa Estado de la Nación (PEN) — clasificación de las variables de posición política LD1–PE2.
- Downloads last month
- 26