论文解读系列NER方向:W2NER (AAAI 2022)
Posted JasonLiu1919
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了论文解读系列NER方向:W2NER (AAAI 2022)相关的知识,希望对你有一定的参考价值。
文章目录
基本信息
论文标题:
Unified Named Entity Recognition as Word-Word Relation Classification
论文地址:
https://arxiv.org/abs/2112.10070
论文代码:
https://github.com/ljynlp/W2NER
简介
NER 任务主要有三种类型:Flat(扁平)、overlapped(重叠或嵌套)、discontinuous(非连续),越来越多的研究致力于将它们统一起来。此前的 SOTA方案主要基于 Span 和 Seq2Seq 模型, 不过这类方法很少关注边界,可能会导致后续的偏移。2022 AAAI的论文《Unified Named Entity Recognition as Word-Word Relation Classification》介绍了一个统一NER的SOTA模型W2NER,该模型在14个包含扁平实体、重叠实体和非连续实体的数据集(8个英文 + 6个中文)上,均取得了SOTA的结果(F1指标)。W2NER将NER问题视为词词关系分类,为此引入两种词词关系:NNW(Next-Neighboring-Word)和 THW-*(Tail-Head-Word-*)。具体而言,构造一个 2D 的词词关系网格,然后使用多粒度 2D 卷积以更细致地抽取网格表示。最后,使用一个 共同预测器(co-predictor) 来推理词-词关系。
多类型NER抽取方法
多类型NER抽取方法大致可以分为4种:
- 序列标注方法
- 基于超图
- 基于sequence-to-sequence的生成方法
- 基于span的方法,比如指针网络或token 对的形式
1). 基于序列标注
序列标注方法比较常用,给每一个 Token 一个标签(比如BIO标注标准中的一个标签)。输入序列会使用已有的表征框架(如 CNN、LSTM、Transformer等) 表征成序列特征,再过一层CRF以得到各个Token的标签结果。对于多类型NER,可以将**「多分类」改为「多标签分类」**或将多标签拼成一个标签。前者不容易学习,而且预测出来的 BI 可能都不是一个类型的;而后者则容易导致标签增加,且很稀疏。虽有不少研究,比如《A Neural Layered Model for Nested Named Entity Recognition》提到的动态堆叠平铺 NER 层来识别嵌套实体;《Recognizing Continuous and Discontinuous Adverse Drug Reaction Mentions from Social Media Using LSTM-CRF》的 BIOHD 标注范式(H 表示多个实体共享的部分,D 表示不连续实体中不被其他实体共享的部分),注意 H 和 D 都是实体的 Label,标注时会和 BI 结合使用,如 DB,DI,HB,HI。但总的来说较难设计一个不错的标注 Scheme。
序列标注方法可以很好解决扁平实体的问题,对于嵌套实体通过修改标注可以勉强解决,但是会增加模型复杂度;而面对不连续实体序列标注方法无法解决。所以在只存在扁平实体的情况下,可以选择序列标注的方法,这边推荐一下复旦邱锡鹏老师团队的tener方法,使用transofrmer改进结构的模型。
2). 基于超图
基于超图的方法首次在《Joint Mention Extraction and Classification with Mention Hypergraphs》中提出,用于解决重叠NER问题,后续也被用于不连续实体。这类方法在推理时容易被虚假结构和结构歧义问题影响。
3). 基于 Seq2Seq
seq2Seq用于NER首次出现于《Multilingual Language Processing From Bytes》,输入句子,输出所有实体的开始位置、Span 长度和标签。其他后续应用包括:
- 使用增强的 BILOU 范式解决重叠 NER 问题。
- 基于 BART 通过Seq2Seq+指针网络生成所有可能的实体开始-结束位置和类型序列。
但是这种方法存在解码效率低和Seq2Seq架构固有的暴露偏差(exposure bias)问题。所谓暴露偏差问题是指训练时使用上一时间步的真实值作为输入;而预测时,由于没有标签值,只能使用上一时间步的预测作为输入。由于模型都是把上一时间步正确的值作为输入,所以模型不具备对上一时间步的纠错能力。如果某一时间步出现误差,则这个误差会一直向后传播。
4). 基于Span
基于 Span 的方法将 NER 问题转为 Span 级别的分类问题,具体方法包括:
- 枚举所有可能的 Span,再判断他们是否是有效的 Mention。
- 使用 Biaffine Attention 来判断一个 Span 是 Mention 的概率。
- 将 NER 问题转为 MRC 任务,提取实体作为答案 Span。
- 两阶段方法:使用一个过滤器和回归器生成 Span 的建议,然后进行分类。
- 将不连续的 NER 转为从基于 Span 的实体片段图中找到完整的子图。
这类方法全枚举所有可能spans,因此受到最大span长度和模型复杂度的影响,尤其是对于长span实体。
总的来说,简单的NER 任务目前一般使用序列标注就可以解决,多类型NER效果较好的还是基于 Span 的方法。
NER->词词关系分类
现有大多数NER工作主要考虑更准确的实体边界识别,W2NER作者在仔细重新思考了三种不同类型NER的共同特征后,觉得统一 NER的瓶颈更多在于实体词之间相邻关系的建模。这种邻接相关性本质上描述了文本片段之间的语义连通性,尤其对于重叠和不连续的部分起着关键作用。如下图 a 所示:
因此,文章提出一种词-词关系分类架构——W2NER,通过对实体边界和实体词之间相邻关系进行建模。具体来说,预测两种类型的关系,如上图 b 所示。
-
NNW
:这类关系可以解决实体词识别,指示两个 Token 在一个实体中是否相邻。比如aching-> in
。 -
THW-*
:这类关系主要用以检测实体边界和和实体类型,指示两个 Token 是尾部还是头部,*
标签则对应实体的类型。比如legs->aching, Symptom
,意味着尾部是legs
,头部是aching
,实体类型是Symptom
。
那W2NER如何将NER问题转为词-词关系分类问题?以下为例:
词之间的关系包括以下几种类型:
NONE
:表示词对之间没有任何关系NNW
:词对属于一个实体 Mention的一部分,网格中特定行的 token 在列中有一个连续的 tokenTHW-*
:THW 关系表示网格中行 token 是一个实体 mention 的尾部,网格中列 token 是一个实体 mention 的头部,*
表示实体类型。
Figure 1中的例子的网格化结果如Figure 2 所示。Figure 1 中的两个实体:aching in legs
和 aching in shoulders
,可以通过Figure 2 中的 NNW
关系(aching→in
)、(in→legs
)和(in→shoulders
)和 THW
关系(legs→aching,Symptom
)和(shoulders→aching,Symptom
)解码得出。
而且NNW
和THW
关系还暗示 NER 的其他影响,比如NNW
关系将同一不连续的实体片段关联起来(如 aching in 和 shoulders),也有利于识别实体词(相邻的)和非实体词(不相邻的)。至于THW
关系则有助于识别实体的边界。
W2NER模型框架
整体的网络架构如下图所示:
总的来说,W2NER由3部分组成。首先用 BERT 和 LSTM 抽取输入句子的上下文特征,然后过一个2D 卷积层对词-词关系进行建模和表征,以用于后续的词对关系分类。最后再过一个联合预测器(Co-Predictor)对词-词关系进行推理并产生所有可能的实体 Mention,其中 Biaffine 分类器和 MLP 被联合使用以获得更好的词对分类结果。
Encoder Layer:
- 输入 Bert ,得到 sub-word representation(因为英文使用 word piece的方式,每个token都会被分割成word piece)
- 使用 max pooling 得到 word representations
- 输入到 Bi-LSTM 得到最终 word representations
Convolution Layer:
Encoder层之后接的是卷积层以进一步对抽取的特征进行细化,因为 2D 卷积能很好地处理二维的网格关系,具体又包括三个模块:
- Conditional Layer Normalization(CLN),即带归一化的condition layer。使用CLN以生成词对表示。
- BERT 风格的网格表征以进一步丰富词对表示
- 多粒度膨胀卷积以捕获远近词之间的交互
CLN 部分:
V
i
j
=
CLN
(
h
i
,
h
j
)
=
γ
i
j
⊙
(
h
j
−
μ
σ
)
+
λ
i
j
γ
i
j
=
W
α
h
i
+
b
α
λ
i
j
=
W
β
h
i
+
b
β
μ
=
1
d
h
∑
k
=
1
d
h
h
j
k
,
σ
=
1
d
h
∑
k
=
1
d
h
(
h
j
k
−
μ
)
2
\\mathbfV_i j=\\operatornameCLN\\left(\\mathbfh_i, \\mathbfh_j\\right)=\\gamma_i j \\odot\\left(\\frac\\mathbfh_j-\\mu\\sigma\\right)+\\lambda_i j \\\\ \\gamma_ij = \\mathbfW_\\alpha h_i + \\mathbfb_\\alpha \\\\ \\lambda_ij = \\mathbfW_\\beta h_i + \\mathbfb_\\beta \\\\ \\mu=\\frac1d_h \\sum_k=1^d_h h_j k, \\\\ \\quad \\sigma=\\sqrt\\frac1d_h \\sum_k=1^d_h\\left(h_j k-\\mu\\right)^2
Vij=CLN(hi,hj)=γij⊙(σhj−μ)+λijγij=Wαhi+bαλij=Wβhi+bβμ=dh1k=1∑dhhjk,σ=dh1k=1∑dh(hjk−μ)2
其中
V
\\mathbfV
V是单词对表征矩阵,
V
i
,
j
\\mathbfV_i,j
Vi,j可以看作词
x
i
x_i
xi 和
x
j
x_j
xj 的词表征(
h
i
\\mathbfh_i
hi 和
h
j
\\mathbfh_j
hj)的组合。由于NNW
和THW
具有方向性,所以可以将
x
i
x_i
xi视为
x
j
x_j
xj的条件。
γ
i
j
\\gamma_ij
γij和
λ
i
j
\\lambda_ij
λij是超参数,而
h
i
\\mathbfh_i
hi是这2个参数的条件。
μ
\\mu
μ和
σ
\\sigma
σ分别是均值和标准差,而
h
j
k
h_jk
hjk表示
h
j
\\mathbfh_j
hj的第
k
k
k个维度。
BERT-Style的网格表示效仿BERT的3种表征,也对应引入3种张量表示:词信息(CLN)表征(对应BERT中的token embedding) 、词对的相对位置信息(对应BERT中的 position embedding)和用于区分网格上下三角的区域信息(对应BERT中的 segment embedding)。其中表示词信息的表征来自于前一个模块CLN的输出结果,即 V \\mathbfV V。而词对之间相对位置关系 E d \\mathbfE^d Ed和区域信息 E t \\mathbfE^t Et。
再将3个张量拼接输入到MLP层进行降维和信息融合,以此得到网格表征,至此网格表征具有位置-区域敏感的特点。再接一个多粒度膨胀卷积(粒度=1,2,3),用以捕获不同距离词的交互信息。最后将三个膨胀卷积结果拼起来得到最终的词对网格表征 Q \\mathbfQ Q。
Co-Predictor Layer:
这个步骤主要是利用MLP对上述卷积层得到的网格表征预测词对关系。由于之前的研究表明使用**双仿射预测器(Biaffine Predictor)**可以提升MLP预测器在关系分类上的性能,所以文章也使用2个Predictor进行词对的关系分类,然后合并后作为最后输出结果。
-
Biaffine Predictor
词对 ( x i , x y ) (x_i,x_y) (xi,xy)之间的Biaffine分类器关系得分计算如下:
s i = MLP 2 ( h i ) o j = MLP 3 ( h j ) y i j ′ = s i ⊤ U o j + W [ s i ; o j ] + b \\beginaligned \\mathbfs_i &=\\operatornameMLP_2\\left(\\mathbfh_i\\right) \\\\ \\mathbfo_j &=\\operatornameMLP_3\\left(\\mathbfh_j\\right) \\\\ \\mathbfy_i j^\\prime &=\\mathbfs_i^\\top \\mathbfU o_j+\\mathbfW\\left[\\mathbfs_i ; \\mathbfo_j\\right]+\\mathbfb \\endaligned siojyij′论文解读系列NER方向:FGN (2020)