用词云图解读“于欢案”
请输入标题 bcde请输入标题 bcdef
解读网民意见
今天接着上一期的于欢案爬虫,进行一下文本分析,制作出绚丽的词云图。
从上图中我们看出,网民评论中出现最多的几个词语有:
法律、警察、为什么、公正、作为、母亲、高利贷、希望、如果、国家、司法、公安、治国等等
对于于欢判决,网民觉得法院判决结果不合情合理,对此也反映在这幅图中的“法律”“公正”“司法”
网民对于于欢的境地,容易产生同理心,如果自己在那种情况下,向警察求救无果,怎么办,还有救吗?反映在图中的“警察”“高利贷”“母亲”“希望”等
更多解读我也读不出来,希望大家帮着我解读解读吧。
请输入标题 abcdefg
知识准备
请输入标题 bcdef
首先我们先看一副词云图,有背景不同,词语有大小之分。背景图我们可以自己制作,最low的是去美图秀秀在线版制作,我是最low的,今天在美图上制作的这个模板。
这可是大邓的真迹,你们可以收藏起来!!
再一个就是词频率,词语出现的频率大,那么这个词在词云中就个头大。
那有个问题,我们制作词云图是为了将重要的有价值的信息可视化。并不是词语出现的频率大就有价值。有些情况下,句子中像‘的’、‘你’、‘他’、‘哦’等出现的也很多,但这些词所承载的信息量并不大。指直接用简单的词频制作的词云图是没有意义的。
这里我们就用到了TD-IDF
TD-IDF
TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。
那么这里我们用到了jieba库
from jieba.analyse import extract_tags
#从txt文件中提取重要的关键词
tags = extract_tags(content, topK=100)
然后再遍历tags中每个词在txt文档中出现的次数,得出词语的词频。
请输入标题 abcdefg
代码
请输入标题 bcdef
import jieba
import os
from jieba.analyse import extract_tags
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from scipy.misc import imread
def GeneratePicture(txtname = '大邓爬下来的辱母杀人评论文本', max_words=50, Picname = '于欢.png'):
path = os.getcwd()
txtfile = path + '/' + txtname + '.txt'
content = open(txtfile, 'r', encoding='utf-8').read() #评论内容
#根据tf-idf值找出文件中的关键词
tags = extract_tags(content, topK=max_words)
#分析得到关键词的词频
word_freq_dict = dict()
word_list = jieba.lcut(content)
for tag in tags:
freq = word_list.count(tag)
word_freq_dict[tag] = freq
#设置背景图片
if Picname:
background = path + '/' + Picname
back_coloring = imread(background)
font_file = path + '/' + '微软雅黑.ttf'
wc = WordCloud(font_path=font_file, #设置字体
background_color="black", #背景颜色
max_words= max_words,# 词云显示的最大词数
max_font_size=100, #字体最大值
mask = back_coloring, #背景图
random_state=42)
else:
font_file = path + '/' + '微软雅黑.ttf'
wc = WordCloud(font_path=font_file, # 设置字体
background_color="black", # 背景颜色
max_words=max_words, # 词云显示的最大词数
max_font_size=100, # 字体最大值
random_state=42)
wc.generate_from_frequencies(word_freq_dict)
plt.imshow(wc)
plt.axis("off")
plt.show() # 绘制词云
#保存图片
pic_file = path + '/' + txtname + '%d.png'%max_words
wc.to_file(pic_file)
请输入标题 abcdefg
运行
请输入标题 bcdef
#50个最重要的关键词效果
GeneratePicture(txtname = '大邓爬下来的辱母杀人评论文本',max_words=50,Picname = '于欢.png')
#100个最重要的关键词效果
GeneratePicture(txtname = '大邓爬下来的辱母杀人评论文本',max_words=100,Picname = '于欢.png')
#无背景图,100个最重要的关键词效果
GeneratePicture(txtname = '大邓爬下来的辱母杀人评论文本',max_words=100,Picname = None)
更多内容
大数据
爬虫
【视频】有了selenium,小白也可以自豪的说:“去TMD的抓包、cookie”
【视频】快来get新技能--抓包+cookie,爬微博不再是梦
文本分析
神奇的python
回复“于欢”即可得到词云图项目源代码
请输入标题 abcdefg