命名实体识别(NER)可以被当作序列标注问题来解决,其中实体边界和类别标签被联合预测。不同于英文命名实体识别,中文没有明显的单词边界,字符序列下不同分词会有不同含义,导致命名实体识别任务更加困难。一种直观的方法是先分词再进行词级别的序列标注,但这种方法会带来分词的错误传递问题。另一种是直接基于字符级的序列标注,但这种方法忽略了词级别的信息。第三种折衷的方法是基于字符级别进行序列标注,把词信息融合到字符序列中。这种方法包括数据融合(例如分词和NER进行多任务学习)、结构融合(通过修改模型结构直接将词典融入到训练过程)。本文主要介绍第二种。涉及到的文章如下。ACL2020似乎也接收了几篇,后期会更新加上。
开启神秘之旅:)
>> Chinese NER Using Lattice LSTM(Lattice-LSTM/ACL2018)
模型结构融合词典信息做序列标注的开山之作,致敬杨老师和张老师!
模型精髓体现在这里:
第j个字的细胞状态由门控单元控制的两部分组成:
具体讲解移步这篇知乎和这篇知乎
>> An Encoding Strategy Based Word-Character LSTM for Chinese NER(WC-LSTM/NAACL2019)
这篇文章也是用RNN系列为主模型,但不同于Lattice-LSTM, 在RNN进行编码时只进行字符序列的编码,第j个字符的输入为第j个字符的向量表示和以这个字符为结尾的词的向量表示的拼接,以此为输入进行正常的RNN编码操作。
由于以第j个字为结尾的词的数量不固定,文中提出四种策略得到以第j个字为结尾的词的表示,分别是最长路径,最短路径,均值,自注意力编码四种策略。
具体讲解移步这篇知乎和这篇知乎
>> A Neural Multi-digraph Model for Chinese NER with Gazetteers(Multi-digraph/ACL2019)
本文利用一个多维图来融合词信息,它将Lattice-LSTM中的链式结构转为图式。图中节点为字符和词,建图后采用GRU方式进行更新。需要注意的是,这篇文章的词汇信息使用的是带标签的gazetteer词表,其余文章的外部词表无标签。
具体讲解移步这篇知乎和这篇知乎
>> CNN-Based Chinese NER with Lexicon Rethinking(LR-CNN/IJCAI2019)
这篇文章以CNN为模型的主要框架,通过CNN中对N-gram的卷积操作来得到句子中的潜在词语信息。由于自底向上的卷积在低层时无法获取高层语义信息,会导致lexicon的歧义问题,因此采用Rethinking机制,将高层信息重新输入底层,让模型“重新思考”。
具体讲解请移步这篇博客和这篇博客
>> Leverage Lexical Knowledge for Chinese Named Entity Recognition via Collaborative Graph Network(Lexicon-CGN/EMNLP2019)
Lattice LSTM存在三个缺点:
针对上述问题,本文提出一种字符级的协作图神经网络。包括编码层,构图层,融合层,解码层。为了获取多角度全方位的词语信息,作者在构图层提出三种构图方式,在融合层将三种构图得到的向量表示进行融合。
编码层
字符表示--->双向LSTM编码
词表示----->Lookup Table
构图层
图中的节点为字和词,针对边的连接提出三种构图方式,相邻矩阵中连接边为1,不连通为0
//Containing graph (C-graph)
字与字之间无连边,词与它包含的字之间有连边
//Transition graph (T-graph)
相邻字符相连,词与它前后的字符相连
//Lattice graph (L-graph)
相邻字符相连,词与它开始结束的字符相连
最后,针对三种图,使用Graph Attention Network(GAN)来进行编码。最终每个图的输出为
其中
融合层
其中
解码层
CRF解码
最终实验结果会在最后统一分析,这里说一下作者的消融实验
其中
>> A Lexicon-Based Graph Neural Network for Chinese NER(LGN/EMNLP2019)
RNN结构按照严格的sequential结构进行编码,但语言的底层并不是严格按照sequential序列来理解的。例如“印度河流经印度”,“流”属于“河流”,“流经”, Lattice-LSTM在进行编码时,“流”只能接收“河流”所包含的语义信息,因而造成歧义。(和上一篇论文所提到的第一个缺点类似)
本文提出lexicon-based graph neural network (LGN)来进行图节点分类,从而实现序列标注。通过图中各个节点的相连结构来实现局部语义信息的融合,增加一个全局节点实现全局信息融合。图中节点通过递归融合其传入节点和全局节点实现节点信息更新。
编码层
字符表示------->双向LSTM编码
词表示--------->Lookup Table
全局节点表示-->整句话中,字符和词的平均值
构图
图中节点是所有的字符,边是隐含的词,将其头尾字符相连。例如图中
局部聚合
使用Multi-Head Attention作为聚合函数
节点:对于当前节点,其流入边和前继节点包含了潜在的单词边界信息,因此当前节点与它的邻接节点和邻接边做聚合。
边:对于边来说,这边条所cover住的字能够表示这条边上单词的拼写信息,因此当前边与这条边所cover的节点进行聚合
其中
全局聚合
其中,
递归更新
//节点更新
与循环神经网络异曲同工,从上往下依次是输入,注意力,更新门,输入门,忘记门。其中
//边更新
//全局节点更新
边更新和全局节点更新是相似的操作,输入有些许差别,具体可参考论文,这里不贴公式了。
解码
CRF进行解码
最终实验结果会在最后同一分析,这里放消融实验的实验结果
>> Porous Lattice-based Transformer Encoder for Chinese NER(PLTE/Arxiv)
写在前面:我觉得这篇论文和前两篇基于图结构的论文在公式表示上有异曲同工之妙,都是用self-attention来表示字词间的关系(当然你也可以说现在万物皆可self-attention),也都需要GRU来维持输入的序列信息,尤其A Lexicon-Based Graph Neural Network for Chinese NER最后的递归操作与本文解码时使用的Bi-GRU有着相似的出发点,且都考虑到了全局和局部信息,使用了全局节点来建模全局信息的流通。
输入层
字向量和词向量:lookup table
位置编码:字的位置是在字符序列中的位置,词的位置是这个词的开始字符的字符位置。例如"南京市长江大桥"中"南"的位置为0,"南京"的位置也为0
基于lattice-transformer的多孔编码层
//Lattice Aware自注意力机制(LASA)
首先是自注意力机制的计算。在输入层中,位置编码不能完全表示词在句子中的相对位置。例如"南京"和"南京市"的位置都是0,但"南京"对于"市"来说是他前面的词,"南京市"对于"市"来说是包含关系,因此本文在图1列出了几种相对位置的关系定义,在图2给出了具体的例子:
图1 图2这里有七种关系,还有一种是全局节点与所有节点的连接定义为
公式中,针对K和V给了两个关系矩阵
//多孔多头编码层(PMHA)
Motivation中我们提到,为了更加关注局部信息,本文提出了多孔机制,对于相邻节点直接计算自注意力,对于不相邻节点通过全局节点两步到达。这里,文章对于相邻的定义是图1中的前6种关系
从第二行公式可以看出,当前token
解码层
解码的时候,因为是基于字符序列的序列标注模型,所以将词mask掉。最后的解码层使用Bi-GRU+CRF。至于为什么要加GRU层,笔者认为,单纯的几层多头注意力机制并不能很好的捕捉序列信息,而作为用CRF解码的序列标准模型来说,序列信息是至关重要的,因此在之前加了一层GRU。其实在前面两篇图神经网络的论文中,他们的字符表示都是通过GRU得到的,尤其是A Lexicon-Based Graph Neural Network for Chinese NER最后还加了递归更新操作,加强序列信息的建模。
BERT_based
这篇论文还加了BERT作为编码层的实验。在这个实验设置中,字向量由BERT得到,词向量由lookup table获得。最终的解码层和BERT-Tagger保持一致,使用softmax解码。
同样的,放消融实验结果
我终于。。。总结完了,最后是开心的对比结果时间,我把所有模型的结果放在了一个表格中,还有最终的速度对比。
碎碎念一下实验过程,我跑了[1]lattice-LSTM, [4]LR-CNN, [7]PLTE,总的来说,用Glove为编码层做实验的时候,超参多,效果不稳定,比较难复现,收敛需要的迭代轮数也比较多(几十轮),尤其对于Weibo这种小数据集效果尤其的不稳定。但在BERT实验的时候,效果容易复现,迭代只需要5-10轮,最终的效果也高。由于Glove时需要使用CRF做解码层,并且有LSTM的存在,最终的测试速度与BERT为编码层的速度不相上下,所以强烈建议大家使用BERT做编码层来用这几个模型。
在实验结果中,[7]PLTE这篇论文自己做了[1]lattice-LSTM, [4]LR-CNN, [7]PLTE这三种模型在BERT上的实验,效果是PLTE最好,至于为什么在Glove的时候PLTE和LR-CNN差不多但在BERT时效果更好,作者认为PLTE使用的多头自注意力机制为模型主干,更容易和BERT结合,同时模型结构比LR-CNN更简单。BERT模型参数量大,NER数据集规模较小,所以更容易在简单的模型PLTE上取得更好的效果,对于大数据集这种差距还有待验证。
最后要致敬苏劲松老师提出的Lattice-LSTM模型给大家提供了无穷的后续:)))
结束啦!第一次写知乎~请大家批评指正:)))