暂时领先,未必最先达到终点

终究,命运的齿轮开始转动了,从这一刻起
几日不见,甚是思念!小夜斗又回来啦!
这几日小夜斗一直在折腾于词云制作、力扣刷题、java学习、还有爬取微博评论数据的爬虫项目,一直没有功夫写博客,内心感到无比空虚,哈哈好啦,今天小夜斗给大家分享一期WordCloud词云制作!
所需数据集: 停用词文本、b站弹幕数据文本
这两个数据小夜斗会在文末给大家分享的哈!
其中b站弹幕数据文本也可以自己动手去爬一下
好啦,前言介绍就这么多啦,下面让小夜斗给大家整活吧!
先导入需要利用到的库!
import jieba # 分词
from wordcloud import WordCloud # 词云
from PIL import Image # 图片处理
import numpy as np # 图片处理
import matplotlib.pyplot as plt # 画图
一: jieba分词
所谓的分词就是将一句话分成一个或几个词语的形式,例如
[图片上传失败...(image-45ddbf-1611472232678)]
小夜斗爬取冰冰vlog数据中,有一句老婆好美!通过jieba分词后
就会形成两个词语: "老婆","好美"! 小夜斗一双凉凉的手敲代码,
但心却是冰冰的!下面让我们来看分词代码吧!
# 读取停用词库,注意编码应为‘utf8’
f = open('小夜斗的停用词表.txt', encoding='utf8')
stopwords = f.read().split('\n')
print(stopwords) # 打印停用词
f.close() # 关闭停用词文件
[图片上传失败...(image-fe16c4-1611472232678)]
如上图所示,打印出的为一个停用词列表!
with open("冰冰vlog2.txt", "r", encoding='utf8') as fp:
text = fp.read()
这是一个读取冰冰弹幕数据文件的操作,将其保存到text变量中!
segs = jieba.cut(text) # 进行jieba分词
mytext_list = [] # 构建一个容纳过滤掉停用词的冰冰弹幕数据文件
# 文本清洗
for seg in segs: # 循环遍历每一个分词文本
# 如果该词不属于停用词表 并且非空 长度不为1
if seg not in stopwords and seg != "" and len(seg) != 1:
# 将该词语添加到mytext_list列表中
mytext_list.append(seg.replace(" ", ""))
print(mytext_list) # 打印过滤后的冰冰弹幕数据
[图片上传失败...(image-d35b8e-1611472232678)]
如上图所述,选取其中一小部分展示,上述操作的核心目的是:
jieba.cut(string) 精确模式:把文本精确的切分开,不存在冗余单词,适合做文本分析
jieba.cut(string,cut_all = True) 全模式:把文本中所有可能的词语都扫描出来,速度快,但有冗余。
jieba.cut_for_search(string) 搜索引擎模式:在精确模式基础上,对长词再次切分。
获取过滤停用词后的冰冰弹幕数据,相当于处理脏数据一样
cloud_text = ",".join(mytext_list) # 连接列表里面的词语
print(cloud_text)
[图片上传失败...(image-ce7655-1611472232678)]
打印cloud_text的结果如上,这个数据是最终为词云服务的!
二: 制作WordCloud词云
- 词云的目的: 将出现频率最高的哪些词汇展示出来!
- 注意图片的选取要用色彩相差较大的,会发现整个矩形都堆满了词汇,而不是那种刚好出现人物形状的词云
- 如果你制作的词云是整个矩阵铺满词语,不烦换一张图片试试
- 这里小夜斗从csdn博主那搞来了一张冰冰的帅气照片!感觉这张图片制作图云的效果最nice了,图片上面的水印加的是kimi君的博客链接!
冰冰美照
plt.figure() # 图形窗口
mask = plt.imread('冰冰冰.jpeg') # 导入冰冰图形蒙版
wc = WordCloud(
background_color="white", # 背景颜色
max_words=200, # 显示最大次数
font_path=r'C:/Windows/Fonts/STXINGKA.TTF', # 字体
width=400, # 宽
height=200, # 高
mask=mask,
scale=10).generate(cloud_text) # 迭代生成词云
wc.to_file("博客展示词云.png")
plt.imshow(wc, interpolation="bilinear") # 插值为双线性,会使显示平滑更加平滑
plt.axis("off") # 坐标轴隐藏
plt.show()
print("小夜斗立项成功!")
- 上面是小夜斗自己做的几副词云,其中有人物图形的是博客中分享的那张照片,其余几张因为图片的问题导致要么显示不完全,要么是全铺满!
- 获取源码以及数据集,小夜斗公众号回复”004词云制作“即可!
微信公众号: 夜斗小神社
好啦今天的分享就到这里啦,然后小夜斗就要滚去学习啦,see you!
-
在这个星球上,你很重要,请珍惜你的珍贵! ~~~夜斗小神社
星空
网友评论