LSTM Neural Networks for Chinese Word Segmentation

0.摘要

现在绝大多数的先进的中文分词方法都是基于有监督学习,其特征多数从本地文本中提取。这些方法不能利用一些至关重要的长距离的信息。在本篇文章中,我们发表了一篇对于中文分词的神经网络模型,它采用了长短记忆(LSTM)网络将先前的重要信息保存在记忆细胞中,并且避免了本地文本窗口的限制。实验在PKU,MSRA和CTB6人工标注的训练集,并展现出了比以往先进模型更出色的表现。

1.介绍

分词是中文自然语言处理中的一项基本任务。近些年,中文分词(CWS)的到了巨大的发展。流行的方法是将分词任务视为序列标记的问题。序列标注的目标是给序列中每一个元素分配标签,使用最大熵(ME)和条件随机场(CRF)等有监督学习算法可以实现。然而,这些模型受制于特征的设计,并且特征种类繁多以至于结果模型太大不利于实际应用,还被证明对于训练语料会产生过拟合。

RNN for NLP

背景

近些年,深度学习备受关注,这一前沿技术将在众多NLP问题上大放异彩,如预言模型,机器翻译,语音识别,语义理解等。然而解决这些应用上的问题,还需要人们不断探索与研究。本文将借鉴一些论文以及网上一些博客上的思想,如有侵权请给我留言,以便及时更正。
本篇文章将讨论RNN解决NLP中序列标注问题的优化。序列标注是NLP领域中有代表性的任务,可以解决中文分词,命名实体识别,词性标注等经典问题。解决序列标注问题的传统方法有CRF、最大熵等。随着深度学习技术的不断发展,深度学习将逐渐地取代传统方法。

序列标注

如上文所描述,一些NLP的问题可以转化为序列标注任务,所谓“序列标注”,就是说对于一个一维线性输入序列:

1
X = x1, x2, x3,..., xi,..., xn

得到标签集合中每个元素对应的标签:

1
Y = y1, y2, y3,..., yi,..., yn

所以,其本质上是对线性序列中每个元素根据上下文内容进行分类问题。一般情况下,对于NLP任务来说,线性序列就是输入的文本,往往可以把一个汉字看做线性序列中的一个元素,而不同标签集合对应的任务可能不想同。但是归根结底,都是抽象成了一个问题:如何根据汉字的上下文给汉字打上一个合适的标签。
下面再用命名实体识别(NER)问题举个序列标注解决问题的例子,命名实体识别任务是识别句子中出现的实体,通常识别人名、地名、机构名这三类实体。假设输入中文句子如下:

1
{花园北路的北医三院里,昏迷三年的我听杨幂的爱的供养时起身关了收音机。}

首先,我们将其看做汉字线性序列,然后我们定义标签集合:

1
LabelSet={BA, MA, EA, BO, MO, EO, BP, MP, EP, O}

其中,BA代表这个汉字是地址首字,MA代表这个汉字是地址中间字,EA代表这个汉字是地址的尾字;BO代表这个汉字是机构名的首字,MO代表这个汉字是机构名称的中间字,EO代表这个汉字是机构名的尾字;BP代表这个汉字是人名首字,MP代表这个汉字是人名中间字,EP代表这个汉字是人名尾字,而O代表这个汉字不属于命名实体。
有了输入序列和标签集合,我们只需要通过已有语料训练出ML模型,对于新的文本序列可以得到对应的标签,再通过后处理,把人名,地名,机构名都明确标记出来。如下图所示:
NER

RNN解决序列标注问题

首先用RNN解决序列标注问题,然后可以通过LSTM或者GRU来代替RNN中的隐藏单元,因为LSTM或GRU对于解决长距离依赖问题明显优于RNN本身。如果训练数据规模不大的情况下,很可能出现过拟合现象,所以使用LSTM的时候记得用上DropOut以及L1/L2正则来避免过拟合。至于GRU和LSTM两者相比,到底哪个更好目前并无定论,倾向于认为两者性能差不多,但是GRU是LSTM的简化模型,所以同样结构的神经网络其参数要少,在训练数据不太大情况下,优先考虑使用GRU。

参考文献

使用RNN解决NLP中序列标注问题的通用优化思路