论文笔记整理:申时荣,东南大学博士生。
来源:PAKDD 2020
链接:https://arxiv.xilesou.top/pdf/2002.05295.pdf
1.介绍:
事件分类是一个重要的信息抽取任务,其目的是根据事件的提及实例对事件类别进行分类。目前事件分类的主要方法是基于监督学习的方法。包括依据语义语法特征的分类和依据深度神经网络编码实例特征的分类。
监督学习中的训练数据包括预定义的有限事件类型,以及对应的实例集合,这种方法存在明显的弊端。当事件类型固定后模型就不可扩展,无法处理训练数据中未出现的事件类型。而如果需要针对新的事件类型进行预测,就要重新标记数据并重新训练模型。
事件数据的标记需要很大的成本,事实上,当前的事件抽取更类似于few-shot任务。每个实例依据少量的支撑数据作为证据进行分类,这种方法也更接近人类的思维模式。Few-shot的具体做法就是依据带有类别标记的支撑集作为预测依据,典型的通过生成原型特征向量和基于度量的分类方法对每个query选择最合适类别进行预测。目前在事件分类领域还没有使用few-shot方法训练模型的先例。
但是目前的few-shot方法在训练过程中只考虑到使用支撑集和查询集之间的匹配关系进行训练,这种方法是低效的。由于本身样本的稀少这种方法不能很好的利用支撑集的信息。同时由于支撑集内部的每个实例之间存在差异,之前的方法并没有很好的利用这些信息。
于是本文将事件分类抽象为few-shot任务,并且在传统的训练方法上增加了支撑集内部的交互来提升训练过程中支撑集数据的利用效率。并且在两个典型的时间抽取数据集上都取得了提升。
2.方法:
首先,本文将事件分类定义为few-shot任务:
其中数据格式如下:
K表示了每个类对应的shot数(训练实例数),t表示了对应的类别标记,a表示了每个实例中trigger 的位置,s是实例序列(句子)。
本文的模型包括三个模块:实例编码模块、原型模块和分类模块。
实例编码模块包括嵌入(预训练的词嵌入和位置嵌入)和编码器两个部分组成。其中本位为了对比不同编码器的影响,使用了CNN和Transformer两种编码器。
原型模块主要是通过支撑集中某一类所有的句子向量来计算当前类的原型向量。目前有两种主流的原型向量计算方法,一种是简单平均所有句向量:
另一种是通过注意机制方法:
最后是分类模型,分类模型通过metric得到实例特征和原型的得分来预测其属于哪个类别:
对应的损失函数是:
本文使用而来三种度量学习方法进行比较,分别是余弦距离,欧式距离和CNN生成距离。
此外,为了充分利用支持集,在训练过程中,除了上述的损失之外,额外的支撑集为辅助支撑集和辅助查询集,并且按照之前的模式计算损失,保证使用部分支撑集预测剩余支撑集中的样本的正确性,对应损失为:
3.实验:
作者在ACE2005和TAC KBP两个数据集上进行了实验,结果如下
可以看出,增加支撑集内部的交互对实验结果有绝对提升。
OpenKG
开放知识图谱(简称 OpenKG)旨在促进中文知识图谱数据的开放与互联,促进知识图谱和语义技术的普及和广泛应用。
点击阅读原文,进入 OpenKG 博客。