🚀 BART-LARGE在SQuADv1上微调的模型
这是一个在SQuADv1数据集上针对问答任务微调的bart-large模型,可有效用于问答场景,为自然语言处理中的问答需求提供解决方案。
🚀 快速开始
from transformers import BartTokenizer, BartForQuestionAnswering
import torch
tokenizer = BartTokenizer.from_pretrained('valhalla/bart-large-finetuned-squadv1')
model = BartForQuestionAnswering.from_pretrained('valhalla/bart-large-finetuned-squadv1')
question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"
encoding = tokenizer(question, text, return_tensors='pt')
input_ids = encoding['input_ids']
attention_mask = encoding['attention_mask']
start_scores, end_scores = model(input_ids, attention_mask=attention_mask, output_attentions=False)[:2]
all_tokens = tokenizer.convert_ids_to_tokens(input_ids[0])
answer = ' '.join(all_tokens[torch.argmax(start_scores) : torch.argmax(end_scores)+1])
answer = tokenizer.convert_tokens_to_ids(answer.split())
answer = tokenizer.decode(answer)
#answer => 'a nice puppet'
✨ 主要特性
- BART是一个适用于自然语言生成(NLG)和自然语言理解(NLU)任务的序列到序列(seq2seq)模型。
- 可处理长达1024个标记的序列。
- 在问答任务中,将完整文档输入编码器和解码器,并使用解码器的顶层隐藏状态作为每个单词的表示来进行标记分类。
📚 详细文档
模型详情
BART在论文BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension中被提出。为了将BART用于问答任务,我们将完整文档输入编码器和解码器,并使用解码器的顶层隐藏状态作为每个单词的表示,该表示用于对标记进行分类。如论文所述,bart-large在SQuAD上的表现与ROBERTa相当。
属性 |
详情 |
编码器层数 |
12 |
解码器层数 |
12 |
隐藏层大小 |
4096 |
注意力头数量 |
16 |
磁盘占用大小 |
1.63GB |
模型训练
该模型在Google Colab的v100 GPU上进行训练。你可以通过以下链接找到微调的Colab笔记本:

结果
实际结果比论文中给出的略差。论文中作者提到bart-large达到了88.8的精确匹配率(EM)和94.6的F1分数。
指标 |
值 |
精确匹配率(EM) |
86.8022 |
F1分数 |
92.7342 |
由Suraj Patil用心创建
