2022 年最新的实体识别抽取模型框架W2NER

发布于:2023-01-22 ⋅ 阅读:(315) ⋅ 点赞:(0)

目录

一 、前言

二、抽取模型样例

1.样例简介

2.具体如何建模THW和NHW的向量表示?

三、模型结构

 一:Encoder Layer

二:Convolution Layer卷积层

1.Conditional Layer Normalization

2.BERT-Style Grid Representation Build-Up

3.Multi-Granularity Dilated Convolution

三:Co-Predictor Layer联合预测层

1、Biaffifine Predictor(双仿射预测器)

 2、基于词对网格表示的 MLP 预测器

四、Decoding:


一 、前言

论文链接:https://arxiv.org/abs/2112.10070

开源代码:https://github.com/ljynlp/W2NER

  W^{2}NER是2022年NER任务的最新SOTA的论文————Unified Named Entity Recognition as Word-Word Relation Classification,统一的命名实体识别词与词的关系分类。 主要解决了Flat普通的扁平实体NER,Nested嵌套NER和discontinuous不连续的NER等三种NER子任务,在14个数据集上刷新了SOTA。

简单提一下对于之前的多类型 NER 方法大致可分为四大类:

1)序列标记,

2)基于超图的方法

3)序列到序列的方法

4)基于跨度的方法

二、抽取模型样例

1.样例简介

        本篇W2NER任务采用了Word-Pair——构建词和词的关系的方式,主要是由构建以下两个关系。

        1.1、Next-Neighboring-Word(NHW):表示word和它相邻的word之间的关系,(相邻单词)

        1.2、Tail-Head-Word-*(THW-*):表示tail-word和head-word之间的连接关系,并且带有label实体的类型信息。THW关系表示(下图)网格某行的词是实体的尾部,网格某列的词是实体的头部。“*”表示实体类型。

        下面是抽取样例:

{
    'text': 'I am having aching in legs and shoulders',
    'entity_list': [
        {'entity_text': 'aching in legs', 'index': [3, 4, 5], 'entity_type': 'Symptom'},
        {'entity_text': 'aching in shoulders', 'index': [3, 4, 7], 'entity_type': 'Symptom'}
    ]
}

        (a):e1 是一个平面实体,在跨度“aching in”处与一个不连续的实体 e2 重叠,它们之间就是重叠嵌套实体

        (b) 论文抽取思想就是将三个 NER 子任务形式化为单词-单词关系分类,其中 Next-Neighboring-Word (NNW) 关系表示单词对作为实体的一个片段连续连接(例如,aching→in),并且Tail-Head-Word-* (THW-*) 关系意味着尾词连接到头部词(例如,腿→疼痛)作为具有“*”类型的实体(例如,症状)的边缘。 

        NNW 关系 (aching→in)、(in→legs) 和 (in→ shou ders) 和 THW 关系 (legs→aching, Symptom) 和 (shoulders→aching) 实体“腿部疼痛”和“肩膀疼痛” ,症状)。此外,NNW 和 THW 关系暗示 NER 的其他影响。例如,NNW 关系将同一不连续实体的片段(例如,“aching in”和“shoulders”)关联起来,它们也有利于识别实体词(neighbouring)和非实体词(non-neighbouring)。THW 关系有助于识别实体的边界,

        本质上使用 W^{2}NER的建模方式,需要找出所有实体的NHW关系和THM-*关系,然后做一个多分类任务。  

2.具体如何建模THW和NHW的向量表示?

        2.1、NER 关系分类方法的示例如上图,表格的上三角部分表示NHW关系标注,下三角区域则表示THW-*表示标注。

        我们利用词对网格来可视化每个词对之间的关​​系(word-word矩阵)。矩阵中定义了两种类型的标记


        2.2.1、NNW 表示 Next-Neighboring-Word 关系,也就是词对网格中的上三角阴影区域部分,(不包括对角线部分),上三角矩阵的元素取值只有0和1,表示:在某个实体中,第i个单词后面接着的是第j个单词,例如在实例中,第三个单词aching后面跟着的单词是in。

        2.2.2、Tail-Head-Word-*,“*”表示实体类型(Tail-Head-Word-enttiy_type),这个类型的标记只会出现在下三角矩阵(包括对角线部分),entity_type就是实体的类型,代码里面其实这个THW-entity_type直接就用entity_type的id就可以了,表示,第i个单词是某个实体类型ID为3的实体的结尾词(tail word),而第j个单词是这个实体的开始词(head word),比如表示单词shoulders是实体的结尾,这个实体的开头是aching,这个实体的类型是Symptom。

        2.3.论文中给出了对于不同NER实体出现的形式:

                                                图二

        单词序列“ABCDE”的四种解码情况。(a) “AB”和“DE”是平面实体。
        (b) 平面实体“BC”嵌套在“ABC”中。
        (c) 实体“ABC”与不连续实体“ABD”重叠。
        (d) 两个不连续的实体“ACD”和“BCE”重叠。
        蓝色和红色箭头表示 NNW 和 THW 关系。

