前面分析统计了金庸名著《倚天屠龙记》中人物按照出现次数并排序

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分析《三国演义》,谁才是这部书的绝对主角(包含统计指定角色的方法)的更多相关文章

  1. 到底怎么样才叫看书?——Tony Zhao's

    到底怎么样才叫看书?——上篇 目录: 一.引入 二.经历了就能理解 三.读书要分级 四.只读经典 五.别吝惜你动笔的那点时间 一.引入 看到这个题目的时候你可能会感到有点好笑:“这还用问,看书就是把书 ...

  2. Tony zhao:到底怎么样才叫看书?

    http://blog.jobbole.com/25842/ 目录: 一.引入 二.经历了就能理解 三.读书要分级 四.只读经典 五.别吝惜你动笔的那点时间 一.引入 看到这个题目的时候你可能会感到有 ...

  3. Python分析数据难吗?某科技大学教授说,很难但有方法就简单

    用python分析数据难吗?某科技大学的教授这样说,很难,但要讲方法,主要是因为并不是掌握了基础,就能用python来做数据分析的. 所谓python的基础,也就是刚入门的python学习者,学习的基 ...

  4. 用Python分析国庆旅游景点,告诉你哪些地方好玩、便宜、人又少

    注:本人参考“裸睡的猪”公众号同名文章,学习使用. 一.目标 使用Python分析出国庆哪些旅游景点:好玩.便宜.人还少的地方,不然拍照都要抢着拍! 二.获取数据 爬取出行网站的旅游景点售票数据,反映 ...

  5. python 分析慢查询日志生成报告

    python分析Mysql慢查询.通过Python调用开源分析工具pt-query-digest生成json结果,Python脚本解析json生成html报告. #!/usr/bin/env pyth ...

  6. Python分析盘点2019全球流行音乐:是哪些歌曲榜单占领了我们?

    写在前面:圣诞刚过,弥留者节日气息的大家是否还在继续学习呐~在匆忙之际也不忘给自己找几首好听的歌曲放松一下,缠绕着音乐一起来看看关于2019年流行音乐趋势是如何用Python分析的吧! 昨天下午没事儿 ...

  7. 五月天的线上演唱会你看了吗?用Python分析网友对这场线上演唱会的看法

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:CDA数据分析师 豆瓣9.4分!这场线上演唱会到底多好看? 首先让我 ...

  8. Python分析离散心率信号(下)

    Python分析离散心率信号(下) 如何使用动态阈值,信号过滤和离群值检测来改善峰值检测. 一些理论和背景 到目前为止,一直在研究如何分析心率信号并从中提取最广泛使用的时域和频域度量.但是,使用的信号 ...

  9. Python分析离散心率信号(中)

    Python分析离散心率信号(中) 一些理论和背景 心率信号不仅包含有关心脏的信息,还包含有关呼吸,短期血压调节,体温调节和荷尔蒙血压调节(长期)的信息.也(尽管不总是始终如一)与精神努力相关联,这并 ...

随机推荐

  1. Redis 超详细自动管理Cluster集群工具上手 redis-trib.rb (多图,手把手)

    安装介绍 ​ redis-trib.rb是一款由Redis官方提供的集群管理工具,能够大量减少集群搭建的时间. ​ 除此之外,还能够简化集群的检查.槽迁徙.负载均衡等常见的运维操作,但是使用前必须要安 ...

  2. kubernetes dashboard 2.0 部署

    dashboard 可以从微软中国提供的 gcr.io :http://mirror.azure.cn/help/gcr-proxy-cache.html免费代理下载被墙的镜像 docker pull ...

  3. 自动化kolla-ansible部署ubuntu20.04+openstack-victoria之vmware设置-02

    自动化kolla-ansible部署ubuntu20.04+openstack-victoria之vmware设置-02 欢迎加QQ群:1026880196  进行讨论 1. vmwae版本 2. 网 ...

  4. 【pytest官方文档】解读fixtures - 10. fixture有效性、跨文件共享fixtures

    一.fixture有效性 fixture有效性,说白了就是fixture函数只有在它定义的使用范围内,才可以被请求到.比如,在类里面定义了一个fixture, 那么就只能是这个类中的测试函数才可以请求 ...

  5. 记一次 .NET医疗布草API程序 内存暴涨分析

    一:背景 1. 讲故事 我在年前写过一篇关于CPU爆高的分析文章 再记一次 应用服务器 CPU 暴高事故分析 ,当时是给同济做项目升级,看过那篇文章的朋友应该知道,最后的结论是运维人员错误的将 IIS ...

  6. 微信小程序底部实现自定义动态Tabbar

    多图警告!!! 最近在工作中遇到这样一个需求:微信小程序底部的Tab需要通过判断登录人的角色动态进行改变,想要实现这个功能依靠小程序原生的Tabbar是不可能实现的了,所以研究了一下自定义Tab,这里 ...

  7. OO第二单元总结——电梯

    在电梯系列的作业中,笔者的整体架构几乎没有发生改变.现介绍如下,对于一个电梯系统,主要的工作步骤就是获取乘客请求.分派请求.执行请求.针对这样的工作模式,笔者设计了Elevator.Uselist两个 ...

  8. python3函数可变输入参量

    技术背景 通常我们在python中定义一个函数的时候,需要给出明确的函数输入参量,比如对于一个数学函数\(z=f(x,y)\)就表示,\(z\)是关于\(x\)和\(y\)的一个函数.但是如果对于未知 ...

  9. C - The Suspects POJ - 1611(并查集)

    Severe acute respiratory syndrome (SARS), an atypical pneumonia of unknown aetiology, was recognized ...

  10. 探索使用 Golang 和 Webassembly 构建一个多人游戏服务器

    什么是 WebAssembly?由 Google.Microsoft.Mozilla.Apple 等发起的 WebAssembly 是一种新的字节码格式,主流浏览器都已经支持 WebAssembly. ...