--- 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()) ```