PIBot Intent Router (Multitarea)

Modelo multitarea para clasificación de texto en español usando un encoder compartido (sentence-transformers) y 5 cabezas clasificadoras binarias ("1" / "0"):

  • macro: ¿es una pregunta macroeconómica (PIB, IMACEC, IPC, inflación, dólar, TPM…) o un saludo/off-topic?
  • scope: ¿es sobre IMACEC o PIB (vs otro ámbito macro como inflación, IPC, dólar)?
  • data: ¿pide un dato/valor/cifra?
  • metodologia: ¿es una pregunta metodológica (qué es, cómo se calcula)?
  • calendario: ¿pregunta por el calendario de publicación (cuándo se publica, próxima fecha)?

Las cabezas son independientes: una misma pregunta puede activar varias a la vez. scope solo debe interpretarse cuando macro=1.

Este repositorio contiene artefactos de inferencia:

  • encoder/
  • heads.pt
  • label2id.json
  • id2label.json
  • train_config.json

Uso rápido

1) Instalar dependencias

pip install torch sentence-transformers huggingface-hub

Si usarás el código de este proyecto para inferencia local:

pip install -r requirements.txt

2) Descargar artefactos desde Hugging Face

from huggingface_hub import snapshot_download

artifact_dir = snapshot_download(repo_id="TU_USUARIO/TU_REPO")
print(artifact_dir)

3) Inferencia con el código del proyecto

from pathlib import Path

from src.serialization.artifacts import load_artifacts
from src.infer.predict import predict_all_tasks

artifact_dir = Path("RUTA_DESCARGADA_DESDE_SNAPSHOT")
encoder, multitask_model, _, id2label = load_artifacts(artifact_dir, device="cpu")

text = "cuando se publica el imacec"
output = predict_all_tasks(
    text=text,
    encoder=encoder,
    multitask_model=multitask_model,
    id2label=id2label,
    device="cpu",
)
print(output)

Salida esperada (ejemplo):

{
  "macro": {"label": "1", "score": 0.99},
  "scope": {"label": "1", "score": 0.99},
  "data": {"label": "0", "score": 0.99},
  "metodologia": {"label": "0", "score": 0.98},
  "calendario": {"label": "1", "score": 0.99}
}

Uso por CLI

Con este proyecto clonado, también puedes probar:

python -m src.main test --artifact-dir models/artifacts --text "cuando se publica el imacec" --device cpu

Notas

  • El modelo está diseñado para inferencia de 5 tareas binarias simultáneas.
  • score corresponde a la probabilidad de la clase predicha por cada tarea.
  • Para endpoint administrado en HF, se recomienda agregar handler.py y requirements.txt orientados al entorno de despliegue.
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support