算法
基于词典字符串匹配
例子: ikanalyzer,paoding
- 优点:速度块,都是O(n)时间复杂度,实现简单
- 缺点,就是对歧义和未登录词处理不好
基于统计以及机器学习
这类分词基于人工标注的词性和统计特征,对中文进行建模,即根据观测到的数据(标注好的语料)对模型参数进行估计,即训练。 在分词阶段再通过模型计算各种分词出现的概率,将概率最大的分词结果作为最终结果。常见的序列标注模型有HMM和CRF。
例子:
- 优点:能很好处理歧义和未登录词问题,效果比前一类效果好
- 缺点:需要大量的人工标注数据,以及较慢的分词速度
库
结巴分词
基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG);采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合;对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法。IKAnalyzer https://github.com/wks/ik-analyzer
- HanLP