NLP之机械分词

1、正向最大匹配算法:MaximumMatching

正:北京大学生前来应聘
反:研究生命的起源
1)从左向右取待切分汉语句的m个字符作为匹配字段,m为大机器词典中最长词条个数。
2)查找大机器词典并进行匹配。若匹配成功,则将这个匹配字段作为一个词切分出来。
若匹配不成功,则将这个匹配字段的最后一个字去掉,剩下的字符串作为新的匹配字段,进行再次匹配,重复以上过程,直到切分出所有词为止。

参考 <http://dsqiu.iteye.com/blog/1704960>

2、邻近匹配算法

邻近匹配算法是正向最大匹配算法的改进,因为正向正向最大匹配算法对每个不存在的长字符串都要进行一次二分搜索,算法复杂度太高,可以利用同一个首字符下的词条按升序排列这一条件,在找到某个字符串后,在其后增加一个字得到一个新字串,如果新字串在词典中出现,那么新词一定在原字串的后面,且相隔位置不会太远。这样就可以加快匹配进程。

参考  <http://dsqiu.iteye.com/blog/1704960>


3、逆向最大匹配算法:ReverseMaximumMatching

该算法是正向最大匹配的逆向思维(最大匹配的顺序不是从首字母开始,而是从末尾开始),匹配不成功,将匹配字段的最前一个字去掉。

由于汉语中偏正结构较多,若从后向前匹配,可以适当提高精确度。所以,逆向最大匹配法比正向最大匹配法的误差要小。统计结果表明 ,单纯使用正向最大匹配的错误率为 1/16 9,单纯使用逆向最大匹配的错误率为 1/245。例如切分字段“硕士研究生产”,正向最大匹配法的结果会是“硕士研究生 / 产”,而逆向最大匹配法利用逆向扫描,可得到正确的分词结果“硕士 / 研究 / 生产”。

 

4、正向最小匹配算法:MinimumMatching

使用正向最小匹配算法,必须注意的一点是:词典中不能有单字词,词的长度至少为2!

参考 <http://yangshangchuan.iteye.com/blog/2040423>

 

5、逆向最小匹配算法:ReverseMinimumMatching

使用逆向最小匹配算法,必须注意的一点是:词典中不能有单字词,词的长度至少为2!

参考 <http://yangshangchuan.iteye.com/blog/2040431>


6、双向最大匹配算法:BidirectionalMaximumMatching

将正向最大匹配法与逆向最大匹配法组合。先根据标点对文档进行粗切分,把文档分解成若干个句子,然后再对这些句子用正向最大匹配法和逆向最大匹配法进行扫描切分。如果两种分词方法得到的匹配结果相同,则认为分词正确,否则,按最小集处理。

双向最大匹配法是将正向最大匹配法得到的分词结果和逆向最大匹配法的到的结果进行比较,从而决定正确的分词方法。据SunM.S. 和 Benjamin K.T.(1995)的研究表明,中文中90.0%左右的句子,正向最大匹配法和逆向最大匹配法完全重合且正确,只有大概9.0%的句子两种切分方法得到的结果不一样,但其中必有一个是正确的(歧义检测成功),只有不到1.0%的句子,或者正向最大匹配法和逆向最大匹配法的切分虽重合却是错的,或者正向最大匹配法和逆向最大匹配法切分不同但两个都不对(歧义检测失败)。这正是双向最大匹配法在实用中文信息处理系统中得以广泛使用的原因所在。

参考 <http://dsqiu.iteye.com/blog/1704960>

参考 <http://www.cnblogs.com/flish/archive/2011/08/08/2131031.html>


7、双向最小匹配算法:BidirectionalMinimumMatching

参考 6

8、双向最大最小匹配算法:BidirectionalMaximumMinimumMatching

参考 1 3 4 5 6 7

9、全切分算法:FullSegmentation

全切分,就是把一句话中的所有词都找出来,只要是字典中有的就找出来。例如,“提高中国人生活水平”包含的词有:提高、高中、中国、国人、人生、生活、活水、水平。

1)全切分算法只是能获得正确分词的前提,因为全切分不具有歧义检测功能,最终分词结果的正确性和完全性依赖于独立的歧义处理方法,如果评测有误,也会造成错误的结果。
2)全切分的切分结果个数随句子长度的增长呈指数增长,一方面将导致庞大的无用数据充斥于存储数据库;另一方面当句长达到一定长度后,由于切分形式过多,造成分词效率严重下降。


