先看效果,我们的冠词"热"以929次高居榜首

核心知识

简单的文件读取
字典
列表
尤其是字典和列表,需要了解清楚才能理解代码

步骤

  1. 读取txt文件,并将所有的标点符号替换为空格
  2. 将文件分解成一个一个的单词
  3. 使用字典一个一个的复制单词作为键,遇到相同的键其对应的值就+1
  4. 将字典转化为列表,并按值大小从大到小排序
  5. 循环输出结果

代码

def getTxt():# 打开相对路径,需要两个省略号点.表示本项目txt = open("../assert/Hamlet.txt", "r").read()txt.lower()#取代标点符号for i in "^……,"".#!@$%^&*|?/:;{}[]()~`<>_+=":txt = txt.replace(i, " ")return txthamlet = getTxt()
#将文本分割成单词
words = hamlet.split()
counts = {}
for word in words:counts[word] = counts.get(word, 0) + 1
items = list(counts.items())
# 此时的items是键值对型列表,包含键和值作为一个元素,reverse=True表示从大到小,sort表示排列
items.sort(key=lambda x: x[1], reverse=True)print("哈姆雷特词频统计")
print("总单词数:{:}".format(len(words)))
for i in range(10):word, count = items[i]print("第" + str(i + 1) + "名:{0:<10} 次数:{1:>5}".format(word, count))

看懂了上面的代码,对于《三国演义》也差不多,但我们需要回答两个问题
1、如何识别中文,并将他们分开?英文可以通过空格和标点,但中文往往是一堆字凑成一句话
2、如何从识别出的中文中区别出人名?

其实也很简单,站在前人的肩膀上
我们导入jieba库,它自动会有lcut()方法来帮我们
看一个例子

自动就分好了!
当然,这个库还有更强大的功能,这里我们只用来区别汉字

对于区别人名的问题,在我们会机器学习之前,就只能靠我们人工了,命名一个exclude列表,专门记录非人名却又排名前列的,然后去掉,多次运行代码,就行了……(突然有点low)

另外,三国里面一些人名有多种叫法,比如诸葛亮,孔明等,我们也要手动对排在前列的进行合并


# 三国演义
import jieba
def getSanguo():txt = open("../assert/三国演义.txt", encoding="utf-8").read()return txt
exclude = ["却说", "丞相", "二人", "不可", "荆州", "不能", "如此", "商议", "将军", "今日","军马", "如何", "军士", "主公", "左右", "次日", "大喜", "引兵", "天下", "东吴","于是", "魏兵", "人马", "都督", "不知", "不敢"]
words = jieba.lcut(getSanguo())
counts = {}
for word in words:if len(word) == 1:continuereword = wordif word in ["孔明曰", "孔明"]:reword = "诸葛亮"elif word in ["玄德", "玄德曰"]:reword = "刘备"elif word in ["云长", "关公"]:reword = "关羽"elif word in ["子龙"]:reword = "赵云"elif word in ["孟德", "阿瞒", "孟德曰"]:reword = "曹操"counts[reword] = counts.get(reword, 0) + 1
for word in exclude:del counts[word]
items = list(counts.items())items.sort(key=lambda x: x[1], reverse=True)
for i in range(10):word, count = items[i]print("{:}  {:}".format(word, count))

下面是输出结果(对出场短暂的周瑜居然排进前十感到惊讶!)
当然了,张飞,吕布的次数算少了,因为还没合并翼德,奉先这些~

诸葛亮 1363
刘备 1213
曹操 938
关羽 779
张飞 348
吕布 299
赵云 286
孙权 263
司马懿 221
周瑜 217

