基于Lattice LSTM的命名实体识别

2018 年 10 月 19 日 微信AI






 前    言


命名实体识别(Named Entity Recognition)作为自然语言处理中一项重要的基础任务,一直吸引着学术界的关注。命名实体识别一般认为是一个序列标注的问题,传统的方法有CRF(Conditional Random Field)。近年来随着深度学习的兴起,包括命名实体识别在内的序列标注模型从CRF迁移到了BILSTM-CRF等深度模型。当前在英文命名实体识别上,最好的模型是加上Character Embedding和ELMo (Embeddings from Language Models)2或者最近google新提出的BERT (Bidirectional Encoder Representations from Transformers)的BILSTM-CRF。


跟英文的命名实体识别不同的是,中文的命名实体识别跟分词息息相关,命名实体的边界也是分词的边界。一般来说,有两种方法,一种是word-based(基于词)的命名实体识别,另一种是character-based(基于字)的命名实体识别。word-based表示,首先对中文进行分词,然后对词(word token)进行序列标注。这种方法的缺点是:1. 分词容易造成错误传播,一旦分词分错了,实体就会被识别错;2. OOV(Out of Vocabulary)识别准确率低。character-based的方法是直接对字(character token)进行序列标注,这种方法的缺点是1. 相比较词(word token),丢失了词的信息;2. character embedding所含信息比较少;总体上两种方法各有优缺点。


我们为大家介绍一篇来自ACL 2018的文章,Chinese NER Using Lattice LSTM1。该文章提出了基于Lattice LSTM的命名实体识别模型,其模型是character-based的,但能够考虑通过词典匹配得到的词信息。一方面因为character-based的,所以不会因为分词造成错误传播,另一方面lattice LSTM模型能够考虑词的信息。实验结果显示,在多个数据集上,基于latticeLSTM的模型都取得了最好的效果。


首先,我们先回顾下基于序列标注的命名实体识别的几种主要方法。




 Character-Based Model 



1.>>>> Char



character-based模型网络结构如上图所示,input layer是单个字(character token)


其中表示第j个字(character token),表示character embeddinglookup table,表示第j个字的embedding。然后通过双向LSTM对每个token encode得到,然后拼接起来得到



然后再接上CRF层进行序列标注。

 

2.>>>> Char + bichar


encoding层,将character bi-gram embeddingcharacter embedding 拼接起来。



3.>>>> Char + softword


把分词的标记(BMES)作为特征,将segmentation label embeddingcharacter embedding拼接起来。





 Word-Based Model 



1.>>>>Word


word-based模型的网络结构跟character-based基本上一样,唯一不同的是在input layer,输入的是分好的词(word token)


其中,表示第i个词,表示word embeddinglookup table表示第i个词的embedding。然后通过双向LSTM对每个token encode 得到,然后拼接起来得到

然后再接上CRF层进行序列标注。


前面提到,word-based方法对OOV效果不好,因为词(word token)相对于字(character token)更容易是OOV,在训练/预测的时候OOVtoken都会映射到<unk>。当前主流的word-based方法都会加入character embedding来提高OOV的准确率

其中,表示第i个词中character embedding的结果。常用有两种方法,一种是LSTM-based,一种是CNN-based,下面分别介绍。


2.>>>>Word + char LSTM


将第i个词中的每个字首先经过embedding层,然后通过双向LSTM encode分别得到。其中表示第i个词的长度,表示第i个词中的第k个字。最终character embedding表示为


3.>>>>Word + char CNN


将第i个词中的每个字首先经过embedding层,然后通过CNN + max pooling得到对应的character embedding表示


其中,是需要学习的参数,ke表示kernel sizemax表示max pooling





 Lattice Model


接下来我们介绍本篇文章的主要方法Lattice Model。整个网络结构如下图所示,其结构可以看成是在character-based模型基础上加上了word-based cell和额外的gates来控制信息流。


input层,是character序列和通过词典匹配到的词,其中,be分别表示该词的起始位置,d表示来自于词典匹配。如下图中, 表示“南京市”。




首先,我们回顾下基本的LSTM模型。



其中,表示第j个位置的character embedding,分别表示input, forgetoutput gates是需要学习的参数。表示sigmoid函数。


最核心的内容来了,上面提到会通过词典匹配得到词,我们先通过embedding层,得到word embedding表示



对于每个匹配到的词,计算其word cell 如下



其中,分别表示词的inputforget gates。由于最终预测的标签是基于字的,所以不计算词的output gate


对于,由于增加了,会有更多的路径将信息传过来。如上图所示,的信息来源于()(南京市)。我们将所有的表示词典)连到,另外通过gate 来控制每个信息贡献量,计算如下。


加上后的最终计算如下:





其中, 归一化后的值。







 预  测  和  训  练


预测层跟大多数方法一样,是CRF层,预测序列的概率计算如下:


损失函数是对数似然






 实   验 


 >>>> 数据


数据集

Train集标准分词

Dev集标准分词

Test集标准分词

OntoNotes

MSRA

Weibo NER

Resume

 

 >>>> Dev 集实验结果


首先在OntoNotesdev集上比较不同设置的结果,用来选取最好的设置。其中auto seg表示用training集训练一个分词工具,来对dev集进行分词。




