致敬金庸,数据分析小说人物。

2018年10月30日,一代大侠金庸辞世,享年94岁。

飞雪连天射白鹿,笑书神侠倚碧鸳,再加一部《越女剑》。17年,15部小说,所有的刀光剑影,所有的柔肠百转,那些让人悲喜交集的故事和情绪,都化作两个字,江湖,而金庸,正是为他们命名的人。所谓人生,不过大闹一场,再悄然离去。

说起武侠小说,不得不提中国武侠小说三大宗师——金庸、梁羽生、古龙,从上世纪七八十年代开始,大量的武侠经典出现在荧幕之中。三位大师的文字作品几乎都读过,在学习Python和数据分析后又发现了很多好玩的东西,今天就用数据分析来探索一下武侠小说。

学习Python中有不明白推荐加入交流裙
                号:735934841
                群里有志同道合的小伙伴,互帮互助,
                群里有免费的视频学习教程和PDF!

要点:

- 谁是主角(金庸)

- 用词习惯(梁羽生)

谁是金庸小说的主角

天龙八部是一部多主角小说,萧峰、虚竹、段誉三兄弟各有际遇,曾经还因谁才是第一主角的问题引发过一阵争论。

现在我们已经懂得用数据思维来考虑问题,看看怎样对中文小说进行数据分析吧。出场率是评价一个小说人物的重要指标,我们就先来对《天龙八部》中人物的出场情况进行一下统计分析。

1.分词

中文分词是中文信息处理的基础,但是由于汉语的博大精深,中文分词的难度比英文要高出一大截,好在python有很多用于中文分词的库,jieba就是其中受欢迎程度比较高的一款,下面我们就来体会一下它的妙用。

因为文件太大,每次只读取固定长度的字符串

  • jieba用起来非常简单,短短几行代码就完成了分词工作(下图),可是...仔细一看发现哪里不对了
  • “段誉”作为一个姓名没有被单独分出来,而是和其他一些动词连在一起,另外也有一些角色名字被拆分成了两个甚至更多的单词,例如“神仙姊姊”被分成了“神仙”和“姊姊”两个词。
  • 不过这也难怪,中文的灵活性太强,一个词往往有多层含义和多种用法,看来直接使用jieba分词还是会有不小的误差,我们得想办法来解决这个问题,不然会对分析结果造成干扰。

2.优化

jieba本身带有词库,而且具备很强大新词识别的功能,但是为了获得更高的准确率我们必须载入自定义词库。

因为这次的目的是对人物姓名进行分析,我们先从网上找一份热心网友整理的《天龙八部》人物大全,然后参照“jieba/dict.txt”的格式(一个词占一行,每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒)做成词典文件my_dict.txt。

使用 jieba.load_userdict()函数加载到程序中。如果在程序运行过程中发现其他问题,还可以使用add_word()、suggest_freq()等函数对词典和词频进行动态调整。

  • 用load_userdict导入自定义字典,file_name 为文件类对象或自定义词典的路径
  • add_word()可在程序中动态增加词典
  • del_word()可在程序中动态删减词典
  • suggest_freq()可调节单个词语的词频,使其能(或不能)被分出来

现在我们已经成功解决了人名被意外分割的问题,而对于“段誉听”、“段誉见”这类包含姓名但分割不彻底的单词,我们可以使用suggest_freq函数调整词频进行强制分割

不过我感觉这样做毕竟麻烦,还是决定用正则表达式的方法把我们需要的人名单独取出来,同时将我们不需要的信息(不包含人名的单词)过滤掉。

3.制图

经过上面两步操作获得了一份仅包含《天龙八部》人名的文本,我们可以很轻易地将它读取并转换为list格式,

现在是不是有一种“我为刀俎,它为鱼肉”的感觉了。经过简单的数据处理,我们得到了每个人物的名字在小说中出现的频次,由于萧峰和乔峰是同一个人,为了方便统计将两个名字的出场次合并。

然后取出场率排名前30位的角色数据,用图表的形式展示出来。

