marcostrfn commited on
Commit
d2e725f
·
verified ·
1 Parent(s): 41a1394

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +113 -5
README.md CHANGED
@@ -5,10 +5,118 @@ tags:
5
  - nli
6
  - spanish
7
  - bart
8
- - taller-mecanico
9
- pipeline_tag: text-classification
10
  widget:
11
- - text: "El mecánico apretó el tornillo con la llave inglesa."
12
- text_pair: "Se utilizó una herramienta manual."
 
 
 
13
  ---
14
- # BART para NLI en Español (Herramientas de Taller)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  - nli
6
  - spanish
7
  - bart
8
+ library_name: transformers
9
+ pipeline_tag: zero-shot-classification
10
  widget:
11
+ - text: "El Real Madrid ha ganado la Champions League."
12
+ parameter_labels: "deportes, política, economía, ciencia"
13
+ example_title: "Ejemplo Zero-Shot"
14
+ base_model:
15
+ - facebook/bart-base
16
  ---
17
+
18
+ # BART for Natural Language Inference (MNLI Custom)
19
+
20
+ 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:
21
+
22
+ 1. **Entailment** (Implicación)
23
+ 2. **Neutral**
24
+ 3. **Contradiction** (Contradicción)
25
+
26
+ ## Detalles del Modelo
27
+
28
+ - **Base**: `facebook/bart-base`
29
+ - **Tarea**: Clasificación de secuencias (3 etiquetas).
30
+ - **Entrenamiento**: Se utilizó un callback de *Early Stopping* para evitar el sobreajuste, optimizando la métrica de **accuracy**.
31
+
32
+ ## Cómo usar el modelo
33
+
34
+ Puedes utilizar este modelo directamente con la librería `transformers` de Hugging Face.
35
+
36
+ ### Ejemplo de Inferencia
37
+
38
+ ```python
39
+ from transformers import AutoTokenizer, AutoModelForSequenceClassification
40
+ import torch
41
+
42
+ model_name = "marcostrfn/bart-base-spanish-nli-taller-test"
43
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
44
+ model = AutoModelForSequenceClassification.from_pretrained(model_name)
45
+
46
+ def predict_nli(premise, hypothesis):
47
+ # Tokenización de la pareja de frases
48
+ inputs = tokenizer(premise, hypothesis, return_tensors="pt", truncation=True, padding=True)
49
+
50
+ # Predicción
51
+ with torch.no_grad():
52
+ logits = model(**inputs).logits
53
+
54
+ # Obtener la etiqueta con mayor probabilidad
55
+ prediction = torch.argmax(logits, dim=-1).item()
56
+
57
+ # Mapeo de etiquetas (ajustar según el orden de tus datos)
58
+ labels = {0: "entailment", 1: "neutral", 2: "contradiction"}
59
+ return labels[prediction]
60
+
61
+ # Ejemplo de prueba
62
+ premisa = "Un hombre está tocando la guitarra en el parque."
63
+ hipotesis = "Alguien está haciendo música al aire libre."
64
+
65
+ resultado = predict_nli(premisa, hipotesis)
66
+ print(f"La relación es: {resultado}")
67
+ ```
68
+
69
+ ### Ejemplo de inferencia como clasificador
70
+
71
+ ```python
72
+ from transformers import pipeline
73
+
74
+ # 1. Cargar el pipeline específico de Zero-Shot
75
+ # Puedes usar la ruta de tu modelo en Hugging Face o local
76
+ model_path = "marcostrfn/bart-base-spanish-nli-taller-test"
77
+
78
+ # Importante: El pipeline zero-shot-classification requiere un modelo NLI
79
+ zero_shot_classifier = pipeline(
80
+ "zero-shot-classification",
81
+ model=model_path,
82
+ tokenizer=model_path,
83
+ device=-1 # 0 para GPU
84
+ )
85
+
86
+ # 2. Definir el texto y las etiquetas que tú quieras (sin haber reentrenado)
87
+ secuencia_a_clasificar = "El nuevo procesador cuántico permite realizar cálculos en segundos."
88
+ etiquetas_candidatas = ["tecnología", "cocina", "deportes", "economía"]
89
+
90
+ # 3. Ejecutar la clasificación
91
+ # El modelo probará: "Este texto trata sobre tecnología", "Este texto trata sobre cocina", etc.
92
+ resultado = zero_shot_classifier(
93
+ secuencia_a_clasificar,
94
+ candidate_labels=etiquetas_candidatas,
95
+ hypothesis_template="Este ejemplo trata sobre {}." # Plantilla en español
96
+ )
97
+
98
+ # 4. Mostrar resultados ordenados
99
+ print(f"Texto: {resultado['sequence']}\n")
100
+ for label, score in zip(resultado['labels'], resultado['scores']):
101
+ print(f"Etiqueta: {label.ljust(12)} | Confianza: {score:.2%}")
102
+ ```
103
+
104
+
105
+ Parámetros de Entrenamiento
106
+
107
+ El modelo fue entrenado con las siguientes configuraciones:
108
+
109
+ Learning Rate: 2e-5
110
+
111
+ Batch Size: 16
112
+
113
+ Épocas: 3 (con Early Stopping)
114
+
115
+ Weight Decay: 0.01
116
+
117
+ Precisión: FP16 activa
118
+
119
+ Limitaciones y Sesgos
120
+
121
+ 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.
122
+