许可协议:apache-2.0
数据集:
- squad
语言:
- en
库名称:transformers
流水线标签:text2text-generation
基于SQuAD微调的t5-large模型:用于生成问题+答案
- 输入:
上下文
(例如新闻文章)
- 输出:
问题 <sep> 答案
训练数据(SQuAD)中的答案高度依赖原文提取,因此该模型将生成基于原文的答案。若需生成抽象性问题/答案,可使用我们在RACE数据集上训练的模型:https://huggingface.co/potsawee/t5-large-generation-race-QuestionAnswer。
模型详情
t5-large模型在SQuAD数据集上微调,输入为上下文/段落,输出为问题及后续答案。这是我们MQAG论文中问题生成流程(即g1
)的首个组件,项目GitHub仓库详见:https://github.com/potsawee/mqag0。
模型使用方法
通过以下代码快速使用模型。可在generate()
中设置do_sample=True
以获取不同的问题-答案组合。
>>> from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
>>> tokenizer = AutoTokenizer.from_pretrained("potsawee/t5-large-generation-squad-QuestionAnswer")
>>> model = AutoModelForSeq2SeqLM.from_pretrained("potsawee/t5-large-generation-squad-QuestionAnswer")
>>> context = r"""切尔西的短暂复苏延续了三连胜,同时使挣扎中的莱斯特城遭遇五连败。
凭借欧冠战胜多特蒙德的士气,切尔西开局强势,本·奇尔韦尔面对旧主小角度凌空破门。
切尔西的若昂·菲利克斯和莱斯特的基尔南·杜斯伯里-霍尔两分钟内先后击中门框,随后菲利克斯的进球因越位被VAR取消。
帕森·达卡在菲利克斯禁区外犹豫被里卡多·佩雷拉断球后,轰入一记精彩扳平球。
但凯·哈弗茨在上半场伤停补时第六分钟抓住机会,接恩佐·费尔南德斯的精妙挑传完成优雅挑射。
米哈伊洛·穆德里克认为他已为蓝军首开纪录,但进球因越位无效。
马特奥·科瓦契奇锁定胜局,将穆德里克的头球摆渡凌空垫入网窝。
狐狸军团以十人应战(沃特·法斯因二次黄牌被罚下),现仅领先降级区1分。
""".replace('\n', ' ')
>>> inputs = tokenizer(context, return_tensors="pt")
>>> outputs = model.generate(**inputs, max_length=100)
>>> question_answer = tokenizer.decode(outputs[0], skip_special_tokens=False)
>>> question_answer = question_answer.replace(tokenizer.pad_token, "").replace(tokenizer.eos_token, "")
>>> question, answer = question_answer.split(tokenizer.sep_token)
>>> print("问题:", question)
问题: 谁为切尔西攻入制胜球?
>>> print("答案:", answer)
答案: 马特奥·科瓦契奇
生成干扰项(多选题设置中的其他选项)
上下文 ---> 问题 + (A) 答案 (B) 干扰项1 (C) 干扰项2 (D) 干扰项3
请参考我们的干扰项生成模型,例如:https://huggingface.co/potsawee/t5-large-generation-race-Distractor
引用
@article{manakul2023mqag,
title={MQAG: 基于摘要信息一致性的多选题问答与生成评估},
author={Manakul, Potsawee and Liusie, Adian and Gales, Mark JF},
journal={arXiv preprint arXiv:2301.12307},
year={2023}
}