python 结巴分词学习
结巴分词(自然语言处理之中文分词器)
jieba分词算法使用了基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能生成词情况所构成的有向无环图(DAG), 再采用了动态规划查找最大概率路径,找出基于词频的最大切分组合,对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法。
jieba分词支持三种分词模式:
1. 精确模式, 试图将句子最精确地切开,适合文本分析:
2. 全模式,把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义;
3. 搜索引擎模式,在精确模式的基础上,对长词再词切分,提高召回率,适合用于搜索引擎分词。
一 结巴分词的安装
pip3 install jieba
二 结巴分词的主要功能
1. jieba.cut:该方法接受三个输入参数:
参数1:需要分词的字符串;
参数2:cut_all参数用来控制是否采用全模式,默认为精确模式;
cut_all=True 全模式
cut_all=false 精确(默认)模式
参数3:HMM参数用来控制是否适用HMM模型
2. jieba.cut_for_search:该方法接受两个参数:
参数1:需要分词的字符串;
参数2:是否使用HMM模型,
该方法适用于搜索引擎构建倒排索引的分词,粒度比较细。
3. jieba.cut 以及jieba.cut_for_search
返回的结构都是可以得到的generator(生成器)
4. jieb.lcut 以及 jieba.lcut_for_search
直接返回list
5.jieba.Tokenizer(dictionary=DEFUALT_DICT)
新建自定义分词器,
可用于同时使用不同字典,
jieba.dt为默认分词器,所有全局分词相关函数都是该分词器的映射。
三 结巴分词的三种模式
import jieba text='赵丽颖主演的正午阳光剧,知否知否应是绿肥红瘦'
1 全模式 cut_all=True
seq_list=jieba.cut(text,cut_all=True)
print(seq_list) #<generator object Tokenizer.cut at 0x0000026EB6F0CD58>
print(list(seq_list))
'''
['赵', '丽', '颖', '主演', '的', '正午', '阳光', '剧', '', '', '知', '否', '知', '否', '应', '是', '绿肥', '绿肥红瘦']
'''
2 精确模式 (默认模式) cut_all =False
# 02精确模式
seq_list=jieba.cut(text,cut_all=False)
print(list(seq_list))
'''
['赵丽颖', '主演', '的', '正午', '阳光', '剧', ',', '知否', '知否', '应', '是', '绿肥红瘦']
'''
3 搜索引擎模式 cut_for_search
seq_list=jieba.cut_for_search(text,)
print(list(seq_list))
'''
['赵丽颖', '主演', '的', '正午', '阳光', '剧', ',', '知否', '知否', '应', '是', '绿肥', '绿肥红瘦']
'''
四 自定义分词器(jieba.Tokenizer)
1 创建词典内容的格式
一个词语占一行(分三部分)
格式: 词语 词频 词性
如:张三 5
李四 10 eng

2 自定义词典的导入(load_userdict)
text='赵丽颖主演的正午阳光剧,知否知否应是绿肥红瘦'
# 自定义词典
jieba.load_userdict('自定义词典.txt')
sep_list=jieba.lcut(text)
print('userdict>>>',sep_list)
userdict>>> ['赵丽颖', '主演', '的', '正午', '阳光剧', ',', '知否', '知否', '应是', '绿肥红瘦']
五 利用jieba 进行关键词的抽取
1 基于TF-IDF算法的关键词抽取
2 python 实现关键提取
jieba.analyse.extract_tags(text,topK=20,withWeight=False,allowPOS=())
'''
text:为待提取的文本;
topK:返回几个TF/IDF权重最大的关键字,默认值为20;
withWeight:是否一并返回关键词权重值,默认False;
'''
jieba.analyse.TFIDF(idf_path=None) #新建tf-idf实例,idf_path为IDF实例
五 使用结巴的词云实例
1 数据准备
文档:
死了都要爱
不淋漓尽致不痛快
感情多深只有这样
才足够表白
死了都要爱
不哭到微笑不痛快
宇宙毁灭心还在
把每天当成是末日来相爱
一分一秒都美到泪水掉下来
不理会别人是看好或看坏
只要你勇敢跟我来
爱不用刻意安排
凭感觉去亲吻相拥就会很愉快
享受现在别一开怀就怕受伤害
许多奇迹我们相信才会存在
死了都要爱
不淋漓尽致不痛快
感情多深只有这样才足够表白
死了都要爱
不哭到微笑不痛快
宇宙毁灭心还在
穷途末路都要爱
不极度浪漫不痛快
发会雪白土会掩埋
思念不腐坏
到绝路都要爱
不天荒地老不痛快
不怕热爱变火海
爱到沸腾才精采
死了都要爱.txt
Dream it possible I will run, I will climb, I will soar. I'm undefeated Jumping out of my skin, pull the chord Yeah I believe it The past, is everything we were don't make us who we are so I'll dream, until I make it real, and all I see is stars It's not until you fall that you fly When you dreams come alive you're unstoppable take a shot, chase the sun, find the beautiful We will glow in the dark turning dust to gold And we'll dream it possible I will chase, I will reach, I will fly Until I'm breaking, until I'm breaking Out of my cage, like a bird in the night I know I'm changing, I know I'm changing In,into something big, better than before And if it takes, takes a thousand lives Then it's worth fighting for
dream ispossible.txt
图片:(红心.jpg)