参考  <http://www.cnblogs.com/flish/archive/2011/08/08/2131031.html> 
参考  <http://www.cnblogs.com/royhoo/p/6642141.html?utm_source=itdadao&utm_medium=referral>

全切分通常结合统计进行消歧。

10、最少词数算法:MinimalWordCount

使每一句中切出的词数最小,也叫最少切分法。我觉得把这个当作一个原则即可,比如我可以在全切分后,采用最少词数原则;也可以双向最大最小匹配后,采用最少词数原则。


11、索引分词

返回所有分词词组,主要用于搜索

北京大学生毕业容易找工作

[北京/ns, 大学生/nnt, 大学/nis, 学生/nnt, 毕业/v, 容易/ad, 找/v, 工作/vn]


中文句子是由字组成的连续字符串。为了理解中文语义,首先需要将句子划分为以词为基本单位的词串,这就是中文分词。词是最小的能够独立活动的有意义的语言成分,英文单词之间是以空格作为自然分界符的,而汉语是以字为基本的书写单位,词语之间没有明确的区分标记,因此中文分词是中文信息处理的基础和关键。另外,对于词的定义也没有完全明确的一种说法,比较抽象的解释是语言中有意义的能单说或用来造句的最小单位。在1993年作为国家标准公布的《信息处理用现代汉语分词规范》中,文本中的词语被称为“分词单位”,以区别于语言学中更严格的“词”概念。

常用的分词方法主要有:基于字符串匹配的方法、基于规则的方法。

1.1 基于字符串匹配的方法

基于字符串匹配的方法又称为机械分词方法或字典匹配方法,它主要依据词典的信息,而不使用规则知识和统计信息,按照一定的策略将待切分的汉字串与词典中的词条逐一匹配,若在词典中找到该词条,则匹配成功,否则做其它相应的处理。机械分词法依据待切分文本扫描的方向不同,分为正向匹配、逆向匹配以及双向匹配;依据分词过程是否与词性标注过程相结合,又可分为单纯分词方法和分词与标注相结合的一体化方法;依据每次匹配优先考虑长词还是短词,分为最大匹配和最小匹配。常用的基于字符串匹配的分词方法通常是将上述几种单一方法组合起来使用,例如:基于字符串的正向最大匹配、逆向最大匹配、双向最大匹配以及最少切分等。

1.1.1 正向最大匹配分词算法

根据匹配不成功时重新切取的策略区分,机械匹配分词法又分为增字匹配法和减字匹配法。增字法一般与最小匹配相结合,而减字法常与最大匹配相结合。因此正向最大匹配法采用减字匹配法较为常见,其基本思想是:假设己知机器词典中最长词条的长度为N,则以N作为减字开始的长度标准,首先将待扫描的文本串S从左向右截取长度为N的字符串W1,然后在词典中查找是否存在该字符串W1的词条。如果匹配成功,则W1标记为切分出的词,再从待扫描文本串的N+1位置开始扫描;如果匹配失败,将截取长度减1后,再从S中截取此长度的字符串W1’,重复上述匹配过程,直至截取长度为1为止。以扫描完句子作为整个匹配过程结束。其算法流程如图所示,经过这一流程处理后,原本的句子S将被切分成W1W2…Wn的词序列,每一个Wi均为词典中的词条或者是原子。



图1 正向最大匹配流程图


1.1.2 逆向最大匹配分词

逆向最大匹配分词法,其基本思想与正向最大匹配分词法大体一致,只是扫描方向换成了从右至左。换句话说,当扫描汉语句子时,根据词典中最长词条的长度,从句末开始向左截取出汉语字符串与词典中的词条匹配,匹配流程与减字法相同,直至扫描到句首为止。例如,待切分字串为“他说的确实在理”时,正向最大匹配分词法的分词结果为“他/说/的确/实在/理/”,逆向最大匹配分词法的分词结果为“他/说/的/确实/在理/”,根据汉语原意,逆向最大匹配的分词结果是正确的,而正向最大匹配是错误的。据统计结果表明,单纯使用正向最大匹配法的错误率为1/169,单纯使用逆向最大匹配法的错误率为1/245,显然逆向最大匹配分词法较正向最大匹配分词法在切分准确率上有了较大提高,这一结果与汉语中心语偏后有一定的关系。为了节省处理待匹配字符串的时间,逆向最大匹配通常将词典中的词条也组织成逆序,例如“逆向”这一词条,在逆向最大匹配的分词词典中以“向逆”形式存储。

1.1.3 双向最大匹配分词算法

