作者 | 胡玥团队
编辑 | 陈大鑫
国际语义评测研讨会(International Workshop on Semantic Evaluation, SemEval)是由ACL下属的SIGLEX主办,是全球范围内影响力最强、规模最大、参赛人数最多的自然语言语义评测竞赛。
在本届SemEval-2020国际语义评测大赛中,中国科学院信息工程研究所胡玥老师带领的参赛团队雏鹰团队(系统名:III-ENLP-NUT)(团队成员:邢璐茜、谢玉强、彭伟)在Task4: Commonsense Validation and Explanation (常识验证与解释, 子任务A-常识验证及子任务B-常识解释选择上均取得了Top-3的好成绩。
https://competitions.codalab.org/competitions/21080
论文链接:https://arxiv.org/abs/2007.00924
以下胡玥团队将为大家带来详细的大赛分享。
1
任务介绍&分析
SemEval-2020 常识验证与解释任务由西湖大学博士生王存翔、 SUTD博士生梁帅龙、西湖大学张岳教授和Queen’s University 朱晓丹教授共同举办。
该赛题进一步划分为三个子任务,分别是
a) Commonsense Validation,
b) Commonsense Explanation(Multi-Choice),
c) Commonsense Explanation(Generation)
子任务A: Commonsense Validation
常识验证子任务中,输入为两个有相似结构的陈述,要求系统判断出哪个陈述是符合常识的,哪个陈述相对不符合常识。评价指标采用准确率。
子任务B: Commonsense Explanation (Multi-Choice)
常识解释选择子任务中,输入为子任务A中不符合常识的错误陈述,以及三个可能为不符合常识陈述的解释选项,要求系统从候选选项集合中,选出最能够解释不符合常识陈述出错的原因。评价指标采用准确率。
子任务C: Commonsense Explanation (Generation)
常识解释生成子任务中,输入同样为子任务A中不符合常识的错误陈述,要求系统⽣成可以解释不符合常识陈述的原因。评价指标采用文本生成的评价指标BLEU以及人工评价。
任务分析
子任务A的目标是检验模型是否具有区分违反常识的自然语言陈述的能力。子任务A的主要挑战在于,违反常识的陈述在句法层面通常是符合语言学结构的,但是在语义层面上,其含义是不符合通常的常识知识,考验模型所具备的常识知识。
子任务B的目标是通过选择合适的解释的方式,检验模型是否真正地理解了一个陈述为什么是违反常识的。子任务B的挑战在于,尽管所有的候选解释都与违反常识陈述的内容有关,但是有些候选项并不包含解释不符合常识的主要原因,反而由于在内容上存在关联,会分散模型的判断能力。
近期一些工作表明,预训练语言模型除了在语言理解上具有很好的性能之外,通过在大规模语料上进行学习,其内部已经习得了某些常识知识。因此,我们不仅仅将预训练语言模型看做上下文编码器,用以产生句子的表示,同时,我们还把预训练语⾔模型看做知识存储器,希望在问答过程中可以隐式地利用预训练语言模型提供常识知识。
针对上述挑战,我们从以下两个主要指导意图出发,以多选型问答的式设计两个⼦任务的解决方法:
(1)意图1:如何“唤醒”并利用预训练语言模型内部的隐式知识来帮助完成常识验证和解释任务?
(2)意图2:丰富违反常识陈述的上下文是否能够/如何帮助系统更好地选择正确的解释?
针对第一点,我们设计了一种基于提示模板(prompt template)的方法,用于重构子任务输入以适用于问答任务。
针对第二点,我们为子任务B构建了一个提示问题(prompt question),并且利⽤额外的信息对其进行扩展,以提供对比信息,帮助模型能够定位到造成违反常识的原因。
此外,我们还探索了基于预训练语言模型打分的方法来完成常识验证子任务,并探索了预训练语言模型内部隐含的常识知识能够在多大程度上帮助常识验证子任务。
2
摘要&介绍
摘要
本文介绍了针对SemEval Task4的前两个子任务的系统:常识验证和解释。为了阐明判断的意图并注入对比信息以供选择,我们提出了带有模板的输入重建策略。具体来说,我们将子任务形式化为多项问题,并使用提示模板构造输入,然后,将最终回答预测视为子任务的结果。实验结果表明,与基准系统相比,我们的方法具有显着的性能。我们的方法在前两个子任务的两个正式测试集中都获得了第三名,其准确度分别为96.4和94.3。
介绍
自然语言理解(NLU)要求系统不仅能够弄清文本的语义,而且能够在现实世界的常识知识的约束下理解文本。识别无意义的自然语言陈述,并产生对无意义的文本的解释的能力是实现对自然语言理解的基础。SemEval-2020任务4提供了结构良好的评估任务,旨在评估基于常识验证和解释的系统能力。
常识验证和解释(ComVE)任务分为三个子任务:验证、解释选择、解释生成。
我们主要关注并参与前两个子任务。第一个子任务(subtaskA)的目标是检查系统区分区别于常识的自然语言语句(即,无意义/错误语句)的能力。第二个子任务(subtaskB)的目标是测试系统是否可以正确理解造成反事实的原因。在子任务A中,区分无意义的陈述所面临的挑战在于,这种陈述通常在句法层面上符合语言结构,但其含义却不符合语义层面上的一般常识。在子任务B中,为虚假陈述选择适当的解释的困难在于,尽管候选解释与虚假陈述的内容相关,但它们可能不包含解释虚假陈述的主要原因,并且会分散系统的注意力。
为了解决上述挑战,我们首先将两个子任务形式化为一种多选问答(QA)任务。此外,我们将PLM用作上下文编码器来生成句子的表示形式,还通过两阶段的预训练将PLM视为知识存储,可以在回答问题时隐式提供常识知识。
为了应对前面提到的挑战,我们设计了多选QA方式解决两个子任务的方法,具有以下两个指导意图:
(a)如何唤醒和利用PLM的隐性知识进行常识验证和解释 。
(b)上下文的扩展将如何帮助系统为错误陈述选择正确的解释。
对于第一点,我们探索了一种基于模板的方法来重建编码器的输入。
在子任务A中,我们设计了一个提示性问题,并将此子任务转换为多项选择QA样式格式,其中将语句用作候选答案。
在子任务B中,我们将带有提示模板的错误陈述重新格式化,比如A陈述是反事实的,是因为B解释。提示模板旨在激活预训练模型内部的常识知识,并且可以将其视为查询以检索PLM中的常识知识。另外,提示模板丰富了PLM的输入,以明确表达子任务的意图。
对于第二点,我们建议在子任务B中用更多上下文扩展prompt question,带有更多文本信息,比如正确和错误陈述的对比信息。
3
方法
任务定义 :5个元素 ${S^1, S^2, O^1, O^2, O^3}$分别表示两个陈述和三个解释。${S^1, S^2}$ 一个是真实事实。一个是反事实。$O^i$ 只有一个是正确的解释原因。
我们把两个子任务转成多选问题,包含一个PLM的编码器和一个任务确定的分类层。对于每一个问题答案对,我们可以得到下面的计算公式。inp,表示的是经过重构的输入 。$C^i$表示的是陈述的First Token,即[CLS]。拥有打分更高的候选答案将会被视为最后的预测。
在第1个子任务中,模型要求能够去选择一个反事实的陈述。我们把这个子任务转成多选的qa问题。其中问题是我们人工构造的一个prompt question。
这个prompt question有两个功能:
第一,他能够去检索(激活)预训练语言模型内部的常识知识;
第二,扮演一个潜在问题的角色,用有意义的陈述来回答。
因此我们直接构造了一个启发式的prompt question,比如:If the followingstatement is in common sense?
我们认为这种方式,从语义角度来说,能够包含子任务的背后的意图(验证常识).
所以对每一个样例,我们都能够去构造一个这样子的问题和陈述对。然后分别取每一个陈述的cls向量,作为分类层的输入,得到最后的结果。除此之外,考虑到长度的限制以及计算效率,我们用另一个方式去结合问题和陈述。比如:[CLS] If “ Si ” is in common sense? [SEP].
解释选择方法
对于第二个来说系统需要从三个候选当中去选择最合理的解释。这也是一个很直觉的多选任务,但是we argue:错误的陈述从语法上来说是一个完全正确的自然语言的句子,如果直接把这个错误的陈述和每一个候选解释连接起来,可能会干扰模型的表现。也就是说模型非常容易去关注到陈述和解释之间的相似性,而不是我们所需要的因果关系。基于上述考虑,我们会构造一个prompt template,为了能够让模型去理解作为待回答的问题假陈述。
因此我们构造的模板如下:[CLS] Sf is against common sense because Oj [SEP] .下划线会被这个候选的解释去替代。
然而如果仅仅是使用这种错误的事实信息是不足够的。他会干扰模型发现在错误事实和候选解释间的因果关系的能力。我们对数据进行了观察,发现 true statement经常会和false statement,共享同一个主题。另外true statement的内容是in come sense的。所以我们重新利用上真实陈述的信息,可以与错误的事实形成了一个对比的信息。因此我们又构造了如下的模板:
[CLS] If St is in common sense. [SEP] Sf is against common sense because Oj [SEP]
4
实验&结果
具体的实验设置大家可以移步论文,这里就不作赘述了。下图是我们对两个子任务构造的模板:
我们在两个子任务上进行了实验。其中omcs是指我们用额外的常识语料对模型进行二阶段训练。P和C表示对应的模板。在子任务一上,我们发现通过增加模板信息能够使模型效果提升,通过额外的语料去预训练语言模型,能够达到一个更好的效果,但是两个模板在子任务一上面的表现并不是很明显,我们认为这个原因是因为这两个模板带来的效果是一致的,即使他们的表现形式有所不同。
对于第2个子任务来说,我们的模型通过增加P和增加P+C,模型的效果都在提升,说明这两个模板构造获得的语义信息也是有所差异的。和我们的假设一致,通过增加对比信息,模型的效果能够达到最好。
5
讨论
我们想要去探究预训练语言模型当中是否真的隐含了常识知识。因此我们进行如下的操作:对每一个陈述中的token顺序的mask,然后能够得到每一个token的概率值。所有的token概率值乘起来得到这个陈述的概率。因此我们能够去获得真实事实和错误事实的打分。如果模型足够理想的话,那么真实事实的打分肯定是大于错误事实的。如果模型把真实事实的打分,误判成小于错误事实的打分,那么error+1。因此我们可以计算一个准确率,最后我们发现:
RoBERTaLarge 达到79.5%的准确率,RoBERTaOMCS 保持了86.3%的准确率。
子任务A上提问模板效果
表征RoBERTa的原始输入格式
我们在任务a上做了一些case study。
对于第1个例子来说,增加模板能够使得模型都判断准确。说明模板能够去对模型有一定的暗示作用。
对于第2个例子来说,第1个模板任然不奏效,但是第2个模板提供了一个更好的hint。
对于第3个例子来说,所有的模型都做错了。有可能是模型自己的问题,语料当中的偏置或者是TV这个词出现的词频等等。
总之,模板能够帮助模型去理解这个任务中的一些对象,但是在数据集里面仍然有一些还未被解决的问题。
同时我们在任务b上也做了一些case study的展示,我们发现通过增加p+c这个模板,能够对大部分的数据都预判正确,说明这个模板给模型带来的信息还是比较丰富的,比如说显式给出因果关系,以及真实事实和错误事实的对比关系。
除此之外,我们还尝试了数据增强,因为我们发现数据中的错误事实部分是对真实事实进行主语替换,词位置顺序改变等方式,但是增加了部分数据加入训练发现效果并没有带来很大的提升,原因可能是因为模型的效果已经达到了96%+,在通过增加部分数据,效果难以有明显的提升。
中科院信息工程研究所雏鹰团队主要研究方向包括智能对话、机器翻译、阅读理解、跨媒体智能分析等。在ACL,AAAI 、IJCAI、TMM等顶级会议及期刊发表论文70余篇。团队指导老师为胡玥教授,中国科学院信息工程研究所研究员/博士生导师,主要研究方向为人工智能、自然语言处理。
引用
[1] Luxi Xing, Yuqiang Xie, Yue Hu, Wei Peng. IIE-NLP-NUT at SemEval-2020 Task 4: Guiding PLM with Prompt Template Reconstruction Strategy for ComVE, SemEval 2020.
[2] Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, and Veselin Stoyanov. 2019. Roberta: A robustly optimized BERT pretraining approach. CoRR
[3] Shuailong Wang, Cunxiang andLiang, Yili Jin, Yilong Wang, Xiaodan Zhu, and Yue Zhang. 2020. SemEval-2020 task 4: Commonsense validation and explanation. In Proceedings of The 14th International Workshop on Semantic Evaluation. Association for Computational Linguistics
[4] Cunxiang Wang, Shuailong Liang, Yue Zhang, Xiaonan Li, and Tian Gao. 2019c. Does it make sense? and why? a pilot study for sense making and explanation. In Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics, pages 4020–4026, Florence, Italy, July. Association for Computational Linguistics.