这是崔斯特的第八篇原创文章
数据来源:http://star.longzhu.com/teamchina
本次弹幕记录(开始时间: 2017-03-23-19:43:34,结束21:29:33),共记录20788条数据。
使用OBS弹幕助手记录http://www.obsapp.com/apps/obsdanmu/
1、分析
文件中含有时间记录,观众ID和送礼记录,其次是弹幕内容,所以决定对前两列内容不分析。
首先需要对文本分词,这里采用jieba分词 https://github.com/fxsjy/jieba/
去除空格,使用strip()
函数, 去掉换行符”\n”
line = line.strip('\n')
把分析结果写入新的文档’text.txt’,Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串
text = ''
with open('danmu.txt',encoding='utf-8') as fin:
for line in fin.readlines():
line = line.strip('\n')
text += '/'.join(jieba.cut(line))
text += ' '
fout = open('text.txt','wb')#以二进制写模式写入
pickle.dump(text,fout)
fout.close()
这样就完成了分词过程,结果如下:
2、绘制图云
# 直接从文件读取数据
fr = open('text.txt','rb')
text = pickle.load(fr)
使用word_cloud,具体用法https://github.com/amueller/word_cloud
backgroud_Image = plt.imread('girl.jpg')
wc = WordCloud( background_color = 'white', # 设置背景颜色
mask = backgroud_Image, # 设置背景图片
max_words = 2000, # 设置最大现实的字数
stopwords = STOPWORDS, # 设置停用词
font_path = 'C:/Users/Windows/fonts/msyh.ttf',# 设置字体格式,如不设置显示不了中文
max_font_size = 300, # 设置字体最大值
random_state = 50, # 设置有多少种随机生成状态,即有多少种配色方案
)
使用matplotlib绘图http://matplotlib.org/2.0.0/index.html
wc.generate(text)
image_colors = ImageColorGenerator(backgroud_Image)
#wc.recolor(color_func = image_colors)
plt.imshow(wc)
plt.axis('off')
plt.show()
OK,这样就完成了,附上结果
有没有你发过的弹幕呢?
可自形修改数据,得到更好看图片。
能力有限,分析很少,如果你想进行更深入分析,请找我要文件。
对英雄联盟感兴趣的小伙伴可以看看这篇,对游戏直播弹幕的分析。