首页 > 代码库 > 中文分词技术

中文分词技术

中文分词技术
http://blog.csdn.net/u012637501
一、中文分词技术
1.中文分词:上一篇博文我们谈到利用统计语言模型进行自然语言处理,而这些语言模型主要是建立在词的基础上的,因为词是表达语义的最小单位。对于西方拼音来讲,词之间有明确的分界符,统计和使用语言模型非常直接,如I love China very much.但是对于中文来说,由于词之间没有明确的分界符,因此,首先需要对句子进行分词,才能做进一步的自然语言处理。
2.分词的一致性问题
   语料库关于分词的一致性大致包含两方面的内容:一致性1在保持语义同一性的前提下,一个结构体在语料库中的分合是否始终一致(例如:“猪肉”是否始终保持一个整体,或者始终分开);一致性2与某个结构体具有相同结构类型的其他一切结构体在语料库中的分合是否与该结构体始终一致(例如:“牛肉”与“猪肉”的结构类型完全相同,“牛肉”是否跟随了“猪肉”的分合状态)。
3.词的颗粒度和层次
二、中文分词方法
1.查字典法
    北京航空航天大学的梁南元教授提出了最简单的分词方法-查字典,其分词过程可以这样概述:我们把将要分词的一个句子从左到右扫描一遍,遇到字典里有的词就标出来,遇到复合词(比如"湖南大学")就找最长的词匹配,遇到不认识的字串就分割成单字词,这样一个句子的分词就完成了。
举个例子:
    中国/航天/官员/应邀/到/美国
    当我们从左到右,先遇到"中"这个字,它本身是一个单字词,我们可以在这里做一个切割,但是,当我们再遇到"国"字时,发现它可以和前面的"中"字组成一个更长的词,因此,我们就将分割点放在"中国"的后面。接下来,通过查找字典里的字词,我们就会发现"中国"不会和后面的字组成更长的词,这个分割点就最终确定了。
   这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的机器词典”中的词条进行匹配,若在词典中找到某个字符串,则匹配成功。按照扫描方向的不同,该分词方法可以分为正向匹配和逆向匹配;按照长度的不同,可以分为最大匹配和最小匹配。常见的几种基于词典的分词方法思想如下。
(1)正向最大匹配算法
    正向最大匹配算法思想:从左往右取待切分汉语句的m个字符作为匹配字段,其中m为机器可读词典中最长词条的汉字个数。查找机器可读词典并进行匹配。若匹配成功,则将这个匹配字段作为一个词切分出来;若匹配不成功,则将这个匹配字段的最后一个字去掉,剩下的字符串作为新的匹配字段,进行再次匹配。重复以上过程,直到切分出所有词为止。
(2)逆向最大匹配算法
逆向最大匹配算法思想:该算法是对正向最大匹配算法的逆向思维,主要是从右往左对字符串进行最大匹配。匹配成功,则将这个匹配字段作为一个词切分出来;若匹配不成功,则将这个匹配字段的最前一个字去掉,剩下的字符串作为新的匹配字段,进行再次匹配。重复以上过程,直到切分出所有词为止。实验表明逆向最大匹配算法效果要优于正向最大匹配算法。
(3)全二分最大匹配算法
    全二分最大匹配快速分词算法:是一种基于hash表,每次的匹配操作都可以记忆,不需要任何的重复匹配操作,而且匹配操作都是使用二分法进行的,这样就最大限度地提高了分词的效率。
 2.统计语言模型分词   
    由于查字典法中文分词虽说能够解决七八成的分词分词,但是对于稍微复杂一点的问题就无能为力了。为此,1990年前后,清华大学的郭进博士用统计语言模型成功解决了分词二义性问题,将汉语分词的错误率降低了一个数量级。利用统计语言模型分词方法数学描述如下:
    假定一个句子S可以有几种分词方法,为了简单起见,假定有以下三种:
            A1,A2,A3,....,Ak
            B1,B2,B3,....,Bm
            C1,C2,C3,....,Cn
    其中,A1,A2...B1,B2...C1,C2....等等都是汉语的词,上述各种分词结果可能产生不同数量的词串,即假设k,m,n为在不同分词时词的数目。假设 A1,A2,A3,....,Ak在分词完后这个句子出现的概率最大,则 A1,A2,A3,....,Ak为最好的分词方法,那么其概率满足:P(A1,A2,A3,....,Ak)>P(B1,B2,B3,....,Bm)且P(A1,A2,A3,....,Ak)>P(C1,C2,C3,....,Cn).因此,我们只需利用统计模型计算出每种分词后的句子出现的概念,并找出其中概率最大的,就能给找到最好的分词方法,得到最优输出字符串。
注意:如果穷举所有可能的分词方法并计算出每种可能性下句子的概率,那么计算量会相当大。因此,我们可以将它看成是一个动态规划问题,并利用维特比(Viterbi)算法快速地找到最佳分词。
   目前基于统计的分词算法有很多种,较为常见的算法是,基于互信息的概率统计算法,N2Gram算法,基于组合度的汉语分词决策算法等等。
(1)互信息的概率统计算法
    互信息是一种度量不同字符串之间相关性的统计量。对于字符串X和Y,其互信息的计算公式如下:
    技术分享技术分享
   其中,p(x,y)为字符串X和Y共现的概率,p(x),p(y)分别为字符串X和Y出现的概率。 互信息MI(x,y)反映了字符串对之间结合关系的紧密程度:(1)互信息MI(x,y)>0,则X,Y之间具有可信的结合关系,并且MI(x,y)越大,结合程度越强。 (2)MI(x,Y)=0,则X,Y之间的结合关系不明确。 (3)MI(x,y)<0,则X,Y之间基本没有结合关系,并且MI(x,y)越小,结合程度越弱。
(2)N-Gram模型算法
N-Gram模型思想:一个单词的出现与其上下文环境中出现的单词序列密切相关,第n个词的出现只与前面n-1个词相关,而与其它任何词都不相关,设W1,W2,…,Wn是长度为n的字串,由于预测词Wn的出现概率,必须知道它前面所有词的出现概率,太过复杂。为了简化计算,规定任意词Wi只与其前两个相关,得到三元概率模型如下:
                技术分享技术分享
以此类推,N元模型就是假设当前词的出现概率只同它前面的N21个词有关而得出的。
(3)组合度的决策算法
组合度的算法思想:在一篇文章中,如果汉字B紧跟在汉字A的后面,称AB为一个组合。运用组合度的数学公式,计算出每个词组的组合度,组合度越高,说明它是词组的可能性越大,组合度越低,说明它是词组的可能性越小。公式如下:
       技术分享            技术分享
其中,HAB为AB在文章中的组合度,N为汉字个数,K为AB组合的个数,n1是A的个数,n2是B的个数。
3.基于规则的分词算法
    基于规则的分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来对文本进行分词。

三、三种方法性能分析
1.基于词典的分词算法优点是易于实现,在对精确率要求不高的系统中得到了很好的应用。其缺点在于由于词典是在分词之前准备的,其规模和内容受到了限制,对于未登录词的补充较难实现。
2.基于统计的分词方法优点在于它可以从已有的大量实例中进行归纳总结,分析语言内在的关联信息,将其加入到统计模型中去。简单的统计方法不需要词典,而是通过训练语料的迭代,建立统计模型。但统计方法本身也有一定的局限性,尤其是对常用词的识别精度很差。
3.基于规则的分词算法优点在于它可以由实例中进行自动推理和证明,可以自动完成对未登录词的补充,但是由于它本身需要使用大量的语言知识。而汉语语言知识有其笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于规则的分词方法还不是很成熟。这种方法目前总是和其他算法结合起来使用。

四、中文分词目前的困难
由于中文词与词之间不象西文那样有明显的分隔符,所以构成了中文在自动切分上的极大困难。在现有的中文自动分词方法中,基于词典的分词方法占有主导地位。而中文分词的主要困难不在于词典中词条的匹配,而是在于切分歧义消解和未登录词语的识别。在中文分词过程中,这两大难题一直没有完全突破。
1.歧义处理
    歧义是指同样的一句话,可能有两种或者更多的切分方法。目前主要分为交集型歧义、组合型歧义和真歧义三种。其中交集型歧义字段数量庞大,处理方法多样;组合型歧义字段数量较少,处理起来相对较难;而真歧义字段数量更为稀少,且很难处理。分词歧义处理之所以是中文分词的困难之一,原因在于歧义分为多种类型,针对不同的歧义类型应采取不同的解决方法。除了需要依靠上、下文语义信息;增加语义、语用知识等外部条件外,还存在难以消解的真歧义,增加了歧义切分的难度。同时未登录词中也存在着歧义切分的问题,这也增加了歧义切分的难度。所以歧义处理是影响分词系统切分精度的重要因素,是自动分词系统设计中的一个最困难也是最核心的问题。
2.未登录词识别
    新词,专业术语称为未登录词。也就是那些在字典中都没有收录过词。未登录词可以分为专名和非专名两大类。其中专名包括中国人名、外国译名、地名等,而非专名包括新词、简称、方言词语、文言词语、行业用词等。
    无论是专名还是非专名的未登录词都很难处理,因为其数量庞大,又没有相应的规范,而且随着社会生活的变迁,使未登录词的数量大大增加,这又为未登录词的识别增加了难度。因此,未登录词识别是中文分词的另一大难点。

参考:中文分词技术的研究现状与困难-孙铁利,刘延吉

中文分词技术