Press "Enter" to skip to content

《Merge and Label》阅读笔记

Merge and Label: A novel neural network architecture for nested NER

 

ACL2019 剑桥大学

 

Source: Merge and Label: A novel neural network architecture for nested NER

 

Code: Merge and Label

 

Abstract

 

命名实体识别任务(NER)是自然语言处理最佳学习任务之一。然而,大部分方法无法处理嵌套结构,且这种结构经常出现在许多应用。本文提出了一种新型的神经网络结构,这种结构首次将词或实体合并成形成嵌套结构的实体,然后对这些实体一一分别标注。不同于先前的工作,本文提出的方法预测的是真值而不是具体的分割结构,这使得模型能够合并词和实体的表示且保持差异性。我们在ACE2005数据集上取得了最佳F1值(74.6),通过bert能得到82.4,相比于先前方法于相同的数据集取得了近8个F1点的提升。除此之外,我们将我们的方法与常规NER下的最佳方法BiLSTM-CRFs相比,验证了该方法预测嵌套结构的能力不会影响常规NER的预测。

 

Introduction

 

嵌套命名实体识别任务主要解决嵌套实体的识别问题,比如:“United Kingdom” and “The Prime Minister of the United Kingdom”中,让模型识别后者而不是只识别前者。那幺目前普遍主流的NER方法是只能识别非重叠实体。

先前的方法:

 

(1)使用超图来表示重叠实体(2015)

 

(2)后来通过对连续词对添加标签提高性能,原因是防止模型学到虚假嵌套结构(2017)

 

(3)最近,人们通过添加LSTM层来学习超图结构。以及提出一种分段超图方法来获得更多的span特征(2018)

 

本文的将嵌套NER任务分成两个阶段:第一阶段合并实体,第二阶段序列标注,由于模型是前向神经网络层组成,因此完全可微,可通过反向传播训练。

 

Model

模型分为两步:

第一步是鉴别命名实体在不同嵌套级别的实体边界,通过张量M表现(M为一系列的0-1值)
第二步是对合并实体生成新的embedding,该embedding是由上一级的小实体合并而来,生成的embedding将用于后续的序列标注

具体的流程:首先输入X[b,s,e] (b是batch_size,s是句子长度,e是词embedding维度)——》经过一个static层,该层是对数据添加位置信息以及语义信息,这步类似于transformers ——》接着输入structure和update层循环u次得到Xu ——》Xu再经过一次structure层得到实体T和实体边界M,用于下一步对训练和预测(于输出层进行预测)

 

下面对张量进行解释:

 

1. M[b,s-1,L],b是训练样本数,s是一个句子中邻接词对的个数,L是嵌套级别,都是超参数。M中的值属于0到1,越接近于0,说明这对邻接词在当前嵌套级别越可能被合并为一个实体,用于训练

 

2. T[b,s,e,L] 为每个嵌套级别L对应的embedding,用于预测

 

3. D[b,s,k,d] 为方向向量,是实体关系的一种编码,是对邻接实体的一种关系embedding,用于updata层

 

4. R[b,s,k,e] 为一个来自不同层的加权embedding,等价于对相邻实体进行embedding,使得其能够考虑相邻实体。相当于取代unfold操作(这里是针对实体而不是词),用于update层

 

Unfold operators

 

对一个词embedding进行扩展,类似卷积核,使得当前词能够看到相邻k/2的信息。

 

(本质是添加邻居信息),即对于原来的word embedding位置,使其能够看到前后2/k的词的信息

Embed Update layer

 

对embedding维度进行加权归一化,这里类似于attention机制,旨在更新关注最重要的邻居。

这里的求和是对axis=2,即k的维度来求和

Static Layer

 

目标:对每个词添加上下环境信息,类似transformer层,此处对P是一个位置编码。

 

由于to使得word只能看到邻居的信息,因此需要加上from使得其同时考虑自身的信息,此处的P位置编码是学来的。这种位置信息的思路来自于transformer。

Structure Layer

 

这里主要学到“structure”,分三步:

 

1. 确定哪个词或者实体应该在当前嵌套级别被合并,由M给出

 

2. 根据给定的M,确定分割词embedding如何被合并,从而给出每个实体的embedding,T(相同的实体下每个词的embedding接近相等)

 

3. 最后,对于每个词和实体提供到邻近2/k的方向向量

具体流程:

 

1. 首先输入X,经过index将邻近词拼在一起输入前馈神经网络得到当前嵌套级别的M(用于判断是不是合并),以及方向D。

 

2. 对D经过to+cumsum+weght操作,相当于对方向进行合并得到D‘和权重M’

 

3. D’与原始输入X合并,并归一维度后等价与图6的X,然后对其进行加权从而达到合并词embedding到实体embedding T的过程。其中对to操作,个人认为是使得word embedding能够考虑邻近词embedding(更好的合并)

 

4. 对T进行to操作,得到能考虑邻近的R

 

总结: 结构层每次会循环L次(嵌套级别数),最后输出M,T,R,D。

M:用于有监督训练平均绝对误差。其在中间的u次循环中不输出,只在最后一次结构层输出
T:用于预测实体标注。其在中间的u次循环中不输出,只在最后一次结构层输出
R:是当前嵌套级别的输出embedding,已实现合并embedding操作。这次的合并通过M转换得到W,对输入对X加权W,得到合并后的embedding,同时通过to操作使得当前词能够看到邻居信息。对于当前需要合并的实体,其词的embedding是接近相同的。其在中间的u次循环中输出,最后一次结构层不输出
D:是当前嵌套级别的方向向量,作者认为这个向量包含一些有用的方向信息,例如:我们在某个实体下,更关注它的反向方向而不是正向方向。D用于更新层,其在中间的u次循环中输出,最后一次结构层不输出。这里的D作者说理解为类似transformer的位置编码,但实际上是关系编码或者来说是一种方向。

structure的一个简化实例(便于理解)

ps:这里权重 W’ = max(0,1-M‘)

 

具体流程:

 

1. 首先将输入X的word embedding两两输入到前向网络得到D和M

 

2. 接着对D和M使用to操作

 

3. 具体讲kingdom这个词对更新,对于该词,我们进行cumsum,注意这里是从中心分别向两边cumsum,同时此处的the和united取了相反数。这是因为我们对kingdom对反向更敢兴趣。由此得到D‘和M’,由M‘得到W’后对X‘(X经过to操作后)进行加权平均,得到最后对合并实体embedding T

 

Update Layer

 

接受structure层的R和D,添加主题信息,对输入对Embedding进行更新 ,并自动加权平均

Loss

对于实体边界检测,用的MAE,平均绝对误差函数;对于序列标注用的,交叉熵;
总的loss是上面相加

Result

 

ACE2005,取得最佳效果。2019那片论文用了额外的标注数据,用于训练指代关系。且解码速度远远快于其他论文。

OntoNotes,与主流方法的效果接近

Ablations

Conclusion

 

本文提出了一种平滑合并实体embedding的方法,在nested NER上取得了8个F1值的进步,同时不影响其在flat NER的性能。虽然本模型仅仅是用于训练NER,但是它能提供丰富的实体embedding来更好的帮助下游任务,比如实体链接和指代消解。

 

个人认为该论文的创新点:

 

1. 创新的提出了由低层次的token embedding到高层次的entity embedding的合并方法,同时不改变句子长度。

 

2. 模型在拥有预测nested NER的能力下,没有过多的影响模型预测flat NER的能力。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注