文章目录

  • NER中的词汇增强方法
  • Dynamic Architecture
    • LatticeLSTM
    • MGLatticeLSTM
    • LR-CNN
    • CGN
    • FLAT
  • Adaptive Embedding
    • Simple-Lexicon

NER中的词汇增强方法

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

如何在基于字符的NER系统中引入词汇信息,是近年来NER的一个研究重点。这种在NER任务中引入词汇的方法又被称为词汇增强。从另一个角度看,由于NER标注数据资源的稀缺,BERT等预训练语言模型在一些NER任务上表现不佳。特别是在一些中文NER任务上,词汇增强的方法会好于或逼近BERT的性能。因此,词汇增强方法在中文NER任务很有必要。

词汇增强也可以看做是一种融入外部知识库的方法,传统的NER方法都是在挖掘输入文本中特征,比如词性、上下位字符、依存关系等等,而词汇增强则通过外部的词典,加入了不能从文本中直接挖掘出来的信息。在可预见的未来,信息抽取等多个NLP领域,融入外部知识库都会是一个重点的研究方向。

词汇增强方法根据融合词汇信息的方式不同又可以分为动态框架和自适应编码两种主要方式:

  1. Dynamic Architecture:设计一个动态框架,能够兼容词汇输入。例如Lattice LSTM,通过更改LSTM的结构动态的融入词汇信息
  2. Adaptive Embedding :基于词汇信息,构建自适应Embedding,在编码的过程中,融入词汇信息

Dynamic Architecture

LatticeLSTM

论文:Chinese NER Using Lattice LSTM(ACL18)

在bert出现之前的中文NER任务中,以字符还是以词汇作为输入单元是一个很难选择的问题。如果以词作为输入单元,一旦出现分词错误,就会直接影响实体边界的预测,导致识别错误,这在开放领域是很严重的问题。以字符作为输入单元的方法优于基于词的方法,但是由于没有进行分词,基于字符的方法无法利用句子中的单词信息,这也会使得识别效果有瑕疵。举个例子,比如一句话“南京市长江大桥”,如果没有单词信息,识别结果很可能为:“南京“、”市长”、“江大桥”,而正确的结果应该是“南京市“、“长江大桥”。

为了解决上述问题,论文提出了LatticeLSTM模型,该模型的核心思想是:通过 Lattice LSTM 将潜在的词汇信息融合到基于字符的 LSTM结构中。如下图所示,LatticeLSTM更改了LSTM的结构,在编码字符“市”的时候,加入了词汇“南京市”的信息,这样在进行实体识别的时候,模型就不会倾向于把“南京市”三个字分开。

LatticeLSTM通过更改LSTM的结构实现词汇信息的融入,这是一种非常典型的动态结构方法。在训练之前,需要做一个预处理过程,将输入文本和外部词表进行匹配,识别输入文本中的所有词汇,然后在训练过程中,LatticeLSTM会根据词汇的跨度信息,动态的改变LSTM结构将词汇信息融入该词汇的最后一个字符中。

LatticeLSTM的缺点:

  1. 计算性能低下,不能batch并行化。究其原因主要是每个字符之间增加的 word cell(看作节点)数目不一致,有的字符可能会融入多个词汇的信息,而有的词汇则不会融入词汇信息。
  2. 信息损失:对于一个词,只有词的末尾的那个字符会融入词汇的信息,如上图中,只有字符“市”在编码的过程中会融入“南京市”的词汇信息,其他字符“南”、“京”没有融入词汇信息。
  3. 可迁移性差:只适用于LSTM,不具备向其他神经网络如CNN等迁移的能力。

MGLatticeLSTM

论文:Chinese Relation Extraction with Multi-Grained Information and External Linguistic Knowledge(ACL19)

