python分析《三国演义》,谁才是这部书的绝对主角(包含统计指定角色的方法)
前面分析统计了金庸名著《倚天屠龙记》中人物按照出现次数并排序
https://www.cnblogs.com/becks/p/11421214.html
然后使用pyecharts,统计B站某视频弹幕内容,并绘制成词云显示
https://www.cnblogs.com/becks/p/14743080.html
这次,就用分析统计下《三国演义》这部书里各角色出现的频率,并绘制成词云显示,看看谁是绝对的主角吧
首先,我们需要把这部书里出现的人物都枚举出来,毕竟只统计角色信息,不需要把非人物名也统计进来
角色 = {'刘备','诸葛亮','关羽','张飞','刘禅',"孙权",'赵云','司马懿','周瑜','曹操','袁绍','马超','魏延',
'黄忠','姜维','马岱','庞德','孟获','刘表','董卓','孙策',
'鲁肃','司马昭','夏侯渊','王平','刘璋','袁术','吕蒙','甘宁','邓艾','曹仁',
'陆逊','许褚','庞统','曹洪','李典','曹丕','廖化','曹真','吕布'}
然后就是读取实现准备好的《三国演义》书籍txt文档格式,使用jieba库对文档内容进行处理
# -*-coding:utf8-*-
# encoding:utf-8 import jieba #倒入jieba库
import os
import sys
from collections import Counter#分词后词频统计
from pyecharts.charts import WordCloud#词云 path = os.path.abspath(os.path.dirname(sys.argv[0]))
txt=open(path+'\\171182.txt',"r", encoding='utf-8').read() #读取三国演义文本 words=jieba.lcut(txt) #jieba库分析文本
counts={}
在就是统计指定角色姓名出现次数
for word in words:
if len(word)<=1:
continue
elif word in 角色:
counts[word]=counts.get(word,0)+1
else:
None
绘制词云
items=list(counts.items())#字典到列表
wordcloud = WordCloud()
wordcloud.add("",items,word_size_range=[15, 80],rotate_step=30,shape='cardioid')
wordcloud.render(path+'\\wordcloud.html')
执行脚本后查看生成文件


曹操两个字的显示的最大,说明整部书里出现的次数最多。这肯定不对,罗贯中是刘备粉啊,
后来想了下,在三国里,直呼人姓名那是骂人,是损。那些所谓的正派人士都是有雅称的,比如卧龙、诸葛等等
改了下代码,把这些人的雅称也匹配进去
刘备 = {"玄德","玄德曰","先主","刘豫州","刘皇叔",'刘玄德','刘使君'}
诸葛亮 = {"孔明","孔明曰","卧龙","卧龙先生","诸葛先生",'孔明先生','诸葛丞相','诸葛'}
关羽 = {"关公","云长","汉寿亭侯","关云长"}
曹操 = {"孟德",'曹孟德','曹操'}
张飞 = {"张翼德",'翼德'}
同时,统计部分也作了处理
for word in words: #筛选分析后的名词
if len(word)<=1: #因为词组中的汉字数大于1个即认为是一个词组,所以通过continue结束掉读取的汉字书为1的内容
continue
#elif word in exculdes:
#continue
#elif word in 诸葛亮 or word in 刘备 or word in 关羽 or word in 曹操:
#counts[word]=counts.get(word,0)+1
elif word in 刘备:
word ="刘备"
counts[word]=counts.get(word,0)+1
elif word in 诸葛亮:
word ="诸葛亮"
counts[word]=counts.get(word,0)+1
elif word in 曹操:
word ="曹操"
counts[word]=counts.get(word,0)+1
elif word in 关羽:
word ="关羽"
counts[word]=counts.get(word,0)+1
elif word in 张飞:
word ="张飞"
counts[word]=counts.get(word,0)+1
elif word in 其他:
counts[word]=counts.get(word,0)+1 else:
None
再次执行,嗯,诸葛亮是王者,诸葛亮合计出现了1350次,刘备合计出现1271次