虽然在很多人心中萧峰的形象更适合本书主角,但从分析结果来看,“段誉”这个名字在小说中的出场频率是最高的。

萧峰(乔峰)紧随其后,难怪有人为谁是第一主角的事发起过争论。不过人物的重要性也不能只看戏份多少,像慕容博,萧远山,玄慈,段正淳这些人的出场率虽然不是特别高。

但正是这几个人上一代的宿命恩怨,引发了萧峰虚竹段誉三兄弟的江湖故事,实实在在是另一条暗线的主角。

关于主角的问题我们就不展开讨论了,从图中还可以看到其他一些角色的出场频率,仔细琢磨一下还是蛮有意思的。

其实《天龙八部》的中心思想就是“求不得”:

  • 段誉不想学武功却练成了绝世神通
  • 一心追求王语嫣最终美人对慕容复不离不弃
  • 萧峰立志保卫大宋没想到自己居然是契丹人
  • 决定与阿朱塞外牧马,然而造化弄人,心爱的人却死在自己手上

世间种种往往难以掌控,所以我们平时阅读、学习的过程中也不必过于心浮气躁、急功近利,还是要平心静气、踏实苦练,即使目标无法完全实现也可能遇到“有心栽花花不开、无心插柳柳成荫”的境遇。

小说里的用词习惯

每个人写作都会有自己的风格,而写作风格很大程度上可以在用词习惯上体现出来,刚才我们分析了金老的作品, 这次我们来看下被誉为新派武侠小说开山祖师梁羽生的两部部代表作品——《萍踪侠影录》《云海玉弓缘》。

1.取词

既然是中文语言分析那第一步当然还是分词了,考虑到“说”、“走”、“开始”、“平常”等简单词语使用频率通常很高且难以体现写作风格。

这里我们仅提取词长度不小于4的成语、俗语和短语进行分析。同时,考虑到某些人名(例如:上官婉儿、澹台灭明)等专有名词会对分析结果造成干扰,在分词取词的时候可以一并过滤掉,最终得到这样一份词语文件:

2.云图

对用词习惯的分析更倾向于定性分析,我们这里使用词云图来作展示,首先绘制《萍踪侠影录》的词云图。

我们可以看到在这篇小说中“微微一笑”、“哈哈大笑”、“大吃一惊”、“非同小可”等词语使用频率非常高,再来看另一部作品《女帝奇英传》,词云图如下:

我们很容易就发现,这部小说中使用频率最高的还是“微微一笑”、“哈哈大笑”、“大吃一惊”、“非同小可”这几个词, 继续查看其他一些使用频率较高的词也会发现类似的规律。

看来梁老先生写作的用词习惯还是有迹可循的,有兴趣的朋友也可以拿其他大师的文学作品或者网络小说来进行分析,说不定会发现很有趣的规律。

本文授权转载自 菜鸟学Python(cainiao_xueyuan)

“今番良晤,豪兴不浅,他日江湖相逢,再当杯酒言欢。咱们就此别过。”《神雕侠侣》结局处,杨过如此向江湖告别。

你看这些白云,聚了又散,散了又聚。人生离合,亦复如斯。

