Skip to content
andersc edited this page Sep 1, 2015 · 2 revisions

资料

我在尝试理解结巴分词的实现时,最先接触的资料是CSDN上的一系列博客,即对Python中文分词模块结巴分词算法过程的理解和分析,以及这篇之后的连续几篇。读过这几篇文章后,对于结巴分词的思路及具体实现会有很全面的了解。

另外,关于HMM模型的解释,可参考CppJieba的作者写的文章:中文分词之HMM模型详解

有了上述准备,再看结巴分词的代码就不算困难了。

核心

jieba的主页上提到其算法实现的核心部分包括:

  • 基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG)
  • 采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合
  • 对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法

看下来,这些确实是理解jieba的关键,而且也符合一次分词的完整过程。

字符串与文本

  1. 正则表达式有大量应用,主要用于切分文本及模式匹配
  2. 在Python中,由于有Python2和Python3的不兼容性,以及处理str和unicode时涉及到的种种编码问题,在C#中都变得很简单了