1 前言
关于关系抽取(三元组抽取)的方法有很多,传统的方法采用pipeline方法——先识别文本中所有实体,然后在对识别的实体对遍历判断关系类别,这类方法存在传播误差的缺陷。随着深度学习的应用,在关系抽取的任务上,联合抽取方法(joint extraction method)已成为主流,其大体包括序列标注的方法,基于SeqSeq模式生成方法,还有一种比较新的表格填充(Table Filling)方法。
今天就分享一篇基于表格填充的关系抽取论文——A Novel Global Feature-Oriented Relational Triple Extraction Model based on Table Filling,论文的主要创新不是利用表格填充的方式进行三元组抽取,而是基于该方法提出一个迭代的模型,提升模型对全局特征(Global Feature)的学习,进而提高识别效果。文中的全局特征作者是这么理解的:例如文本“张三和李四来自北京”包含三元组(张三,来自,北京)和(李四,来自,北京),在识别过程中,其实第一个三元组对第二个是有影响的——“张三”与“李四”在语义上有并列关系,知道“张三”与“北京”关系,也就能推理出“李四”与“北京”的关系。而之前很少方法考虑三元组之间的全局特征的影响,这便是论文研究的出发点。分享这篇论文,觉得有两点可以值得借鉴:1)利用表格填充的方式进行三元组抽取; 2)如何进行文本中三元组之间的全局特征学习。下面就围绕这两点进行详细介绍。
2 模型
在介绍模型前,先介绍如何将三元组抽取任务转化表格填充方法进行识别。
2.1 表格填充
对一个文本“Edward Thomas and John are from New York City, USA.”例子来说,其中关系live in存在以下(subject,object) pair: (EdwardThomas, New York City), (Edward Thomas, New York), (Edward Thomas, USA), (John, New York City), (John, New York) and (John, USA)
接着按这样的方式定义:将文本句子横纵排行,形成一个的表格,用代表第行与第列的token pair,且代表subject token,代表object token,则对应单元格填充的标签集合为 {"N/A", "MMH", "MMT", "MSH", "MST", "SMH", "SMT", "SS"},标签中字母含义为:
- 第一个字母代表subject是多个token(M),还是单个token(S);
- 第二个字母代表object是多个token(M),还是单个token(S);
- 第三个字母代表token pair是两个实体的开头(H)或结尾(T);
- 不存在上述关系的用N/A填充
需要注意的是H与T代表token pair同时是subject与obecct实体的开头或结尾。拿 (Edward Thomas, New York City)来说, token pair(Edward,New)是两实体的开头,两个实体又是多个token组成,则该token pair对应的label为MMH,token pair(Thomas,City)是两实体的结尾,则标签为MMT,token pair(John, USA)两实体都是单个token组成(single),即label为SS。完整的转化对应关系可见下图。此外,要说明下是,数据集中每种关系r对应一个表格。
按上述方式将三元组抽取任务转化成表格填充任务后,论文按照下模型图进行训练识别。
2.2 模型构建
模型中包含4个部分:an Encoder module, a Table Feature Generation (TFG) module, a Global Feature Mining (GFM) module, and a Triple Generation (TG) module,分别对应为句子编码模块,表格特征学习模块,全局特征学习模块,三元组生成模块。另外,TFG与GFM是一个迭代学习过程。下面详细介绍各个模块计算逻辑。
(1)关于句子编码
输入的文本是利用BERT进行编码,得到表征向量,然后将其对接两个分开的全连接层分别表示subject 特征向量()和object特征向量(),这也代表迭代的第一步,即为:
(2)关于表格学习
对于一个token pair,文中利用()与()进行Hadamard Product operation与全连接操作,来学习其对应的标签特征,即为
其中代表第r种关系,也可理解为第个表格,代表迭代的轮次,代表Hadamard Product计算。
(3)关于全局特征的学习*
关于全局特征前面已提及过,可直接理解为句子中三元组之间是存在相互影响的关系,下面就是展示如何学习这类特征的。具体分三步,假设迭代到第轮:
- 第一步,将前面学习的每个表格特征进行concatenate操作,形成一个融合的变量,然后进行最大池化+FFN操作,分别生成subject导向的表格向量和object导向的表格向量,即为:
- 第二步,使用Multi-Head Self-Attention进行交互计算,学习token pair与relation的全局关系信息,即为:
这里要说明下是,代表和分别按这种方式计算,最后对应得到和。此外,进行了两次Multi-Head Self-Attention计算,第一次是自我编码,第二次是将原始文本特征信息()融合起来编码。 -
第三步,考虑模型的深度和迭代的复杂度,导致训练中容易出现梯度消失的问题,论文在第二步的计算结果上加了一个残差网络,用LayerNorm方式来实现,即:
(4)关于三元组抽取
在前面迭代计算结束后,用最后一个轮学到的表格特征,预测各个关系表格中单元格值,按一定解码方式生成最终的三元组,即为:
2.3 解码输出
在学习到各个关系表格中的标签值后,就的进行解码,输出三元组的形式。文中提出三种解码方式,对照下图,在关系live in 表中可解码为:
- 方式1: 前向解码,subject与object都按前向的方向进行搜索。如(Edward,New) 识别为MMH,按行列前向方向搜索,搜索到(Thomas,York)为MMT,遇到T结束,则三元组为(Edward Thoms,live in,New York),对应图中的红色箭头。
- 方式2:后向解码,subject与object都按后向的方向进行搜索 (Edward, City)识别为MMT,按行列反方向搜索,则搜索的三元组为(Edward Thoms,live in,New York City),对应图中的绿色箭头。
- 方式3:single解码, 遇到SS标签,直接解析,如(John,USA)识别为SS,则直接解析三元组为(John, live in , USA),对应图中的蓝色箭头。
文中提及,后向解码主要是便于识别嵌套的实体,像New York与New York City,这种情况并不是很多。一般情况,前向解码和single解码就够处理。
实验
文中在常见的5个关系抽取数据集上进行了对比实验,其main result如下所示:
从实验结果可以看出,论文提出的方法效果是很明显的,在其中两个数据集达到2个点左右提升。此外,也能对比看出表格填充方式进行关系抽取的效果,论文提出的全局特征学习方法也是同样有效果的。关于实验中其他结果与细节,这里就不过多介绍,有兴趣可去详看。
结语
本次比较详细的分享一篇关于利用表格填充方式和学习全局特征的思路进行关系抽取的论文,觉得这核心两点是值得借鉴学习的。在实际项目中,尤其在构建知识图谱中,可以考虑用这种方式进行三元组抽取。此外,论文开源代码:https://github.com/neukg/GRTE,可直接上手尝试。
更多文章可关注笔者公众号:自然语言处理算法与实践