命名实体识别模型FLAT介绍

FLAT: Chinese NER using flat-lattice transformer
Li X, Yan H, Qiu X, et al. FLAT: Chinese NER using flat-lattice transformer[J]. arXiv preprint arXiv:2004.11795, 2020.
Lex-BERT: Enhancing BERT based NER with lexicons
Zhu W, Cheung D. Lex-BERT: Enhancing BERT based NER with lexicons[J]. arXiv preprint arXiv:2101.00396, 2021.

为解决计算效率低下、引入词汇信息有损的这两个问题,FLAT基于Transformer结构进行了两大改进。
改进1:Flat-Lattice Transformer, 无损引入词汇信息。
改进2:相对位置编码。

一、中文ner为什么要引入词汇信息?

不同于英文NER,中文NER通常以字符为单位进行序列标注建模。这主要是由于中文分词存在误差,导致基于字符通常要好于基于词汇(经过分词)的序列标注建模方法。
那中文NER是不是就不需要词汇信息呢?答案当然是否定的。引入词汇信息的好处在于:
第一,强化实体边界,特别是对于span较长的实体边界更加有效。
第二,数据增强方式。对于NLP分类任务增益明显的数据增强方法,往往不能直接应用于NER任务,并且指标增益也极为有限。相反,引入词汇信息的增强方式对于小样本下的中文NER增益明显。
引入词汇信息增强中文NER性能的方法称为词汇增强。

二、词汇增强的方式有哪些?

词向量&词汇列表:利用一个具备良好分词结果的词向量;异或者不再利用词向量,仅利用词汇或者实体边界信息,通常可通过图网络提取相关信息。两大范式:

2.1 第种一范式:Dynamic Architecture

设计一个动态抽取框架,能够兼容词汇输入;本文所介绍的FLAT就属于这一范式。设计相应结构以融入词汇信息。

Lattice LSTM:开篇之作,设计兼容的LSTM将词汇信息引入中文NER任务;
LR-CNN:采取CNN进行堆叠编码,采取rethink机制解决词汇冲突问题;

2.2 第二种范式:Adaptive Embedding

基于词汇信息,构建自适应Embedding;与模型框架无关。ACL2020中的 Simplify the Usage of Lexicon in Chinese NER[1] 就属于这一范式,仅仅在embedding层融合词汇信息,对于词汇信息的引入更加简单有效,采取静态加权的方法可以提前离线计算。
分词器:单一的分词器会造成边界错误,可以引入多源分词器并pooling不同分词结果。ACL2020中有篇处理中文预训练的文章[2]就将多种分词结果中词汇信息pooling对齐到字符编码中。

词汇增强范式 方法 特点 存在问题
Dynamic
设计相应结构以融入词汇信息 Lattice LSTM 开篇之作,设计兼容的LSTM将词汇信息引入中文NER任务 推断效率低,无法捕捉长距离依赖,存在一定的信息损失问题。
LR-CNN 采取CNN进行堆叠编码,采取rethink机制解决词汇冲突问题
CGN 构建给予协作的图网络(GAN),充分利用词汇信息 将NER任务转化为node分类任务,但需要RNN作为底层编码器来捕捉顺序性,结构复杂。
LGN 构建局部和全局聚合的图网络,充分利用词汇信息
FLAT 通过设计位置向量引入词汇信息,利用transformer捕捉长距离依赖、提高推断效率。
Adaptive Embedding
模型无关,具备可迁移性 WC-LSTM 通过四种encoding策略对Lattice LSTM输入静态编码 存在信息损失,仍然采取LSTM进行编码
Multi-digraph 引入实体词典,通过多图结构更好地显示建模字符和词典的交互
Simple-Lexicon 通过self-lexicon方法引入词汇信息,简单直接

在这里插入图片描述

各大顶会中词汇增强NER的主要进展:
在这里插入图片描述

三、Lattice LSTM

针对中文NER任务引入词汇信息的开篇之作。文中提出了一种Lattice LSTM用于融合词汇信息。当我们通过词汇信息(词典)匹配一个句子时,可以获得一个类似Lattice的结构。
在这里插入图片描述

Lattice是一个有向无环图,词汇的开始和结束字符决定了格子位置。Lattice LSTM结构则融合了词汇信息到原生的LSTM中:
在这里插入图片描述

当前字符有词汇融入时,则采取上述公式进行计算;如当前字符没有词汇时,则采取原生的LSTM进行计算。
虽然Lattice LSTM有效提升了NER性能,但也存在一些缺点:
(1)信息损失
每个字符只能获取以它为结尾的词汇信息。如对于「药」,无法获得inside的「人和药店」信息。
由于RNN特性,采取BiLSTM时其前向和后向的词汇信息不能共享。
Lattice LSTM并没有利用前一时刻的记忆向量,即不保留对词汇信息的持续记忆。
(2)计算性能低下,不能batch并行化
主要是每个字符之间的增加wordcell(看作节点)数目不一致;
(3)可迁移性差
只适配于LSTM,不具备向其他网络迁移的特性。
总结:Lattice-LSTM采取的RNN结构无法捕捉长距离依赖,同时引入词汇信息是有损的,同时动态的Lattice结构也不能充分进行GPU并行。