# 数据获取
with open('死了都要爱.txt','r',encoding='utf8')as f:
text=f.read() # with open('dream is possible.txt','r',encoding='utf8')as f:
# text=f.read()
#图片获取
mask=np.array(Image.open('红心.jpg'))
2 数据清洗
屏蔽不需要的数据和分词
# 数据清洗
# 屏蔽死了都要爱
STOPWORDS.add('死了都要爱')
sep_list=jieba.lcut(text,cut_all=False)
sep_list=" ".join(sep_list) #转为字符串
自定义画布
wc=WordCloud(
font_path=font,#使用的字体库
margin=2,
mask=mask,#背景图片
background_color='white', #背景颜色
max_font_size=25,
max_words=200,
stopwords=STOPWORDS, #屏蔽的内容
)
生成词语,保存图片
wc.generate(text) #制作词云
wc.to_file('新增图片.jpg') #保存到当地文件
3 数据展示
plt.imshow(wc,interpolation='bilinear')
plt.axis('off')
plt.show()
完整代码和效果展示
from wordcloud import WordCloud
import matplotlib.pyplot as plt import numpy as np
from PIL import Image import jieba # 数据获取
with open('死了都要爱.txt','r',encoding='utf8')as f:
text=f.read() # with open('dream is possible.txt','r',encoding='utf8')as f:
# text=f.read()
#图片获取
mask=np.array(Image.open('关羽.jpg')) # 数据清洗
# 屏蔽死了都要爱
# STOPWORDS.add('死了都要爱') font=r'C:\Windows\Fonts\simhei.ttf'
sep_list=jieba.lcut(text,cut_all=False)
sep_list=" ".join(sep_list)
wc=WordCloud(
font_path=font,#使用的字体库
margin=2,
mask=mask,#背景图片
background_color='white', #背景颜色
max_font_size=200,
# min_font_size=1,
max_words=200,
# stopwords=STOPWORDS, #屏蔽的内容
) wc.generate(sep_list) #制作词云
wc.to_file('关羽新增.jpg') #保存到当地文件 # 图片展示
plt.imshow(wc,interpolation='bilinear')
plt.axis('off')
plt.show()
完整代码
图片一(未分词):

图片二(分词效果)


