词是能够独立运用的最小语言单元。英文中,单词之间以空格作为自然分界符,而中文则是以字为基本的书写单位,词语之间没有明显的分界符,如果不进行分词,那么计算机就无法得知中文词语的确切边界,因而很难理解文本中所包含的语义信息。因此,中文分词是中文自然语言处理的一项基础性工作,其在信息检索、文本自动分类及数据挖掘等领域具有举足轻重的地位,是中文信息处理技术发展的技术瓶颈,研究中文分词具有十分重要的意义。
中文分词和未登录词(Out Of Vocabulary,OOV)识别都可以看作一个序列标记任务来完成,应用广泛的序列标注模型主要有隐马尔可夫模型(Hidden Markov Model,HMM)[1]、最大熵马尔可夫模型(Maximum Entropy Markov Model,MEMM)[2]和条件随机场(Conditional Random Field,CRF)[3]模型等。相对于HMM和MEMM,CRF模型能灵活地选择特征和控制训练数据的拟合程度。基于CRF模型进行序列标记的主要任务是针对特定的问题选择有效的特征来描述特定的语言内容。传统的CRF模型中所用的特征表示大多都是基于词袋模型的,而这种模型会出现“词汇鸿沟”现象,即任意两个词之间都是孤立的,即使是“话筒”和“麦克风”这样的同义词也不能幸免于难。同时,使用词袋作为特征训练模型时,低频词容易造成训练不足,也有可能出现过拟合。
2006年Hinton等[4]提出深度学习后,从大量未标记文本中学习字表示的方法已经被证实对识别未登录词、命名实体识别、词性标注[5]和依存分析[6]等是有效的。比如:Mann等[7]提出一个半监督CRF的方法来提高序列分词和词性标注的准确率;Yu等[8]提出一个深层结构的CRF序列标注模型;Zheng等[9]利用深度学习的方法进行中文分词和词性标注的任务,取得的最好结果的 F 值和OOV召回率分别为95.23%和72.38%;来斯惟等[10]将从大规模中文语料中学习得到的语义向量应用到有监督的中文分词中,最终取得94.90%的F值和81.5%的OOV召回率,证明了字向量加入的有效性。这种字表示方法是通过训练数据中的词来学习词向量或词的聚类特征等字表示,然后通过这些字符表示特征总结出词的特征,再在这种特征的基础上进一步进行模型的学习,这样可以显著地提高分词的性能。
本文提出了一个结合字表示和条件随机场的简单有效的半监督方法来提高中文分词的准确率和召回率。首先从大量未标记的微博语料中学习中文字符的语义向量,基于这些语义向量作K-means聚类,同时对中文字符进行布朗聚类,然后再将这些字表示特征应用到CRF模型中进行有监督的中文分词。与传统的分词方法相比,该方法着重从未标记文本中挖掘逐点互信息和访问多种特征。以NLPCC2015中的微博分词任务提供的测试集[11]作测试,本文取得的最好结果为95.67%的F值和94.78%的OOV召回率。实验结果表明字符的表示学习方法对提高中文分词的准确率和召回率是有效的。
1 字表示学习 1.1 系统框架图 1描述了系统的整体框架。首先,用空格将原始文本(没有分隔符)的每个字分开,如给出一个句子S=[C0C1C2C3C4],每个字为Ci,将其分割为字块[C0,C1,C2,C3,C4]; 其次,利用Google开源的深度学习工具word2vec[12]对预处理后的语料进行学习得到字符的向量表示;再次,利用K-means聚类算法得到字的一种聚类类别,同时,使用布朗聚类算法得到字的另一种聚类类别;最后,将这两种不同的聚类结果作为CRF的特征训练语言模型。
本文将K-means聚类类别和布朗聚类类别同时作为特征加入到CRF模型中,可以降低某些不可靠特征造成的风险,也自然地解决了在缺乏词语分隔符的原始文本中进行表示学习的问题。
基于向量的字符表示学习是将一个字用一个低维实向量来表示,向量中的每一维表示某种隐含的句法或语义信息,目标是把对文本内容的处理简化为向量空间中的向量运算,计算出字符在向量空间上的相似度,以此来表示文本语义上的相似度。本文使用Google基于深度学习的开源工具word2vec生成词向量。 用vc∈Rd表示本文想要学习的字符的d维向量;Context表示当前字符的上下文,即当前字符前面和后面各若干个字符(一般为1~5的一个随机数)。根据神经语言模型[13]的研究,可以通过最大化以下目标来优化并得到vc:
$\begin{align} & \sum\limits_{c}{\log p({{\mathbf{v}}_{c}}|\mathbf{Context})=} \\ & \sum\limits_{c}{\log \left[ \frac{\exp (\mathbf{v}_{c}^{T}\cdot \mathbf{Context})}{\sum\limits_{w}{\exp (\mathbf{v}_{w}^{T}\cdot \mathbf{Context})}} \right]} \\ \end{align}$ | (1) |
由式(1)可知,通过对目标概率模型p(vc|Context)使用极大似然估计法,可求得最优化的vc,即本文想要学习的字符向量。而 word2vec 认为p(vc|Context)这个条件概率可以用能量模型来表示,且定义了一个三非常简单的能量函数,即
$E({{\mathbf{v}}_{c}},\mathbf{Context})=-({{\mathbf{v}}_{c}}\cdot \mathbf{Context})$ |
其中:“·”表示两个向量的点积。为了计算条件概率p(vc|Context),需要把语料库里面所有的字符的能量都计算一次,式(1)中的归一化分母$\sum\limits_{w}{\exp (\mathbf{v}_{w}^{T}\cdot \mathbf{Context})}$即表示所有字符(如词汇量)的和。由此,再根据vc的能量,便可得到一个比值,这个比值即为出现vc条件概率。式(1)的目标是在优化概率模型的过程中为大量未标记文本生成了所有字符的向量表示。根据文献[5],为了保证各个字符向量之间具有可比性,对这些字符向量进行了归一化。
根据式(1)学习得到的词向量特征是稀疏的、离散的,虽然离散的特征可能更易集成到现有的自然语言处理(Natural Language Processing,NLP)系统中去,但却丧失了对实向量辨别相似之处的能力,所以对这些实值向量进一步作K-means聚类。在每次迭代过程中,经典的K-means方法将数据对象归入相距中心点最近的一类,同时重新调整和计算这些类的中心点,直到中心点收敛于确定的位置。K-means算法计算简单、有效,但也存在一些严重的不足,需要事先确定聚类的数目,然而,在一般情况下,这个数目往往是不能准确得到的;同时,聚类的结果和效率也往往会受到初始聚类中心位置的影响,在数据维数较高时,聚类的质量也明显下降。本文使用的这种两步的聚类方法其中心向量是从word2vec中得出的,并且实验结果验证了这种方法是有效的[14]。
1.3 基于聚类的字表示本文使用的基于聚类的表示方法是被广泛使用的布朗聚类算法,利用它来训练大量未标记的原始文本得到字的聚类特征。布朗聚类是一个分级聚类算法,这个算法通过最大化二元互信息对字组进行聚类,所以布朗聚类是一个基于类别的两元语言模型。其运行的时间复杂度是 O(V·K2),其中V是词汇的大小,K是聚类的个数。 聚类的分级特性意味着可以在层次结构中选择若干个级别的词类别,这样可以弥补一些由少量字组构成的稀少类别。布朗聚类的一个缺点是其完全基于两字组统计数据,而并没有考虑更大的上下文字组的用法。以前的工作显示词聚类对一般的命名实体识别是一个好的特征[15],Turian等[5]用于基于布朗聚类的字表示来提升命名实体识别在新闻领域的识别。本文采用布朗聚类,从一个分层型字聚类算法中创建聚类特征,给每个字分配一个基于哈夫曼编码的二进制表示,如 “秒”的二进制表示为“0101100”,将这个二进制数作为这个字的聚类特征。
本文使用的两种不同的聚类表示方法的区别在于对字的表示方法不同,K-means聚类算法是以字向量表示为基础的,而布朗聚类则是基于字本身特征的二进制编码表示,在2.3节的实验结果分析中证明了这两种不同的字聚类表示特征对分词结果产生了不同程度的影响。
2 实验及结果分析 2.1 数据和初始化采用NLPCC2015中文微博文本分词任务提供的训练及测试语料作为本文的训练及测试语料,其中训练语料1.96MB(共10000个句子,215567个词),测试语料662KB(共5000个句子,106843个词)。
本文使用条件随机场开源工具CRF++[16]完成中文微博数据上的分词处理。与其他分词方法类似,本文采用四词位标注集体系对汉字进行标注,即对于多字词,词首汉字标签为B,词尾汉字标签为E,词中汉字标签为M;对于单字词,其标签为S。有研究统计表明,在所有的语料中,90%的词是由1~2个汉字组成,95%的词是由 3 个或 3 个以下的字构成,99%的词是由 5 个或 5 个以下的字构成[17],也就是说中文词语的长度绝大多数在 5 字以内,所以本文采用10特征模板集,即以当前汉字为基础取其前后各两个汉字作为上下文,以5字长度的上下文窗口来作特征信息统计。设当前字符为 Ci,上下文为…Ci-1CiCi+1…,baseline特征实例[18]如下:
单字字符特征:Cs(i-3<s<i+3);
双字字符特征:CsCs+1(i-3<s<i+2);
字符双连词特征:CsCs+1(i-2<s<i+2);
字符相同跳跃特征:Cs=Cs+1(i-4<s<i+2)。
本文将字表示特征加入到CRF模型中,例如,对于目标字符Cs, 分别提取基于字符的向量表示、K-means和布朗聚类训练得到特征并加入到CRF模型中。实验中字符的向量表示是用word2vec训练得到的字符向量 Rd。 在这些字符向量的基础上利用K-means聚类,经过一组对比实验(如图 2所示)可以得到,当向量维度d=200,K-means聚类类别数k=400时分词效果较好,故在后续特征叠加的实验中均以此二值得到的结果进行叠加。对布朗聚类,本文采用聚类所得的二进制编码作为特征加入CRF模型。
本文选用的评测指标为准确率(P)、召回率(R)和综合评价指标F值。具体定义如下:
$\begin{align} & P=\frac{系统正确识别的词语总数}{系统识别的词语总数}\times 100\text{ }\!\!%\!\!\text{ } \\ & R=\frac{\text{系统正确识别的词语总数}}{测试语料的词语总数}\times 100\text{ }\!\!%\!\!\text{ } \\ & F=\frac{2\times P\times R}{P+R}\times 100% \\ \end{align}$ |
以基于字符级不加特征的CRF分词作为baseline。word2vec及布朗聚类采用NLPCC2015分词任务中提供的微博训练语料所得,其中含10000个句子,共215567个词。
如图 2所示,探讨了利用word2vec训练得到的不同维度的字向量以及K-means聚类类别数不同的情况下对分词结果的影响,图中以分词结果F值作为参考。从图 2中曲线可看出,当向量维度d=200,K-means聚类类别数k=400时分词效果较好,F值达到94.07%。同时,随着字向量维度d值的增大,分词结果F值显得更平滑,当d=50时,分词结果F值显得最不稳定,震荡较严重;而当d=500时,分词结果F值的折线图近似为一条平滑的曲线,这意味着随着向量维度的增大,向量所表示的字得语义信息更为全面和准确,聚类特征表现得更为良好,所以分词结果表现更趋于平滑。
从聚类结果中也可看出,当字向量维度增大时,聚类结果中各类别所包含的字的语义表现得更为相近。如表 1所示,列出了在字向量维度分别为50和200时得到的与“海”“刘”最相近的字。可以看出,当字向量维度d=200时,类别内部的字之间的相似度更近,语义更相关,而当字向量维度d=50时,结果没有d=200时的表现好。比如当d=50时,与“海”字语义相近程度排在前十的字中出现了“莞”字。
图 3对比了布朗聚类与字向量分别为200维和300维时K-means聚类在类别数不同时对分词结果的影响。由图 3可以看出,当类别数k=200时,布朗聚类对分词结果的影响达到峰值,此后分词效果随着k值的增加而递减。整体而言,当类别数k较小时,布朗聚类效果比K-means聚类效果更好,随着k值的增大,布朗聚类的效果要比K-means聚类的效果下降更快。
综上可知,仅加入字向量的K-means聚类特征时,在d=200,k=400时分词效果达到最优;仅加入字的布朗聚类特征时,在k=200时CRF分词效果达到最优。所以本文以这两组最优的数据作参考,将这两种特征结合起来以达到提高CRF分词精度的目的。表 2中所列K-means聚类以d=200,k=400时数据作参考,布朗聚类以k=200时数据作参考。表 2中,w2v为加入的利用word2vec及K-means所得特征,Brown为布朗聚类所得特征。相对baseline结果而言,两种不同的字表示方法的加入均对分词结果有积极的作用,且布朗聚类更优于K-means聚类。同时也可看出,当两者叠加使用时分词效果比任意只使用其中一种时的效果要好,此时F值达到94.44%,OOV召回率达到92.91%,相对baseline 分别提高了1.28个百分点和1.41个百分点,这说明这两种不同的聚类表示提供了不同的信息,弥补了各自部分的缺点。
由于OOV词影响分词精度的主要因素[19],本文通过引入词典知识(表 2中的Dic)来降低未登录词和交叠歧义对分词结果的影响,词典中的词均来源于NLPCC提供的已有正确标记序列的微博语料。测试结果显示,引用词典特征后,F值和OOV召回率比baseline的结果分别提高了1.99个百分点和2.54个百分点,说明了词典引入的重要性。在引入词典特征的基础上叠加使用两种字表示特征后,F值和OOV召回率比仅加入词典特征的结果分别提高了0.52个百分点和0.74个百分点,这也体现了字表示对中文分词结果起改善作用。
在NLPCC2015分词任务中Closed track的部分中Min[20]等使用线性链条件随机场加规则过滤的方法取得了95.03%、95.03%、95.03%的准确率、召回率和F值,本文结果分别比其提高了0.45个百分点、0.83个百分点和0.64个百分点,说明本文方法可以有效改进中文分词。
3 结语本文探索了一种简单有效的分词方法,该方法分别使用字符的语义向量、K-means聚类和布朗聚类得到不同的字符表示特征,再将这些字符表示特征应用到CRF模型中做训练,以NLPCC2015分词任务提供的微博测评语料进行测试,最好的结果准确率、召回率、F值及OOV识别率分别达到95.48%、95.86%、95.67%和 94.78%。实验结果表明,这种将字符表示特征加入到CRF模型中的半监督方法对改善中文分词的结果是有效的,但是目前这种方法仍然无法完全取代人工设计特征的有监督的学习方法。未来的工作将从以下两个方面尝试:1)对语料中不同长度的字块进行表示学习,比如2-gram字块和3-gram字块,将其加入到CRF模型中,通过多长度的表示学习来提高分词准确率;2)增加外部知识学习,扩大语料库,进行开放测试并提升其分词效果。
[1] | 魏晓宁. 基于隐马尔可夫模型的中文分词研究[J]. 电脑知识与技术(学术交流), 2007, 4 (11) : 885-886. ( WEI X N. HMM-based of study on Chinese language classifying words[J]. Computer Knowledge and Technology (Academic Exchange), 2007, 4 (11) : 885-886. ) (0) |
[2] | ANDREW M, DAYNE F, FEMANDO P. Maximum entropy Markov models for information extraction and segmentation [C]//Proceedings of the Seventeenth International Conference on Machine Learning. New York: ACM, 2000: 591-598. http://cn.bing.com/academic/profile?id=1934019294&encoded=0&v=paper_preview&mkt=zh-cn (0) |
[3] | LAFFERTY J, MCCALLUM A, PEREIRA F. Conditional random fields: probabilistic models for segmenting and labeling sequence data [C]//Proceedings of the 18th International Conference on Machine Learning. New York: ACM, 2001:282-289. (0) |
[4] | HINTON G E, SALAKHUTDINOV R R. Reducing the dimensionality of data with neural networks[J]. Science, 2006, 313 (5786) : 504-507. doi: 10.1126/science.1127647 (0) |
[5] | TURIAN J, RATINOV L, BENGIO Y. Word representations: a simple and general method for semi-supervised learning[C]//Proceedings of the 48th Annual Meeting of the Association for Computational Linguistics. Stroudsburg: Association for Computational Linguistics, 2010: 384-394. http://cn.bing.com/academic/profile?id=2158139315&encoded=0&v=paper_preview&mkt=zh-cn (0) |
[6] | KOO T, CARRERAS X, COLLINS M. Simple semi-supervised dependency parsing[C]//Proceedings of the 46th Annual Meeting of the Association for Computational Linguistics. Stroudsburg: Association for Computational Linguistics, 2008: 595-603. (0) |
[7] | MANN G S, MCCALLUM A. Generalized expectation criteria for semi-supervised learning of conditional random fields[C]//Proceedings of the 2008 Meeting of the Association for Computational Linguistics. Stroudsburg: Association for Computational Linguistics, 2010:1374-1377. (0) |
[8] | YU D, WANG S, DENG L. Sequential labeling using deep-structured conditional random fields[J]. IEEE Journal of Selected Topics in Signal Processing, 2010, 4 (6) : 965-973. doi: 10.1109/JSTSP.2010.2075990 (0) |
[9] | ZHENG X Q, CHEN H Y, XU T Y. Deep learning for Chinese word segmentation and POS tagging[C]//Proceedings of the 2013 Conference on Empirical Methods in Natural Language Processing. Seattle: [s. n.], 2013: 647-657. (0) |
[10] | 来斯惟, 徐立恒, 陈玉博, 等. 基于表示学习的中文分词算法探索[J]. 中文信息学报, 2013, 27 (5) : 8-14. ( LAI S W, XU L H, CHEN Y B, et al. Chinese word segment based on character representation learning[J]. Journal of Chinese Information Processing, 2013, 27 (5) : 8-14. ) (0) |
[11] | QIU X, QIAN P, YIN L, et al. Overview of the NLPCC 2015 shared task: Chinese word segmentation and POS tagging for micro-blog texts (2015)[EB/OL]. [2015-03-10]. http://arxiv.org/abs/1505.0759. (0) |
[12] | word2vec[EB/OL]. [2015-03-12]. https://code.google.com/p/word2vec/. (0) |
[13] | MIKOLOV T, SUTSKEVER I, CHEN K, et al. Distributed representations of words and phrases and their compositionality[EB/OL]. [2015-03-10]. https://arxiv.org/abs/1310.4546. (0) |
[14] | WU X, ZHOU J, SUN Y et al. Generalization of words for Chinese dependency parsing[C]//Proceedings of the 4th CCF Conference on Natural Language Processing and Chinese Computing, LNCS 9362. Berlin: Springer, 2015: 36-46. (0) |
[15] | MILLER S, GUINNESS J, ZAMANIAN A. Name tagging with word clusters and discriminative training[EB/OL]. [2015-03-10]. http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.105.9395. http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.105.9395 (0) |
[16] | CRF++[EB/OL]. [2015-03-20]. http://sourceforge.net/projects/crfpp/. http://www.oalib.com/references/14716976 (0) |
[17] | GAO J F, LI M, WU A, et al. Chinese word segmentation and named entity recognition: a pragmatic approach[J]. Computational Linguistics, 2005, 31 (4) : 531-574. doi: 10.1162/089120105775299177 (0) |
[18] | SUN X, WANG H, LI W. Fast online training with frequency-adaptive learning rates for Chinese word segmentation and new word detection[C]//Proceedings of the 50th Annual Meeting of the Association for Computational Linguistics. Stroudsburg: Association for Computational Linguistics, 2012: 253-262. (0) |
[19] | 杜丽萍, 李晓戈, 于根, 等. 基于互信息改进算法的新词发现对中文分词系统改进[J]. 北京大学学报(自然科学版), 2016, 52 (1) : 35-40. ( DU L P, LI X G, YU G, et al. New word detection based on an improved PMI algorithm for enhancing segmentation system[J]. Acta Scientiarum Naturalium Universitatis Pekinensis, 2016, 52 (1) : 35-40. ) (0) |
[20] | MIN K R, MA C G, ZHAO T M, et al. BonsonNLP: an ensemble approach for word segmentation and POS tagging[C]//Proceedings of the 4th CCF Conference on Natural Language Processing & Chinese Computing. Berlin: Springer, 2015: 520-526. (0) |