终究,命运的齿轮开始转动了,从这一刻起
这几日小夜斗一直在折腾于词云制作、力扣刷题、java学习、还有爬取微博评论数据的爬虫项目,一直没有功夫写博客,内心感到无比空虚,哈哈好啦,今天小夜斗给大家分享一期WordCloud词云制作!
所需数据集: 停用词文本、b站弹幕数据文本
这两个数据小夜斗会在文末给大家分享的哈!
其中b站弹幕数据文本也可以自己动手去爬一下
参考文章: 爬取b站《守护解放西》弹幕
爬取守护解放西弹幕这一文章也算是一篇基础详细的爬虫入门吧!
好啦,前言介绍就这么多啦,下面让小夜斗给大家整活吧!
先导入需要利用到的库!
import jieba # 分词
from wordcloud import WordCloud # 词云
from PIL import Image # 图片处理
import numpy as np # 图片处理
import matplotlib.pyplot as plt # 画图
所谓的分词就是将一句话分成一个或几个词语的形式,例如
小夜斗爬取冰冰vlog数据中,有一句老婆好美!通过jieba分词后
就会形成两个词语: “老婆”,“好美”! 小夜斗一双凉凉的手敲代码,
但心却是冰冰的!下面让我们来看分词代码吧!
# 读取停用词库,注意编码应为‘utf8’
f = open('小夜斗的停用词表.txt', encoding='utf8')
stopwords = f.read().split('\n')
print(stopwords) # 打印停用词
f.close() # 关闭停用词文件
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) # 打印过滤后的冰冰弹幕数据
如上图所述,选取其中一小部分展示,上述操作的核心目的是:
jieba.cut(string) 精确模式:把文本精确的切分开,不存在冗余单词,适合做文本分析
jieba.cut(string,cut_all = True) 全模式:把文本中所有可能的词语都扫描出来,速度快,但有冗余。
jieba.cut_for_search(string) 搜索引擎模式:在精确模式基础上,对长词再次切分。
获取过滤停用词后的冰冰弹幕数据,相当于处理脏数据一样
cloud_text = ",".join(mytext_list) # 连接列表里面的词语
print(cloud_text)
打印cloud_text的结果如上,这个数据是最终为词云服务的!
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!