一:前言
二:遇到的坑
三:简单原理
- jieba这个模块是用来分词的,把一段文字分解成一个一个的词汇,就像我的锤子手机的大爆炸一样分词。jieba.cut()分词函数提供了三个模式:全模式,精确模式,搜索引擎模式。全模式:速度块,扫描成词的词语,但时会出现歧义的词语
精确模式:尽可能最准确非切分词语,比较适合作文本分析
搜索引擎模式:就是精确模式的基础上,对长词再次切分,提高召回率
这里默认的话就是精确模式。第一次可以不用考虑模式问题,先上来弄出个图给自己美滋滋一下再说。 - 之后对分词后的数据使用wordcloud模块,进行对词汇分析了
- 最后使用matplotlib.pyplot,绘图展现出来。
四:代码展现
-
1.Python的代码量很少,所以学习还是比其他语言来的舒服。这里的就简单这些代码就实现了词云的目的。我这里导入的文档是弹幕爬取后的,代码在我gituhub中,就是把之前弹幕数据保存到mongodb改成只把弹幕内容保存到text文档中。
Paste_Image.png
import jieba,jieba.analyse
from wordcloud import WordCloud, ImageColorGenerator
import matplotlib.pyplot as plt
import os
import PIL.Image as Image
import numpy as np
with open('大司马即将上课前后.txt','r',encoding='utf-8') as f:
text = f.read()
f.close()
cut_text = " ".join(jieba.cut(text)) #使用空格连接 进行中文分词
d = os.path.dirname(__file__) # 获取当前文件路径
color_mask = np.array(Image.open(os.path.join(d,'img.jpg'))) # 设置图片
cloud = WordCloud(
background_color='#F0F8FF', # 参数为设置背景颜色,默认颜色则为黑色
font_path="FZLTKHK--GBK1-0.ttf", # 使用指定字体可以显示中文,或者修改wordcloud.py文件字体设置并且放入相应字体文件
max_words=1000, # 词云显示的最大词数
font_step=10, # 步调太大,显示的词语就少了
mask=color_mask, #设置背景图片
random_state= 15, # 设置有多少种随机生成状态,即有多少种配色方案
min_font_size=15, #字体最小值
max_font_size=232, #字体最大值
)
cloud.generate(cut_text) #对分词后的文本生成词云
image_colors = ImageColorGenerator(color_mask) # 从背景图片生成颜色值
plt.show(cloud.recolor(color_func=image_colors)) # 绘制时用背景图片做为颜色的图片
plt.imshow(cloud) # 以图片的形式显示词云
plt.axis('off') # 关闭坐标轴
plt.show() # 展示图片
cloud.to_file(os.path.join(d, 'pic.jpg')) # 图片大小将会按照 mask 保存
- 2.执行之后就可以显示出来了:
之后我又对斗鱼主播芜湖大司马直播后一段时间的弹幕分析了一下,结果如下:
直播开始后弹幕- 3.前面是使用自己的词云分析,之后我把我的两个时间段的弹幕内容放到,这里来分析是这样的: