valhalla/longformer-base-4096-finetuned-squadv1

valhalla
Pregunta y respuesta

Este es el modelo longformer-base-4096 afinado en el conjunto de datos SQuAD v1 para la tarea de respuesta a preguntas. El modelo Longformer fue creado por Iz Beltagy, Matthew E. Peters, Arman Coha de AllenAI. Como explica el artículo, Longformer es un modelo similar a BERT para documentos largos. El modelo preentrenado puede manejar secuencias de hasta 4096 tokens. Este modelo se entrenó en una GPU v100 de Google Colab. Algunas cosas a tener en cuenta al entrenar longformer para la tarea de QA, por defecto longformer usa atención local de ventana deslizante en todos los tokens. Pero para la QA, todos los tokens de la pregunta deben tener atención global. Para más detalles sobre esto, consulte el artículo. El modelo LongformerForQuestionAnswering lo hace automáticamente. Para permitir que lo haga, la secuencia de entrada debe tener tres tokens de separación, es decir, la secuencia debería estar codificada así: pregunta contexto. Si codifica la pregunta y la respuesta como un par de entrada, entonces el tokenizador se encarga de eso, no debería preocuparse por eso. Los input_ids siempre deben ser un lote de ejemplos.

Como usar

import torch
from transformers import AutoTokenizer, AutoModelForQuestionAnswering

tokenizer = AutoTokenizer.from_pretrained("valhalla/longformer-base-4096-finetuned-squadv1")
model = AutoModelForQuestionAnswering.from_pretrained("valhalla/longformer-base-4096-finetuned-squadv1")

text = "Huggingface ha democratizado el PLN. Muchas gracias a Huggingface por esto."
question = "¿Qué ha hecho Huggingface?"
encoding = tokenizer(question, text, return_tensors="pt")
input_ids = encoding["input_ids"]

# por defecto, la atención es local en todas partes
# el método forward establecerá automáticamente la atención global en los tokens de la pregunta
attention_mask = encoding["attention_mask"]

start_scores, end_scores = model(input_ids, attention_mask=attention_mask)
todos_los_tokens = tokenizer.convert_ids_to_tokens(input_ids[0].tolist())

answer_tokens = todos_los_tokens[torch.argmax(start_scores) :torch.argmax(end_scores)+1]
respuesta = tokenizer.decode(tokenizer.convert_tokens_to_ids(answer_tokens))
# salida => PLN democratizado

Funcionalidades

Modelo similar a BERT para documentos largos
Maneja secuencias de hasta 4096 tokens
Atención local de ventana deslizante por defecto
Atención global para tokens de preguntas en la tarea de QA

Casos de uso

Respuesta a preguntas en documentos largos y complejos
Sistemas de preguntas y respuestas automatizados
Asistentes virtuales y chatbots avanzados
Análisis de documentos extensos