美文网首页
金庸武侠

金庸武侠

作者: 南风无影 | 来源:发表于2017-04-21 18:43 被阅读149次

以下内容均为转载,我自己跑了一遍

金庸老爷子一共写了15部武侠小说,它们分别是:
《书剑恩仇录》(1955年)
《碧血剑》 (1956年)
《射雕英雄传》(1957年)
《雪山飞狐》 (1959年)
《神雕侠侣》 (1959年)
《飞狐外传》 (1960年)
《倚天屠龙记》(1961年)
《白马啸西风》(1961年)
《鸳鸯刀》 (1961年)
《连城诀》 (1963年)
《天龙八部》 (1963年)
《侠客行》 (1965年)
《笑傲江湖》 (1967年)
《鹿鼎记》 (1969年)
《越女剑》 (1970年)

我们现在就来探索一下金庸小说中的武侠世界吧。

我们从网上找到金庸小说的 txt 全文,放在novels文件夹中:

In[47]:
!ls novels

侠客行.txt 
鸳鸯刀.txt 
笑傲江湖.txt 
倚天屠龙记.txt
碧血剑.txt 
鹿鼎记.txt 
雪山飞狐.txt 
射雕英雄传.txt
越女剑.txt 
天龙八部.txt 
飞狐外传.txt 
白马啸西风.txt
连城诀.txt 
神雕侠侣.txt 
书剑恩仇录.txt

先一睹为快:

In[48]:

with open('novels/鸳鸯刀.txt') as f: 
data = [line.strip().decode('utf8') for line in f.readlines()] # 去掉结尾的换行符
for line in data[:13]: 
  if line.strip(): 
  print line

鸳鸯刀 
四个劲装结束的汉子并肩而立,拦在当路!  
若是黑道上山寨的强人,不会只有四个,莫非在这黑沉沉的松林之中,暗中还埋伏下大批人手?
如是剪径的小贼,见了这么声势浩大的镖队,远避之唯恐不及,哪敢这般大模大样的拦路挡道?
难道竟是武林高手,冲着自己而来?  
凝神打量四人:最左一人短小精悍,下巴尖削,手中拿着一对峨嵋钢刺。
第二个又高又肥,便如是一座铁塔摆在地下,身前放着一块大石碑:碑上写的是“先考黄府君诚本之墓”,这自是一块墓碑了,不知放在身前有何用意?

出场人物#

接着,我们先找到金庸小说中所有出场的人物,放到 names.txt 文件中

雪山飞狐
于管家 田青文 左书僮 右书僮 
平阿四 阮士忠 刘元鹤 杜希孟 
周云阳 郑三娘 宝树 苗若兰 
苗人凤 范帮主 殷吉 胡一刀 
胡夫人 胡斐 陶子安 陶百岁 
曹云奇 琴儿 熊元献 静智大师 赛总管

飞狐外传
马行空 马春花 徐铮 商宝震 
何思豪 阎基 田归农 苗人凤 
南仁通 补锅匠 脚夫 车夫 
蒋调侯 店伴 钟兆文 钟兆英 
钟兆能 南兰 苗若兰 商老太 
平四 胡斐 .......... 

寻找主角光环#

我们来看看人物在小说中的出场次数统计。
显然出场次数越多,自然主角光环越强,我们定义一个函数寻找小说中主角光环最强的几个人:

In[51]:

find_main_charecters("天龙八部")

显然,就《天龙八部》来说,萧(乔)峰,段誉,虚竹这三兄弟的主角光环最强。
再看射雕三部曲:

In[52]:

find_main_charecters("射雕英雄传")
find_main_charecters("神雕侠侣")

相似度结果#

有了模型,我们可以进行一些简单而有趣的测试。
首先看与乔峰相似的人:

虚竹 0.808256745338
段正淳 0.801282763481
袁承志 0.799129843712
钟万仇 0.780561625957
慕容复 0.779566764832
郭靖 0.76130592823
游坦之 0.756253659725
余鱼同 0.755706429482
全冠清 0.752779304981
石清 0.747051537037

出来的都是出场较多的男性人物。
再看看与阿朱相似的人:

香香公主 0.786988794804
阿紫 0.777307748795
王语嫣 0.770607352257
木婉清 0.766065001488
钟夫人 0.757905900478
青青 0.753165721893
盈盈 0.751842021942
钟灵 0.740078568459
霍青桐 0.730355381966
段誉 0.729024648666

这回出现的是一群女性角色。
除了人物,我们可以看看门派:

for k, s in model.most_similar(positive=["丐帮"]):
    print k, s

峨嵋派 0.834554970264
嵩山派 0.825065732002
天地会 0.821815550327
红花会 0.819087982178
雪山派 0.817510247231
长乐帮 0.810776889324
恒山派 0.809150755405
全真教 0.807652831078
魔教 0.797330856323
铁掌帮 0.791114330292

这个出来的结果就是一堆门派。
还可以看看武功秘籍:

In[63]:
for k, s in model.most_similar(positive=["降龙十八掌"]): print k, s

打狗棒法 0.918145179749
太极拳 0.873559832573
七十二路 0.867989778519
一阳指 0.862640976906
绝招 0.860467076302
空明拳 0.857472538948
掌法 0.85104572773
拳法 0.848226368427
八卦掌 0.846867024899
棒法 0.84208548069

