点击上方,选择星标置顶,每天给你送干货

阅读大概需要21分钟

跟随小博主,每天进步一丢丢

来源:知乎    作者:JayLou娄杰

编辑:深度学习自然语言处理

链接:见文末阅读原文

本文仅做学术分享,侵删

众所周知,与英文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]:

  • Dynamic Architecture:设计一个动态框架,能够兼容词汇输入;

  • 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并没有利用前一时刻的记忆向量  ,即不保留对词汇信息的持续记忆。

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

  • 计算性能低下,不能batch并行化。究其原因主要是每个字符之间的增加word cell(看作节点)数目不一致;

  • 信息损失:1)每个字符只能获取以它为结尾的词汇信息,对于其之前的词汇信息也没有持续记忆。如对于「药」,并无法获得‘inside’的「人和药店」信息。2)由于RNN特性,采取BiLSTM时其前向和后向的词汇信息不能共享。

  • 可迁移性差:只适配于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篇论文的介绍,我们可以发现:

  • Lattice-LSTM和LR-CNN采取的RNN和CNN结构无法捕捉长距离依赖,而动态的Lattice结构也不能充分进行GPU并行。

  • 而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:

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

表示的head到的head距离,其余类似。相对位置encoding为:

的计算方式与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对应的词汇编码  与字符编码  进行拼接。表示当前标签(BMES)下对应的词汇集合编码,其计算方式为:

 为词汇集合,  代表词频。考虑计算复杂度,本文没有采取动态加权方法,而采取如同上式的静态加权方法,即:对词汇集合中的词汇对应的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效果最佳。具体地说:

  • 引入词汇信息的方法,都相较于baseline模型biLSTM+CRF有较大提升,可见引入词汇信息可以有效提升中文NER性能。

  • 采用相同词表对比时,FLAT和Simple-Lexicon好于其他方法。

  • 结合BERT效果会更佳。

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

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

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

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

Reference

[1] Lattice LSTM:Chinese NER Using Lattice LSTM

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

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

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

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

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

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

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

[9] 结合词典的中文命名实体识别 (复旦大学自然语言处理组)

下载一:中文版!学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套!后台回复【五件套】
下载二:南大模式识别PPT后台回复【南大模式识别】说个正事哈由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:(1)点击页面最上方“深度学习自然语言处理”,进入公众号主页。(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。
感谢支持,比心。投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。记得备注呦推荐两个专辑给大家:专辑 | 李宏毅人类语言处理2020笔记专辑 | NLP论文解读专辑 | 情感分析整理不易,还望给个在看!

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

  1. opengl 贴图坐标控制_材质贴图正确打开方式

    哈喽,各位观众朋友们好鸭~欢迎来到讲道理画图的地方,我是黄玮宁. 最近呀经常有小伙伴来问我那些不同通道的材质贴图该怎么用,而且频率不是一般的高,所以我觉得有必要来说说这些通道贴图的用法了. 视频版(B ...

  2. 软件测试Bug,你是怎么找bug的?bug分析的正确打开方式......

    目录:导读 前言 一. bug详细 二.获取bug具体数据 三.有效的管理bug 四.做好bug分析工作 五.深入bug分析 六.总结 前言 Bug严重级别(Severity,Bug级别):是指因缺陷 ...

  3. 复旦计算机考研复试要口试吗,复试的正确打开方式|复旦篇

    原标题:复试的正确打开方式|复旦篇 初试已经结束,复试还会远吗?今天为你推送的是复旦复试全指南,作为考研的结束站,如何准备复试很关键.报考复旦的小伙伴,要时刻关注[复旦大学新闻学院-招生]和[复旦大学 ...

  4. jsDelivr的正确打开方式

    原文地址:http://bili33.top/2020/02/08/jsDelivr-Usage/ 不常上CSDN,有问题请到我的博客的对应文章下面的评论区留言或者直接跟我QQ沟通,QQ在我的个人网站 ...

  5. Bug深入分析的正确打开方式

    Bug对于测试人员来说是司空见惯的东西,毕竟找到软件的bug就是测试人员工作内容的一部分.但仅仅发现bug是不够的,同时也要避免bug的再次出现,做好软件质量保证工作,所以,做好bug分析就是一件非常 ...

  6. codeforces的正确打开方式

    转载自:https://www.cnblogs.com/muzu/p/7616746.html codeforces的正确打开方式 1.背景 可能很多人都久闻codeforces网站的大名,却苦于各种 ...

  7. 揭秘超分辨率的正确打开方式

    写在前边:图像和视频通常包含着大量的视觉信息,且视觉信息本身具有直观高效的描述能力,所以随着信息技术的高速发展,图像和视频的应用逐渐遍布人类社会的各个领域.近些年来,在计算机图像处理,计算机视觉和机器 ...

  8. 极盾·析策,XDR的正确打开方式

    近日, Gartner正式发布了2022安全运营技术成熟度曲线(Hype Cycle),正如大家所预测的那样,XDR终于站上了Peak of Inflated Expectations的顶端,成为安全 ...

  9. Console控制台的正确打开方式

    Console控制台的正确打开方式 console对象提供了访问浏览器调试模式的信息到控制台 -- Console对象|-- assert() 如果第一个参数断言为false,则在控制台输出错误信息| ...

  10. 任务队列和异步接口的正确打开方式(.NET Core版本)

    layout: post title: 任务队列和异步接口的正确打开方式(.NET Core版本) category: dotnet core date: 2019-01-12 tags: dotne ...

最新文章

  1. 怎样在表格中选出同一类_3分钟教会你如何将不同表格中的数据关联在一起
  2. Typora开始收费,介绍几款免费的MarkDown编辑器
  3. 计算机尖端技术,不可思议的尖端技术:Top10
  4. 使用android frame动画定义自己的ProgressBar
  5. 天翼云从业认证(2.3)云计算的价值和核心技术。
  6. FLV封装格式介绍及解析
  7. 漫画:什么是 “元宇宙” ?
  8. 请求zabbix_快速部署zabbix
  9. 搜狗拼音、QQ拼音输入法、2345拼音输入法、百度输入法 、手心输入法对比。(个人体会)...
  10. 启动 Tomcat 遇到 Neither the JAVA_HOME nor the JRE_HOME environment variable is defined 问题,已解决
  11. 计算机网络管理工程师证书考试试题,网络工程师考试模拟试题四-试题试卷网...
  12. 159 samba 无法访问。您可能没有权限使用网络资源 net use命令
  13. 常用的一些LDO芯片及使用
  14. 交换机和路由器的区别_路由器与交换机的区别与联系
  15. Linux下移动anaconda虚拟环境的位置
  16. import和export
  17. linux系统能看抖音吗,用电脑如何刷抖音?电脑刷抖音方法你知多少
  18. Vundle.vim管理插件的插件安装问题
  19. 数据结构与算法(python) 线性结构:有序列表Ordered List
  20. 《新参者》—— 读后总结

热门文章

  1. Linux文件扩展思考随笔
  2. Android内存、性能是程序永恒的话题
  3. Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)
  4. HTML网页随笔笔记
  5. tomcat启动问题,卡在 preparing launch delegate 100% 的解决方法
  6. 安装运行 rovio odometry
  7. codeforces 733D
  8. 在同一台服务器上安装两个数据库
  9. SharePoint 2010 中有个新的列表模板“导入电子表格”可以直接导入Excel数据并创建为列表 ....
  10. mouseover显示层mouseout隐藏层,并且在鼠标放上层时显示层【原】