资讯专栏INFORMATION COLUMN

《三国演义》人物数据分析

gougoujiang / 3670人阅读

摘要:更多练习题可以在公众号的编程教室里回复关键字习题主要任务找出三国演义中名字出现最多的人分析主要几个人物回中,每回出现的次数,结合具体内容,看发生了什么分析人物之间的关系,利用简单绘图绘制逐字词云。

题目源自编程教室的“每周一坑”栏目:【每周一坑】三国演义中谁的存在感最强  
本文是一位同学(王文亚)提交的解答,因为做得挺好,特转载至专栏,供各位参考。
更多练习题可以在公众号(Crossin的编程教室)里回复关键字 习题
主要任务

找出《三国演义》中名字出现最多的10人;

分析主要几个人物120回中,每回出现的次数,结合具体内容,看发生了什么;

分析人物之间的关系,利用Gephi简单绘图;

绘制“逐”字词云。

准备工作

1.由于要分析120回中主要人物的出场次数,爬取《三国演义》120回,每回放在一个段落里;len(f.readlines()) = 120.
2.安装主要的python库,如jieba,wordcloud,pandas,codecs,matplotlib,pyecharts, bs4等,还有Gephi;

开始工作

1.首先是获取分成120回每回一行的文件;
url=http://www.purepen.com/sgyy/根据规律爬出120回;

2.找到次数最多的nr(人名)词语;
函数findMostWords, 逐词查看,长度小于2的自动过滤,按照出现次数排序,写入到文件中,大约是长这个样子的...

3.根据找到的词语排序,大约有7238个词汇,然后手动选取超过出现20次以上的词语,大约200条,剔除一些非人名,如“曹兵”等,最终得到52个词;
["曹操", "玄德", "孔明", "关公", "丞相", "孔明曰", "玄德曰", "云长", "张飞", "主公","吕布", "刘备", "孙权", "赵云", "司马懿", "周瑜", "魏延", "袁绍", "马超", "姜维", "黄忠", "诸葛亮", "庞德", "张辽", "刘表", "董卓", "孙策", "鲁肃", "邓艾", "大将军", "张苞", "袁术", "刘玄德", "玄德大", "子龙", "司马", "孔明笑", "公瑾", "操大喜", "翼德", "刘皇叔", "赵子龙", "郭嘉", "仲达", "关云长","操大怒", "玄德问", "阿斗", "刘豫州", "玄德闻", "玄德乃", "曹丞相"]

4.逐词匹配上述的52个词,得到52个词分别出现的次数;

5.整理上述52个词汇,将玄德曰,玄德怒,玄德乃,刘皇叔等词汇合并,绘制Top10;

6.根据上述52个词汇,分别分析每一回,利用pandas.DataFrame很方便得到每回52个人分别出现的次数;

表格中有大量的空白,后续使用,需要将空白填充0, DataFrame.fillna(0, inplace=True)

7.绘制一些简单的图;
蜀国主要人物全书分布情况,三位结拜兄弟贯穿前80回左右,等他们退出历史舞台,诸葛亮继续辅佐,支撑着蜀国大业。

诸葛亮在35-40, 80-100回出现了较多次数,自然是 “三顾茅庐”、“火烧七百里联营”、“巧布八阵图”、“七擒孟获” 等较为熟知的历史故事; 同时,80回后诸葛亮出现次数占据了全书中较大范围,也是 “先帝托孤”后“鞠躬尽瘁” 的具体表现。

四位当权者曹操、刘备、孙权、司马懿活动活度,前80回,曹刘孙较为活跃,体现出了三国纷争的局面,读这一部分,厮杀场面也是相当精彩; 待三位同时代的人物退出历史舞台后,逐渐司马懿开始活跃,“一统秦两汉,三分魏蜀吴,两晋前后延”,历史朝代更替,滚滚向前。

分析数据的能力还优待提高,想不出较好的分析的内容,还需多写、多与人沟通交流,提升对数据的认识。
8.分析人物之间的关系。根据全文2700多个自然段,如果一个自然段内同时出现了A和B,将A和B之间的关系+1;
得到Node和Edge两份csv文件,输入到Gephi,得到以下关系图,故事还是围绕这曹刘的纷争开展,诸葛亮的经纬之才也体现的淋漓尽致。

9.词云制作;
PS做了一张图,制作词云。根据各种曰可知书中的对话部分占据了很大一部分章节,读者读起来也更有代入感,身临其境。

真正自己去做的时候,才能一次次填补自己的坑。哈哈哈,加油!

*

作者:王文亚

项目地址:

https://github.com/Damon0626/Crossin-Programming-Room/tree/master/09-Analysis%20The%20Three%20Kingdoms

════

其他文章及回答:

如何自学Python | 新手引导 | 精选Python问答 | Python单词表 | 人工智能 | 爬虫 | 我用Python | requests | 计算机视觉

欢迎搜索及关注公众号: Crossin的编程教室

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42901.html

相关文章

  • 用纯CSS实现优雅的tab页

    摘要:部分如上,四个区块,四大名著,嘎嘎代码如上,写的很烂,轻喷用来控制元素的显示和隐藏,实际上是为了实现动画效果此处有装逼的嫌疑,因为会阻碍,而不会,另外也可以用来代替。 说明 又是一个练手的小玩意儿,本身没什么技术含量,就是几个不常用的CSS3特性的结合而已。 要点 Label标签的for属性 单选框的:checked伪类 CSS的加号[+]选择器 效果图 showImg(https...

    lavnFan 评论0 收藏0
  • 用纯CSS实现优雅的tab页

    摘要:部分如上,四个区块,四大名著,嘎嘎代码如上,写的很烂,轻喷用来控制元素的显示和隐藏,实际上是为了实现动画效果此处有装逼的嫌疑,因为会阻碍,而不会,另外也可以用来代替。 说明 又是一个练手的小玩意儿,本身没什么技术含量,就是几个不常用的CSS3特性的结合而已。 要点 Label标签的for属性 单选框的:checked伪类 CSS的加号[+]选择器 效果图 showImg(https...

    Ali_ 评论0 收藏0
  • yii实战之控制器与视图交互

    继上篇yii实战之初见端倪,本篇将讲解控制器和视图的基础用法。并构建一个人物列表页面 默认控制器 默认情况下,当浏览器请求http://frontend.test/时,实际上访问的是frontend/controllers/SiteController.php的actionIndex方法,我们在这个方法断点测试下: public function actionIndex() { retur...

    Riddler 评论0 收藏0

发表评论

0条评论

gougoujiang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<