这种分词算法侧重于分词过程中检错和纠错的应用,其基本原理是对待切分字符串采用正向最大匹配和逆向最大匹配分别进行正向和逆向扫描和初步切分,并将正向最大匹配初步切分结果和逆向最大匹配初步切分结果进行比较,如果两组结果一致,则判定分词结果正确,如果存在不一致,则判定存在着切分歧义,需要进一步采取技术手段来消解歧义。

1.1.4最少切分分词算法

该分词算法依据最少切分原则,从几种分词算法切分结果中取切分词数最少一种的。比如,从正向最大匹配和逆向最大匹配两者中选择词数较少的方案,当词数相同时,采取某种策略,选择其中一个。

1.2 基于统计的方法

词是固定的字的组合,在文本中相邻的字同时出现的次数越多越有可能是一个词,因此计算上下文中相邻的字联合出现概率,可以判断字成词的概率。通过对语料中相邻共现的各个字的组合频度进行统计,计算它们的互现信息。互现信息体现了汉字之间结合关系的紧密程度,当紧密程度高于某一个阈值时,可判定该字组构成一个词。这种方法的优点是不受待处理文本领域的限制,不需要专门的词典。统计分词以概率论为理论基础,将汉字上下文中汉字组合串的出现抽象成随机过程,随机过程的参数可以通过大规模语料库训练得到。基于统计的分词采用的原理有互信息、N元统计模型以及其它的统计模型如隐马尔科夫模型、条件随机场模型、神经网络模型及最大熵模型等。

1.2.1互信息原理

互信息算法的主要思想是对于字符串x和字符串y,使用公式计算其互信息值P(x,y),用值的大小判断x和y之间的结合程度。公式如下。

                                         (1)

其中P(x,y)为字符串x和y共现的频率,p(x)和p(y)分别是字符串x和y出现的频率。

当P(x,y)>0时,表示x和y之间具有较高的相关关系,并且互信息值P(x,y)越大,相关性就越强。当其值超过某一预设的阈值时可以判定为一个词。

当P(x,y)=0时,表示x和y之间的关系不明确。

当P(x,y)<0时,表示x与y负相关,基本不会组成一个词。

1.2.2 N元统计模型

N元统计模型的主要思想是:一个单词的出现与其上下文环境中出现的单词序列密切相关,第n个词的出现只与前面n-1个词相关,而与其它任何词都不相关。即假定语言满足马尔科夫性,可表示为:

                              (2)

假设句子S由w1w2…wn组成且满足马尔科夫性,那么句子S出现的概率可以通过联合概率公式计算成:

          (3)

根据阶数N在模型中取值不同,N元语法统计模型的名称也有所不同,如N=2称为bigram模型,N=3称为trigram模型。从理论上来说,随着N取值增加,模型越能发映出语言的内在结构,精度也就越高,但是计算参数与语料训练集的规模也要相应增大,因此在实际应用中一般取N为2、3、4较为合适。

以此类推,N元模型就是假设当前词的出现概率只同它前面的N-1个词有关而得出的。

在式(3)中,条件概率表示在词串出现的情况下wi出现的概率。在大规模语料库训练的基础上,根据大数定律,最大似然估计值可计算为:

                              (4)

其中,表示词序列在训练语料中同时出现的次数。以bigram模型为例,具体说明如何应用该统计模型解决分词中的问题。根据式(3)、(4)可得:

                             (5)

对句子S进行全切分法进行分词,根据式(5)计算每一种分词结果的概率,选择最优结果,即求出概率P(S)的极大值,这一过程可表示为:

                                (6)

在实际计算中,为防止机器误将很小的概率值当做零来处理,通常采用负对数处理的方式将问题转化为求极小值问题,具体公式表示为:

                        (7)

1.3 基于字符串匹配的分词方法和基于统计的分词方法对比

字符串匹配方法算法简单,易于理解和实现,并且切分速度较快,成为分词方法中最流行的。因为字典匹配的方法不考虑具体的语言环境和定义,最大的缺点就是不能处理多词冲突和新词情况,严重依赖于词表。单纯采用字符串匹配的方法不能满足中文信息处理对分词结果准确度的要求。

基于统计的方法能够较好的切分歧义和识别新词,目前受到了研究者越来越多的重视。不受待处理文本的领域限制,不需要特定的词典,能够有效的自动排出歧义,较好的识别未登录词。缺点是需要大量的训练文本用于建立统计模型的参数,方法的计算量较大,对于常用词的识别精度差,且分词精度和训练文本的选择有关,会存在一些共现频度高但是并不是词的常用字组。


猜你喜欢

转载自blog.csdn.net/asdfsadfasdfsa/article/details/80794296