python结巴(jieba)分词
python结巴(jieba)分词
一、特点
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结巴(jieba)分词的更多相关文章
- python环境jieba分词的安装
我的python环境是Anaconda3安装的,由于项目需要用到分词,使用jieba分词库,在此总结一下安装方法. 安装说明======= 代码对 Python 2/3 均兼容 * 全自动安装:`ea ...
- Python使用jieba分词
# -*- coding: utf-8 -*- # Spyder (python 3.7) import pandas as pd import jieba import jieba.analyse ...
- python bottle + jieba分词服务
2019-12-16 19:46:34 星期一 最近接触到结巴分词项目, 就试试 用python的bottle库来当服务器监听localhost:8080 把请求的数据转给jieba来分词, 并返回分 ...
- Python之jieba分词
jieba,很有意思的一个模块,专门用来分词. import jieba # sentence:分割的中文字符串 # cut_all:是否采用全模式,默认为False表示精确模式 # HMM:表示是否 ...
- python的jieba分词
# 官方例程 # encoding=utf-8 import jieba seg_list = jieba.cut("我来到北京清华大学", cut_all=True) print ...
- 自然语言处理之中文分词器-jieba分词器详解及python实战
(转https://blog.csdn.net/gzmfxy/article/details/78994396) 中文分词是中文文本处理的一个基础步骤,也是中文人机自然语言交互的基础模块,在进行中文自 ...
- python 结巴分词(jieba)详解
文章转载:http://blog.csdn.net/xiaoxiangzi222/article/details/53483931 jieba “结巴”中文分词:做最好的 Python 中文分词组件 ...
- python jieba分词(结巴分词)、提取词,加载词,修改词频,定义词库 -转载
转载请注明出处 “结巴”中文分词:做最好的 Python 中文分词组件,分词模块jieba,它是python比较好用的分词模块, 支持中文简体,繁体分词,还支持自定义词库. jieba的分词,提取关 ...
- 转]python 结巴分词(jieba)学习
原文 http://www.gowhich.com/blog/147 主题 中文分词Python 源码下载的地址:https://github.com/fxsjy/jieba 演示地址:http:/ ...
随机推荐
- (八十一)利用系统自带App来实现导航
利用系统的地图App进行导航,只需要传入起点和终点.启动参数,调用MKMapItem的类方法openMapWithItems:launchOptions:来实现定位,调用此方法后会打开系统的地图App ...
- How to Use Kdiff3 as a 3-way Merge Tool With Mercurial, Git, and Tower.app
How to Use Kdiff3 as a 3-way Merge Tool With Mercurial, Git, and Tower.app Jan 12th, 2012 ...
- iOS开发之六:常用控件--UIImageView的使用
UIImageView是我们做iOS开发用的非常多的一个控件,IOS中的各种图片,包括头像,有的背景图片等基本都要用到这个控件. 1.常用的属性以及方法 <span style="fo ...
- MyBatis主键生成器KeyGenerator(一)
Mybatis提供了主键生成器接口KeyGenerator,insert语句默认是不返回记录的主键值,而是返回插入的记录条数:如果业务层需要得到记录的主键时,可以通过配置的方式来完成这个功能 . 由于 ...
- Dynamics CRM 给视图配置安全角色
CRM2011后给表单设置了安全角色,可以配置实体表单给不同的安全角色查看,但视图的权限始终没有开放配置,这里介绍个工具可以实现这种配置. 先奉上2011/2013版本的工具地址(2015/2016见 ...
- 【Unity 3D 游戏开发】Unity3D 入门 - 工作区域介绍 与 入门示例
一. 工作区域详解 1. Scence视图 (场景设计面板) scence视图简介 : 展示创建的游戏对象, 可以对所有的游戏对象进行 移动, 操作 和 放置; -- 示例 : 创建一个球体, 控制摄 ...
- Linux 句柄是什么 ?
1.句柄就是一个标识符,只要获得对象的句柄,我们就可以对对象进行任意的操作. 2.句柄不是指针,操作系统用句柄可以找到一块内存,这个句柄可能是标识符,map的key,也可能是指针,看操作系统怎么处理的 ...
- Visual Studio2010 安装pthreads2.9.1
本人最近要利用多线程进行编程,前面一篇博文讲解的是利用VC自带的一些函数库,这里重点探讨一下如何配置pthreads2.9.1的Visual Studio2010的环境.本文分为两个部分,第一部分给出 ...
- 《java入门第一季》之Character类小案例
/* * Character 类在对象中包装一个基本类型 char 的值 * 此外,该类提供了几种方法,以确定字符的类别小写字母,数字,等等,并将字符从大写转换成小写,反之亦然 * */ 下面通 ...
- C#之概述
当前流行的开发语言概述 C#是微软公司为Visual Studio开发平台推出的一种简洁.类型安全的面向对象的编程语言,开发人员可以通过她编写在.NET Framework上运行的各种安全可靠的应用程 ...