一、特点

1、支持三种分词模式:

(1)精确模式:试图将句子最精确的切开,适合文本分析。

(2)全模式:把句子中所有可以成词的词语都扫描出来,速度非常快,但是不能解决歧义。

(3)搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

2、支持繁体分词

3、支持自定义词典

二、实现

结巴分词的实现原理主要有一下三点:

(1)基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG)。

(2)采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合。

(3)对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法。

三、应用

我们来演示一下结巴分词的主要功能

1、分词

1 #-*- coding:utf-8 -*-

2

3

4 import jieba

5

6

7

8 '''

9 cut方法有两个参数

10 1)第一个参数是我们想分词的字符串

11 2)第二个参数cut_all是用来控制是否采用全模式

12 '''

13

14 #全模式

15 word_list = jieba.cut("今天天气真好。亲爱的,我们去远足吧!",cut_all=True)

16 print "全模式:","|".join(word_list)

17 #精确模式 , 默认就是精确模式

18 word_list = jieba.cut("今天天气真好。亲爱的,我们去远足吧!",cut_all=False)

19 print "精确模式:","|".join(word_list)

20 #搜索引擎模式

21 word_list = jieba.cut_for_search("今天天气真好。亲爱的,我们去远足吧!")

22 print "搜索引擎:","|".join(word_list)

2、添加自定义词典

虽然jieba有新词识别能力,但是自己添加新词可以保证更高的正确率。

开发者可以根据自己的需要添加自定义词典,以便包含jieba词库里没有的词。

例:小红今天我们还去以前经常去的地方远足吗?要不咱们换个地方吧!园小园怎么样?没问题小豆芽

自定义词典(cu.txt):

园小园 5

小豆芽 3 nr

一个词占一行;每一行分三部分,一部分为词语,另一部分为词频,最后为词性(可省略),中间用空格隔开。

1 #-*- coding:utf-8 -*-

2 import jieba

3

4 jieba.load_userdict("./cu.txt")

5 word_list = jieba.cut("小红今天我们还去以前经常去的地方远足吗?要不咱们换个地方吧!园小园怎么样?没问题小豆芽")

6 print "|".join(word_list)

3、关键词提取

1)第一个参数(setence)为待提取的文本。

2)topK为返回几个TF/IDF权重最大的关键词,默认值为20,可以自己指定。

1 #-*- coding:utf-8 -*-

2 import jieba.analyse as al

3

4 content = open("./topk.txt","rb").read()

5 word_topk = al.extract_tags(content,topK=4)

6 print "|".join(word_topk)

4、词性标注

标注句子分词后每个词的词性,采用和ictclas兼容的标记法。

1 #-*- coding:utf-8 -*-

2 import jieba.posseg as pseg

3

4 words = pseg.cut("青岛北京是不错的地方")

5 for word in words:

6 print word.word,word.flag

运行结果:

青岛 ns

北京 ns

是 v

不错 a

的 uj

地方 n

5、并行分词(只能在linux系统上运行)

将要进行分词的文本按行分隔,把各行文本分配到多个python进程中去,然后归并结果,从而使分词速度提升。

基于python的multiprocessing模块,目前不支持windows系统。

#-*- coding:utf-8 -*-

import jieba

#开启并行分词模式,参数为参与并行分词的进程数

jieba.enable_parallel(2)

#关闭并行分词

#jieba.disable_parallel()

content = open("./topk.txt","rb")

words = jieba.cut(content)

print "|".join(words)

6、模块初始化机制的改变:lazy load (从0.28版本开始)

下载你所需要的词典,然后覆盖jieba/dict.txt或者用jieba.set_dictionary("")将其覆盖。

1 #-*- coding:utf-8 -*-

2

3 import jieba

4 jieba.set_dictionary("./dict.txt")

5 content = open("./content.txt","rb").read()

6 words = jieba.cut(content)

7 print "|".join(words)

7、Tokenize:返回词语在原文的起始位置

1)第一个参数为文本内容。

2)第二个参数mode可以不用默认模式,指定为“search”搜索引擎模式。

1 #-*- coding:utf-8 -*-

2 import jieba

3

4 result = jieba.tokenize(u'今天天气真好。亲爱的,我们去远足吧!')

5 for token in result:

6 print "word %s\t\t start: %d \t\t end:%d" % (token[0],token[1],token[2])

