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分析离散心率信号(中) 一些理论和背景 心率信号不仅包含有关心脏的信息,还包含有关呼吸,短期血压调节,体温调节和荷尔蒙血压调节(长期)的信息.也(尽管不总是始终如一)与精神努力相关联,这并 ...
 
随机推荐
- 【JVM进阶之路】七:垃圾收集器盘点
			
在前面,我们已经了解了JVM的分代收集,知道JVM垃圾收集在新生代主要采用标记-复制算法,在老年代主要采用标记-清除和标记-整理算法.接下来,我们看一看JDK默认虚拟机HotSpot的一些垃圾收集器的 ...
 - [leetcode] 单调栈
			
本文总结单调栈算法. 原问题 学习一个算法,我们需要清楚的是:这个算法最原始的问题背景是什么样的? 下一个更小元素 给定一个数组 nums,返回每个元素的下一个更小的元素的下标 res,即 res[i ...
 - [图论]剑鱼行动:prim
			
剑鱼行动 目录 剑鱼行动 Description Input Output Sample Input Sample Output 解析 难点 代码 Description 给出N个点的坐标,对它们建立 ...
 - 多线程安全的单例模式(使用判断nullptr和call_once两种方法)
			
转载请注明: https://blog.csdn.net/Stephen___Qin/article/details/115583694 使用判断nullptr #include <thread ...
 - badusb论述
			
"BadUSB"是2014年计算机安全领域的热门话题之一,该漏洞由Karsten Nohl和Jakob Lell共同发现 攻击原理 TEENSY 攻击者在定制攻击设备时,会向USB ...
 - 使用CSS3中Canvas 实现两张图片合成一张图片【常用于合成二维码图片】
			
CSS3 Canvas 实现两张图片合成一张图片 需求 需求:在项目中遇到将一张固定图片和一张二维码图片合成一张新图片,并且用户能够将图片保存下载到本地. 思路:使用 CSS3 中的 Canvas 将 ...
 - 安装maven工程报错"Failed to execute goal on project...Could not resolve dependencies for project..."
			
我在qingcheng_interface中Lifecycle目录下执行install命令后报错"Failed to execute goal on project...Could not ...
 - 11. Grub 介绍
			
Grub 全称:Grand Unified Bootloader grub引导也分为两个阶段stage1阶段和stage2阶段(有些较新的grub又定义了stage1.5阶段). 一般配置文件:/bo ...
 - 简单的介绍一下Java设计模式:解释器模式
			
目录 定义 意图 主要解决问题 优缺点 结构 示例 适用情况 定义 解释器模式是类的行为型模式,给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器,客户端可以使用这个解释器来 ...
 - Python的文本和字节序列
			
一.字符串的表示和存储 字符串是字符的序列,每个字符都有有一个数字作为标识,同时会有一个将标识转换为存储字节的编码方案: s = 'hello world python' for c in s: pr ...