引言
命名实体识别(Named Entity Recognition,后文简称NER)是指从文本中识别具有特定类别的实体(通常是名词),例如人名、地名、机构名、专有名词等。命名实体识别是信息检索,查询分类,自动问答等问题的基础任务,其效果直接影响后续处理的效果,因此是自然语言处理研究的一个基础问题。
传统的方法
NER的问题通常被抽象为序列标注(Sequence labeling)问题。所谓序列标注是指对序列中每个符号赋予一个特定的标签。例如:Barack H. Obama is the 44th President of the United States.其中 Barack H. Obama是人名,United States是国家名。对每个词给出一个特定的标签来表明是某个特定类型的开始,结束和中间词等。容易观察到每个词的标记依赖附近的词。所以最简单的方法是采用分类的方法,如图 1所示。
使用若干特征,例如附近词语的信息来为每个词语进行单独分类。这里周围词语的标记也是一个很好的特征,但是在顺序扫描的过程中,后面的标签还没有计算出来,所以不能有效利用。此外该方法难以传递不确定性。改进的方法是基于概率的方法,其中最有代表性的算法是隐马尔可夫模型(HMM)和条件随机场(CRF)。HMM 的方法如图 2所示,x表示标签,y表示观测的词,该模型对于给定一个观察的词序列,产生该观察序列概率最高的标签序列。CRF也是类似的概率方法,其效果是传统方法中最好的。
基于深层神经网络的方法
人们很早就开始研究基于神经网络的模型,但是当网络层数比较深的时候,很容易过拟合。2006 年Hinton【Geoffrey E Hinton and Ruslan R Salakhutdinov。Reducing the dimensionality of data with neural networks。Science,313(5786):504–507,2006。】提出一个可行的算法,在一定程度上减轻了深层神经网络过拟合的问题,并在图像和语音领域取得惊人的效果,使得深层学习成为近些年研究的热点。2015年Google的最新模型在ImageNet的识别率甚至超过人工标注的效果。在自然语言处理方面,深层学习已经被应用到词语的分布式表示、词义消歧、句子语义计算、复述检测和情感分类等多个方面。对于NER的问题,目前最好的模型是2011年Collobert提出的一个基于窗口的深层神经网络模型,其效果和性能超过了之前的传统算法。下面将介绍该模型的理论,以及我们实现该模型过程的具体细节和技巧。
【模型】
该模型从输入的句子中自动学习一系列抽象的特征,并通过后向传播算法来训练模型参数。模型的整体架构如图3所示【Ronan Collobert,Jason Weston,Léon Bottou,Michael Karlen,Koray Kavukcuoglu,and Pavel Kuksa。Natural language processing (almost) from scratch。The Journal of Machine Learning Research,12:2493–2537,2011】。第一层抽取每个词的特征,第二层从词窗口中抽取特征,并将其看做一系列的局部和全局结构,从而区别传统的词袋模型。后面的层和经典的神经网络一样。
该模型可以被抽象地描述为图4所示。图中绿线表示从输入的句子向量中抽取指定窗口大小的向量交给窗口层。中间的隐藏层可以是多层, 这里只绘制了两层。最后一层是用softmax函数输出标签。
下面给出模型的详细描述和推导,为了方便公式表示简洁,将图3简化为3层的模型,如图5所示。去掉最外层的输入层 (因为这一层可以通过查找表实现) 和部分隐藏层,读者不难拓展到更高层的模型。简化模型中j、k、l分别是窗口层,隐藏层和输出层的节点下标。x表示输入的词向量,W和b1分别是第一层网络的权重和偏置项。f是激活函数,可以取双曲正切或者sigmoid函数。V和 b2分别是隐藏层网络的权重和偏置项。η也是激活函数,但一般最后一层取softmax。模型的数学描述如下公式。m是输出的标签个数,f取双曲正切,η取softmax。
【损失函数】
如果把样本的分布看作多项分布,则容易写出样本联合概率的解析表达式,而后用极大似然估计求解。目标函数如下公式所示。n是样本量,h是隐藏层节点个数。c是窗口大小。d是词向量的维度。这里按照目标函数的通常处理方法,将极大化似然转化为极小化负对数似然。取对数的目的是简化后面的求导公式,取负号将极大问题转化为标准的极小问题。在损失函数中除了极小化负对数似然,还增加了W和V的L2正则项。原因是softmax函数的参数存在冗余,也就是极小点不唯一,为了将解唯一化,增加该正则项。另一方面,L2正则从概率角度看相当于对参数增加了高斯先验,控制了参数的方差,惩罚过大的参数,对于提高模型的泛化能力有帮助。罚因子λ调节正则项的权重,取值越大,对大参数的惩罚越大。后面我们简单的将λ取作c。需要注意的是正则项中不包含偏置参数 b1和b2。
【算法】
模型的训练可以采用随机梯度下降的方法。 这里一次只更新一个样本, 所以目标函数简化为下面公式的形式。
其中λ是学习率。下面给出每个参数的梯度计算公式。
其中t是学习率。下面给出每个参数的梯度计算公式。
随机梯度下降的方法有一个重要的参数是学习率,学习率太大,模型会快速收敛,但是精度不高,反之如何学习率太小,精度高,但是收敛速度慢。这个参数需要通过搜索的方法确定。
【词向量】
Collobert 的模型在没有对词向量预处理的情况下效果并不如传统的方法,原因是可供训练的有标签的数据很少,而词的频率分布符合幂率分布,很多长尾的词得不到充分训练,不能获得足够的信息。解决的方式是在训练神经网络之前,先用无标签的数据对词进行训练。好在无标签的数据很多,省掉了数据标记的成本。具体训练算法可以采用word2vec【Tomas Mikolov,Kai Chen,Greg Corrado,and Jeffrey Dean。Efficient estima- tion of word representations in vector space。arXiv preprint arXiv:1301.3781,2013】的方法或者Huang【Eric H Huang,Richard Socher,Christopher D Manning,and Andrew Y Ng。Improving word representations via global context and multiple word proto- types。 In Proceedings of the 50th Annual Meeting of the Association for Com- putational Linguistics:Long Papers-Volume 1,pages 873–882。Association for Computational Linguistics,2012】提出的方法。
【讨论】
第一层词向量的初始化好坏对于最终的分类效果影响很大, 所以需要用大量的无标签数据训练。
网络层数对结果的影响在超过4层以后影响不大。
NER是序列标注的一个特例,对于一般的问题,如词性标注(POS)和语块分析(Chunking),可以用基于窗口的方法。但对于语义角色标注 (SRL)还是不够的,需要卷积的方法,本质上是多个基于窗口的方法的叠加,所以卷积可以看做是 泛化的窗口方法。
基于窗口的方法,模型并不知道有一个句子,每次只看到窗口内的信息, 假定标签只依赖局部的词。如果某些特殊的NER不能满足这个假定,需要考虑基于卷积的方法。
深层学习方法在京东智能客服上的应用效果
JIMI机器人是京东基于自然语言处理和意图识别等技术实现的一个自动应答系统,其服务功能从客服到售前逐步延伸。当用户输入问题后,我们需要从中找出命名实体。图6是采用基于窗口的深层神经网络和传统的CRF方法的比较,可以看到大部分标签的F1值都有所提升,平均值从84.9%提升到90.9%。
总结
本文在介绍NER传统方法的基础上,引出深层神经网络方法,针对基于窗口的模型给出了理论分析和实际的调参经验。我们的体会是,深层神经网络在克服了过拟合问题后,用更多参数的非线性模型去拟合真实的模型,比传统的浅层模型在效果上有了较大的提升。但是对于图像和语音的进展而言,深层神经网络在自然语言处理方面还有待更大的提高。
作者简介:张晓鑫,京东商城DNN实验室研究员。曾任职于Google公司。主要研究方向包括信息检索、自然语言处理、机器学习和分布式计算。目前专注于基于深层神经网络的语义计算问题。