规则分词
正向最大匹配
思想:假定分词词典中的最长词有i个汉字字符,则用被处理文档的当前字符串的前i个字作为匹配字段,查找字典。若字典存在这样的一个i字词,则匹配成功,将其切分出来。如果不存在,则匹配失败,将匹配字段最后一个字去掉,继续匹配。
算法描述如下:
1、从左到右取待切分汉语句的m个字符作为匹配字段,m为机器词典中最长词条的字符数
2、查找机器词典并匹配。匹配成功则将其切分出来,若匹配不成功,则将最后一个字去掉,剩下的字符串作为新的匹配字段,进行再次匹配,重复以上过程,直到切分出所有的词为止。
逆向最大匹配
逆向最大匹配的基本原理与正向最大匹配的原理相同。不同的是词切分的方向相反。逆向最大匹配从被处理的文档的末端开始匹配扫描,每次取最末端的i个字符作为匹配字段,若匹配成功则切分,若不成功则去掉匹配字段最前面的一个字,继续匹配。
实际上的运用则是将文档倒排,形成了逆序文档,然后根据逆序词典采用正向最大匹配即可。
由于汉语中偏正结构多,逆向最大匹配的误差要比正向最大匹配误差要小。
双向最大匹配
双向最大匹配是将正向最大匹配和逆向最大匹配的结果进行比较,根据最大匹配的原则,选取词数切分最少的为结果。根据SunM.S和Benjamin K.T(1995)的研究表明,中文中90.0%左右的句子,采用前两种算法得到的结果是一致且正确的,只有9.0%左右的句子两种算法结果不一,但必有一个是正确的,只有不到1.0%的句子,两个算法得到的结果是一样的且错误。
统计分词
主要思想是每个词看做是由词的最小单位的各个字组成,如果相连的字在不同的文本中出现的次数越多,就证明这些相连的字很可能就是一个词,
基于统计的分词,一般要做以下两步操作:
1、建立统计语言模型
2、对句子进行单词划分,然后对划分结果进行概率估算,获得概率最大的分词方式。如隐马尔可夫(HMM)、条件随机场(CRF)等
语言模型
用概率论描述语言模型就是:为长度m的字符串确定其概率分布
P ( ω 1 , ω 2 . . . , ω m ) = P ( ω 1 ) P ( ω 2 ∣ ω 1 ) . . . . P ( ω i ∣ ω 1 , ω 2 , . . . , ω i − 1 ) . . . P ( ω m ∣ ω 1 , ω 2 , . . . , ω m − 1 ) P(\omega_1,\omega_2...,\omega_m)=P(\omega_1)P(\omega_2|\omega1)....P(\omega_i|\omega_1,\omega_2,...,\omega_{i-1})...P(\omega_m|\omega_1,\omega_2,...,\omega_{m-1}) P(ω1,ω2...,ωm)=P(ω1)P(ω2∣ω1)....P(ωi∣ω1,ω2,...,ωi−1)...P(ωm∣ω1,ω2,...,ωm−1)
观察到文本过长时,计算难度会非常大。因此采用n-gram模型降低计算难度。n-gram就是在估算条件概率时,忽略距离大于等于n的上文词的影响,因此计算可以简化为:
P ( ω i ∣ ω 1 . . . , ω i − 1 ) ≈ P ( ω i ∣ ω i − ( n − 1 ) , . . . , ω i − 1 ) P(\omega_i|\omega_1...,\omega_{i-1}) \approx P(\omega_i|\omega_{i-(n-1)},...,\omega_{i-1}) P(ωi∣ω1...,ωi−1)≈