python入门(五)实现统计《哈姆雷特》最多单词和《三国演义》人物出场次数相关推荐

  1. 利用python语言分析小说的词频、词性、词云、小说人物出场次数排序以及小说人物关系

    1.需要准备的文件 bird.png:云底图片 sgyy.txt:三国演义原文 tingyong.txt:停用词文件 2.源代码 1.统计词频词性并写入文件中 # 贾高亮 # 时间:2023/3/21 ...

  2. python三国演义人物 统计分析_python统计三国演义人物出场次数

    [Python] 纯文本查看 复制代码import jieba excludes = {"将军", "却说", "荆州", "二人 ...

  3. python三国演义人物出场统计ppt_Python学习之四大名著人物出场次数Python代码-Go语言中文社区...

    <三国演义>,<水浒传>,<西游记>的人物出场次数Python代码: 经过代码运行的结果可以看出三国作者对曹操和孔明比较喜爱:水浒作者对宋江和武松比较喜爱:西游作者 ...

  4. Python学习之四大名著人物出场次数Python代码

    <三国演义>,<水浒传>,<西游记>的人物出场次数Python代码: 经过代码运行的结果可以看出三国作者对曹操和孔明比较喜爱:水浒作者对宋江和武松比较喜爱:西游作者 ...

  5. python诞生的时间地点人物事件_Python学习之四大名著人物出场次数Python代码

    <三国演义>,<水浒传>,<西游记>的人物出场次数Python代码: 经过代码运行的结果可以看出三国作者对曹操和孔明比较喜爱:水浒作者对宋江和武松比较喜爱:西游作者 ...

  6. Python 三国演义文本可视化(词云,人物关系图,主要人物出场次数,章回字数)

    文章目录 效果展示 介绍 软件架构 使用说明 导入需要的库 执行main.py 这里以三国演义为例 三国演义.txt alice_mask.png 效果展示 介绍 Python读取小说文本,绘制词云图 ...

  7. 统计哈姆雷特文本中高频词的个数

    统计哈姆雷特文本中高频词的个数 三国演义人物出场统计 开源代码 讲解视频 kou@ubuntu:~/python$ cat ClaHamlet.py #!/usr/bin/env python # c ...

  8. Python中文分析:《射雕英雄传》统计人物出场次数、生成词云图片文件、根据人物关系做社交关系网络和其他文本分析

    前言 python中文分析作业,将对<射雕英雄传>进行中文分析,统计人物出场次数.生成词云图片文件.根据人物关系做社交关系网络和其他文本分析等. 对应内容 1.中文分词,统计人物出场次数, ...

  9. python统计红楼梦人物出场次数_《红楼梦》人数统计,人物,出场,次数

    这个也是学习过程中的一个成果吧,希望大家能批评指正. 红楼梦人物出场次数统计.亮点在于,考虑了人物的别称,以及有较为丰富的排除词库.如凤姐的称谓就有许多,凤辣子,凤姐,王熙凤等等,还有黛玉,有林黛玉, ...

  10. Python词频统计——《红楼梦》人物出场次数统计

    代码实现 import jieba as j names = ['贾母', '贾珍', '贾蓉', '贾赦', '贾政', '袭人', '王熙凤', '紫鹃', '翠缕', '香菱','豆官', '薛 ...

最新文章

  1. mfc和mysql连接 dao_用MFC DAO 在VC++6.0进行与数据库的连接,对数据库进行定义和操作,最后断开数据库的连接等各种操作。...
  2. mysql预处理 更新_MySQL 预处理方法更新删除-2018年04月27日00时59分
  3. Java程序员必须掌握的常用Linux命令
  4. 揭秘微信「看一看」如何精准挖掘你感兴趣的内容
  5. 构造 Codeforces Round #275 (Div. 2) C. Diverse Permutation
  6. Linux 进程、父进程、子进程
  7. php ci框架 模板引擎,详解CodeIgniter框架实现的整合Smarty引擎DEMO
  8. 数据结构思维 第十章 哈希
  9. 用Dart搭建HTTP服务器(3)
  10. ACM金牌学长,算法竞赛经验分享
  11. angular-devextreme treeview 学习笔记
  12. 导出快吗_技巧分享:常用的BOOX电纸书操作,这些技能你都会吗?
  13. 【C 语言提高、进阶】Day 3
  14. 编程学习视频网站汇总
  15. 六、假设检验:使用Python进行两个正态总体均值的假设检验
  16. 什么是商业数据分析师?
  17. 【ACWing】1022. 宠物小精灵之收服
  18. textview中划线效果
  19. 五位本科生4个月造出芯片毕业!新的后续来了……
  20. Android 使用Alarm机制创建长时间在后台运行的定时任务

热门文章

  1. java的几个生命周期(部分简单总结)
  2. 三大运营商新战场:与BAT争夺大数据金矿
  3. 【Kelm分类】基于哈里斯鹰算法优化核极限学习机实现数据分类附matlab代码
  4. HTML5网页页面无刷新更新页面URL
  5. 研究报告 | 珠光宝气加持,谁能抓住“促消费”的东风?
  6. Apollo Cyber RT学习手册(基于Ubuntu18.04、Apollo 6.0_edu)
  7. 【BUUCTF】reverse2
  8. 带桌面推送Ai智能客服系统在线客服源码
  9. 购物中心客流统计的应用
  10. 德国坦克问题-再谈贝叶斯