jiba中文分词原理
中文分词就是将一个汉字序列分成一个一个单独的词。
现有的分词算法有三大类:
基于字符串匹配的分词:机械分词方法,它是按照一定的策略将待分析的字符串与一个充分大的机器词典中的词条进行匹配,若在词典中找到某个字符串,则匹配成功。
基于理解的分词方法:通过让计算机模拟人对句子的理解,达到识别词的效果,特点就是在分词的同时进行句法,语义的分析,利用句法信息和语义信息来处理歧义现象。通常包括三个部分:分词子系统,句法语义子系统,总控部分。
基于统计的分词方法:给出大量的已经分词的文本,利用统计机器学习模型学习词语切分的规律称为训练,从而实现对未知文本的切分,例如最大概率分词方法和最大熵分词方法等。随着大规模语料库的建立,统计机器学习方法的研究和发展,基于统计的中文分词方法渐渐成为了主流方法。
jieba支持三种分词模式:
1.精确分词,试图将句子最精确的切开,适合文本分析。
2.全模式:把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义。
3.搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
基本原理:
1.基于字典树trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG)
trie的详细介绍:http://blog.csdn.net/Hackbuteer1/article/details/7964147
DAG参考:http://book.51cto.com/art/201106/269048.htm
jieba分词自带了一个叫做dict.txt的词典,里面有2万多条词,包含了次条出现的次数和词性,这个一个条原理就是把这2万多条词语,放到一个trie树中,而trie树是 有名的前缀树,也就是说一个词语的前面几个字一样,就表示他们具有相同的前缀。具有查找速度快的优势。
2.采用了动态规划查找最大概率路径,找出基于词频的最大切分组合
动态规划中,先查找待分词句子中已经切分好的词语,对该词语查找该词语出现的频率,如果没有该词,就把词典中出现频率最小的那个词语的频率作为该词的频率。对句子从右到左反向极端最大概率,因为从右往左计算,正确率要高于从左往右计算,因为汉语句子的中心在后面,就是落在右边。依次类推,最后得到最大概率路径,得到最大概率的切合组合。
3.对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法
未登录词就是词典dict.txt中没有记录的词,上面说了,删除所有dict.txt中的所有词语,结巴分词一样可以分词。
看维基百科:http://zh.wikipedia.org/wiki/%E7%BB%B4%E7%89%B9%E6%AF%94%E7%AE%97%E6%B3%95 维特比算法
结巴分词过程:
1.加载字典,生成trie树。
2.给定待分词的句子,使用正则获取连续的中文字符和英文字符,切分成短语列表,对每个短语进行DAG(查字典)和动态规划,得到最大概率路径,对DAG中的那些没有在字典中查到的字,组合成一个新的片段短语,使用HMM模型进行分词,也就是说识别新词,即识别字典外的新词。
3.使用python的yield语法生成另一个词语生成器。
参考文档:http://blog.csdn.net/john_xyz/article/details/54645527
jiba中文分词原理的更多相关文章
- Elasticsearch 中文分词(elasticsearch-analysis-ik) 安装
由于elasticsearch基于lucene,所以天然地就多了许多lucene上的中文分词的支持,比如 IK, Paoding, MMSEG4J等lucene中文分词原理上都能在elasticsea ...
- Jieba分词原理与解析
https://www.jianshu.com/p/dfdfeaa7d01f 1 HMM模型 image.png 马尔科夫过程: image.png image.png 以天气判断为例:引 ...
- R语言︱文本挖掘之中文分词包——Rwordseg包(原理、功能、详解)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:与前面的RsowballC分词不同的 ...
- 【NLP】中文分词:原理及分词算法
一.中文分词 词是最小的能够独立活动的有意义的语言成分,英文单词之间是以空格作为自然分界符的,而汉语是以字为基本的书写单位,词语之间没有明显的区分标记,因此,中文词语分析是中文信息处理的基础与关键. ...
- python中文分词:结巴分词
中文分词是中文文本处理的一个基础性工作,结巴分词利用进行中文分词.其基本实现原理有三点: 基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG) 采用了动态规 ...
- jieba中文分词(python)
问题小结 1.安装 需要用到python,根据python2.7选择适当的安装包.先下载http://pypi.python.org/pypi/jieba/ ,解压后运行python setup.py ...
- postgres中的中文分词zhparser
postgres中的中文分词zhparser postgres中的中文分词方法 基本查了下网络,postgres的中文分词大概有两种方法: Bamboo zhparser 其中的Bamboo安装和使用 ...
- 用于Lucene的各中文分词比较
对几种中文分析器,从分词准确性和效率两方面进行比较.分析器依次为:StandardAnalyzer.ChineseAnalyzer.CJKAnalyzer.IK_CAnalyzer.MIK_CAnal ...
- 中文分词算法之最大正向匹配算法(Python版)
最大匹配算法是自然语言处理中的中文匹配算法中最基础的算法,分为正向和逆向,原理都是一样的. 正向最大匹配算法,故名思意,从左向右扫描寻找词的最大匹配. 首先我们可以规定一个词的最大长度,每次扫描的时候 ...
随机推荐
- 天才ACM
天才ACM 给定一个整数m,定义一个集合的权值为从这个集合中任意选出m对数(不够没关系,选到尽可能选,凑不成对的舍去),每对数两个数的差的平方的和的最大值. 现在给出一个数列\(\{a_i\}\),询 ...
- P1820 寻找AP数
P1820 寻找AP数两个性质,分解质因数后,连续,且指数递减,dfs就完了 #include <iostream> #include <cstdio> #include &l ...
- js 实现 map 工具类
/* * MAP对象,实现MAP功能 * * 接口: * size() 获取MAP元素个数 * isEmpty() 判断MAP是否为空 * clear() 删除MAP所有元素 * put(key, v ...
- 02-Nov-2017 07:11:56.475 信息 [http-nio-8080-exec-10] com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource. Initializing c3p0 pool...
报错: 02-Nov-2017 07:11:56.475 信息 [http-nio-8080-exec-10] com.mchange.v2.c3p0.impl.AbstractPoolBackedD ...
- VS2010-MFC(常用控件:树形控件Tree Control 下)
转自:http://www.jizhuomi.com/software/203.html 前面一节讲了树形控件Tree Control的简介.通知消息以及相关数据结构,本节继续讲下半部分,包括树形控件 ...
- hive 总结一
本文参考:黑泽君相关博客 本文是我总结日常工作中遇到的坑,结合黑泽君相关博客,选取.补充了部分内容. 上传数据 上传数据后执行修复 msck 命令 上传数据 hive> dfs -mkdir - ...
- day 81 Vue学习二之vue结合项目简单使用、this指向问题
Vue学习二之vue结合项目简单使用.this指向问题 本节目录 一 阶段性项目流程梳理 二 vue切换图片 三 vue中使用ajax 四 vue实现音乐播放器 五 vue的计算属性和监听器 六 ...
- jmeter-测试https请求
找了一个HTTPS请求的网站尝试. 我用的是chrome,点这个小锁(如果是IE也可以在网页上右键,属性,高级,证书) 或 看到下图,点击“复制到文件” 或 把导出的证书打成.store 用此命令进行 ...
- google浏览器插件开发
官方开发文档 随便找个文件夹新建插件所需文件 目录结构 pluginName manifest.json(必须) 一个manifest文件 *.htm ...
- nput="file" 浏览时只显示指定excel文件,筛选特定文件类型
<p>显示 .xls, .xlsx, .csv 文件...</p><input type="file" accept=".csv, appl ...