数据分析金庸武侠经典人物,我们喜欢江湖中的这群人相关推荐

  1. 2008年攻读金庸武侠硕士研究生入学统一考试试题

    2008年攻读金庸武侠硕士研究生入学统一考试试题 满分:150分 时间:180分钟 一.单项选择题(每空1 分,共30分) 1. 张无忌和赵敏第一次相遇是在______. A.听香水榭B.琴韵小筑 C ...

  2. word2vec需要去标点吗_word2vec学习笔记(应用篇)(金庸武侠)

    写在前面 本来是想写"实战篇"的,感觉实验语料库不大,就算是一个"应用篇"吧.选取了中文语料,主要简单介绍jieba分词的使用,以及Gemsim模块中Word2 ...

  3. Python Demo 06 金庸武侠写作风格分析

    #金庸武侠写作风格分析fnames = {"飞狐外传","雪山飞狐"," "," "," "} de ...

  4. 金庸武侠十大外功排行

    作为武侠小说的泰山北斗,金庸小说中的"武功"自然备受关注,也是小说迷们乐此不疲的谈论话题.武功一般分内功与外功,在金庸小说中,最强的内功有九阴真经.易筋经.太玄经等,但是最强的十大 ...

  5. 纪念金庸。创造了整整一个江湖。一个江湖的时代落幕了。。。

    纪念金庸.创造了整整一个江湖.一个江湖的时代落幕了... 金庸武侠小说中的绝美句子,至今都让人回味无穷-- 情不知所起,一往情深:恨不知所终,一笑而泯. --金庸<笑傲江湖> 红颜弹指老, ...

  6. 金庸武侠年表,终于把每部人物关系串起来了

    公元前483年 西施送入吴国: 范蠡遇到阿青,阿青传越国剑士剑法. 公元前476年 越国灭掉吴国:范蠡与西施隐居,阿青离去. 527年 南北朝时期,印度高僧菩提达摩来到中国,在嵩山少林寺面壁九年,创立 ...

  7. 金庸武侠第一高手盖棺定论

    金庸小说中的第一高手是谁?有人说是无名老僧,有人说是独孤求败,也有人说是达摩祖师,莫衷一是.其实都不是,真正的第一高手,是一个你不可能猜到的人,因为这个人的名字,在金庸作品中几乎没有提到过(只在< ...

  8. 使用Spark Graphx 探索你不知道的金庸武侠世界

    GitHub地址:https://github.com/weijie-he/jinyong 一.缘起 2018年10月30日,金庸在香港逝世,享年94岁. 知道这个消息之后,我的情绪很低落,讲台上老师 ...

  9. 金庸笔下的程序员 | 附金庸武侠全集

    金庸 飞雪连天射白鹿,笑书神侠倚碧鸳 当您八十高龄取得牛津大学唐朝史学博士学位,我还以为这是另一部史诗开始的信号,然而没有后续了. 我的高中到大学,是十遍<笑傲江湖>的距离,我的整个青春, ...

最新文章

  1. mysqladmin 设置用户名初始密码报错you need the SUPER privilege for this operation
  2. jquery较验组织机构编码
  3. linux信号值头文件位置,Linux C 信号处理机制
  4. 项目回顾-PopupWindow
  5. 2.3 利用FTP服务器下载和上传文件
  6. 计算机与控制工程学院用英语怎么说,计算机与控制工程学院副院长童向荣老师2017年开学典礼致辞...
  7. 安排座位 java_如何安排领导座次
  8. 【linux命令学习】— cut 和 tr 命令学习
  9. 颜料和调色入门经典教程(调色表)
  10. Veil+tdm-gcc免杀360火绒瑞星
  11. 夜来风雨声,WebSocket 知多少!
  12. 关于抓java的dump中live参数
  13. 健身气功----八段锦
  14. Java的继承多态学习总结
  15. 学会python语法后的第一个爬虫
  16. 相关搜索------搜索引擎研究之三
  17. 智哪儿现场:凯迪仕建博会发布新品“千里眼”智能锁K20 Pro Max,行业新标杆
  18. 测试工程师数据库面试题
  19. 球面贴图(Sphere Map)
  20. Javascript特效:九宫格布局

热门文章

  1. qpOASES使用笔记
  2. java indexeddb_初探IndexedDB
  3. 语言缩写c-a,常见的国家语言缩写以及语言的代码
  4. 周三直播 | PaddleGAN又开金手指,零门槛人像转卡通
  5. Vmware安装OpenWrt
  6. 一个大学生从月薪3500到700万和他的情感经历
  7. NLP相关知识点问答总结(三)
  8. C语言中变量的作用域和生命周期
  9. eclipse java注释乱码_Eclipse中文注释乱码解决
  10. 计算机毕业设计、课程设计之 [含论文+开题+任务书+中期检查+ppt+源码等]S2SH+mysql城市公交管理系统