原文
简要介绍中文分词的原理
中文分词原理
中文分词算法可以分成以下几种
- 基于词典的方法
- 基于统计的方法
- 基于规则的方法
基于词典的方法
正向最大匹配
1) 正向最大匹配算法首先从句首(文章首部)开始选取m个字符作为待匹配字段,m为词典中最长词条的字符个数。
2) 将待匹配字段与词典进行匹配,若匹配成功则说明待匹配字段可以当成是一个词
3) 若匹配失败,则将待匹配字段的最后一个字符去掉,再用新的待匹配字段与词典中的词相匹配
逆向最大匹配
1) 逆向最大匹配算法首先从句尾(文章尾部)开始选取m个字符作为待匹配字段,m为词典中最长词条的字符个数。
2) 将待匹配字段与词典进行匹配,若匹配成功则说明待匹配字段是一个词
3) 若匹配失败,则将待匹配字段的第一个字符去掉,再用新的待匹配字段与词典中的词相匹配
双向最大匹配法
双向最大匹配算法就是比较正向最大匹配算法和逆向最大匹配算法的结果,若结果一样,则直接输出,否则输出分词结果含有非字典词最少,或者单字最少的那个结果
paoding分词器是一种基于字符串匹配的分词器。
基于统计的分词
计算文档所有可能的切分方案,选择概率最大的。
令C=C1C2…Cm ,C为带切分的汉字串,W=W1W2…Wn. W是切分结果
根据贝叶斯公式,
P(W|C)=P(W)P(C|W)P(C)
,其中P(C) 为常数,P(C|W)=1,因此只需求P(W)
估计P(W)可采用n-gram方法:
P(W)=P(W1)P(W2|W1)P(W3|W1,W2)...P(Wk|W1,W2,...,Wk−1)
由于一些限制,通常n都取2或3。即任意一个词出现的概率只与它前面一个词(马尔科夫假设)或前面两个词有关。当n取2时,上述模型可简化为
P(W)=P(W1)P(W2|W1)P(W3|W2)...P(Wk|Wk−1)
条件概率为:
P(Wi|Wi−1)=P(Wi−1,Wi)P(Wi−1)
P(Wi−1,Wi)
和
P(Wi−1)
只需统计语料库中,Wi-1和Wi相邻的情况出现次数和Wi-1出现的次数,再分别除以语料库大小,即可。
ICTCLAS以及ansj就是使用基于统计的方法
基于规则的分词
这个不太懂,以后懂了再说。