论文阅读总结——Chinese NER Using Lattice LSTM
论文阅读总结——Chinese NER Using Lattice LSTM
这是本人的第一篇博客,经验尚浅,还望多多指教
博主最近在做中文命名实体识别(以下简称 NER),期间阅读了相关文献,在此对一些文章进行介绍和总结,加深印象,加深理解。
本文讲述今年发表在 ACL 的文章《Chinese NER Using Lattice LSTM》,作者是来自新加坡科技设计大学的 Yue Zhang 和 Jie Yang。
进入正题之前,先说明一下 NER 的研究现状。方法上大体分为两类:基于统计机器学习、基于深度学习。近年来,硬件的飞速发展使得计算机的计算能力大幅度提升,再加上互联网普及产生的海量数据的支持,深度学习得以走出低谷,迎来了新一轮热潮。深度学习以神经网络为基本结构,因其具有从大量无标注语料中获取潜在语义信息的能力,使得研究者不必花时间去了解特定领域和语言学知识,也无需人工提取大量特征,有效地避免了人工特征工程的费时费力。尽管深度学习在文字处理方面的提升效果不如在视频、图像和语音那样显著,但是越来越多的研究者在 NLP 领域提出了各种各样的模型结构,使用 Deep Learning 处理 NER 问题正逐渐成为趋势。
目前英文NER效果最佳的模型是 LSTM-CRF,对于中文 NER,也可以使用这种模型。不过,中文文本不同于英文文本,需要预先对其进行分词(基于字的方法),尽管分词工具有很多(中科院 ICTCLAS、哈工大语言云、Python的 jieba 和 SnowNLP 等),但是分词效果不太可能是完美的。通俗来说,NER就是通过序列标注对实体边界和实体类别进行预测,从而识别和提取出相应的命名实体。所以,一旦出现分词错误,就会直接影响实体边界的预测,导致识别错误,这在开放领域是很严重的问题。
为了避免上述问题,研究者们开始尝试基于字符的方法。该方法无需分词,以每个字符为单位进行训练。虽然训练集规模变大,训练时间变长,但是研究表明,对于中文NER,基于字符的方法优于基于字的方法。但是,可以想到,由于没有进行分词,所以基于字符的方法无法利用句子中的单词信息,这也会使得识别效果有瑕疵。举个例子,比如一句话“南京市长江大桥”,如果没有单词信息,识别结果很可能为:“南京“,”市长”,“江大桥”。
好了,说了这么多,现在进入正题。这篇文章针对中文NER提出了一种网格结构的 LSTM 模型(Lattice LSTM),如下图所示。相比基于字符的方法(character-based),能够充分利用单词和词序信息;相比基于字的方法(word-based),不会因为分词错误影响识别结果。
网上已经有一些关于这篇文章的博客,但都是对论文的直译,而且没有提到模型原理。我认为,阅读深度学习的文章,重点在于对模型的理解,所以我不会对文章内容进行翻译,而是直接讲解模型的工作原理。
该模型的核心思想是:通过 Lattice LSTM 表示句子中的单词,将潜在的词汇信息融合到基于字符的 LSTM-CRF 中。实际上,该模型的主干部分依然是基于字符的LSTM-CRF,只不过这个LSTM每个Cell内部的信息处理方式与基本的LSTM不同。因此,只要理解了这一点,就能掌握该模型的工作原理,下面对此具体讲解。
从上图可以看出,模型中有一些红色的 Cell,他们是句子中潜在词汇产生的信息,同主干 LSTM 相应的 Cell 连接起来就构成了类似于网格的结构,也就是题目中的 Lattice,那么这些红色 Cell 如何融合到主干 LSTM 呢?
如下图所示,基本的 LSTM 结构中,每个 Cell 含有输入门、遗忘门和输出门,它们都是0~1的小数(默认**函数为 Sigmoid),根据当前输入和前一个 Cell 的输出计算得到的。还有一个核心元素就是 Cell State,也就是上面那条从左到右的箭头,它从头走到尾,记录整个序列的信息。输入门决定当前输入有多少加入 Cell State;遗忘门决定 Cell State要保留多少信息;输出门决定更新后的 Cell State 有多少可以输出。
基本 LSTM 的 Cell 内部算法如下 ,其中的参数、函数以及符号均为基础知识,在此不过多解释。
回到本文的 Lattice LSTM 模型(截取局部进行说明),比如“桥”字,句子中潜在的以它结尾的词汇有:“长江大桥”和“桥”。因此,当前字符 Cell 除了“桥“字以外,还要考虑这两个词汇。从图上看就是两个红色 Cell 引出的两个绿色箭头,代表这两个词汇的信息。
文章中对于词汇信息的算法如下图公式所示,每个词汇的红色 Cell 类似 LSTM Cell 且相互独立。因为序列标记是以字符为级别,所以这个 Cell 中没有输出门,Cell State 即为词汇信息。
其中,矩阵中的 X 和 h 分别表示词向量和词首字符 Cell 的输出。
由 LSTM 的思想可知,这些词汇信息不会全部融入当前字符 Cell,因此要进行取舍。文章提出额外的门控单元(Additional Gate),根据当前字符和词汇信息来计算词汇信息权重,如下图公式所示。
其中,矩阵中的 X 和 c 分别代表当前字符的字符向量和当前词汇的 Cell State 。
然后,文章提出一种归一化算法求出当前字符 Cell 各种输入的权重,类似 Softmax 函数,如下图公式所示。分母看起来有点复杂,其实就是句子中以当前词结尾的所有词汇的权重以及当前字符输入门的求和(取以e为底的指数使得结果为正)。
最后,当前字符的 Cell State 就可以算出来了。
这里一开始有个疑问,为什么没有遗忘门?? 仔细思考了一下,我的理解是:计算词汇信息时用到了主干 Cell State,因此计算当前字符的 Cell State 时通过门控单元来取舍词汇信息的过程,其实就是在对主干 Cell State 进行取舍,相当于隐含了一个遗忘门。
至此,我讲完了对模型核心部分的理解,关于数据集、超参数、实验过程及结果等详见原文,这里不做说明。
由于接触深度学习不到半年,不保证所有细节都理解正确,所以还望各路高手及时纠正,谢谢!!!
作为博客的处女作,经验尚且不足,还望各位多多指点,今后会不定期写一些学习过程中遇到的问题以及心得体会,希望大家喜欢!