时间: 2021-12-21 08:31:50 | 作者:挖数 | 来源: 喜蛋文章网 | 编辑: admin | 阅读: 92次
金庸的“飞雪连天射白鹿,笑书神侠倚碧鸳”,唯独《鹿鼎记》写的最是香艳动人,年少时阅此书,每每春心荡漾,心里如钻进小鹿。
刁蛮任性的建宁公主、天香国色的阿珂、温柔懂事的双儿,在当时年少的我心中,真是得一个足矣。
作者在写小说时,往往会将自己代入到书中主角,因此金庸写韦小宝,往往是在写他自己,或者说是期望的自己。
因此要看韦小宝与七个老婆谁最亲,可以看书中韦小宝与七个老婆谁的互动最多。
首先下载《鹿鼎记》整本小说的txt。
韦小宝一听大喜,心想:“原来你名叫阿珂,终于给我知道了。”他随伴白衣尼多日,知她喜人恭谨谦让,在她面前,越是吃亏,越有好处,忙道:“师太,姑娘这两脚原是该踢的,实在是我不对,真难怪姑娘生气。她便再踢我一千一万下,那也是小的该死。”爬起身来,双手托住下颚,只痛得眼泪也流了出来。这倒不是做作,实在那一脚踢得不轻。然后我们定义这样的指标:
七个老婆名字与韦小宝在同一段落一起出现的次数,作为 亲密度 指标,如以上段落,韦小宝和阿珂的亲密度+1。
找到七个老婆的名词:
阿珂
苏荃/洪夫人
建宁公主/建宁
双儿
沐剑屏/郡主
方怡/方姑娘
曾柔/曾姑娘
将《鹿鼎记》txt按照段落,分割成11581个txt文件。
分割文件的python代码:
s = open('d:/lu/lu.txt','r')q = s.read()f = q.split('n')x=1for i in f: b = open('d:/lu/'+str(x)+'.txt','w') b.write(i) x+=1 print xs.close
然后用python的结巴分词包,去匹配每个名字在每个段落是否有出现,出现标记为1,否则为0.
x=1result={'xiaobao':[],'ake':[],'suquan':[],'jianning':[],'shuanger':[],'junzhu':[],'fangyi':[],'zengrou':[]}while x<=11581: a={'word':[],'count':[]} f=open('d:/lu/'+str(x)+'.txt','r').read() words=list(jieba.cut(f)) if u'韦小宝' in words: result['xiaobao'].append(1) else: result['xiaobao'].append(0) if u'阿珂' in words: result['ake'].append(1) else: result['ake'].append(0)...
再两两计算在段落里一同出现的次数。
result2={'role':[],'xiaobao':[],'ake':[],'suquan':[],'jianning':[],'shuanger':[],'junzhu':[],'fangyi':[],'zengrou':[]}for a in b.columns.values: x=xiaobao=ake=suquan=jianning=shuanger=junzhu=fangyi=zengrou=0 while x<=11580: if b.iloc[x][a]==1: if b.iloc[x]['xiaobao']==1: xiaobao+=1 if b.iloc[x]['ake']==1: ake+=1... x+=1 result2['role'].append(a) result2['xiaobao'].append(xiaobao) result2['ake'].append(ake) result2['suquan'].append(suquan) result2['jianning'].append(jianning) result2['shuanger'].append(shuanger) result2['junzhu'].append(junzhu) result2['fangyi'].append(fangyi) result2['zengrou'].append(zengrou)o=pd.DataFrame(result2)o.to_csv('d:/lu/lu2.csv',mode='w',encoding='UTF-8')
最后生成这样一份矩阵的csv文件。
由以上矩阵可以得出韦小宝跟七个老婆的亲密度如下:
韦小宝&双儿:327
韦小宝&沐剑屏:278
韦小宝&阿珂:203
韦小宝&方怡:147
韦小宝&苏荃:135
韦小宝&建宁公主:47
韦小宝&曾柔:28
实际以上不仅算出韦小宝跟七个老婆的亲密度,还算出了七个老婆两两之间的亲密度。
我们将以上矩阵丢进Gephi(一款画关系矩阵的可视化软件),以散点的大小代表名字出现的频次,以线的粗细代表亲密度的大小,得到这样一张图。
所以,是双儿笑到了最后
最喜欢周星驰版的双儿 (~﹁~)
评论区有人说要考虑人物先后顺序,因为双儿出现的早所以最亲密,受此启发,我用人物在每个段落是否出现画了一个散点图,X轴是1-11581表示段落,Y轴表示人物:
可以看到双儿并不是最早出现那个,另外有趣的是,阿珂频繁出现的那段,其他老婆根本没有被宠幸的机会 ╮(╯_╰)╭
同理,我还做了《还珠格格》的关系图
计算了包括小燕子、紫薇、乾隆、尔康、五阿哥、金锁、尔泰、皇后、令妃、塞娅、柳青、柳红在内的亲密度,发现《还珠格格》原来讲的是小燕子、紫薇和乾隆三角恋的故事,其他角色都是打酱油的 ╮( ̄▽  ̄)╭
所以,姜还是皇阿玛的辣
最后,手把手教你怎么用Gephi画关系图。
1、首先,从官网下载Gephi;
2、文件-导入表格,根据数据形式选择类型,本文是选择矩阵;
3、耐心调整数据,包括结点、边的颜色和大小(选完记得点应用),结点的标签要点T才能展示,然后一些lable要在数据资料那里赋值才能展示出来;
4、最后,预览,刷新,然后输出图片。
觉得有用的,给我点个赞哦 (*>.<*)
更多数据分析相关的有趣文章,可以关注我微信公号哦
全站搜索