Python实现对张小龙3万字演讲分词统计

举报
冬晨夕阳 发表于 2022/03/30 23:53:28 2022/03/30
【摘要】 分词的好坏直接决定了搜索的质量,在英文中分词比中文要简单,因为英文是一个个单词通过空格来划分每个词的,而中文都一个个句子,单独一个汉字没有任何意义,必须联系前后文字才能正确表达它的意思。 Python ...

分词的好坏直接决定了搜索的质量,在英文中分词比中文要简单,因为英文是一个个单词通过空格来划分每个词的,而中文都一个个句子,单独一个汉字没有任何意义,必须联系前后文字才能正确表达它的意思。

Python 中有个比较著名的分词库是结巴分词,从易用性来说对用户是非常友好的,但是准确度不怎么好。

这几天发现另外一个库,pkuseg-python,简单易用,跟现有开源工具相比提高了分词的准确率。
于是我想起用张小龙的3万字演讲做下测试。
在这里插入图片描述

2019微信公开课张小龙4小时演讲全文实录链接

首先做好准备安装 pkuseg:

pip3 install pkuseg

  
 
  • 1

第一步是将演讲内容下载下来,保存到一个txt文件中

content = []
with open("yanjiang.txt", encoding="utf-8") as f:
    content = f.read()

  
 
  • 1
  • 2
  • 3

我统计了字数 ,大概有3W+字
接下来我们用pkuseg对内容进行分词处理,并统计出现频率最高的前20个词语是哪些。

import pkuseg  						#导入pkuseg
from collections import Counter		#Counter(计数器)用于追踪值的出现次数
import pprint			#pprint模块 提供了打印出任何python数据结构类和方法

content = []						#yanjiang.txt保存好的文本
with open("yanjiang.txt", encoding="utf-8") as f:	
    content = f.read()

seg = pkuseg.pkuseg()			#加载模型,给定用户词典
text = seg.cut(content)			#进行分词
counter = Counter(text)			
pprint.pprint(counter.most_common(20))
				 #输出格式的对象字符串到指定的stream,最后以换行符结束。

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

输出结果:
在这里插入图片描述
什么鬼,这都是些啥玩意,分词领域还有一个概念叫做停用词,所谓停用词就是在语境中没有具体含义的文字,
为了使得分词效果更好,我们就要把这些停用词去掉,我们去网上找个停用词库。

改良代码、重新来一次:

import pkuseg
from collections import Counter
import pprint

content = []
with open("yanjiang.txt", encoding="utf-8") as f:
    content = f.read()

seg = pkuseg.pkuseg()
text = seg.cut(content)

stopwords = []

with open("stopword.txt", encoding="utf-8") as f:
    stopwords = f.read()

new_text = []

for w in text:
    if w not in stopwords:
        new_text.append(w)

counter = Counter(new_text)
pprint.pprint(counter.most_common(20))

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

打印的结果:
在这里插入图片描述
停用词都过滤掉了,但是我们选出来的前20个高频词还是不准确,有些不应该分词的也被拆分了,例如朋友圈,公众号,小程序等词,我们认为这是一个整体。
对于这些专有名词,我们只需要指定一个用户词典, 分词时用户词典中的词固定不分开,重新进行分词。

lexicon = ['小程序', '朋友圈', '公众号']  #
seg = pkuseg.pkuseg(user_dict=lexicon)  # 加载模型,给定用户词典
text = seg.cut(content)

  
 
  • 1
  • 2
  • 3

最后出来的结果前50个高频词是这样的

163 微信
112 用户
89 产品
72 朋友圈
56 工具
55 社交
53 小程序
40 视频
39 希望
39 时间
36 游戏
33 阅读
32 内容
31 朋友
31 平台
30 文章
29 信息
27 团队
27 AI
26 APP
25 公众号
25 服务
24 好友
22 照片
21 时代
21 记录
20 手机
20 推荐
20 企业
19 原动力
18 功能
18 真实
18 生活
17 流量
16 电脑
15 空间
15 发现
15 创意
15 体现
15 公司
15 价值
14 版本
14 分享
14 未来
13 互联网
13 发布
13 能力
13 讨论
13 动态
12 设计

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

张小龙讲得最多的词就是用户、朋友、原动力、价值、分享、创意、发现等这些词,用户出现112次,希望39次,朋友31次,这些词正是互联网的精神。
加油!

文章来源: blog.csdn.net,作者:考古学家lx,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_43582101/article/details/86563012

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。