这篇论文和LatticeLSTM的结构差不多,对LSTM结构的改进方式是一样的,所以和LatticeLSTM有一样的缺点。MGLatticeLSTM的主要创新点在于引入了多义词。LatticeLSTM只能融入词汇的一种表示,但是中文词汇是存在多义词的,相同的词汇可能有不同的含义,如果在引入词汇的过程中引入了不正确的词义信息,那么可能会导致原本只使用字符作为输入就能正确分词的句子,在引入错误词义后导致分词出现错误。

MGLatticeLSTM为了解决这个问题,在融入词汇信息的过程中使用注意力机制将词汇所有的词义信息通过注意力进行整合,然后在加入进字符编码中。MGLatticeLSTM可以算作是对LatticeLSTM的补充。

LR-CNN

论文:CNN-Based Chinese NER with Lexicon Rethinking(IJCAI-19)

LR-CNN论文中首先提出了LatticeLSTM的不足

  • 效率限制: 基于RNN的模型由于循环结构的限制无法进行并行训练
  • 词汇冲突问题: 当句子中的某个字符同时出现在多个词汇中时,基于RNN的模型难以对此做出判断。例如,下图中的"长"即属于"市长"一词,也属于"长隆"一词,那么如何给字符“长”分配标签就成了问题,到底是应该按“市长”来分词,还是应该按“长隆”来分词。

针对RNN不能并行化训练的问题,LR-CNN改用CNN来作为编码层。针对词汇冲突问题,LR-CNN提出了一种Rethinking机制。LR-CNN的模型结构如下图所示:

LR-CNN采取CNN对字符特征进行编码,采用不同的感受野提取特征。将获得的multi-gram信息堆叠多层,采取注意力机制进行融合;对于词汇信息冲突问题,LR-CNN增加了一个feedback layer来调整词汇信息的权重,具体地,将高层特征作为输入通过注意力模块调节下层词汇特征分布。如上图,高层特征得到的 “广州市 “和 “长隆 “会降低 “市长 “ 在输出特征中的权重,通过注意力的方式进行调节,解决词汇信息冲突问题。

CGN

论文:Leverage Lexical Knowledge for Chinese Named Entity Recognition via Collaborative Graph Network(EMNLP19)

CGN论文提出外部词汇实际包含了两种重要信息: 一是词语的边界信息, 二是词语的语义信息。在LatticeLSTM中,词汇信息只融入词汇的最后一个字符中,句子中其他字符没有融合词汇的信息,这样的结果是对词汇信息的利用效率低下。词汇中的字符不能利用词汇的边界信息,上下文字符不能利用词汇的语义信息。

CGN相对于之前的词汇增强方法,主要有两点改进:

  1. 将词汇信息融合进词汇的每一个字符中,以利用好词汇的边界信息。如下图中“北京机场”的例子,如果字符“机”能够获取到“北京机场”这个词汇的边界信息,那么在进行标签分类时字符“机”就不会被错误标注为标签”B-LOC“或者标签“O”
  2. 通过GAN图注意力网络将词汇信息融合进上下文的字符中。如下图“离开”的例子,如果将词汇“离开”的语义信息融合进上下文字符“顿”和”北“中,那么在对字符“顿”进行标签分类时,模型可以识别出希尔顿是一个PER,那么自然地,顿的标签就是I-PER而不是I-ORG或者其他。

CGN是一种基于字符的协作图网络,该网络包含编码层、图网络层、融合层、解码层。图网络层包含C-graph、T-graph和L-graph三个不同结构的图,图网络层的结果由三种图经过图注意力网络计算后的结果拼接而成。整体结构及C-graph、T-graph和L-graph三种图的构建方式如下图所示:

图网络层三种不同结构的图的构建方式:

  • C-graph:字符与字符之间无连接,词汇与词汇中的的字符之间有连接,这个图的目的是为了将词汇的边界信息和词义信息融合进字符(词汇内部)中。
  • T-graph:相邻字符相连接,词与其前后字符连接,将距离字符最近的上下文匹配词的词义信息融合进字符中。
  • L-graph:相邻字符相连接,词与其开始结束字符相连。将LatticeLSTM结构转变为了图结构。