三、模型结构

         整体NER架构。CLN 和 MLP 代表条件层归一化和多层感知器。L 和 N 表示逐元素加法和连接操作。

        上图中的模型结构大致可以分为三个模块,Encoder Layer、Convolution Layer 和 Co-Predictor Layer。

 一:Encoder Layer

        第一部分给定一个输入句子 X = {x1, x2, ..., xN },我们将每个标记或单词 xi 转换为单词片段,然后将它们输入预训练的 BERT 模块。在 BERT 计算之后,每个句子词可能涉及几个片段的矢量表示。在这里,我们使用最大池化来生成基于单词片段表示的单词表示。为了进一步增强上下文建模,采用双向 LSTM生成最终的单词表示,即 H = {h1, h2, ..., hN } ∈ RN×dh ,其中 dh 表示单词表示的维度。(embedding做了一些处理)

二:Convolution Layer卷积层

        通常认为卷积神经网络适合2D网格特征提取,因此设计了卷积层,这部分主要是通过「CLN」将Token的序列(不算batch维和特征dim维的话就是1D)表征变成word-word的网格表征(那它就是2D),并在网格表征上面添加「单词间相对位置表征」「上下三角表征」,最后进一步通过3个「空洞卷积」对网格表征进行进一步编码。它含了3个模块:

1.Conditional Layer Normalization

        用于生成词对网格表示的归一化条件层,将encoder输出的word_embedding输入一个CLN模块,可以得到网格表示的embedding。

        构造Word-Word的网格表征,假设表示第i个单词对第j个单词的关系,进一步说就是在给定第i个单词的情况下单词j的特征,为了达到这种效果,引入了Conditional Layer Normalization(CLN),公式如下:

b7b4fe7ddb31657f34533c047c4e5122.png

        V ∈ RN×N×dh , 其中 Vij 表示词对 (xi , xj ) 的表示。因为NNW和THW关系都是有方向的,即从某行的词xi到某列的词xj(例如,aching→in和legs→aching),词对的表示Vij( xi , xj ) 可以被认为是 xi 的表示 hi 和 xj 的 hj 的组合,其中组合应该意味着 xj 以 xi 为条件。我们采用条件层归一化(CLN)机制来计算 Vij:

        Vij = CLN(hi, hj) = γij (hj - µ σ ) + λij ,

        (1) 其中 hi 是生成增益参数的条件γij = Wαhi + bα 和偏置 λij = Wβhi + bβ 层归一化。

        µ 和 σ 是 hj 元素的平均值和标准差,表示为: µ = 1dh  dh X k=1 hjk,

        σ = vuut 1dh dh X k=1 (hjk - µ)2 。

        (2) 其中 hjk 表示 hj 的第 k 个维度。

         可以看出对第j个单词的表征做normalization,CLN的两个系数和是根据第i个单词的表征学习到的

2.BERT-Style Grid Representation Build-Up

        一个 BERT 样式的网格表示构建以丰富词对的表示网格,根据Bert的三个输入token embeddings、position embeddings和segment embeddings,分别对单词、位置和句子信息进行建模。这里采用类似的思想,张量 V ∈ RN×N×dh 表示词信息,张量 Ed ∈ RN×N×dEd 表示之间的相对位置信息每对单词,一个张量 Et ∈ RN×N×dEt 表示用于区分网格中上下三角形区域的区域信息。然后我们连接三种嵌入并采用多层感知器(MLP)来减少它们的维度并混合这些信息以获得网格 C ∈ RN×N×dc 的位置区域感知表示。整个过程可以表述为: C = MLP1([V; Ed; Et ])。

  • CLN生成的网格表征

  • 单词间相对位置表征,(代码中他们共给距离设置了19个区间,从而降低了位置表征的范围,具体可以看代码)

  • 上下三角矩阵的表征                                                                                                                  最后concat起来得到一个丰富的bert风格式语义网格表示作为下一个模块的输入。

3.Multi-Granularity Dilated Convolution

         捕获近距离和远距离单词之间的交互的多粒度扩张卷积,采用具有不同扩张率 (膨胀率)l(例如,l ∈ [1, 2, 3])的多个二维扩张卷积(DConv)来捕捉不同距离的单词之间的交互,因为我们的模型是预测这些词之间的关系。一个空洞卷积中的计算可以表示为:Ql = σ(DConvl(C)),其中 Ql ∈ RN×N×dc 表示扩张率 l 的扩张卷积的输出,σ 是 GELU 激活函数,之后,我们可以得到最终的词对网格表示 Q = [Q1, Q2, Q3] ∈ RN×N×3dc 。(简单理解:用膨胀系数分别为1,2,3的三个空洞卷积层+GELU,去捕获网格中不同位置的word pairs间的关系,进一步对网格表征进行编码,最后拼接得到网格最终编码。)

