当前位置: 首页 > 科技观察

根据Python分析金庸小说中的主人公,原来他才是真正的主人公!

时间:2023-03-22 17:08:38 科技观察

番外独白说起武侠小说,不得不提中国武侠小说的三大宗师——金庸、梁羽生、古龙。70、80年代以来,一大批武侠经典出现在银幕上。三位大师的著作我几乎都读过。在学习了Python和数据分析之后,我发现了很多有趣的东西。今天,我将通过数据分析来探索武侠小说。重点:-主角是谁(金庸)-用词习惯(梁羽生)1:金庸小说《天龙八部》的主角是谁,是一部多主角小说。萧峰、虚竹、段誉三兄弟各有各的遭遇。关于谁是第一主角的争论。知道了如何用数据思维思考问题,下面我们来看看如何用数据分析中国小说。出镜率是评价小说人物的重要指标。我们先对《天龙八部》中人物的出现进行统计分析。1.分词中文分词是中文信息处理的基础,但由于中文语言博大精深,中文分词的难度远高于英文。好在python有很多中文分词的库,jieba就是其中之一。高大上,下面就来感受一下它的神奇吧。因为文件太大,所以每次只读取一个定长的字符串。Jieba使用起来非常简单。短短几行代码(下)就完成了分词,但是……仔细一看,不对劲“段誉”这个名字,并没有单独分开,而是和其他一些动词连在一起了。此外,一些字符名称被拆分为两个或多个单词。比如“神仙姐姐”,就分为“神仙”和“姐姐”两个字。但也难怪中文太灵活了,一个词往往有多种含义和用法。直接用jieba分词好像还是会有很多错误。我们必须想办法解决这个问题,否则就错了。分析结果令人不安。2.优化解吧本身有词库,并且有非常强大的生词识别功能,但是为了获得更高的准确率,必须加载自定义词库。因为这次的目的是分析人物的名字,所以我们先在网上找了一个热心网友整理的《天龙八部》人物百科全书,然后参考“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.经过以上两步绘制,得到了一个只包含《天龙八部》人名的文本。我们可以轻松读取它并将其转换为列表格式。现在,是不是有一种“我是道祖,它是鱼”的感觉。经过简单的数据处理,我们得到了每个人物名字在小说中出现的频率。由于肖枫和乔枫是同一个人,为了统计方便,将两人的出现次数合并。然后取出字段率前30个字符的数据,以图表的形式显示出来。虽然很多人心目中萧峰的形象更适合本书的主人公,但从分析结果来看,“段誉”这个名字在小说中出现的次数最多。萧峰(乔峰)紧随其后。难怪有人开始争论谁是第一主角。不过,一个角色的重要性,不能只看出场次数,像慕容博、萧远山、玄慈、段正淳这些人,出镜率都不是特别高。但正是这些人的上一辈宿命恩怨,引发了萧峰、虚竹、段誉三兄弟的江湖故事,他们真是又一条暗线的主角。我们不讨论主角的问题。从图中我们还可以看出其他一些角色的出现频率。仔细想想还是蛮有意思的。其实《天龙八部》的中心思想就是“我求不得”:段誉不想学武,却成了绝世神通。朱塞外放马,好运捉人,心爱的人死在自己手里,即使目标不能完全实现,也可能会遇到“有心栽花不开花,无心插柳柳成荫”的情况”。二:小说用词习惯每个人写作都有自己的风格,而写作风格在很大程度上可以体现在用词习惯上。刚才分析了金老的作品,这次我们就来看看新派武侠小说创始人梁羽生的两部代表作——《萍踪侠影录》和《云海玉弓缘》。1、既然选词是中文分析,那么第一步当然是分词。考虑到“say”、“walk”、“beginning”、“normal”等简单词的使用频率,通常使用频率较高,难以体现写作风格。这里只提取词长不小于4的成语、谚语和短语进行分析。同时考虑到上官婉儿、澹台灭冥等一些专有名词会干扰分析结果,可以在分词的时候将其过滤掉,最终得到这样一个词文件:2.云map更倾向于定性地分析单词习惯。这里我们使用词云图进行展示。先画《萍踪侠影录》的词云图。我们可以看到,“微微一笑”、“哈哈哈哈”、“吃惊”、“非同小可”等词语在这部小说中的使用频率很高。再来看另一部作品《女帝奇英传》,词云图如下:我们很容易发现,这本小说中使用频率最高的词是“微微一笑”、“哈哈大笑”、“吃惊”、以及“不是小事”。继续检查其他常用词,你会发现类似的规律。看来,梁先生用字写字的习惯还是有迹可循的。有兴趣的朋友也可以分析一下其他高手的文学作品或者网络小说,说不定会发现很有意思的规律。中文分词其实是一件很有意思的事情,尤其是对这些武侠小说的探索!我自己也是一个武侠迷,很喜欢金庸的小说。飞雪射漫天白鹿,笑书英雄倚碧园,每一本书都很经典。除了以上两个维度,我们还有一篇关于人物关系的分析文章正在制作中,敬请期待。如果您对本文有什么建议,欢迎留言交流!对于中文分词和语言分析,笔者也是初学者。关于文中涉及的技术理解和新颖见解,如有不妥之处,欢迎大家批评指正。