图构建完成后,使用图注意力网络GAN进行计算,每个GAN的输入是节点特征表示Node=f1,f2,...,fnNode=f_1,f_2,...,f_nNode=f1,f2,...,fn及对应的邻接矩阵, 输出是节点表示的更新

融合层将图网络层的三个图所得的字符节点的表示进行融合。融合层的输入是编码层通过BiLSTM编码得到的字符表示HHH和三个GAT图得到的字符表示Q1,Q2,Q3Q_1,Q_2,Q_3Q1,Q2,Q3, 通过如下方法进行融合:

FLAT

论文:FLAT: Chinese NER Using Flat-Lattice Transformer(ACL20)

FLAT使用Transformer代替LSTM,设计position encoding来融合词汇信息.

如上图所示,对于每一个字符和词汇都构建一个head position encoding 和 tail position encoding,分别表示词或者字的开始及结束位置。Transformer在更新每个token的表示时会使用上下文所有token的表示,通过自注意力机制决定对每个token的关注程度的大小。因此,FLAT可以直接建模字符与所有匹配的词汇信息间的交互,例如,字符“药”可以匹配词汇“人和药店”和“药店”,因为字符“药”的开始和结束位置都是5,而“人和药店”和“药店”的跨度都包含了位置5,在Transformer编码的过程中,字符“药”会分配更多的注意力在词汇“人和药店”和“药店”上。

FLAT这篇论文提出了相对位置编码,使用稠密向量来表达xix_ixixjx_jxj之间的相对位置关系:

xix_ixixjx_jxj之间的相对位置向量的最终表达形式是上述4种距离表达的线性变换:

最后,FLAT通过一种自注意力的变体来利用相对跨度位置编码:

Adaptive Embedding

Simple-Lexicon

论文:Simplify the Usage of Lexicon in Chinese NER(ACL20)

论文一开始还是先讲了LatticeLSTM的很多不足,如效率低,信息损失,只能用在LSTM中等问题。然后论文提出了一种Simple-Lexicon方法,这种方法可以用在不同的特征提取器中,能够避免信息损失,而且可以并行化,效率还很高。

Simple-Lexicon的核心思想是,通过BMES标签来融合词汇信息。对于每一个输入字符,使用字典匹配该字符作为B开始、M中间、E结束、S单个四种位置类型对应的词。例如下图中的字符“语”,以“语”开头的词汇有“语言”、“语言学”,以“语”结束的词汇有“国语”,“中国语”。

在词典匹配完成后,将词汇编码VsV^sVs以拼接的方式融合进字符编码中XcX^cXc中:

NER中的词汇增强方法(LatticeLSTM、CGN、FLAT、Simple-Lexicon)相关推荐

  1. [综述类] 一文道尽深度学习中的数据增强方法(上)

    今天带来一次有关于深度学习中的数据增强方法的分享. 00 什么是数据增强 在深度学习项目中,寻找数据花费了相当多的时间.但在很多实际的项目中,我们难以找到充足的数据来完成任务. 为了要保证完美地完成项 ...

  2. 【技术综述】深度学习中的数据增强方法都有哪些?

    很多实际的项目,我们都难以有充足的数据来完成任务,要保证完美的完成任务,有两件事情需要做好:(1)寻找更多的数据.(2)充分利用已有的数据进行数据增强,今天就来说说数据增强. 作者 | 言有三 编辑 ...

  3. 深度学习中的数据增强方法

    对于较深层次的深度神经网络,其性能会随着训练数据的提升而进一步提升. 目前深度学习方法广泛采用的数据增强方法,主要有: multi-scale:多尺度: translate:平移,[-6, -6],左 ...

  4. NLP中的数据增强方法

    目录 1 概述 2. 方法 2.1 随机drop和shuffle 2.2 同义词替换 2.3 回译 2.4 文档裁剪 2.5 生成对抗网络 2.6 预训练的语言模型 1 概述 NLP中的数据是离散的. ...

  5. NLP中的数据增强方法综述

    论文链接:A Survey of Data Augmentation Approaches for NLP 摘要 由于越来越多的研究在低资源领域.新任务和需要大量训练数据的大规模神经网络中,NLP中的 ...

  6. 深度学习中图片数据增强方法

    简 介: 在深度学习中需要对图像进行不同的处理.本文对比了基于Numpy以及Paddle.vision.transforms函数中对于图片处理的效果. 关键词: 图像预处理,cv2,paddle #m ...

  7. 一种单独适配于NER的数据增强方法:DAGA

    链接:http://www.elecfans.com/d/1468784.html 本文首先介绍传统的数据增强在NER任务中的表现,然后介绍一种单独适配于NER的数据增强方法,这种方法生成的数据更具丰 ...

  8. 一篇就够!数据增强方法综述

    作者 | 太子长琴 整理 | NewBeeNLP 数据增强(Data Augmentation, DA)缓解了深度学习中数据不足的场景,在图像领域首先得到广泛使用,进而延伸到 NLP 领域,并在许多任 ...

  9. NER中的一些编码器与解码器

    文章目录 参考 编码 LR-CNN FLAT Lex-BERT 解码 GlobalPointer 本篇文章是命名实体识别(NER)算法的进一步介绍,主要内容是介绍一些编码器与解码器,作为上一篇内容的补 ...

  10. 只讲关键点之兼容100+种关键点检测数据增强方法

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨DefTruth 编辑丨极市平台 本文介绍了已有的几种关键点检测数据增强的方法,将其的优缺点进行 ...

最新文章

  1. Xshell5中常用linux服务器命令集合
  2. 介绍一个好用的抓取dump的工具-ProcDump
  3. python出现套接字创建不成功_python套接字协议不支持 - python
  4. 在 Linux 上找出并解决程序错误的主要方法【转】
  5. 001-引入layui和layui.code方法
  6. 使用FFmpeg命令行进行UDP、RTP推流(H264、TS),ffplay接收
  7. Windows——桌面快捷键Ctrl+Z撤销的文件恢复解决方案
  8. mysql实用管理器添加外键_MySQL 添加外键
  9. 安装Wamp时出现无法启动此程序,因为计算机中丢失MSVCR110.dll的解决方法
  10. ES6 深拷贝_你别自以为是:ES6误区 之 Object.assign()、const
  11. Stooge排序与Bogo排序算法
  12. BZOJ_2243 [SDOI2011]染色 【树链剖分+线段树】
  13. 雷蛇鼠标垫真假区分_您真的需要鼠标垫吗?
  14. 拆解洪恩教育2020年财报:Q4亏损扩大7倍,负债增至4亿元
  15. 浅谈一下pyd文件的逆向
  16. ListView 上下拉刷新
  17. 海淘、跨境电商国际物流对接那些坑
  18. Postfix邮箱部署
  19. ggsurvplot_combine R语言 一张图内画多条生存曲线
  20. 智能车单车组之平衡控制理论分析篇

热门文章

  1. 北方民族大学c语言期末考试试题,2018年北方民族大学软件工程832C语言程序设计与数据结构之C程序设计考研核心题库...
  2. 2级c语言程序设计无忧考试,无忧考吧二级c模拟考试系统
  3. a+ open python_python编程之文件操作
  4. EChart:EChart与NProgress结合异步加载数据
  5. 设计模式:JavaScript
  6. java 数据库按钮跳转_java,数据库的连接及基本操作
  7. list scala 当前位置 遍历_Scala学习七之集合了解
  8. QuickSort的基本CPU实现代码
  9. Matlab运算之 norm,cross,makehgtform,asin(acos)
  10. 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。