使用jieba分词、wordcloud绘制词云图

使用jieba分词、wordcloud绘制词云图

需掌握的知识:

jieba库的使用:

简介:

jieba库是一款优秀的 Python 第三方中文分词库,jieba 支持三种分词模式:精确模式、全模式和搜索引擎模式:

  • 精确模式,试图将句子最精确地切开,适合文本分析;
  • 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
  • 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
分词功能
  • jieba.cut接受方法输入参数:需要分词的字符串;cut_all参数使用是否采用全模式;
  • jieba.lcut以及jieba.lcut_for_search直接返回列表
jieba.cut与jieba.lcut的区别
#ieba.cut生成的是一个生成器,generator,也就是可以通过for循环来取里面的每一个词。

s='将中文文本拆分为词语保存到列表words中'
words=jieba.cut(s,cut_all=True)			#将中文文本拆分为词语保存到列表words中.
print(words)

#运行结果:

在这里插入图片描述

#jieba.lcut 直接生成的就是一个list

s='将中文文本拆分为词语保存到列表words中'
words=jieba.lcut(s,cut_all=True)		#将中文文本拆分为词语保存到列表words中.
print(words)

#运行结果:

在这里插入图片描述

python中join()函数的使用方法

函数:string.join()

Python中有join()和os.path.join()两个函数,具体作用如下:

  • **join():**连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
  • **os.path.join():**将多个路径组合后返回

函数说明

1、join()函数

语法: ‘sep’.join(seq)

参数说明

  • sep:分隔符。可以为空
  • seq:要连接的元素序列、字符串、元组、字典

上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串

返回值:返回一个以分隔符sep连接各个元素后生成的字符串

2、os.path.join()函数

语法: os.path.join(path1[,path2[,…]])

返回值:将多个路径组合后返回

注:第一个绝对路径之前的参数将被忽略

对序列进行操作((分别使用’"与:"作为分隔符)

a1 = [ 'hello' ,'good' , 'boy' , 'xiaoming']
print(' '.join(a1))
print(':'.join(a1))
#输出
hello good boy xiaoming
hello:good:boy:xiaoming

对字符串进行操作

a2 = 'hello good boy xiaoming'
print(':'.join(a2))
#输出
h:e:l:l:o: :g:o:o:d: :b:o:y: :x:i:a:o:m:i:n:g

对元组进行操作

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:725638078
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
a3 = ('hello','good' , 'boy' , 'xiaoming')
print(':'.join(a3))
#输出
hello:good:boy:xiaoming

对字典进行操作

a4 = {'hello':1,'good': 2, 'boy': 3, 'xiaoming':4}
print(':'.join(a4))
#输出
hello:good:boy:xiaoming

合并目录

import os
a5 = os.path.join('/hello/','good/boy/','xiaoming')
print(a5)
#输出
/hello/good/boy/xiaoming

wordcloud库常规方法

  1. w = wordcloud.WordCloud()
    配置对象参数:
    width —— 指定词云对象生成图片的宽度,默认400像素
    height —— 指定词云对象生成图片的高度,默认200像素
    min_font_size —— 指定词云中字体的最小字号,默认4号
    max_font_size —— 指定词云中字体的最大字号,根据高度自动调节
    font_step —— 指定词云中字体的步进间隔,默认为1
    font_path —— 指定字体文件的路径,默认None
    max_words —— 指定词云显示的最大单词量,默认200
    stop_words —— 指定词云的排除词列表
    mask —— 指定词云形状,默认为长方形,需要引用imread()函数
    background_color —— 指定词云图片的背景颜色,默认为黑色
  2. w = generate(txt)
    加载词云文本
  3. w.to_file(filename)
    输出词云文件

wordcloud执行过程分解:
①分隔:以空格分隔单词
②统计:单词出现次数并过滤
③字体:根据统计配置字号
④布局:颜色环境尺寸

实例

import matplotlib.pyplot as plt
from wordcloud import WordCloud
from imageio import imread
import jieba

file=open("D:\系统默认\桌面\dataset/alice.txt", encoding='utf-8')
# 将alice.txt文件打开
# open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。
article=file.read()
# 将文件内容读到article
file.close()
#关闭资源
seg_str=jieba.cut(article, cut_all=False)
# 使用jieba进行分词
liststr="/".join(seg_str)
#使用.join()方法用 ‘ / ’ 连接分割后的词
stopwords_path='D:\系统默认\桌面\dataset/stopwords6.txt'
#将文件路径赋值给stopwords_path
f_stop=open(stopwords_path, encoding='utf8')
# 将stopwords_path文件打开
f_stop_text=f_stop.read()
# 将文件内容读到f_stop_text
f_stop.close()
#关闭资源
mywordlist=[]
#创建mywordlist空列表
f_stop_seg_list=f_stop_text.split('\n')
#将f_stop_text以'\n'切割字符串,返回列表赋值给f_stop_seg_list
for myword in liststr.split('/'):
    if not(myword.strip() in f_stop_seg_list)and len(myword.strip())>1:
        mywordlist.append(myword)
#使用for循环,将liststr以 '/' 分割后的元素,一个个放入myword中,如果myword在的f_stop_seg_list中,且myword.strip()长度大于1,就将myword添加到列表mywordlist中
#此步是为了,去除停用词,将去除的停用词的元素放到新建的列表中
ss=' '.join(mywordlist)
#将mywordlist以空格分割
bg="D:\系统默认\桌面\dataset/alice.jpg"
#将图片路径赋值到变量bg中
imgbg=imread(bg)
#imread()函数读取图片
a=WordCloud(font_path="D:\系统默认\桌面\dataset/simhei.ttf", background_color='white', width=1000, height=800, mask=imgbg)
#定义词图的样式
#绘制云图
a.generate(ss)
#根据文本生成词云
plt.imshow(a)
plt.axis("off")
plt.show()

运行结果:

在这里插入图片描述

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值