语言: 中文
标签:
- 问答系统
- 长文本处理
- 问答任务
数据集:
- SQuAD_v2
模型索引:
- 名称: mrm8488/longformer-base-4096-finetuned-squadv2
结果:
- 任务:
类型: 问答系统
名称: 问答任务
数据集:
名称: SQuAD_v2
类型: SQuAD_v2
配置: squad_v2
分割: 验证集
指标:
- 类型: 精确匹配率
值: 79.9242
名称: 精确匹配
已验证: 是
验证令牌: eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJoYXNoIjoiYTc0YWU0OTlhNWY1MDYwZjBhYTkxZTBhZGEwNGYzZjQzNzkzNjFlZmExMjkwZDRhNmI2ZmMxZGI3ZjUzNzg4NyIsInZlcnNpb24iOjF9.5ZM5B9hvMhKqFneX-R53j2orSroUQNNov9zo7401MtyDL1Nfp2ZgqoUQ2teCy47pBkoqktn0j9lvUFL3BjmlAA
- 类型: F1分数
值: 83.3467
名称: F1值
已验证: 是
验证令牌: eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJoYXNoIjoiYzBiZDQ1ODg3MDYyODdkMGJjYTkxM2ExNzliYmRlYjllZTc1ZjIxODkxODkyM2QzZjg5MDhiMmQ2MTFjNGUxYiIsInZlcnNpb24iOjF9.bs4hfGGy_m5KBue2qmpGCWL28esYvJ9ms2Bhwnp1vpWiQbiTV3TDGk6Ds3wKuaBTEw_7rzePlbYNt9auHoQaDQ
基于SQuAD v2微调的Longformer-base-4096模型
Longformer-base-4096模型在SQuAD v2上进行了问答下游任务的微调。
Longformer-base-4096简介
Longformer是一个专为长文档设计的Transformer模型。
longformer-base-4096
是一个类似BERT的模型,基于RoBERTa检查点初始化,并在长文档上进行了掩码语言建模(MLM)预训练。它支持最长4,096个token的序列。
Longformer结合了滑动窗口(局部)注意力机制和全局注意力机制。全局注意力根据任务需求由用户配置,使模型能够学习任务特定的表示。
下游任务(问答)详情 - 数据集 📚 🧐 ❓
数据集ID:来自HuggingFace/Datasets的squad_v2
数据集 |
分割 |
样本数 |
squad_v2 |
训练集 |
130319 |
squad_v2 |
验证集 |
11873 |
如何通过datasets加载:
!pip install datasets
from datasets import load_dataset
dataset = load_dataset('squad_v2')
在数据集查看器中查看更多关于此数据集及其他数据集的信息。
模型微调过程 🏋️
训练脚本是基于此脚本稍作修改的版本。
模型实战 🚀
import torch
from transformers import AutoTokenizer, AutoModelForQuestionAnswering
ckpt = "mrm8488/longformer-base-4096-finetuned-squadv2"
tokenizer = AutoTokenizer.from_pretrained(ckpt)
model = AutoModelForQuestionAnswering.from_pretrained(ckpt)
text = "Huggingface推动了NLP的民主化。非常感谢Huggingface的贡献。"
question = "Huggingface做了什么?"
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)
all_tokens = tokenizer.convert_ids_to_tokens(input_ids[0].tolist())
answer_tokens = all_tokens[torch.argmax(start_scores) :torch.argmax(end_scores)+1]
answer = tokenizer.decode(tokenizer.convert_tokens_to_ids(answer_tokens))
使用HuggingFace的pipeline
from transformers import AutoTokenizer, AutoModelForQuestionAnswering, pipeline
ckpt = "mrm8488/longformer-base-4096-finetuned-squadv2"
tokenizer = AutoTokenizer.from_pretrained(ckpt)
model = AutoModelForQuestionAnswering.from_pretrained(ckpt)
qa = pipeline("question-answering", model=model, tokenizer=tokenizer)
text = "Huggingface推动了NLP的民主化。非常感谢Huggingface的贡献。"
question = "Huggingface做了什么?"
qa({"question": question, "context": text})
如果针对相同上下文提问不存在答案的问题,无答案的输出将是<s>
由Manuel Romero/@mrm8488创建 | LinkedIn
在西班牙用❤️制作
