中文分词算法大概分为两大类
a.第一类是基于字符串匹配,即扫描字符串,如果发现字符串的子串和词相同,就算匹配。
这类分词通常会加入一些启发式规则,比如“正向/反向最大匹配”, “长词优先” 等策略
这类算法优点是速度块,都是O(n)时间复杂度,实现简单,效果尚可。
也有缺点,就是对歧义和未登录词处理不好。
歧义的例子很简单"长春市/长春/药店" "长春/市长/春药/店".
未登录词即词典中没有出现的词,当然也就处理不好。
ikanalyzer,paoding 等就是基于字符串匹配的分词。
b.第二类是基于统计以及机器学习的分词方式
这类分词基于人工标注的词性和统计特征,对中文进行建模,即根据观测到的数据(标注好的语料)对模型参数进行估计,即训练。 在分词阶段再通过模型计算各种分词出现的概率,将概率最大的分词结果作为最终结果。常见的序列标注模型有HMM和CRF。
这类分词算法能很好处理歧义和未登录词问题,效果比前一类效果好,但是需要大量的人工标注数据,以及较慢的分词速度。
ICTCLAS是基于HMM的分词库。
标签:分词器,分词,算法