推荐文章
https://blog.csdn.net/gzmfxy/article/details/78994396
python 结巴分词学习的更多相关文章
- Python 结巴分词
今天的任务是对txt文本进行分词,有幸了解到"结巴"中文分词,其愿景是做最好的Python中文分词组件.有兴趣的朋友请点这里. jieba支持三种分词模式: *精确模式,试图将句子 ...
- Python 结巴分词(1)分词
利用结巴分词来进行词频的统计,并输出到文件中. 结巴分词github地址:结巴分词 结巴分词的特点: 支持三种分词模式: 精确模式,试图将句子最精确地切开,适合文本分析: 全模式,把句子中所有的可以成 ...
- Python 结巴分词模块
原文链接:http://www.gowhich.com/blog/147?utm_source=tuicool&utm_medium=referral PS:结巴分词支持Python3 源码下 ...
- python 结巴分词简介以及操作
中文分词库:结巴分词 文档地址:https://github.com/fxsjy/jieba 代码对 Python 2/3 均兼容 全自动安装:easy_install jieba 或者 pip in ...
- python 结巴分词(jieba)详解
文章转载:http://blog.csdn.net/xiaoxiangzi222/article/details/53483931 jieba “结巴”中文分词:做最好的 Python 中文分词组件 ...
- python结巴分词SEO的应用详解
结巴分词在SEO中可以应用于分析/提取文章关键词.关键词归类.标题重写.文章伪原创等等方面,用处非常多. 具体结巴分词项目:https://github.com/fxsjy/jieba ...
- 转]python 结巴分词(jieba)学习
原文 http://www.gowhich.com/blog/147 主题 中文分词Python 源码下载的地址:https://github.com/fxsjy/jieba 演示地址:http:/ ...
- python结巴分词余弦相似度算法实现
过余弦相似度算法计算两个字符串之间的相关度,来对关键词进行归类.重写标题.文章伪原创等功能, 让你目瞪口呆.以下案例使用的母词文件均为txt文件,两种格式:一种内容是纯关键词的txt,每行一个关键词就 ...
- Python 结巴分词(2)关键字提取
提取关键字的文章是,小说完美世界的前十章: 我事先把前十章合并到了一个文件中: 然后直接调用关键字函数: import sys sys.path.append('../') import jieba ...
随机推荐
- 『宝藏 状态压缩DP NOIP2017』
宝藏(NOIP2017) Description 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 n 个深埋在地下的宝藏屋, 也给出了这 n 个宝藏屋之间可供开发的m 条道路和它们的长度. 小明决 ...
- 并发编程(十一)—— Java 线程池 实现原理与源码深度解析(一)
史上最清晰的线程池源码分析 鼎鼎大名的线程池.不需要多说!!!!! 这篇博客深入分析 Java 中线程池的实现. 总览 下图是 java 线程池几个相关类的继承结构: 先简单说说这个继承结构,E ...
- asp.net core 系列 2 启动Startup类介绍
一.Startup类 ASP.NET Core 应用是一个控制台应用,它在其 Program.Main 方法中创建 Web 服务器.其中Main方法是应用的托管入口点,Main 方法调用 WebHos ...
- Android单个控件占父控件宽度一半且水平居中
前些天,在工作中遇到了一个需求:一个“加载上一页”的按钮宽度为父控件宽度一半,且水平居中于父控件中. 在此给出两种思路: 1.直接在Activity代码中获取到当前父控件的宽度,并将此按钮宽度值设置成 ...
- 采用config方式灵活配置我们的Quarz.net中的Job,Trigger
经常在项目中遇到定时任务的时候,通常第一个想到的是Timer定时器,但是这玩意功能太弱鸡,实际上通常采用的是专业化的第三方调度框架,比如说 Quartz,它具有功能强大和应用的灵活性,我想使用过的人都 ...
- JDBC与ORM发展与联系 JDBC简介(九)
概念回顾 回顾下JDBC的概念: JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它 ...
- 产品炼成记·hostingranking.cn·基于ghost的轻量技术架构整理
本篇纯粹只讲hostingranking.cn网站的技术架构,也就是怎么做到的,达到什么效果.至于它是什么,为什么要做暂且不说,另篇会分享. 技术组成 首先hostingranking.cn是基于gh ...
- 【.NET Core项目实战-统一认证平台】第八章 授权篇-IdentityServer4源码分析
[.NET Core项目实战-统一认证平台]开篇及目录索引 上篇文章我介绍了如何在网关上实现客户端自定义限流功能,基本完成了关于网关的一些自定义扩展需求,后面几篇将介绍基于IdentityServer ...
- DSAPI多功能组件编程应用-文件类
[DSAPI.DLL下载地址] 本节内容,是属于"无需过多说明"就能使用的功能.由于实在是太简单,我就简单地示例一下. DSAPI.文件类.获取可读性强的字节大小信息(&q ...
- 【转载】Windows Server 2012服务器删除IIS方法
在Windows Server2012版本的服务器系统中,我们可以通过服务器管理器中的"添加角色和功能"来添加IIS的Web服务器,当我们不再使用IIS功能时候,我们也可以通过删除 ...