BART for Natural Language Inference (MNLI Custom)

Este modelo es una versión finetuneada de facebook/bart-base para la tarea de Inferencia de Lenguaje Natural (NLI). Ha sido entrenado para clasificar la relación entre una premisa y una hipótesis en tres categorías:

  1. Entailment (Implicación)
  2. Neutral
  3. Contradiction (Contradicción)

Detalles del Modelo

  • Base: facebook/bart-base
  • Tarea: Clasificación de secuencias (3 etiquetas).
  • Entrenamiento: Se utilizó un callback de Early Stopping para evitar el sobreajuste, optimizando la métrica de accuracy.

Cómo usar el modelo

Puedes utilizar este modelo directamente con la librería transformers de Hugging Face.

Ejemplo de Inferencia

from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

model_name = "marcostrfn/bart-base-spanish-nli-taller-test"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)

def predict_nli(premise, hypothesis):
    # Tokenización de la pareja de frases
    inputs = tokenizer(premise, hypothesis, return_tensors="pt", truncation=True, padding=True)
    
    # Predicción
    with torch.no_grad():
        logits = model(**inputs).logits
    
    # Obtener la etiqueta con mayor probabilidad
    prediction = torch.argmax(logits, dim=-1).item()
    
    # Mapeo de etiquetas (ajustar según el orden de tus datos)
    labels = {0: "entailment", 1: "neutral", 2: "contradiction"}
    return labels[prediction]

# Ejemplo de prueba
premisa = "Un hombre está tocando la guitarra en el parque."
hipotesis = "Alguien está haciendo música al aire libre."

resultado = predict_nli(premisa, hipotesis)
print(f"La relación es: {resultado}")

Ejemplo de inferencia como clasificador

from transformers import pipeline

# 1. Cargar el pipeline específico de Zero-Shot
# Puedes usar la ruta de tu modelo en Hugging Face o local
model_path = "marcostrfn/bart-base-spanish-nli-taller-test"

# Importante: El pipeline zero-shot-classification requiere un modelo NLI
zero_shot_classifier = pipeline(
    "zero-shot-classification",
    model=model_path,
    tokenizer=model_path,
    device=-1  # 0 para GPU
)

# 2. Definir el texto y las etiquetas que tú quieras (sin haber reentrenado)
secuencia_a_clasificar = "El nuevo procesador cuántico permite realizar cálculos en segundos."
etiquetas_candidatas = ["tecnología", "cocina", "deportes", "economía"]

# 3. Ejecutar la clasificación
# El modelo probará: "Este texto trata sobre tecnología", "Este texto trata sobre cocina", etc.
resultado = zero_shot_classifier(
    secuencia_a_clasificar,
    candidate_labels=etiquetas_candidatas,
    hypothesis_template="Este ejemplo trata sobre {}." # Plantilla en español
)

# 4. Mostrar resultados ordenados
print(f"Texto: {resultado['sequence']}\n")
for label, score in zip(resultado['labels'], resultado['scores']):
    print(f"Etiqueta: {label.ljust(12)} | Confianza: {score:.2%}")

Parámetros de Entrenamiento

El modelo fue entrenado con las siguientes configuraciones:

Learning Rate: 2e-5
Batch Size: 16
Épocas: 10 (con Early Stopping)
Weight Decay: 0.01
Precisión: FP16 activa
weight_decay: 0.01
dropout: 0.2
attention_dropout: 0.1

Métricas

Resultados de Evaluación (Classification Report)

Epoch Training Loss Validation Loss Accuracy
1 0.865727 0.894325 0.608053
2 0.800889 0.838939 0.641172
3 0.759089 0.799248 0.660076
4 0.704085 0.834558 0.664189
5 0.654602 0.872880 0.664911
Class Precision Recall F1-Score Support
Entailment 0.72 0.64 0.68 4777
Neutral 0.63 0.60 0.61 4184
Contradiction 0.63 0.73 0.68 4898
Accuracy 0.66 13859
Macro Avg 0.66 0.66 0.66 13859
Weighted Avg 0.66 0.66 0.66 13859

matriz de confusión

métricas

Limitaciones y Sesgos

Este modelo hereda las limitaciones del modelo base BART y está sujeto a los sesgos presentes en el dataset de entrenamiento utilizado. Se recomienda evaluar el modelo en casos específicos antes de su uso en producción.

Downloads last month
5
Safetensors
Model size
0.1B params
Tensor type
F32
·
Inference Examples
Examples
entailment
0.950
contradiction
0.030
neutral
0.020
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for marcostrfn/bart-base-spanish-nli-taller-test

Finetuned
(508)
this model

Dataset used to train marcostrfn/bart-base-spanish-nli-taller-test

Space using marcostrfn/bart-base-spanish-nli-taller-test 1