Python 词频 | 张小龙 4 小时 3 万字演讲,哪些词被提及最多?

2019年1月10日 204点热度 0人点赞 0条评论

图片

阅读文本大概需要 3 分钟。


今早朋友圈已经被张小龙的四小时演讲给刷了屏,张小龙一手缔造了微信帝国,被誉为中国最牛逼的产品经理,他的一言一行都会产生巨大的影响,刷屏也是预料之中的事。但随着演讲文章刷屏的同时,另一张图片也疯狂被转发,来自饭统的戴老板。


图片


不得不说作为产品之神的张小龙,如今的境界已经不是普通人可以触达的。


做为技术人的我,第一眼看到这张图的时候,大脑就想到如果用 Python 统计演讲稿,又会是哪些词被提及最多?想到这里不一会儿我就写了一段代码,输出了以下内容。


图片

图片

图片


Python 统计的词频与上面的结果不谋而合。那文中所说的词频统计我们要如何实现?


其实对 Python 来说要想实现对中文词频的统计,是非常简单的一件事,要写的代码总共不到 21 行就可以完成。这里我就要给大家介绍一个非常牛逼的中分分词库「jieba」。

一 jieba 库


图片

GitHub 地址:https://github.com/fxsjy/jieba

“结巴”中文分词:做的最好的 Python 中文分词组件

 特点


  • 支持三种分词模式:

    • 精确模式,试图将句子最精确地切开,适合文本分析;

    • 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;

    • 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

  • 支持繁体分词

  • 支持自定义词典

  • MIT 授权协议

在 Python 中你只需要使用「pip install jieba」即可安装使用。接下来我们看看具体的代码实现,如何用 Python 统计张小龙的演讲词频。

二 词频统计代码实现

程序非常的简单总共不到 21 行代码。首先导入我们要统计的文本,然后用 jieba.cut() 函数,得到一个分词后的 list。随后我们在用 collections 的 Counter 来帮我们筛选出,排名前 100 的分词数,最后再按一定的格式输出就好。


#! python3
# -*- coding: utf-8 -*-
import os, codecs
import jieba
from collections import Counter

def get_words(txt):
    seg_list = jieba.cut(txt)
    c = Counter()
    for x in seg_list:
        if len(x) > 1 and x != '\r\n':
            c[x] += 1
    print('常用词频度统计结果')
    for (k, v) in c.most_common(100):
        print('%s%s %s  %d' % ('  ' * (5 - len(k)), k, '*' * int(v / 5), v))


if __name__ == '__main__':
    with codecs.open('weixin.txt''r''utf8'as f:
        txt = f.read()
    get_words(txt)

程序中所用到的演讲文本,我已上传到后台上,公众号回复「演讲」即可获得。


推荐阅读:

我看了《2018 微信数据报告》,你呢?


人必有痴,而后有成

图片

71560Python 词频 | 张小龙 4 小时 3 万字演讲,哪些词被提及最多?

这个人很懒,什么都没留下

文章评论