三:Co-Predictor Layer联合预测层

        在卷积层之后,我们获得了词对网格表示 Q,使用 MLP 预测每对词之间的关系。通过与用于关系分类的(Biaffifine Predictor)双仿射预测器合作来增强 MLP 预测器(基于词对网格表示的 MLP 预测器)。因此,我们同时采用这两个预测器来计算词对 (xi , xj ) 的两个独立关系分布,并将它们组合为最终预测。

1、Biaffifine Predictor(双仿射预测器

        Biaffine直接把encoder层(Bert+LSTM)的输出word_embedding进行关系分类预测,这里直接使用encoder层(Bert+LSTM)的输出word_embedding(H = {h1, h2, ..., hN} ∈ RN×dh),可以认为是一个残差连接 ,防止模型退化以及缓解模型梯度爆炸和消失的作用让模型训练更加良好。给定单词表示 H,我们使用两个 MLP 分别计算主语 (xi) 和宾语 (xj) 单词表示 si 和 oj。然后,使用双仿射分类器  计算一对主语和宾语词 (xi, xj ) 之间的关系分数:

        (1)si = MLP2(hi) ,

          (2) oj = MLP3(hj ) ,

          ( 3) y0ij = si> Uoj + W[si;oj ] + b ,

         其中 U、W 和 b 是可训练参数,si 和 oj 分别表示第 i 个和第 j 个单词的主语和宾语表示。这里 y0ij ∈ R |R|是 R 中预定义的关系的分数。

 2、基于词对网格表示的 MLP 预测器

        MLP层将经过Conditional Layer Normalization、BERT-Style Grid Representation Build-Up、Multi-Granularity Dilated Convolution输出的向量通过MLP进行关系分数预测,我们采用 MLP 来使用 Qij 计算词对 (xi, xj ) 的关系分数:

y 00ij = MLP(Qij ), 其中 y 00ij ∈ R |R|是 R 中预定义的关系的分数。

        3.单词对 (xi , xj ) 的最终关系概率 yij 是通过组合来自 bi 仿射和 MLP 预测器的分数来计算的:

        y0ij 是biaffine的输出,y00ij是MLP的输出

        yij = Softmax(y0ij + y 00ij)。

        最后把MLP层的关系分数和Biaffine关系分数进行相加,它就是Co-Predictor Layer的最后结果。

四、Decoding:

        所有单词对的关系 R 作为输入。解码的目标是找到所有的实体词索引序列及其对应的类别。我们首先选择单词对网格下三角形区域中的所有 THW-* 关系(第 2-3 行)。对于仅包含一个标记的实体,我们可以仅使用 THW 关系将它们解码出来(第 5-7 行)。对于其他实体,我们构建了一个图,其中节点是单词,边是 NNW 关系。然后我们使用深度优先搜索算法找到从头词到尾词的所有路径,即对应实体的词索引序列(第9-10行)。在算法 1 中,我们定义了一个函数“Track”来执行这种深度第一路径搜索(第 12-21 行)。
        模型的预测是单词及其关系,可以被认为是一个有向的单词图。解码目标是使用NNW关系在图中找到从一个词到另一个词的某些路径。每条路径对应一个实体。除了 NER 的类型和边界识别外,THW 关系还可以用作消歧的辅助信息。
        图 2 说明了从易到难的四种解码情况。• 在示例(a)中,A中表示普通扁平的NER,AB和DE分别是一个实体,A的NHW是B,B的head是A,两条路径“A→B”和“D→E”对应于扁平实体,THW 关系指示它们的边界和类型。• 在示例(b) 中,如果没有THW 关系,我们只能找到一条路径,因此“BC”缺失。相比之下,借助 THW 关系,很容易识别出“BC”嵌套在“ABC”中,这说明了 THW 关系的必要性。• 案例(c)展示了如何识别不连续的实体。可以找到两条路径“A→B→C”和“A→B→D”,NNW 关系有助于连接不连续跨度“AB”和“D”。• 考虑到一个复杂且罕见的情况(d),解码正确的实体“ACD”和“BCE”是不可能的,因为我们可以在这种模棱两可的情况下仅使用NNW 关系找到4 条路径。相反,仅使用 THW 关系将识别连续实体(例如,“ABCD”)而不是正确的不连续实体(例如,“ACD”)。因此,我们可以通过协作使用这两种关系来获得正确的答案。
结尾:以上内容也是结合多篇博客及论文理解,若是涉及侵权问题,请联系本人。
————————————————
本文含有隐藏内容,请 开通VIP 后查看