美文网首页
Jieba分词学习

Jieba分词学习

作者: bellengao | 来源:发表于2017-08-24 09:43 被阅读157次

    大名鼎鼎的Jieba分词貌似在工业界被使用的频率较高,所以研究一下它的实现吧。
    据作者在github文档上的介绍,Jieba分词的主要用到的算法有:
    1.基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG)
    2.采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合
    3.对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法
    现在来一条一条的剖析。

    一、词图扫描,生成DAG
    字典树(Trie树):自带了一个dict.txt的字典,包含几万条词、次数、词性数据;把这几万条的词语放在一个字典树中。
    DAG: 对给定的一个句子,对这个句子生成有向无环图DAG, 利用字典树,进行查词典操作,生成所有可能的句子切分,生成DAG, 记录句子中某个词的开始位置以及结束位置, key-value存储,以每个开始位置为key, value为所有可能的词语的结束位置

    二、动态规划
    动态规划中,先查找待分词句子中已经切分好的词语,计算词频,若字典中没有该词,则以字典中最小的词频数为该词的词频。根据动态规划方法从右往左查找最大概率路径,得到最大概率的切分组合。从右往左是因为汉语的重心往往在句子的后面

    三、HMM
    没有字典也能够成功分词。
    按照(B,M,S,E)四个状态来标记句子中的字。
    计算四个状态的转移概率、位置到单个字的发射概率、初始概率。
    给定待分词的句子,也就是观察序列,需要找到一个概率最大的最佳的状态序列,利用维特比算法求解。

    相关文章

      网友评论

          本文标题:Jieba分词学习

          本文链接:https://www.haomeiwen.com/subject/ejkezttx.html