四、FLAT

为解决计算效率低下、引入词汇信息有损的这两个问题,FLAT基于Transformer结构进行了两大改进。
改进1:Flat-Lattice Transformer, 无损引入词汇信息。
改进2:相对位置编码。

4.1 改进1:Flat-Lattice Transformer, 无损引入词汇信息。

在这里插入图片描述

Transformer采取全连接的自注意力机制可以很好捕捉长距离依赖,由于自注意力机制对位置是无偏的,因此Transformer引入位置向量来保持位置信息。

受到位置向量表征的启发,FLAT设计了一种巧妙position encoding来融合Lattice结构。
对于每一个字符和词汇都构建两个head position encoding和tail position encoding,这种方式可以重构原有的Lattice结构。

因此,FLAT可以直接建模字符与所有匹配的词汇信息间的交互。例如,字符「药」可以匹配词汇「人和药店」和「药店」。

将Lattice结构展平,将其从一个有向无环图展平为一个平面的Flat-Lattice Transformer结构,由多个span构成:每个字符的head和tail是相同的,每个词汇的head和tail是skipped的。(结构变得简单)

在这里插入图片描述

4.2 改进2:相对位置编码

BiLSTM在NER任务上的成功,一个关键就是BiLSTM能够区分其上下文信息的方向性,来自左边还是右边。而对于Transformer,其区分上下文信息的方向性是困难的。因此,要想解决Transformer对于NER任务表现不佳的问题,必须提升Transformer的位置感知和方向感知。

相对位置编码提升Transformer的位置感知和方向感知,让Transformer适用NER任务。

FLAT使用了两个位置编码(head position encoding 和 tail position encoding),那么是否可以采用绝对位置编码呢?同样来自邱锡鹏老师组的论文TENER: Adapting Transformer Encoder for Named Entity Recognition [7]给出答案:原生Transformer中的绝对位置编码并不直接适用于NER任务。

原生Transformer的绝对位置编码本身缺乏方向性,虽然具备距离感知,但还是被self-attention机制打破了。

TENER:对于NER任务来说,位置和方向信息是十分重要的。在「Inc.」前的单词更可能的实体类型是「ORG」,在「in」后的单词更可能为时间或地点。而对于方向性的感知会帮助单词识别其邻居是否构成一个连续的实体Span。可见,对于「距离」和「方向性」的感知对于Transformer适用于NER任务至关重要。
(前面一般是什么词,后面一般又是什么词)
在这里插入图片描述

五、FLAT相对位置编码

5.1 Transformer self-attention 计算

在这里插入图片描述

其中E是token的向量表,是可学习参数,是每个头的维度。

5.2 Transformer xl sel-attention计算

1)绝对位置编码
vanilla Trm计算attention的方式,表示token的输入embedding,是绝对位置编码embedding,两个W分别是query矩阵和key矩阵。下面的公式是对在这里插入图片描述
做了分解。

在这里插入图片描述

2)相对位置编码
在这里插入图片描述

Dai Z, Yang Z, Yang Y, et al. Transformer-xl: Attentive language models beyond a fixed-length context[J]. arXiv preprint arXiv:1901.02860, 2019.

5.3 Flat-bert相对位置编码

第一步,计算各个词之间的位置关系;
在这里插入图片描述

位置关系:相交、包含、相离。

第二步,计算相对位置;
在这里插入图片描述
在这里插入图片描述

第三步,计算attention;
在这里插入图片描述

用A*替换transformer self-attention中的A。
其中,黄色标注的均为可学习参数,绿色为相对位置编码,E为文本编码。
Xi,xj为同一句话中不同的两个词。
在FLAT之后,模型只会将字符的表示输入输出层,也就是CRF层。

六、源码阅读

1、使用fastNLP和pytorch实现

官方代码:https://github.com/LeeSureman/Flat-Lattice-Transformer
简化代码:https://github.com/orangetwo/BERT-FLAT.git

2、模型输入

1)char:使用bert embedding;
2)lattice(Char+lexicon):如果有外部预训练则使用,如果没有则随机初始化;
3)bigram: 如果有外部预训练则使用,如果没有则随机初始化;
4)position_start: Lattice的开始位置;
4)position_end: Lattice的结束位置。
3、难点:位置编码,矩阵变换。
在这里插入图片描述

注意:代码中的A为第一项,C为第三项,B为第二项,D为第四项。

七、实验

在这里插入图片描述

八、参考

  • 28
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值