YonatanRA commited on
Commit ·
d9f4355
1
Parent(s): 0c317c7
readme
Browse files
README.md
CHANGED
|
@@ -1,3 +1,99 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
license: mit
|
| 3 |
---
|
|
|
|
| 1 |
+
Este modelo es un `bert-base-uncased` ajustado con el dataset `glue` de MRPC.
|
| 2 |
+
Este es el código utilizado para realizar el ajuste:
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
|
| 6 |
+
```python
|
| 7 |
+
# importamos las librerias
|
| 8 |
+
from datasets import load_dataset
|
| 9 |
+
|
| 10 |
+
from transformers import (AutoTokenizer,
|
| 11 |
+
AutoModelForSequenceClassification,
|
| 12 |
+
DataCollatorWithPadding,
|
| 13 |
+
Trainer,
|
| 14 |
+
TrainingArguments
|
| 15 |
+
)
|
| 16 |
+
|
| 17 |
+
from sklearn.metrics import accuracy_score, f1_score
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
# cargamos el dataset
|
| 22 |
+
glue_dataset = load_dataset('glue', 'mrpc')
|
| 23 |
+
|
| 24 |
+
|
| 25 |
+
# definimos el modelo
|
| 26 |
+
modelo = 'bert-base-uncased'
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
|
| 30 |
+
# iniciamos el tokenizador, con este objeto se vectorizan las palabras
|
| 31 |
+
tokenizador = AutoTokenizer.from_pretrained(modelo)
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
# iniciamos el modelo BERT
|
| 35 |
+
modelo_bert = AutoModelForSequenceClassification.from_pretrained(modelo, num_labels=2)
|
| 36 |
+
|
| 37 |
+
|
| 38 |
+
# tokenizar el dataset
|
| 39 |
+
token_dataset = glue_dataset.map(lambda x: tokenizador(x['sentence1'], x['sentence2'], truncation=True), batched=True)
|
| 40 |
+
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
# iniciamos el data collator
|
| 44 |
+
data_collator = DataCollatorWithPadding(tokenizer=tokenizador)
|
| 45 |
+
|
| 46 |
+
|
| 47 |
+
# función evaluación
|
| 48 |
+
def evaluacion(modelo_preds):
|
| 49 |
+
|
| 50 |
+
"""
|
| 51 |
+
Función para obtener la métricas de evaluación.
|
| 52 |
+
|
| 53 |
+
Params:
|
| 54 |
+
+ modelo_preds: transformers.trainer_utils.PredictionOutput, predicciones del modelo y etiquetas.
|
| 55 |
+
|
| 56 |
+
Return:
|
| 57 |
+
dict: diccionario con keys accuracy y f1-score y sus valores respectivos.
|
| 58 |
+
"""
|
| 59 |
+
|
| 60 |
+
preds, etiquetas = modelo_preds
|
| 61 |
+
|
| 62 |
+
preds = np.argmax(preds, axis=-1)
|
| 63 |
+
|
| 64 |
+
return {'accuracy': accuracy_score(preds, etiquetas),
|
| 65 |
+
'f1': f1_score(preds, etiquetas)}
|
| 66 |
+
|
| 67 |
+
|
| 68 |
+
|
| 69 |
+
# iniciamos los argumentos del entrenador
|
| 70 |
+
args_entrenamiento = TrainingArguments(output_dir='../../training/glue-trainer',
|
| 71 |
+
evaluation_strategy='steps',
|
| 72 |
+
logging_steps=100,
|
| 73 |
+
)
|
| 74 |
+
|
| 75 |
+
|
| 76 |
+
# iniciamos el entrenador
|
| 77 |
+
entrenador = Trainer(model=modelo_bert,
|
| 78 |
+
args=args_entrenamiento,
|
| 79 |
+
train_dataset=token_dataset['train'],
|
| 80 |
+
eval_dataset=token_dataset['validation'],
|
| 81 |
+
data_collator=data_collator,
|
| 82 |
+
tokenizer=tokenizador,
|
| 83 |
+
compute_metrics=evaluacion
|
| 84 |
+
)
|
| 85 |
+
|
| 86 |
+
# entrenamiento
|
| 87 |
+
entrenador.train()
|
| 88 |
+
|
| 89 |
+
|
| 90 |
+
# evaluación desde el entrenador
|
| 91 |
+
print(entrenador.evaluate())
|
| 92 |
+
```
|
| 93 |
+
|
| 94 |
+
|
| 95 |
+
|
| 96 |
+
|
| 97 |
---
|
| 98 |
license: mit
|
| 99 |
---
|