📄 beto-base-solicitudes-transparencia-finetuned

Modelo de clasificación automática de solicitudes de transparencia, basado en BETO, ajustado finamente (fine-tuning) para el dominio de solicitudes de transparencia ingresadas a organismos públicos en Chile.

El modelo permite categorizar textos de solicitudes de transparencia en distintas clases temáticas, facilitando su análisis, priorización y derivación automática.

🧠 Modelo base

Modelo: BETO (Spanish BERT) Arquitectura: Transformer encoder Idioma: Español Tipo de tarea: Clasificación de texto (Sequence Classification)

⚙️ Entrenamiento

El entrenamiento se realizó utilizando el framework Transformers, basado en PyTorch.

El proceso se ejecutó en un entorno de cómputo en la nube mediante la capa gratuita de Google Colab, empleando aceleración por GPU NVIDIA T4.

Hiperparámetros utilizados

  • Epochs: 10
  • Learning rate: 1e-5
  • Weight decay: 0.01
  • Warmup ratio: 0.06
  • Batch size: 16

🏷️ Etiquetas (labels)

El modelo utiliza un esquema de etiquetas configurable. Las etiquetas disponibles y su mapeo pueden consultarse directamente desde:

model.config.id2label

🚀 Ejemplo de uso

A continuación se muestra un ejemplo simple de inferencia utilizando transformers y torch:

from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
import torch.nn.functional as F
import re

Ruta al modelo (local o descargado desde Hugging Face)

MODEL_PATH = "junaebchile/beto-base-solicitudes-transparencia-finetuned"

Selección automática de dispositivo

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

Cargar modelo y tokenizer

model = AutoModelForSequenceClassification.from_pretrained(MODEL_PATH).to(device)
tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH)
model.eval()

Helpers

def limpiar_espacios(texto: str) -> str:
    texto = texto.replace("\t", " ")
    texto = texto.replace("\r\n", " ")
    texto = texto.replace("\n", " ")
    texto = re.sub(r"\s+", " ", texto)
    return texto.strip()

def pct(x):
    return f"{x * 100:.2f}%"

Ejemplo de solicitudes

solicitudes = [
    "Solicito informe que de cuenta de las raciones de alimentos (desayuno y almuerzo), "
    "Programa de Alimentación Escolar para el año 2019, solicitado por el colegio Cordillera"
    "de la comuna de Pirque, desagregado por cursos desde Prekínder a Cuarto Medio."
]

with torch.no_grad():
    inputs = tokenizer(
        solicitudes,
        padding=True,
        truncation=True,
        return_tensors="pt"
    ).to(device)

    outputs = model(**inputs)
    logits = outputs.logits
    probs = F.softmax(logits, dim=1)

# Mapas id <-> label
id2label = model.config.id2label

# Mostrar resultados
for texto, p in zip(solicitudes, probs):
    p = p.cpu()
    top_id = int(torch.argmax(p))
    top_label = id2label[top_id]
    top_conf = p[top_id].item()

    print("Texto:")
    print(texto)
    print(f"\nCategoría predicha: {top_label}")
    print(f"Confianza: {pct(top_conf)}")
    print("\nProbabilidades por clase:")
    for idx in torch.argsort(p, descending=True):
        print(f"- {id2label[int(idx)]}: {pct(p[idx].item())}")

📦 Requisitos

  • Python ≥ 3.8
  • torch
  • transformers

Instalación rápida:

pip install torch transformers

⚠️ Notas

El modelo fue entrenado para uso institucional y apoyo a la gestión, no para reemplazar decisiones administrativas.

Los resultados deben ser interpretados como asistencia automatizada.

Downloads last month
5
Safetensors
Model size
0.1B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for junaebchile/beto-base-solicitudes-transparencia-finetuned

Finetuned
(162)
this model