首发于高能NLP
中文NER的正确打开方式: 词汇增强方法总结 (从Lattice LSTM到FLAT)

中文NER的正确打开方式: 词汇增强方法总结 (从Lattice LSTM到FLAT)

众所周知,与英文NER相比,中文NER通常采取基于字符的方式。究其缘由,由于中文分词存在误差,基于字符的NER系统通常好于基于词汇(经过分词)的方法。而引入词汇信息(词汇增强)的方法,通常能够有效提升中文NER性能。

本文对「词汇增强」的系列方法进行介绍,包括Lattice LSTM/LR-CNN/CGN/LGN/WC-LSTM/Multi-digraph/Simple-Lexicon/FLAT 等8个方法进行串讲,目录如下:

  • 1、为什么对于中文NER任务,要进行「词汇增强」?
  • 2、「词汇增强」的主要方法有哪些?
    • 2.1 Dynamic Architecture
    • 2.2 Adaptive Embedding
  • 3、总结与对比:关键结果分析

1、为什么对于中文NER任务,要进行「词汇增强」?

虽然基于字符的NER系统通常好于基于词汇(经过分词)的方法,但基于字符的NER没有利用词汇信息,而词汇边界对于实体边界通常起着至关重要的作用。

如何在基于字符的NER系统中引入词汇信息,是近年来NER的一个研究重点。本文将这种引入词汇的方法称之为「词汇增强」,以表达引入词汇信息可以增强NER性能。

从另一个角度看,由于NER标注数据资源的稀缺,BERT等预训练语言模型在一些NER任务上表现不佳。特别是在一些中文NER任务上,词汇增强的方法会好于或逼近BERT的性能。因此,关注「词汇增强」方法在中文NER任务很有必要。

2、「词汇增强」的主要方法有哪些?

近年来,基于词汇增强的中文NER主要分为2条主线[9]:

  1. Dynamic Architecture:设计一个动态框架,能够兼容词汇输入;
  2. Adaptive Embedding :基于词汇信息,构建自适应Embedding;

本文按照上述2条主线,将近年来各大顶会的相关论文归纳如下:

2.1 Dynamic Architecture范式

Dynamic Architecture范式通常需要设计相应结构以融入词汇信息。

[1] Lattice LSTM:Chinese NER Using Lattice LSTM(ACL2018)

本文是基于词汇增强方法的中文NER的开篇之作,提出了一种Lattice LSTM以融合词汇信息。

具体地,当我们通过词汇信息(词典)匹配一个句子时,可以获得一个类似Lattice的结构。

Lattice

Lattice是一个有向无环图,词汇的开始和结束字符决定了其位置。Lattice LSTM结构则融合了词汇信息到原生的LSTM中:

Lattice LSTM

如上图所示,Lattice LSTM引入了一个word cell结构,对于当前的字符,融合以该字符结束的所有word信息,如对于「店」融合了「人和药店」和「药店」的信息。对于每一个字符,Lattice LSTM采取注意力机制去融合个数可变的word cell单元,其主要的数学形式化表达为:

本文不再堆砌繁杂的数学公式,具体看参考原论文。需要指出的是,当前字符有词汇融入时,则采取上述公式进行计算;如当前字符没有词汇时,则采取原生的LSTM进行计算。当有词汇信息时,Lattice LSTM并没有利用前一时刻的记忆向量 c_{j-1}^{c} ,即不保留对词汇信息的持续记忆。

Lattice LSTM 的提出,将词汇信息引入,有效提升了NER性能;但其也存在一些缺点:

  1. 计算性能低下,不能batch并行化。究其原因主要是每个字符之间的增加word cell(看作节点)数目不一致;
  2. 信息损失:1)每个字符只能获取以它为结尾的词汇信息,对于其之前的词汇信息也没有持续记忆。如对于「药」,并无法获得‘inside’的「人和药店」信息。2)由于RNN特性,采取BiLSTM时其前向和后向的词汇信息不能共享。
  3. 可迁移性差:只适配于LSTM,不具备向其他网络迁移的特性。

[2] LR-CNN:CNN-Based Chinese NER with Lexicon Rethinking(IJCAI2019)

