Lattice LSTM
PART 1
简谈背景和问题
命名实体识别(Named Entity Recognition, NER)是通过序列标注对实体边界和实体类别进行预测,从而识别和提取出相应的命名实体。
近些年来,NER采用深度学习的研究工作已经成为主流,对于中文NER来说,有些问题我们需要注意,因为中文文本首先要解决的就是分词问题,是采用单字编码还是词的编码,两种编码方式都各有千秋。中文分词就意味着一定的分词错误问题,而这种分词错误当然也会对实体边界的识别造成影响。
本文是ACL2018中一个中文命名实体识别方法,即Lattice LSTM,这个方法不仅考虑了字符信息,还考虑了词和词序的信息,并且,不会出现上面阐述的中文分词错误问题。
PART 2
宏观角度看模型
我们先来看一张图片。
以上的句子相信熟悉NLP的同学来说并不陌生,这是一个中文分词的经典案例,不同的划分词法将会有不同的含义,也就是图中标注红的地方所表达的疑问?江大桥是不是个人的名字呢?还是和前面的字组成一所著名的长江大桥呢?这也体现了中华文化的博大精深!!!
根据上面的描述,图中标注的江大桥很明显会有歧义的,但是我们也可以发现长江大桥表示的一个词或者长江与大桥代表的两个词,如果把这部分的分词结果信息都在建模中考虑到,是不是可以消除江大桥的所带来的歧义问题呢?Lattice LSTM就是考虑了这一点。
下面看一下Lattice LSTM的结构图。
图上虽然没有详细注明,但是Lattice LSTM的主干是LSTM + CRF模型。上图中我们也能够很明显的看到有绿色的路径图和红色的Cell图,不难发现,绿色路径图表示能够组成词的起点和终点位置,红色代表的词语信息。
这里面主要分为三大部分,一部分是字的编码,另一部分是词的编码,另外一部分就是将字和词的信息融合之后最终采用CRF解码。
如何做到字和词的融合的,这里已经不是以往的LSTM结构,要不也不会称之为Lattice LSTM,下面从微观角度看一下是怎么融合的?
PART 3
微观角度看模型
我们还是结合论文中给出的模型图以及结合具体的公式好好理解一下,模型图见下图。
我们首先来看一下字符的编码,其实这部分还是采用的标准的LSTM来获取序列信息,与以往一致,从下面的公式中,我们也不难发现没有变化。
我们接下来看一下词的编码,为了清晰的说明,先根据论文来看几个符号定义。
下面公式中有类似这种形式的,都是类似的意思。
下面是词的编码公式,有输入们和遗忘门,但是没有输出门。
上面的公式仅仅是计算了一个词的cell信息,而我们通过上面的阐述能够得知,在某一个字符处,可能存在多个词序列,比如在“桥”这个字符处,可以是单字桥,可以是大桥或者是长江大桥这样的词。
那么如何将这些词信息融合到字符信息中,并且谁占的权重较大呢?论文中提到了采用另一个门控单元,同样的,也给出了最终的cell state的计算公式。具体计算如下,其中计算权重的部分采用了归一化算法。
最终的隐层状态和以前一样的计算方式,隐层状态之上是常规的CRF模块,用于最终的预测解码。
PART 4
总结
论文中提出的Lattice LSTM模型对字符和分词匹配得到的所有词进行编码。该模型充分的利用了词和词序信息,并且不会出现分词的错误。实验结果表明,Lattice LSTM达到了很好的效果。
但也存在一些问题,比如模型结构相对于传统的LSTM要复杂,在效率上要低下很多。另外,仅仅采用了单向的LSTM,序列的反向信息没有充分利用。
参考资料
Chinese NER Using Lattice LSTM
https://github.com/jiesutd/LatticeLSTM
上述图片均来自于原论文。