查看原文
其他

用词云图解读“于欢案”

2017-03-29 大邓 大邓带你玩python













请输入标题     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)

更多内容

大数据

大数据时代,你如何成为弄潮儿

爬虫

 【视频】于欢案之网民的意见(1)?

【视频】有了selenium,小白也可以自豪的说:“去TMD的抓包、cookie”

【视频】快来get新技能--抓包+cookie,爬微博不再是梦

【视频教程】用python批量抓取简书用户信息

  爬豆瓣电影名的小案例(附视频操作)

  爬豆瓣电影名的小案例2(附视频操作)

  python代理爬虫抓豆瓣电影数据(一)

  python代理爬虫抓豆瓣电影数据(二)

  用Python抓取百度地图里的店名,地址和联系方式

  Python大法好:贴吧爬虫大法

文本分析

  python居然有情感??真的吗??

  基于共现发现人物关系的python实现

  用python计算两文档相似度

神奇的python

 怜香惜玉,我用python帮助办公室文秘

 逆天的量化交易分析库-tushare

 开扒皮自己微信的秘密

 8行代码实现微信聊天机器人

 使用Python登录QQ邮箱发送QQ邮件



回复“于欢”即可得到词云图项目源代码


请输入标题     abcdefg


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存