Lattice LSTM采取RNN结构,导致其不能充分利用GPU进行并行化。此外,Lattice LSTM无法有效处理词汇信息冲突问题,如上图所示:字符 [长] 可以匹配到词汇 [市长] 和 [长隆],不同的匹配会导致[长] 得到不同的标签,而对于RNN结构:仅仅依靠前一步的信息输入、而不是利用全局信息,无法有效处理这一冲突问题。显而易见,对于中文NER,这种冲突问题很常见,在不参考整个句子上下文和高层信息的前提下很难有效解决。

LR-CNN

本篇论文LR-CNN为解决这一问题,提出了Lexicon-Based CNNs和Refining Networks with Lexicon Rethinking。

  • Lexicon-Based CNNs:采取CNN对字符特征进行编码,感受野大小为2提取bi-gram特征,堆叠多层获得multi-gram信息;同时采取注意力机制融入词汇信息(word embed);
  • Refining Networks with Lexicon Rethinking:由于上述提到的词汇信息冲突问题,LR-CNN采取rethinking机制增加feedback layer来调整词汇信息的权值:具体地,将高层特征最为输入通过注意力模块调节每一层词汇特征分布。如上图,高层特征得到的 [广州市] 和 [长隆]会降低 [市长] 在输出特征中的权重分布。最终对每一个字符位置提取对应的调整词汇信息分布后的multi-gram特征,喂入CRF中解码。

LR-CNN最终相比于Lattice LSTM加速3.21倍,但LR-CNN仍然计算复杂,并且不具备可迁移性。


[3] CGN: Leverage Lexical Knowledge for Chinese Named Entity Recognition via Collaborative Graph Network( EMNLP2019)

CGN

由于Lattice LSTM存在信息损失,特别是无法获得‘inside’的词汇信息。针对这一问题,本篇论文构建了基于协作的图网络,由编码层、图网络层、融合层、解码层组成。在图网络层,构建了三种不同的建图方式:

  • Word-Character Containing graph (C-graph):字与字之间无连接,词与其inside的字之间有连接。
  • Word-Character Transition graph(T-graph):相邻字符相连接,词与其前后字符连接。
  • Word-Character Lattice graph(L-graph):相邻字符相连接,词与其开始结束字符相连。

图网络层通过Graph Attention Network(GAN)进行特征提取,提取3种图网络中的前n个字符节点的特征:

特征融合则将基于字符的上下文表征H与图网络表征加权融合:

涉及GAN的相关计算公式可参考原论文。

[4] LGN: A Lexicon-Based Graph Neural Network for Chinese NER(EMNLP2019)

本篇论文与LR-CNN出发点类似,Lattice LSTM这种RNN结构仅仅依靠前一步的信息输入,而不是利用全局信息,如上图所示:字符 [流]可以匹配到词汇 [河流] 和 [流经]两个词汇信息,但Lattice LSTM却只能利用 [河流] ;字符 [度]只能看到前序信息,不能充分利用 [印度河] 信息,从而造成标注冲突问题。

LGN

本篇论文通过采取 lexicon-based graph neural network (LGN)来解决上述问题。如上图所示,将每一个字符作为节点,匹配到的词汇信息构成边。通过图结构实现局部信息的聚合,并增加全局节点进行全局信息融入。聚合方式采取Multi-Head Attention,具体计算公式可参考原论文。

[5] FLAT: Chinese NER Using Flat-Lattice Transformer(ACL2020)

本篇论文来自 @邱锡鹏 老师团队。通过对上述4篇论文的介绍,我们可以发现:

  1. Lattice-LSTM和LR-CNN采取的RNN和CNN结构无法捕捉长距离依赖,而动态的Lattice结构也不能充分进行GPU并行。
  2. 而CGN和LGN采取的图网络虽然可以捕捉对于NER任务至关重要的顺序结构,但这两者之间的gap是不可忽略的。其次,这类图网络通常需要RNN作为底层编码器来捕捉顺序性,通常需要复杂的模型结构。
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的。

FLAT结构

在知乎专栏文章《如何解决Transformer在NER任务中效果不佳的问题?》,我们介绍了对于Tranformer结构,绝对位置编码并不适用于NER任务。因此,FLAT这篇论文采取XLNet论文中提出相对位置编码计算attention score:

