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统计演讲高频词相关推荐

  1. 利用python从网页查找数据_利用Python模拟淘宝的搜索过程并对数据进行可视化分析...

    数据挖掘入门与实战 公众号: datadw 本文讲述如何利用Python模拟淘宝的搜索过程并对搜索结果进行初步的数据可视化分析. 搜索过程的模拟:淘宝的搜索页面有两种形式, 一种形式是, 2019/2 ...

  2. python分析每月销售数据_利用Python进行某单品销售数据分析

    本篇文章将利用Python工具对一份某商品的销售数据进行如下几个方面的分析,结合业务场景,构件常用业务指标,以从销售数据中挖掘出其潜在的商业价值,促进运营.用户消费趋势分析: 用户个体消费分析: 用户 ...

  3. python单词软件哪个好_利用Python分析背单词软件的惊人真相

    摘要:利用python分析背单词软件,揭秘你不知道的惊人真相 0×00 前言 你想知道背单词软件有大概多少人注册第一天都没有背完嘛 你想知道背单词软件这么火,这么多人在使用,真的有多少人真的在背诵嘛 ...

  4. python分析保险销售数据_利用python进行保险数据分析及可视化

    前言 现在数据分析在各个行业都在广泛的使用,尤其由于python语言的简便.高效性,在一些中小型企业的实际应用中逐渐替代excel公式.透视图等传统方式.网上各种博客论坛这类文章很多,但保险行业的数据 ...

  5. python分析pcap文件_利用Python库Scapy解析pcap文件的方法

    每次写博客都是源于纳闷,python解析pcap这么常用的例子网上竟然没有,全是一堆命令行执行的python,能用吗?玩呢? pip安装scapy,然后解析pcap: import scapy fro ...

  6. python爬去朋友圈_利用Python爬取朋友圈数据,爬到你开始怀疑人生

    人生最难的事是自我认知,用Python爬取朋友圈数据,让我们重新审视自己,审视我们周围的圈子. 文:朱元禄(@数据分析-jacky) 哲学的两大问题:1.我是谁?2.我们从哪里来? 本文 jacky试 ...

  7. python爬去朋友圈_利用Python爬取朋友圈数据

    确定数据源 自我认知,很难,必须它证. 物以类聚,人以群分.每个人的社交圈,家庭圈,朋友圈的属性,基本我们人格的特征属性.我们所处的阶级,在别人眼中的印象,在我们的朋友圈中都会得到印证. 朋友圈数据中 ...

  8. python爬朋友圈数据_利用Python爬取朋友圈数据,爬到你开始怀疑人生

    人生最难的事是自我认知,用Python爬取朋友圈数据,让我们重新审视自己,审视我们周围的圈子. 文:朱元禄(@数据分析-jacky) 哲学的两大问题:1.我是谁?2.我们从哪里来? 本文 jacky试 ...

  9. python实现英文新闻摘要自动提取_利用Python实现摘要自动提取,完美瘦身只需一行代码...

    原标题:利用Python实现摘要自动提取,完美瘦身只需一行代码 今天给大家推荐一个也可以用于关键字提取的算法TextRank,但主要实现的功能是快速从长篇新闻中抽取精准摘要. 前言介绍 TextRan ...

最新文章

  1. debian apt-get 国内常用 镜像源
  2. python生成斐波那契_python学习-生成器(generator)及斐波那契;yield
  3. 内蒙古银行银行招聘计算机研究生,内蒙古银行招聘公告
  4. 一周消息树:程序员想找好工作?那就学好Linux!
  5. Win11系统如何调节字体大小
  6. css 浮动效果 0302
  7. extern 详解(内有extern C 讲解)
  8. python脚本常见包_python之各种包
  9. 进度条ProgressBar及ProgressDialog
  10. c语言程序设计2试卷答案,《C语言程序设计》试卷2参考答案.doc
  11. 【C++算法基础】快速排序以及边界问题
  12. smtp服务器组件,配置exchange Smtp服务器
  13. html闹钟设置,闹钟设置页.html
  14. 本地打印后台处理程序服务没有运行和windows无法连接到打印机拒绝访问
  15. 计算机素养的论文,核心素养下计算机程序设计教学探索
  16. 一种很欣赏的操盘手法
  17. python实现用伏羲八卦对ASCII码进行加密
  18. 利用python快速转换GenBank和RefSeq的染色体号
  19. DWD层 (业务数据 二)
  20. 编程之美-1.3-烙饼排序问题

热门文章

  1. 宜家东京出租房,每月租金1美金
  2. 头歌Educoder实验:C++ 面向对象 - 类的继承与派生
  3. “看得到的解说”上线 咪咕视频智能字幕带来暖心陪伴
  4. FORM表单及其属性
  5. vm中装linux换iso文件报错该光盘无法被挂载,虚拟机VMware下安装RedHat Linux 9.0 图解教程...
  6. 阿里云(三) Ubuntu系统下mysql卸载
  7. 前端Vue中获取本机ip地址
  8. ERP中配额生单的简单了解
  9. 《那些年啊,那些事——一个程序员的奋斗史》——05
  10. 电厂计算机工作原理是什么,电力猫的工作原理是什么?电力猫怎么用?