本文主要介绍P-tuning-v2论文中的5种任务,分别为Glue任务、NER任务、QA任务、SRL任务、SuperGlue任务,重点介绍了下每种任务使用的数据集。
一.Glue任务
GLUE(General Language Understanding Evaluation)是纽约大学、华盛顿大学等机构创建了一个多任务的自然语言理解基准和分析平台。GLUE包含九项NLU任务,语言均为英语。GLUE九项任务涉及到自然语言推断、文本蕴含、情感分析、语义相似等多个任务。可分为三大类,分别是单句任务、相似性和释义任务、推理任务。所有任务都是2分类,除了STS-B是一个回归任务,MNLI有3个类别[1][2][3],如下所示:
P-tuning-v2/tasks/glue/dataset.py文件中的task_to_keys字典如下所示:
task_to_keys = {
"cola": ("sentence", None), # 这里的None表示没有第二个句子
"mnli": ("premise", "hypothesis"), # 这里的第一个句子是前提,第二个句子是假设
"mrpc": ("sentence1", "sentence2"), # 这里的第一个句子是句子1,第二个句子是句子2
"qnli": ("question", "sentence"), # 这里的第一个句子是问题,第二个句子是句子
"qqp": ("question1", "question2"), # 这里的第一个句子是问题1,第二个句子是问题2
"rte": ("sentence1", "sentence2"), # 这里的第一个句子是句子1,第二个句子是句子2
"sst2": ("sentence", None), # 这里的None表示没有第二个句子
"stsb": ("sentence1", "sentence2"), # 这里的第一个句子是句子1,第二个句子是句子2
"wnli": ("sentence1", "sentence2"), # 这里的第一个句子是句子1,第二个句子是句子2
}
1.CoLA(The Corpus of Linguistic Acceptability)
纽约大学发布的有关语法的数据集,该任务主要是对一个给定句子,判定其是否语法正确,因此CoLA属于单个句子的文本二分类任务。
2.SST(The Stanford Sentiment Treebank)
斯坦福大学发布的一个情感分析数据集,主要针对电影评论来做情感分类,因此SST属于单个句子的文本分类任务(其中SST-2是二分类,SST-5是五分类,SST-5的情感极性区分的更细致)。
3.MRPC(Microsoft Research Paraphrase Corpus)
由微软发布,判断两个给定句子,是否具有相同的语义,属于句子对的文本二分类任务。
4.STS-B(Semantic Textual Similarity Benchmark)
主要是来自于历年SemEval中的一个任务(同时该数据集也包含在了SentEval),具体来说是用1到5的分数来表征两个句子的语义相似性,本质上是一个回归问题,但依然可以用分类的方法做,因此可以归类为句子对的文本五分类任务。
5.QQP(Quora Question Pairs)
由Quora发布的两个句子是否语义一致的数据集,属于句子对的文本二分类任务。
6.MNLI(Multi-Genre Natural Language Inference)
同样由纽约大学发布,是一个文本蕴含的任务,在给定前提(Premise)下,需要判断假设(Hypothesis)是否成立,其中因为MNLI主打卖点是集合了许多不同领域风格的文本,因此又分为matched和mismatched两个版本的MNLI数据集,前者指训练集和测试集的数据来源一致,而后者指来源不一致。该任务属于句子对的文本三分类问题。
7.QNLI(Question Natural Language Inference)
其前身是SQuAD 1.0数据集,给定一个问句,需要判断给定文本中是否包含该问句的正确答案。属于句子对的文本二分类任务。
8.RTE(Recognizing Textual Entailment)
和MNLI类似,也是一个文本蕴含任务,不同的是MNLI是三分类,RTE只需要判断两个句子是否能够推断或对齐,属于句子对的文本二分类任务。
9.WNLI(Winograd Natural Language Inference)
一个文本蕴含任务,二分类任务,判断两个句子含义是否一样。
从官网GLUE Tasks来看,现在又多了一个Diagnostics Main分类任务,如下所示:
二.NER任务
主要是处理脚本P-tuning-v2/tasks/ner/dataset.py文件。
1.conll2003数据集
(1)简介
Conll-2003数据集是由欧洲计算语言学学会(CoNLL)于2003年发布的一个英语命名实体识别数据集。该数据集包含了英语新闻文本中的实体类别和实体位置信息。其中,实体类别包括人名、地名、组织名和其他实体。实体位置信息以标注的方式呈现,即以实体开始和结束的字符索引表示。Conll-2003数据集由训练集、开发集和测试集组成,用于训练和评估命名实体识别模型。
(2)下载地址
链接:https://www.cnts.ua.ac.be/conll2002/ner/
2.conll2004数据集
(1)简介
CoNLL04数据集由《华尔街日报》和美联社的新闻文章组成。CoNLL04定义了4种实体类型,包括位置(Loc)、组织(Org)、人(Peop)和其他(Other),以及5种关系类别,即坐落在(Locate_In)、基于组织的在(OrgBased_In)、住在(Live_In)、杀死(Kill)和工作在(Work_For)。
(2)下载地址
链接:https://www.clips.uantwerpen.be/conll2003/ner/
3.ontonotes数据集
(1)简介
OntoNotes 5.0是OntoNotes项目的最后一个版本,是BBN Technologies、科罗拉多大学、宾夕法尼亚大学和南加州大学信息科学研究所之间的合作项目。该项目的目标是对一个大型语料库进行注释,该语料库由三种语言(英语、汉语和阿拉伯语)的各种类型的文本(新闻、电话对话、网络日志、usenet新闻组、广播、脱口秀)组成,包含结构信息(语法和谓词论证结构)和浅层语义(与本体和核心参考相关联的词义)。
(2)下载地址
链接:OntoNotes Release 4.0:https://catalog.ldc.upenn.edu/LDC2011T03;OntoNotes Release 5.0:https://catalog.ldc.upenn.edu/LDC2013T19
三.QA任务
主要是处理脚本P-tuning-v2/tasks/qa/dataset.py文件。
1.SQuAD 1.1数据集
SQuAD是由Rajpurkar等人提出的一个抽取式QA数据集。该数据集包含10万个(问题,原文,答案)三元组,原文来自于536篇维基百科文章。对于每个文章的问题(<=5),有很多标注人员标注答案,且答案出现在原文中。https://huggingface.co/datasets/squad
训练集数据如下所示:
验证集数据如下所示:
2.SQuAD 2.0数据集
相较SQuAD 1.1中的10万问答,SQuAD 2.0又新增了5万个人类撰写的问题——而且问题不一定有对应答案。https://huggingface.co/datasets/squad_v2
训练集数据如下所示:
验证集数据如下所示:
四.SRL任务
主要是处理脚本P-tuning-v2/tasks/srl/dataset.py文件。语义角色标注(Semantic Role Labeling)的目标主要是识别出句子中Who did What to Whom, When and Where。英文数据集主要有CoNLL-2005和CoNLL-2012提供的标注数据集,其中CoNLL-2005的数据集来源于Penn Tree Bank,CoNLL-2012的数据集来源于OntoNotes v5.0。
1.conll2005数据集
链接:https://github.com/strubell/preprocess-conll05
2.conll2012数据集
链接:https://cemantix.org/conll/2012/data.html
五.SuperGlue任务
主要是处理脚本P-tuning-v2/tasks/superglue/dataset.py文件。SuperGLUE(General Language Understanding Evaluation)是一个广泛用于测试自然语言理解模型性能的基准测试集合,由斯坦福大学等机构联合开发。它是自然语言理解领域最具挑战性的测试集之一,旨在推动自然语言处理技术的发展。SuperGLUE中包含BoolQ、CB、COPA、MultiRC、ReCoRD、RTE、WiC、WSC 8个子数据集。详情可参考论文:https://w4ngatang.github.io/static/papers/superglue.pdf。
task_to_keys = {
"boolq": ("question", "passage"), # boolq数据集:包含问题和段落,预测段落是否包含答案
"cb": ("premise", "hypothesis"), # cb数据集:包含前提和假设,预测假设是否为前提的蕴含
"rte": ("premise", "hypothesis"), # rte数据集:包含前提和假设,预测假设是否为前提的蕴含
"wic": ("processed_sentence1", None), # wic数据集:包含2个句子和1个多义词,预测2个句子中的单词含义是否相同
"wsc": ("span2_word_text", "span1_text"), # wsc数据集:包含1个句子和2个名词短语,预测哪个名词短语更符合句子中的指代关系
"copa": (None, None), # copa数据:包含1个问题和2个候选答案,预测哪个答案更符合问题的语境
"record": (None, None), # record数据集:包含1篇新闻文章和1个关于文章的完形填空式问题,预测问题的被屏蔽的实体
"multirc": ("paragraph", "question_answer") # multirc数据集:示例由上下文段落、问题和可能答案列表组成,预测答案是否正确
}
1.BoolQ数据集
BoolQ(Boolean Questions)是一项QA任务,预测段落是否包含答案。
2.CB数据集
CB(CommitmentBank)是一个短文本语料库,根据给定的前提和假设,判断假设是否为前提的蕴含。
3.RTE数据集
RTE(Recognizing Textual Entailment)数据集来自一系列关于文本蕴涵的年度竞赛,判断给定的两个句子是否具有蕴含关系。
4.WiC数据集
WiC(Word-in-Context)是一个词义消歧任务,作为句子对的二元分类。给定两个文本片段和一个出现在两个句子中的多义词,任务是确定该词在两个句子中是否以相同的含义使用。
5.WSC数据集
WSC(Winograd Schema Challenge)在GLUE中以NLI任务出现,给定一个句子和两个名词短语,判断哪个名词短语更符合句子中的指代关系。
6.COPA数据集
COPA(Choice of Plausible Alternatives)是一项因果推理任务,给定一个问题和两个候选答案,判断哪个答案更符合问题的语境。
7.ReCoRD数据集
ReCoRD(Reading Comprehension with Commonsense Reasoning Dataset)是一项多项选择的QA任务,每个示例都包含一篇新闻文章和一个关于文章的完形填空式问题,文章中的一个实体被屏蔽掉了,模型需要从提供的段落中给定的可能实体列表中预测被屏蔽的实体。
8.MultiRC数据集
MultiRC(Multi-Sentence Reading Comprehension)是一项QA任务,其中每个示例由上下文段落、关于该段落的问题和可能答案列表组成,由模型预测哪些答案是正确的,哪些是错误的。
参考文献:
[1]GLUE的论文:GLUE: A Multi-Task Benchmark and Analysis Platform for Natural Language Understanding(https://aclanthology.org/W18-5446/)
[2]GLUE的官网:https://gluebenchmark.com/
[3]NLP常见任务介绍:https://www.cnblogs.com/guozw/p/13369757.html
[4]NER常用数据集汇总:https://zhuanlan.zhihu.com/p/606788093
[5]SUPER_GLUE数据集:https://www.modelscope.cn/datasets/modelscope/super_glue/summary