python如何分析高频词_利用Python统计演讲高频词
1月9日被誉为中国最牛的产品经理张小龙做了微信的年度演讲[1],引爆朋友圈。
1月10日采铜写了篇《张小龙四个小时的演讲没有讲什么?》[2],又引爆朋友圈。在现在几乎所有人张口就谈“认知升级”、“底层逻辑”等词的时代,这篇文章用数据阐述了张小龙在演讲想表达什么。我觉得特别好玩的是,有很多大家都在说的词,耳朵里听出老茧的词,他一个字都没提。为什么呢?也许他的词典里根本没有这样的词,也许有但是他觉得根本不重要。反正,从这些他没有用的词中,我看到了值得思考的东西。
统计文章的词频,给我提供了一个新的思路,能不能用python统计高频词呢?肯定是可以的。先放出一张最终结果图,有一个更直观的体验。下面就是我们如何一步一步实现这样的过程,Here we go!
这里使用python的jieba库(感谢开发)对中文进行分词。
首先需要安装分词库。打开终端,输入以下命令行。1$ pip install jieba若提示没有安装pip,则自行在网络中搜索pip 并安装。
将演讲(或其他)内容保存复制为report.txt,与py程序文件放在同一文件夹下,在终端运行以下程序[3-6]:1
2
3
4
5
6
7
8
9
10
11
12
13
14from collections import Counter
import jieba # 导入jieba库
f = open('report.txt').read() # 打开report.txt文档
words = list([word for word in jieba.cut(f, cut_all=False) if len(word) >= 2]) # 分词
data = dict(Counter(words).most_common(50)) # 统计词频,并以Dictionary的方式存储在data中,选择前50个高频词
# 打印高频词和出现次数
for key, value in data.items():
print key.encode('utf-8'), value
此处有几个地方解释一下:
(a) words = list([word for word in jieba.cut(f, cut_all=False) if len(word) >= 2]) 程序较为复杂,将分词功能和 If 判断放在一起。1
2
3
4
5seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
print("Full Mode: " + "/ ".join(seg_list)) # 全模式
seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list))
输出为:1
2> Full Mode: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学
> Default Mode: 我/ 来到/ 北京/ 清华大学这里就能发现,设置cut_all = True 会将词语重复判断[7],【清华大学】会被划分成【清华】、【清华大学】、【华大】、【大学】。
(b). 这里利用Counter对象的函数,统计每个词出现的次数,并转化为字典(dict)。
(c). 程序最后的 For 循环将字典(dict)内的内容输出,在key.encode('utf-8')中添加了编码功能,是因为原来格式为unicode所致,对于python中gbk、unicode和str的编码转换,在此不赘述。
OK,以上程序就完成了对内容的高频词统计,也可以在上述程序后添加以下代码,将统计结果保存成txt,若要保存成excel,则需要导入其他python库。1
2
3
4fil = open("stat.txt",'w')
for key, value in data.items():
fil.write("%st%dn" % (key.encode('utf-8'), value))
fil.close()可以尝试将代码中的.encode('utf-8')去掉,改成fw.write("%st%dn" % (key, value)),看看保存的效果哦。
2. 清洗数据
我们已经将长度大于等于2的词统计出来,为展示直观,将这些高频词的词云展示如下:
从这里会发现有些词是没有太多意义的,例如:一个、来说、并且、所以等。下面就需要进行数据清洗,去掉一些无意义的词。由于分词是记录在words这个列表内的,因此需要对words进行清洗。1
2
3
4
5
6
7
8
9
10exclude_words = ["一个","虽然","东西","包括","来说","但是","这个","这里"]
for word in words[:]:
if word.encode('utf-8') in exclude_words[:]:
words.remove(word)
a = []
for word in words:
a.append(word)
txt = r' '.join(a)
这里简单列出列出一些需要清洗的词。通过 For 循环列表元素,用 If 判断词语是否在排除列表中,满足条件则用将其删除[8]。注意,这里列表使用的是for word in words[:]:,而不是for word in words:,这里需要全部遍历。若使用for word in words:的话,会出现不完全遍历。
最后将清洗过的数据以一定格式保存在txt内。
当然也可以反向的方法:如果你有关键词词库,可以查看演讲中是否出现关键词库中的词。1
2
3
4
5
6
7exclude_words = ["一个","虽然","东西","包括","来说","但是","这个","这里"]
for word in words[:]:
if word.encode('utf-8') in exclude_words[:]:
pass
else:
words.remove(word)
既然我们已经将相关词汇统计并清理,下面介绍如何制作词云,数据可视化。
3. 绘制词云
绘制词云需要预先安装wordcloud库1$ pip install wordcloud
之后就可以绘制词云了。1
2
3
4
5
6
7
8
9
10
11
12
13
14from wordcloud import WordCloud
import numpy as np
from PIL import Image
fpath='/Libary/Fonts/Songti.ttc'
wordcloud = WordCloud(font_path= fpath,background_color='white').generate(txt)
wordcloud.to_file("wordcloud.jpg") #保存图片
import matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation ="bilinear")
plt.axis("off")
plt.show()
绘制词云后,可以将词云添加背景,将词云按照一定的方式排列,将代码修改如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23from wordcloud import WordCloud
import numpy as np
from PIL import Image
fpath='/Libary/Fonts/Songti.ttc'
d = path.dirname(__file__)
color_mask = np.array(Image.open(path.join(d, "background.jpg")))
cloud = WordCloud(
font_path=fpath,
background_color='white',#设置背景色
mask=color_mask, #词云形状
max_words=200, #允许最大词汇
max_font_size=40, #最大号字体
random_state=42
)
wordcloud = cloud.generate(txt)
import matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation ="bilinear")
plt.axis("off")
plt.show()需要将backgroud.jpg的背景图片放在同一文件夹。
以下放出两张基于 TESLA 和Mixin 背景做的词云。
从上图TESLA背景的词云中可以看出,张小龙的演讲最重要的是“我们”。
注: 本文程序基于Mac OS系统,python2.7。
Logs
2019-01-13: 补充代码、写文章
2019-01-12: 写文章、修改代码
2019-01-11: 运行代码
2019-01-10: 查阅文章
python如何分析高频词_利用Python统计演讲高频词相关推荐
- 利用python从网页查找数据_利用Python模拟淘宝的搜索过程并对数据进行可视化分析...
数据挖掘入门与实战 公众号: datadw 本文讲述如何利用Python模拟淘宝的搜索过程并对搜索结果进行初步的数据可视化分析. 搜索过程的模拟:淘宝的搜索页面有两种形式, 一种形式是, 2019/2 ...
- python分析每月销售数据_利用Python进行某单品销售数据分析
本篇文章将利用Python工具对一份某商品的销售数据进行如下几个方面的分析,结合业务场景,构件常用业务指标,以从销售数据中挖掘出其潜在的商业价值,促进运营.用户消费趋势分析: 用户个体消费分析: 用户 ...
- python单词软件哪个好_利用Python分析背单词软件的惊人真相
摘要:利用python分析背单词软件,揭秘你不知道的惊人真相 0×00 前言 你想知道背单词软件有大概多少人注册第一天都没有背完嘛 你想知道背单词软件这么火,这么多人在使用,真的有多少人真的在背诵嘛 ...
- python分析保险销售数据_利用python进行保险数据分析及可视化
前言 现在数据分析在各个行业都在广泛的使用,尤其由于python语言的简便.高效性,在一些中小型企业的实际应用中逐渐替代excel公式.透视图等传统方式.网上各种博客论坛这类文章很多,但保险行业的数据 ...
- python分析pcap文件_利用Python库Scapy解析pcap文件的方法
每次写博客都是源于纳闷,python解析pcap这么常用的例子网上竟然没有,全是一堆命令行执行的python,能用吗?玩呢? pip安装scapy,然后解析pcap: import scapy fro ...
- python爬去朋友圈_利用Python爬取朋友圈数据,爬到你开始怀疑人生
人生最难的事是自我认知,用Python爬取朋友圈数据,让我们重新审视自己,审视我们周围的圈子. 文:朱元禄(@数据分析-jacky) 哲学的两大问题:1.我是谁?2.我们从哪里来? 本文 jacky试 ...
- python爬去朋友圈_利用Python爬取朋友圈数据
确定数据源 自我认知,很难,必须它证. 物以类聚,人以群分.每个人的社交圈,家庭圈,朋友圈的属性,基本我们人格的特征属性.我们所处的阶级,在别人眼中的印象,在我们的朋友圈中都会得到印证. 朋友圈数据中 ...
- python爬朋友圈数据_利用Python爬取朋友圈数据,爬到你开始怀疑人生
人生最难的事是自我认知,用Python爬取朋友圈数据,让我们重新审视自己,审视我们周围的圈子. 文:朱元禄(@数据分析-jacky) 哲学的两大问题:1.我是谁?2.我们从哪里来? 本文 jacky试 ...
- python实现英文新闻摘要自动提取_利用Python实现摘要自动提取,完美瘦身只需一行代码...
原标题:利用Python实现摘要自动提取,完美瘦身只需一行代码 今天给大家推荐一个也可以用于关键字提取的算法TextRank,但主要实现的功能是快速从长篇新闻中抽取精准摘要. 前言介绍 TextRan ...
最新文章
- debian apt-get 国内常用 镜像源
- python生成斐波那契_python学习-生成器(generator)及斐波那契;yield
- 内蒙古银行银行招聘计算机研究生,内蒙古银行招聘公告
- 一周消息树:程序员想找好工作?那就学好Linux!
- Win11系统如何调节字体大小
- css 浮动效果 0302
- extern 详解(内有extern C 讲解)
- python脚本常见包_python之各种包
- 进度条ProgressBar及ProgressDialog
- c语言程序设计2试卷答案,《C语言程序设计》试卷2参考答案.doc
- 【C++算法基础】快速排序以及边界问题
- smtp服务器组件,配置exchange Smtp服务器
- html闹钟设置,闹钟设置页.html
- 本地打印后台处理程序服务没有运行和windows无法连接到打印机拒绝访问
- 计算机素养的论文,核心素养下计算机程序设计教学探索
- 一种很欣赏的操盘手法
- python实现用伏羲八卦对ASCII码进行加密
- 利用python快速转换GenBank和RefSeq的染色体号
- DWD层 (业务数据 二)
- 编程之美-1.3-烙饼排序问题
热门文章
- 宜家东京出租房,每月租金1美金
- 头歌Educoder实验:C++ 面向对象 - 类的继承与派生
- “看得到的解说”上线 咪咕视频智能字幕带来暖心陪伴
- FORM表单及其属性
- vm中装linux换iso文件报错该光盘无法被挂载,虚拟机VMware下安装RedHat Linux 9.0 图解教程...
- 阿里云(三) Ubuntu系统下mysql卸载
- 前端Vue中获取本机ip地址
- ERP中配额生单的简单了解
- 《那些年啊,那些事——一个程序员的奋斗史》——05
- 电厂计算机工作原理是什么,电力猫的工作原理是什么?电力猫怎么用?