在 Word2Vec 的模型里,有过“中国-北京=法国-巴黎”的例子,这里我们也可以找到这样的例子:

In[64]:

find_relationship("段誉", "段公子", "乔峰")
给定“段誉”与“段公子”,“乔峰”和“乔帮主”有类似的关系

类似的:

In[65]:
# 情侣对
find_relationship("郭靖", "黄蓉", "杨过")
# 岳父女婿
find_relationship("令狐冲", "任我行", "郭靖")
# 非情侣
find_relationship("郭靖", "华筝", "杨过")

给定“郭靖”与“黄蓉”,“杨过”和“小龙女”有类似的关系
给定“令狐冲”与“任我行”,“郭靖”和“黄药师”有类似的关系
给定“郭靖”与“华筝”,“杨过”和“郭芙”有类似的关系

In[66]:
# 韦小宝
find_relationship("杨过", "小龙女", "韦小宝")
find_relationship("令狐冲", "盈盈", "韦小宝")
find_relationship("张无忌", "赵敏", "韦小宝")

给定“杨过”与“小龙女”,“韦小宝”和“康熙”有类似的关系
给定“令狐冲”与“盈盈”,“韦小宝”和“康熙”有类似的关系给定“张无忌”与“赵敏”,“韦小宝”和“康熙”有类似的关系

除了人物之间的关系,门派武功之间的关系:

In[67]:
find_relationship("郭靖", "降龙十八掌", "黄蓉")
find_relationship("武当", "张三丰", "少林")
find_relationship("任我行", "魔教", "令狐冲")

给定“郭靖”与“降龙十八掌”,“黄蓉”和“打狗棒法”有类似的关系
给定“武当”与“张三丰”,“少林”和“任我行”有类似的关系
给定“任我行”与“魔教”,“令狐冲”和“恒山派”有类似的关系

人物聚类分析#

因为全部小说中的人物太多,考虑从单本小说"天龙八部"进行入手:

类别1:
马五德 小翠 不平道人 甘宝宝 天狼子 太皇太后 无崖子 止清 天山童姥 本参
本观 本相 出尘子 冯阿三 古笃诚 兰剑 平婆婆 石嫂 司空玄 玄苦
玄生 玄痛 耶律莫哥 李春来 李傀儡 刘竹庄 朴者和尚 许卓诚 竹剑 阿洪
阿胜 陈孤雁 来福儿 努儿海 宋长老 苏辙 吴长风 辛双清 严妈妈 余婆婆
岳老三 张全祥 单伯山 单季山 单小山 单正 段正明 宗赞王子 苟读 华赫艮
郁光标 卓不凡 范百龄 哈大霸 吴光胜 梦姑 神山上人 神音 室里 姚伯当
幽草 哲罗星 龚光杰 贾老者 康广陵 容子矩 桑土公 唐光雄 奚长老 诸保昆
崔绿华 符敏仪 菊剑 梅剑 游骥 游驹 傅思归 葛光佩 缘根 鲍千灵
智光大师 瑞婆婆 端木元 黎夫人 谭公 赫连铁树 谭青 摘星子 慧方 慧观
慧净 慧真 穆贵妃 吴领军 易大彪

类别2:
刀白凤 丁春秋 马夫人 巴天石 邓百川 风波恶 公冶乾 包不同 乌老大 云中鹤
白世镜 本因 过彦之 司马林 玄慈 玄寂 玄难 叶二娘 左子穆 李秋水
全冠清 阮星竹 朱丹臣 阿碧 波罗星 鸠摩智 耶律洪基 苏星河 段延庆 范骅
赵钱孙 钟万仇 秦红棉 徐长老 崔百泉 萧远山 褚万里 慕容博 谭婆 薛慕华


类别3:
木婉清 王语嫣 乔峰 萧峰 阿朱 阿紫 段誉 段正淳 钟灵 虚竹
游坦之 慕容复

我们把众龙套去掉:

类别1:
丁春秋 风波恶 云中鹤 玄难 李秋水 鸠摩智 段延庆

类别2:
木婉清 王语嫣 阿朱 阿紫 段誉 钟灵 游坦之

类别3:
刀白凤 马夫人 巴天石 邓百川 公冶乾 包不同 乌老大 白世镜 本因 过彦之
司马林 玄慈 玄寂 叶二娘 左子穆 全冠清 阮星竹 朱丹臣 阿碧 波罗星
耶律洪基 苏星河 范骅 赵钱孙 钟万仇 秦红棉 徐长老 崔百泉 萧远山 褚万里
慕容博 谭婆 薛慕华

类别4:
乔峰 萧峰 段正淳 虚竹 慕容复

可以看到,段家的儿子和女儿倾向于聚在一起,而反派角色则倾向于被聚在一起。

层级聚类#

换一本小说:"倚天屠龙记"
除了人物,我们还可以考虑对武功进行聚类分析:


下载.png

红色的是出现比较少的武功
绿色的是我们耳熟能详的武功

总结#

飞雪连天射白鹿,笑书神侠倚碧鸳。

另外,我觉得这个工具可以用来读历史,搞清楚各人物之间的关系。•

相关文章

网友评论

      本文标题:金庸武侠

      本文链接:https://www.haomeiwen.com/subject/xptjzttx.html