|
---
|
|
language: en
|
|
tags:
|
|
- exbert
|
|
license: mit
|
|
datasets:
|
|
- bookcorpus
|
|
- wikipedia
|
|
- glue
|
|
---
|
|
|
|
# Glue-Bert
|
|
|
|
Este modelo es un `bert-base-uncased` ajustado con el dataset `glue` de MRPC.
|
|
Este es el c贸digo utilizado para realizar el ajuste:
|
|
|
|
|
|
|
|
```python
|
|
# importamos las librerias
|
|
from datasets import load_dataset
|
|
|
|
from transformers import (AutoTokenizer,
|
|
AutoModelForSequenceClassification,
|
|
DataCollatorWithPadding,
|
|
Trainer,
|
|
TrainingArguments
|
|
)
|
|
|
|
from sklearn.metrics import accuracy_score, f1_score
|
|
|
|
|
|
|
|
# cargamos el dataset
|
|
glue_dataset = load_dataset('glue', 'mrpc')
|
|
|
|
|
|
# definimos el modelo
|
|
modelo = 'bert-base-uncased'
|
|
|
|
|
|
|
|
# iniciamos el tokenizador, con este objeto se vectorizan las palabras
|
|
tokenizador = AutoTokenizer.from_pretrained(modelo)
|
|
|
|
|
|
# iniciamos el modelo BERT
|
|
modelo_bert = AutoModelForSequenceClassification.from_pretrained(modelo, num_labels=2)
|
|
|
|
|
|
# tokenizar el dataset
|
|
token_dataset = glue_dataset.map(lambda x: tokenizador(x['sentence1'], x['sentence2'], truncation=True), batched=True)
|
|
|
|
|
|
|
|
# iniciamos el data collator
|
|
data_collator = DataCollatorWithPadding(tokenizer=tokenizador)
|
|
|
|
|
|
# funci贸n evaluaci贸n
|
|
def evaluacion(modelo_preds):
|
|
|
|
"""
|
|
Funci贸n para obtener la m茅tricas de evaluaci贸n.
|
|
|
|
Params:
|
|
+ modelo_preds: transformers.trainer_utils.PredictionOutput, predicciones del modelo y etiquetas.
|
|
|
|
Return:
|
|
dict: diccionario con keys accuracy y f1-score y sus valores respectivos.
|
|
"""
|
|
|
|
preds, etiquetas = modelo_preds
|
|
|
|
preds = np.argmax(preds, axis=-1)
|
|
|
|
return {'accuracy': accuracy_score(preds, etiquetas),
|
|
'f1': f1_score(preds, etiquetas)}
|
|
|
|
|
|
|
|
# iniciamos los argumentos del entrenador
|
|
args_entrenamiento = TrainingArguments(output_dir='../../training/glue-trainer',
|
|
evaluation_strategy='steps',
|
|
logging_steps=100,
|
|
)
|
|
|
|
|
|
# iniciamos el entrenador
|
|
entrenador = Trainer(model=modelo_bert,
|
|
args=args_entrenamiento,
|
|
train_dataset=token_dataset['train'],
|
|
eval_dataset=token_dataset['validation'],
|
|
data_collator=data_collator,
|
|
tokenizer=tokenizador,
|
|
compute_metrics=evaluacion
|
|
)
|
|
|
|
# entrenamiento
|
|
entrenador.train()
|
|
|
|
|
|
# evaluaci贸n desde el entrenador
|
|
print(entrenador.evaluate())
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|