论文提出四种相对距离表示x_ix_j之间的关系,同时也考虑字符和词汇之间的关系:

d^{(hh)}_{ij} 表示x_i的head到x_j的head距离,其余类似。相对位置encoding为:

p_d的计算方式与vanilla Transformer相同。

综上,FLAT采取这种全连接自注意力结构,可以直接字符与其所匹配词汇间的交互,同时捕捉长距离依赖。如果将字符与词汇间的attention进行masked,性能下降明显,可见引入词汇信息对于中文NER 的重要性。此外,相关实验表明,FLAT有效的原因是:新的相对位置encoding有利于定位实体span,而引入词汇的word embedding有利于实体type的分类。

2.2 Adaptive Embedding范式

Adaptive Embedding范式仅在embedding层对于词汇信息进行自适应,后面通常接入LSTM+CRF和其他通用网络,这种范式与模型无关,具备可迁移性。

[6] WC-LSTM: An Encoding Strategy Based Word-Character LSTM for Chinese NER Lattice LSTM(NAACL2019)

WC-LSTM

Lattice LSTM中每个字符只能获取以它为结尾的词汇数量是动态的、不固定的,这也是导致Lattice LSTM不能batch并行化的原因。WC-LSTM为改进这一问题,采取Words Encoding Strategy,将每个字符为结尾的词汇信息进行固定编码表示,即每一个字符引入的词汇表征是静态的、固定的,如果没有对应的词汇则用<PAD>代替,从而可以进行batch并行化。

这四种encoding策略分别为:最短词汇信息、最长词汇信息、average、self-attenion。以「average」为例:即将当前字符引入所有相关的词汇信息对应的词向量进行平均。

WC-LSTM仍然存在信息损失问题,无法获得‘inside’的词汇信息,不能充分利用词汇信息。虽然是Adaptive Embedding范式,但WC-LSTM仍然采取LSTM进行编码,建模能力有限、存在效率问题。

[7] Multi-digraph: A Neural Multi-digraph Model for Chinese NER with Gazetteers(ACL2019)

不同于其他论文引入词汇信息的方式是基于一个词表(由论文Lattice LSTM 提供,没有实体标签,通常需要提取对应的word embedding),本篇论文引入词汇信息的方式是利用实体词典(Gazetteers,含实体类型标签)。

虽然引入实体词典等有关知识信息对NER性能可能会有所帮助,但实体词典可能会包含不相关甚至错误的信息,这会损害系统的性能。如上图所示,利用4个实体词典:「PER1」、「PER2」、「LOC1」、「LOC2」进行匹配,错误实体就有2个。

Multi-digraph

为了更好的利用词典信息,本文提出了一种多图结构更好地显示建模字符和词典的交互。如上图所示,结合自适应的Gated Graph Sequence Neural Networks (GGNN)和LSTM+CRF,基于上下文信息对来自不同词典的信息进行加权融合,解决词典匹配冲突的问题。

具体地,本文通过图结构建模Gazetteers信息,关键在于怎么融入不同词典的信息。上述图结构中「边」的label信息即包含字符间的连接信息,也包含来自不同m个Gazetteers的实体匹配信息,共有L个label:

而传统的GGNN不能处理带有不同label信息的「边」,为了能够处理上述的多图结构,本文将邻接矩阵A扩展为包括不同标签的边,对边的每一个label分配相应的可训练参数:

上述图结构的隐状态采用GRU更新,具体更新方式可参考原论文。最后,将基于GGNN提取字符所对应的特征表示喂入LSTM+CRF中。

[8] Simple-Lexicon:Simplify the Usage of Lexicon in Chinese NER(ACL2020)

由上述分析可以发现Lattice LSTM只适配于LSTM,不具备向其他网络迁移的特性,同样Lattice LSTM存在的信息损失也不容小觑。本篇论文为避免设计复杂的模型结构、同时为便于迁移到其他序列标注框架,提出了一种在embedding层简单利用词汇的方法。本文先后对比了三种不同的融合词汇的方式:

第一种:Softword

Softword,图片来自[9]

如上图所示,Softword通过中文分词模型后,对每一个字符进行BMESO的embedding嵌入。显而易见,这种Softword方式存在由分词造成的误差传播问题,同时也无法引入词汇对应word embedding。