从上表结果显示:


  • 1. 对于word-based模型,加入character embedding效果提升明显,其中word baseline + char + bichar LSTM效果最好;


  • 2. 对于character-based模型,加入softwordbichar都有提升,其中char baseline + bichar + softword效果最好;


  • 3. 本文提出的Lattice模型效果最好,F1值比最好的word-basedcharacter-based模型分别提高1.591.98个百分点;

 

 

上图表示不同的模型随着迭代数增大F1值变化的情况,注意到char_latticechar+bichar_lattice更好,一个可能的原因是lattice模型本身已经考虑到了词的信息,加入bichar,反而会增加noise


  >>>> Test 集实验结果







 

上面四个图分别表示在四个测试集上的最终实验结果,我们可以看出:


  • 1. 在没有标准分词的情况下,Lattice取得了最好的结果;


  • 2. 在有标准分词的情况下(OntoNotes),word-based的方法效果最好;


>>>> 实验分析



上图表示不同的模型在不同长度sentence上的F1值,可以看出:


  • 1. Char baseline在不同长度的sentence上比较稳定,但F1值都比较低;


  • 2. 其他几个模型都会随着sentence长度的增加,F1值会下降,但相比较而言,Lattice会稍微稳定一点;

 


上图是一个例子,首先对于”word + char + bichar LSTM”,分词分错了,所以实体也会识别错。对于”char + bichar + softword”,虽然单看“东莞台协会”没有问题,但“长职务后”显然不符合正确句式。而”Lattice”在这个例子中,由于东莞台协会长在词典中,所以最终能够预测正确。

 



 总    结


这篇文章提出的Lattice LSTM还是比较新颖的,可以借助外部词典的信息,在中文命名实体识别的任务上取得了很好的实验结果。


Lattice LSTM由于是character-based(基于字)的,所以不会因为分词错误造成错误传播,另外能够考虑所有通过词典匹配到词的信息。该方法可以尝试用在其他序列标注任务中,作者也开源了相关的代码4,大家可以多尝试。最近ELMO和google刚提出的BERT很火,在英文的命名实体识别上提升效果很多,大家也可以在中文上尝试。

 

 

参考文献


1.     Chinese NER Using Lattice LSTM, https://arxiv.org/pdf/1805.02023.pdf


2.     Deep contextualized word representations, https://arxiv.org/pdf/1802.05365.pdf

 

3.     BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, https://arxiv.org/pdf/1810.04805.pdf


4.     https://github.com/jiesutd/LatticeLSTM


登录查看更多
47

相关内容

实体抽取,也就是命名实体识别,包括实体的检测(find)和分类(classify),要识别出文本中出现的专有名称和有意义的数量短语并加以归类。
基于深度学习的表面缺陷检测方法综述
专知会员服务
92+阅读 · 2020年5月31日
深度学习自然语言处理概述,216页ppt,Jindřich Helcl
专知会员服务
209+阅读 · 2020年4月26日
【MIT深度学习课程】深度序列建模,Deep Sequence Modeling
专知会员服务
76+阅读 · 2020年2月3日
深度学习自然语言处理综述,266篇参考文献
专知会员服务
225+阅读 · 2019年10月12日
命名实体识别新SOTA:改进Transformer模型
AI科技评论
17+阅读 · 2019年11月26日
一文读懂命名实体识别
AINLP
31+阅读 · 2019年4月23日
NLP - 基于 BERT 的中文命名实体识别(NER)
AINLP
466+阅读 · 2019年2月10日
命名实体识别(NER)综述
AI研习社
65+阅读 · 2019年1月30日
论文浅尝 | 利用 RNN 和 CNN 构建基于 FreeBase 的问答系统
开放知识图谱
11+阅读 · 2018年4月25日
神经网络结构在命名实体识别(NER)中的应用
全球人工智能
10+阅读 · 2018年4月5日
基于attention的seq2seq机器翻译实践详解
黑龙江大学自然语言处理实验室
11+阅读 · 2018年3月14日
专栏 | Bi-LSTM+CRF在文本序列标注中的应用
机器之心
14+阅读 · 2018年1月3日
Arxiv
5+阅读 · 2018年5月5日
Arxiv
4+阅读 · 2015年8月25日
VIP会员
相关资讯
命名实体识别新SOTA:改进Transformer模型
AI科技评论
17+阅读 · 2019年11月26日
一文读懂命名实体识别
AINLP
31+阅读 · 2019年4月23日
NLP - 基于 BERT 的中文命名实体识别(NER)
AINLP
466+阅读 · 2019年2月10日
命名实体识别(NER)综述
AI研习社
65+阅读 · 2019年1月30日
论文浅尝 | 利用 RNN 和 CNN 构建基于 FreeBase 的问答系统
开放知识图谱
11+阅读 · 2018年4月25日
神经网络结构在命名实体识别(NER)中的应用
全球人工智能
10+阅读 · 2018年4月5日
基于attention的seq2seq机器翻译实践详解
黑龙江大学自然语言处理实验室
11+阅读 · 2018年3月14日
专栏 | Bi-LSTM+CRF在文本序列标注中的应用
机器之心
14+阅读 · 2018年1月3日
Top
微信扫码咨询专知VIP会员