Jieba分词学习

大名鼎鼎的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)四个状态来标记句子中的字。
计算四个状态的转移概率、位置到单个字的发射概率、初始概率。
给定待分词的句子,也就是观察序列,需要找到一个概率最大的最佳的状态序列,利用维特比算法求解。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 常用概念: 自然语言处理(NLP) 数据挖掘 推荐算法 用户画像 知识图谱 信息检索 文本分类 常用技术: 词级别...
    御风之星阅读 9,357评论 1 25
  • 1、分词数据源基于之前采集公共管理学院老师的数据,一共得到10个字段。本次分词是对大文本字段进行分词,因此将所得到...
    _dami阅读 2,275评论 1 1
  • 关键词:windows平台下jieba安装、三种模式比较、自定义词典、停用词语料、词频统计、词云生成 jieba简...
    秋灯锁忆阅读 4,515评论 0 2
  • 阅读动机 jieba分词是Python 里面几个比较流行的中文分词工具之一。为了理解分词工具的工作原理,以及实现细...
    正午阅读 2,745评论 0 5
  • 代码创建 如需代码,请移动到--->http://www.jianshu.com/p/0f950c180cb8
    _swift_阅读 983评论 0 0