本文是从我的github上转过来的
对Python中文分词模块结巴分词算法过程的理解和分析
结巴分词是国内程序员用python开发的一个中文分词模块, 源码已托管在github, 地址在: https://github.com/fxsjy/jieba]
作者的文档写的不是很全, 只写了怎么用, 有一些细节的文档没有写.
以下是作者说明文件中提到的结巴分词用到的算法:
- 基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG) - 采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合 - 对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法 因为最近有点兴趣想了解中文分词, 所以看了大量的资料, 对上面的三条有了一点点理解, 不再是两眼一抹黑了.转载请注明: 本文来自Django梦之队, http://ddtcms.com/blog/archive/2013/2/4/69/jieba-fenci-suanfa-lijie/
先推荐大家看 http://www.52nlp.cn/] (我爱自然语言处理)的一系列关于概率、中文分词、HMM隐马尔科夫模型的文章, 然后再回头看看结巴分词的代码。
然后推荐大家看看《解密搜索引擎技术实战:Lucene&Java精华版》,如果看不到, 可以看看这里的在线版, 虽然很短, 但是基本的思想都说明白了, 地址: http://book.51cto.com/art/201106/269050.htm] (4.6 概率语言模型的分词方法)
看了这本书的第4章, 或者看了那个在线的那个章节的前后部分, 基本上可以说, 结巴分词, 在很大的程度上类似于书中说的例子。(上面的链接,是作者算法的第2条, 动态规划查找最大概率路径),当然, 结巴分词使用了HMM模型对未登录词进行识别(上面的第3条)