第二种:ExtendSoftword

ExtendSoftword ,图片来自[9]

ExtendSoftword则将所有可能匹配到的词汇结果对字符进行编码表示。如上图中,对于字符「山」来说,其可匹配到的词汇有中山、中山西、山西路,「山」隶属 {B,M,E}。论文对于字符对应的词汇信息按照BMESO编码构建5维二元向量,如「山」表示为[1,1,1,0,0].

ExtendSoftword也会存在一些问题:1)仍然无法引入词汇对应的word embedding;2)也会造成信息损失,无法恢复词汇匹配结果,例如,假设有两个词汇列表[中山,山西,中山西路]和[中山,中山西,山西路],按照ExtendSoftword方式,两个词汇列表对应字符匹配结果是一致的;换句话说,当前ExtendSoftword匹配结果无法复原原始的词汇信息是怎样的,从而导致信息损失。

第三种:Soft-lexicon

Soft-lexicon,图片来自[9]

为了解决Softword和ExtendSoftword存在的问题,Soft-lexicon对当前字符,依次获取BMES对应所有词汇集合,然后再进行编码表示。

由上图可以看出,对于字符[语],其标签B对应的词汇集合涵盖[语言,语言学];标签M对应[中国语言];标签E对应[国语、中国语];标签S对应[语]。当前字符引入词汇信息后的特征表示为:

很容易理解,上述公式则将BMES对应的词汇编码 v^{s} 与字符编码 x^{c} 进行拼接。v^{s}表示当前标签(BMES)下对应的词汇集合编码,其计算方式为:

S 为词汇集合, z(w) 代表词频。考虑计算复杂度,本文没有采取动态加权方法,而采取如同上式的静态加权方法,即:对词汇集合中的词汇对应的word embedding通过其词频大小进行加权。词频根据训练集和测试集可离线统计。

综上可见,Soft-lexicon这种方法没有造成信息损失,同时又可以引入word embedding,此外,本方法的一个特点就是模型无关,可以适配于其他序列标注框架。

3、总结与对比:关键结果分析

通过第二部分对于「词汇增强」方法主要论文的介绍,我们可以发现无论是Dynamic Architecture还是Adaptive Embedding,都是想如何更好的融入词汇信息。这些方法的出发点无外于两点:1)如何更充分的利用词汇信息、最大程度避免词汇信息损失;2)如何设计更为兼容词汇的Architecture,加快推断速度。

下面对于上述「词汇增强」方法进行汇总:

ACL2020中的两篇论文FLAT和Simple-Lexicon分别对应于Dynamic Architecture和Adaptive Embedding,这两种方法相比于其他方法:1)能够充分利用词汇信息,避免信息损失;2)FLAT不去设计或改变原生编码结构,设计巧妙的位置向量就融合了词汇信息;Simple-Lexicon对于词汇信息的引入更加简单有效,采取静态加权的方法可以提前离线计算。

最后,我们来看一下,上述各种「词汇增强」方法在中文NER任务上的性能:

数据摘抄自各相关论文

上图可以发现:总的来看,ACL2020中的FLAT和Simple-Lexicon效果最佳。具体地说:

  1. 引入词汇信息的方法,都相较于baseline模型biLSTM+CRF有较大提升,可见引入词汇信息可以有效提升中文NER性能。
  2. 采用相同词表对比时,FLAT和Simple-Lexicon好于其他方法。
  3. 结合BERT效果会更佳。

除了上述中文NER任务,笔者还在医疗NER任务(CCKS2019)上进行了简单实验:

数据来自DeepIE:具体参见https://github.com/loujie0822/DeepIE

同样也可以发现,词汇增强可有效提升中文NER性能。

而在推断速度方面,FLAT论文也与其他方法进行了对比,在指标领先的同时推断速度明显优于其他方法。

获取更多「信息抽取」相关的信息,可关注DeepIE
DeepIE介绍:github.com/loujie0822/D,基于深度学习的信息抽取技术集散地,欢迎大家关注,包含实体、关系、属性、事件、链接&标准化等。

Reference

编辑于 09-08

文章被以下专栏收录