--- language: es license: apache-2.0 tags: - nli - spanish - bart library_name: transformers pipeline_tag: text-classification base_model: facebook/bart-base datasets: - marcostrfn/nli-taller-es --- # 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 ```python 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 ```python 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 ### Métricas Resultados de Evaluación (Classification Report) El modelo fue evaluado sobre un conjunto de prueba de 13,859 ejemplos, obteniendo un Accuracy global de 68%. | Etiqueta | Precisión | Recall | F1-Score | Soporte | | :--- | :---: | :---: | :---: | :---: | | Entailment | 0.73 | 0.67 | 0.70 | 4777 | | Neutral | 0.62 | 0.66 | 0.64 | 4184 | | Contradiction | 0.69 | 0.70 | 0.70 | 4898 | | **Global Accuracy** | | | **0.68** | **13859** | ![matriz de confusión](1KDePP_0e-v_MWxwxHFmySdkEjMwK088h) ![métricas](1c497rYuYryWxiv-b679jAey7QjisUjIi) **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.