附整个代码
# -*-coding:utf8-*-
# encoding:utf-8 import jieba #倒入jieba库
import os
import sys
from collections import Counter#分词后词频统计
from pyecharts.charts import WordCloud#词云 path = os.path.abspath(os.path.dirname(sys.argv[0]))
txt=open(path+'\\三国演义.txt',"r", encoding='utf-8').read() #文本 words=jieba.lcut(txt) #jieba库分析文本
counts={} 刘备 = {"玄德","玄德曰","先主","刘豫州","刘皇叔",'刘玄德','刘使君'}
诸葛亮 = {"孔明","孔明曰","卧龙","卧龙先生","诸葛先生",'孔明先生','诸葛丞相','诸葛'}
关羽 = {"关公","云长","汉寿亭侯","关云长"}
刘禅 = {"后主"}
曹操 = {"孟德",'曹孟德','曹操'}
张飞 = {"张翼德",'翼德'} 其他 = {"孙权",'赵云','司马懿','周瑜','刘禅','袁绍','马超','魏延','黄忠','姜维','马岱','庞德','孟获','刘表','董卓','孙策',
'鲁肃','司马昭','夏侯渊','王平','刘璋','袁术','吕蒙','甘宁','邓艾','曹仁','陆逊','许褚','庞统','曹洪','李典','曹丕','廖化','曹真','吕布'}
for word in words: #筛选分析后的名词
if len(word)<=1: #因为词组中的汉字数大于1个即认为是一个词组,所以通过continue结束掉读取的汉字书为1的内容
continue
#elif word in exculdes:
#continue
#elif word in 诸葛亮 or word in 刘备 or word in 关羽 or word in 曹操:
#counts[word]=counts.get(word,0)+1
elif word in 刘备:
word ="刘备"
counts[word]=counts.get(word,0)+1
elif word in 诸葛亮:
word ="诸葛亮"
counts[word]=counts.get(word,0)+1
elif word in 曹操:
word ="曹操"
counts[word]=counts.get(word,0)+1
elif word in 关羽:
word ="关羽"
counts[word]=counts.get(word,0)+1
elif word in 张飞:
word ="张飞"
counts[word]=counts.get(word,0)+1
elif word in 其他:
counts[word]=counts.get(word,0)+1 else:
None items=list(counts.items())#字典到列表 wordcloud = WordCloud()
wordcloud.add("",items,word_size_range=[15, 80],rotate_step=30,shape='cardioid')
wordcloud.render(path+'\\wordcloud.html')
python分析《三国演义》,谁才是这部书的绝对主角(包含统计指定角色的方法)的更多相关文章
- 到底怎么样才叫看书?——Tony Zhao's
到底怎么样才叫看书?——上篇 目录: 一.引入 二.经历了就能理解 三.读书要分级 四.只读经典 五.别吝惜你动笔的那点时间 一.引入 看到这个题目的时候你可能会感到有点好笑:“这还用问,看书就是把书 ...
- Tony zhao:到底怎么样才叫看书?
http://blog.jobbole.com/25842/ 目录: 一.引入 二.经历了就能理解 三.读书要分级 四.只读经典 五.别吝惜你动笔的那点时间 一.引入 看到这个题目的时候你可能会感到有 ...
- Python分析数据难吗?某科技大学教授说,很难但有方法就简单
用python分析数据难吗?某科技大学的教授这样说,很难,但要讲方法,主要是因为并不是掌握了基础,就能用python来做数据分析的. 所谓python的基础,也就是刚入门的python学习者,学习的基 ...
- 用Python分析国庆旅游景点,告诉你哪些地方好玩、便宜、人又少
注:本人参考“裸睡的猪”公众号同名文章,学习使用. 一.目标 使用Python分析出国庆哪些旅游景点:好玩.便宜.人还少的地方,不然拍照都要抢着拍! 二.获取数据 爬取出行网站的旅游景点售票数据,反映 ...
- python 分析慢查询日志生成报告
python分析Mysql慢查询.通过Python调用开源分析工具pt-query-digest生成json结果,Python脚本解析json生成html报告. #!/usr/bin/env pyth ...
- Python分析盘点2019全球流行音乐:是哪些歌曲榜单占领了我们?
写在前面:圣诞刚过,弥留者节日气息的大家是否还在继续学习呐~在匆忙之际也不忘给自己找几首好听的歌曲放松一下,缠绕着音乐一起来看看关于2019年流行音乐趋势是如何用Python分析的吧! 昨天下午没事儿 ...
- 五月天的线上演唱会你看了吗?用Python分析网友对这场线上演唱会的看法
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:CDA数据分析师 豆瓣9.4分!这场线上演唱会到底多好看? 首先让我 ...
- Python分析离散心率信号(下)
Python分析离散心率信号(下) 如何使用动态阈值,信号过滤和离群值检测来改善峰值检测. 一些理论和背景 到目前为止,一直在研究如何分析心率信号并从中提取最广泛使用的时域和频域度量.但是,使用的信号 ...
- Python分析离散心率信号(中)
Python分析离散心率信号(中) 一些理论和背景 心率信号不仅包含有关心脏的信息,还包含有关呼吸,短期血压调节,体温调节和荷尔蒙血压调节(长期)的信息.也(尽管不总是始终如一)与精神努力相关联,这并 ...
随机推荐
- Harry And Magic Box HDU - 5155
题目链接:https://vjudge.net/problem/HDU-5155#author=0 题意:在一个n*m的方格中要满足每一行每一列至少有一个珠宝,问总共有多少种方案. 思路:利用递推的思 ...
- 习题3_08循环小数(JAVA语言)
package 第三章习题; import java.util.Arrays; import java.util.Scanner; /* * 输入整数a和b(0<=a<=3000,1&l ...
- Github 1.9K Star的数据治理框架-Amundsen
Amundsen的使命,整理有关数据的所有信息,并使其具有普遍适用性. 这是Amundsen官网的一句话,对于元数据的管理工作,复杂且繁琐.可用的工具很多各有千秋,数据血缘做的较好的应该是Apache ...
- SptingAOP
用Spring AOP(面向切面编程)编写简单转账功能实例: 代码结构图 1.准备数据库存储数据(在MySQL中编写) 1 # 删除spring_aop数据库 2 drop database if e ...
- Android Studio 之 TextView基础
•引言 在开始本节内容前,先要介绍下几个单位: dp(dip) : device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关 一般我们为了支持 ...
- [Fundamental of Power Electronics]-PART II-8. 变换器传递函数-8.4 变换器传递函数的图形化构建
8.4 变换器传递函数的图形化构建 第7章推导出的buck变换器小信号等效电路模型在图8.55中再次给出.让我们用上一节的图解方法来构造该变换器的传递函数和端阻抗. Fig. 8.55 Small-s ...
- filesort排序原理
在执行计划中,可能经常看到有Extra列有filesort,这就是使用了文件排序,这当然是不好的,应该优化,但是,了解一下他排序的原理也许很有帮助,下面看一下filesort的过程: 1.根据表的索引 ...
- MySQL实战45讲,丁奇带你搞懂
之前,你大概都是通过搜索别人的经验来解决问题.如果能够理解MySQL的工作原理,那么在遇到问题的时候,是不是就能更快地直戳问题的本质? 以实战中的常见问题为切入点,带你剖析现象背后的本质原因.为你串起 ...
- vm16 安装 || 待检验 || 预测无问题
vm16 安装 安装 下载 下载地址 管理员运行 安装 其余都点下一步/NEXT 激活 完成
- Java面向对象OOP思想概述
目录 OOP思想(Object Oriented Programming) 类和对象 接口 抽象类 OOP三大特性 封装 继承 多态 OOP复用的形式 OOP思想(Object Oriented Pr ...