python结巴_python结巴(jieba)分词相关推荐

  1. python同义词替换(jieba分词)

    python同义词替换(jieba分词) TihuanWords.txt文档格式 注意:同一行的词用单个空格隔开,每行第一个词为同行词的替换词. 年休假 年假 年休 究竟 到底 回家场景 我回来了 代 ...

  2. python中正则表达式与jieba分词的使用

    这次和大家分享一下主要使用正则表达式匹配文本信息内容的案例,其中还用到了jieba分词词性标注技术,和一些对文本的切片工作.有兴趣学习的可以详细看看,具体内容,应该有点帮助,这是本人一个一个代码敲出来 ...

  3. Python大数据:jieba分词,词频统计

    实验目的 学习如何读取一个文件 学习如何使用DataFrame 学习jieba中文分词组件及停用词处理原理 了解Jupyter Notebook 概念 中文分词 在自然语言处理过程中,为了能更好地处理 ...

  4. python 自然语言处理(二) jieba 分词

    import jieba s ='我想和女朋友一起去北京故宫博物院参观和闲逛.' #精确模式 cut = jieba.cut(s) print (','.join(cut)) 我,想,和,女朋友,一起 ...

  5. 中文分词算法python代码_python实现中文分词FMM算法实例

    本文实例讲述了python实现中文分词FMM算法.分享给大家供大家参考.具体分析如下: FMM算法的最简单思想是使用贪心算法向前找n个,如果这n个组成的词在词典中出现,就ok,如果没有出现,那么找n- ...

  6. python读取文件,jieba分词,posseg标注词性,并写入文件,代码实战

    先列出代码如下 # -*- encoding=utf-8 -*- # 定义编码格式 import jieba.analyse import jieba.posseg import jieba impo ...

  7. python自然语言处理 分词_Python 自然语言处理(基于jieba分词和NLTK)

    Python 自然语言处理(基于jieba分词和NLTK) 发布时间:2018-05-11 11:39, 浏览次数:1038 , 标签: Python jieba NLTK ----------欢迎加 ...

  8. python统计词频瓦尔登湖_自然语言处理之中文分词器-jieba分词器详解及python实战...

    (转https://blog.csdn.net/gzmfxy/article/details/78994396) 中文分词是中文文本处理的一个基础步骤,也是中文人机自然语言交互的基础模块,在进行中文自 ...

  9. linux python 调试_Python安装与环境配置

    [按]最近有纯文科背景的朋友想入门Python,问我首先得干嘛.那当然是安装Python了,因此我出这一期Python安装与环境配置的文章,这是定量城市研究从导论进入实操的第一篇推文.综合参考了菜鸟教 ...

最新文章

  1. 使用Java对轨迹进行抽稀,并生成mvt(Map Vector Tile)瓦片
  2. [Spring Cloud Task]6 Spring Batch批处理应用设计原则
  3. 科大星云诗社动态20210228
  4. Linux 安装 FFmpeg
  5. 春晚之后的采访和豆瓣投名状
  6. mysql 设置 character_set_server_MySQL:简单记录character_set_server影响参数
  7. django 1.8 官方文档翻译:2-1-1 模型语法
  8. VS2010_release_exe生成
  9. 必做作业三:原型化系统-社区分享app
  10. 现代信号处理——阵列信号处理(空域滤波原理及其算法)
  11. 经纬度换算数值_经纬度换算
  12. 用“文通慧视”识别屏幕或图片中的文字
  13. 图像处理系列——图像融合之加权平均(WA)
  14. 山东省大学生软件设计大赛
  15. s3cmd安装配置及基础命令
  16. 面试题 猜颜色球游戏
  17. 杂项:Unity3D
  18. ReactNative 深层连结
  19. 一个故事讲完进程、线程和协程
  20. 激光测距望远镜方案介绍

热门文章

  1. java继承原理内存角度_Java基础知识巩固
  2. aardio教程_官方AARDIO课程已经开课了!学习的速来报道!
  3. 文件过滤_jmeter(七)-BeanShell对数据过滤保存文件
  4. WordPress 数据库结构及表字段作用解析
  5. 如何在string.Format方法中输出大括号({})
  6. Oracle中Number(p,s)的意义
  7. C语言的Trim, LTrim, RTrim
  8. Linux 串口编程一 一些背景
  9. nunjucks渲染富文本解析错误输出字符串而不是元素
  10. [react] react兄弟组件如何通信?