中国大学MOOC课程《Python语言程序设计》第6章 文本词频人物统计 threekingdoms三国演义代码及解析
以下内容为嵩天老师在课堂上讲解的,分析三国演义中top20人物,也就是出现次数最高的20个人物。为方便童鞋们拷贝,我把代码及解析放到下面,且我多费了点人工,整出top30。通过这个例子可以很好地理解解决一个实际问题的思路:
import jieba #调用jieba库,前提是已经安装好了这个第三方库, # 我用的是pycharm教育版,可以在初次使用提示打叹号的位置选择安装jieba,这里安装的是jieba3k, # 但不幸安装失败,只能按照网上教程将jieba库重新下载到本地然后再安装,安装好了之后, # 重新建立一个工程,在setting里有两个选项要勾选,在csdn中我的收藏里有相关说明 #下面的是词频统计而非人物统计,要在此基础上修改变成人物统计,加入了excludes列表txt=open("threekingdoms.txt","r",encoding="utf-8").read() excludes={"将军","却说","荆州","二人","不可","不能","如此","商议","如何","主公","军士","左右","军马","引兵","次日","大喜","天下","东吴","于是","今日","不敢","魏兵","陛下","一人","都督","人马","不知","汉中","只见","众将","后主","蜀兵","上马","大叫","太守","此人","夫人","先主","后人","背后","城中","天子","一面","何不","大军","忽报","先生","百姓","何故","然后","先锋","不如","赶来","原来","令人","江东","下马","喊声","正是","徐州","忽然","因此","成都","不见","未知","大败","大事","之后","一军","引军","起兵","军中","接应","进兵","大惊","可以","以为","大怒","不得","心中","下文","一声","追赶","粮草","曹兵","一齐","分解","回报","分付","只得","出马","三千","大将","许都","随后","报知","前面","之兵","且说","众官","洛阳","领兵","何人","星夜","精兵","城上","之计","不肯","相见","其言","一日","而行","文武","襄阳","准备","若何","出战","亲自","必有","此事","军师","之中","伏兵","祁山","乘势","忽见","大笑","樊城","兄弟","首级","立于","西川","朝廷","三军","大王","传令","当先","五百","一彪","坚守","此时","之间","投降","五千","埋伏","长安","三路","遣使"} #这个excludes表是随着每次运行结果不断再手工添加一些不是人物的词汇扩容的, # 后面的一些词出现的频率在160左右较多,90左右的也很多 # 其实人物排序也不准,比如都督,如果指周瑜的话,周瑜的排名可能会再靠前 words=jieba.lcut(txt) #使用jieba的精确模式,返回一个列表类型的分词结果 counts={} for word in words: #这句关键,用words列表中的每个单词去索引字典,# 已经有这个键的话就把相应的值加1,没有的话就取值为0,再加1if len(word)==1:continueelif word=="诸葛亮"or word=="孔明曰":rword="孔明"elif word=="关公"or word=="云长":rword="关羽"elif word=="玄德"or word=="玄德曰":rword="刘备"elif word=="孟德"or word=="丞相":rword="曹操"else:rword=wordcounts[rword]=counts.get(rword,0)+1 for word in excludes:del counts[word] #将在excludes表中的词也去除 items=list(counts.items()) #将字典类型转换为list类型便于操作 items.sort(key=lambda x:x[1],reverse=True) #对一个列表,所有键值对的第2个元素进行排序, # 默认是false,是从小到大,True的话就是从大到小,注意里面的'key='暂时记住这句,这是list的sort排序的lambda方法 for i in range(30):word,count=items[i]if len(word)==2:print('{0:<5} {1:<12} {2:>6}'.format(i+1,word,count))#发现名字中有三个字的如司马懿 夏侯惇等,显示时最右边会超出去一个字符,# 在于中间的{1:<12},汉字只算一个字符的话,会比空格位更宽一点,加个这样的if else判断下使文字对齐else:print('{0:<5} {1:<11} {2:>6}'.format(i+1,word,count))
中国大学MOOC课程《Python语言程序设计》第6章 文本词频人物统计 threekingdoms三国演义代码及解析相关推荐
- 中国大学 MOOC 课程Python语言程序设计 (第11期)测试答案(1-5周)
中国大学 MOOC 课程Python语言程序设计 (第11期)测试答案(1-5周) Lan 2020-05-03 14:21 369 人阅读 0 条评论 感谢中国大学MOOC提供的学习平台 ...
- 中国大学mooc慕课python语言程序设计答案_中国大学MOOC(慕课)_Python语言程序设计基础_网课答案...
参考答案如下 有一堆零件( 100---200 之间),中国如果分成 4 个零件一组的若干组,中国则多 2 个零件:若分成 7 个零件一组,则多 3 个零件:若分 9 个零件一组,则多 5 个零件.下 ...
- 中国大学MOOC哈工大C语言程序设计第9周编程题在线测试
中国大学MOOC哈工大C语言程序设计第9周编程题在线测试 1.重复数字检查(4分) 题目内容: 从键盘输入一个数,检查这个数中是否有重复出现的数字.如果这个数中有重复出现的数字,则显示"Re ...
- 中国大学moocpython_中国大学MOOC(慕课)_Python 语言程序设计_测试题及答案
中国工程智慧消防电气答案建筑节测树章试题. 大学答案满分中国大学答案件工_软期末程_. 慕课知到智慧单元答案基础医学实验树.梦>知到智慧红楼伟大的<案及答_测树_试题.知到学生_考_大案健 ...
- 慕课python第五周测试答案_中国大学mooc慕课_Python 语言程序设计_测试题及答案...
以下关于病毒的描述中,正确的说法是(). A.只要不上网,就不会感染病毒B.只要安装最好的 从发展上看,计算机将向着哪两个方向发展?(). A.系统化和应用化B.网络化和智能化C.巨型 一张软磁盘中已 ...
- 0098 高级程序设计 c语言 在线作业,中国大学MOOC(C语言程序设计精髓)作业
第七周 在线编程题 1.n层嵌套平方根的计算(4分) 题目内容: 编写程序利用递归法实现如下所示n层嵌套平方根的计算: 递归函数原型:double Y(double x, int n): 程序运行结果 ...
- 哈工大c语言编程题中国大学mooc第四周,中国大学MOOC哈工大C语言程序设计精髓第六周编程题答案.doc...
下面代码的功能是将百分制成绩转换为 5 分制成绩,具体功能是: 如果用户输入的是 非法 字符或者不在合理区间内的数据 (例如输入的是 a,或者 102 ,或-45 等),则程序输出 Input err ...
- 中国大学MOOC课程《Python语言程序设计》课后练习第一周
中国大学MOOC课程<Python语言程序设计>课后练习第一周 1.字符串拼接 python从2.6版本后增加了format函数,用来代替%s,%r等格式化字符串: # -*- codin ...
- 中国大学 MOOC 课程 《Python 语言程序设计》第六周
中国大学 MOOC 课程 <Python 语言程序设计>第六周 一.lambda函数 1,lambda的一般形式是关键字lambda后面跟一个或多个参数,紧跟一个冒号,以后是一个表达式.l ...
最新文章
- 计算机连接外设的端口驱动,将 KMDF 外设驱动程序连接到串行端口
- python自然语言处理库_Python 自然语言处理(NLP)工具库汇总
- 【youcans 的 OpenCV 例程 200 篇】107. 退化图像的维纳滤波
- php去掉字符串末尾数字,PHP-RegEx:删除字符串末尾的数字,并删除特定字符串后的文本...
- 2台主机的docker互相通信的方法
- 做网页很实用代码集合和CSS制作网页小技巧整理
- 【华为敏捷/DevOps实践】8. 持续交付,持续部署,傻傻分不清楚
- qgis二次开发环境搭建(超级详细)
- 两男子骑摩托车抢夺宴席礼金 警方:嫌疑人已被抓获
- PAT (Basic Level) Practice1030 完美数列
- 【北大知识图谱】知识图谱的关键技术及其智能应用
- 【渝粤教育】广东开放大学 操作系统原理与应用 形成性考核 (46)
- C 中细节问题的试题
- 跨境电商自建独立站CMS
- Linux打开终端命令
- 关于用友财务总账的数据库关系
- 软件破解技术之API替换
- 在 WSO2 ESB 5.0.0 中使用 MyBatis 框架
- 2018计算机中文期刊影响因子排名,2018年最新影响因子:839种5分以上期刊名录
- 04-HTML标签:排版标签