用Python读红楼

最近受到这篇文章用Python读金庸武侠的启发。作为古典文(zhuang)学(bi)青年,一定要用Python来试试我读了20年的《红楼梦》。

首先从网上找到了红楼梦.txt(不清楚版本,可能是程甲版)和对应的人物表。

把人名加入词库,然后用结巴分词切分整个文章(我没有区分前八十回和后四十回),加入gensim的训练中

def tranning():

with open('hlm.txt') as f:

data = [line.strip()

for line in f.readlines()

if line.strip()]

sentences = []

for line in data:

words = list(jieba.cut(line))

sentences.append(words)

model = gensim.models.Word2Vec(sentences,

size=100,

window=5,

min_count=5,

workers=4)

return model

训练生成一个以词向量表示词的模型,下面就用代码来找找和宝钗相似的人物吧。

for k, s in model.most_similar(positive=["宝钗"]):

print('{}:{}'.format(k, s))

探春:0.9595787525177002

紫鹃:0.9429049491882324

黛玉:0.9325058460235596

林黛玉:0.9230709075927734

李纨:0.9200501441955566

湘云:0.9067497253417969

袭人:0.9052997827529907

薛姨妈:0.9024999737739563

贾琏:0.899409294128418

宝玉:0.8973875045776367

电脑认为探春和宝钗的相似度最高,回想起第五十六回《敏探春兴利除宿弊 贤宝钗小惠全大体》,都是治家的好手,算是有点道理。

但是这个第二相似的是紫鹃,为什么不是袭人?看来还是没读懂?

第三名是黛玉,这个不奇怪,所谓“钗黛一体”,红学家论述很多。(这里说明一下,因为目前还没法把黛玉和林黛玉这两个名字合为一个人,可能结果有些偏差)

下面用相似关系的来试试

find_relationship(model, '黛玉', '紫鹃', '宝玉')

给定“黛玉”与“紫鹃”,“宝玉”和“平儿”有类似的关系

我本意是晴雯或者袭人吧,不过这里平儿乱入,是不是说明了宝玉的一些小心思,呵呵,耐人寻味。

下面用K-Means算法,来聚类试试

类别1:

贾敬, 贾珠, 贾宝玉, 贾琮, 贾菌, 贾芹, 贾菖, 贾菱, 巧姐儿, 王子腾,

王仁, 王熙凤, 薛宝钗, 林妹妹, 贾蓉之妻, 甄宝玉, 绮霰, 檀云, 茜雪, 春燕,

坠儿, 四儿, 佳蕙, 待书, 入画, 彩屏, 翠墨, 莲花儿, 珍珠, 玻璃,

翡翠, 小红, 金钏, 玉钏, 彩霞, 素云, 翠缕, 宝珠, 小螺, 傻大姐,

焦大, 李贵, 锄药, 墨雨, 来旺, 隆儿, 昭儿, 喜儿, 王信, 龄官,

蕊官, 藕官, 宝官, 文官, 葵官, 空空道人, 甄士隐, 小童, 神瑛侍者, 警幻仙子,

贾雨村, 封肃, 冷子兴, 林如海, 李嬷嬷, 门子, 冯渊, 拐子, 刘氏, 板儿,

青儿, 周瑞, 智能, 詹光, 吴新登, 秦业, 金氏, 戴权, 张材家的, 水溶,

净虚, 赵嬷嬷, 程日兴, 花自芳, 多浑虫, 卜世仁, 倪二, 马道婆, 周姨娘, 蒋玉菡,

云儿, 张道士, 傅试, 宋嬷嬷, 鲍二家的, 金文翔, 柳湘莲, 赖尚荣, 邢岫烟, 李婶娘,

李纹, 李绮, 胡君荣, 乌进孝, 女先儿, 夏婆子, 柳家的, 佩凤, 尤三姐, 尤老娘,

张华, 俞禄, 秋桐, 喜鸾, 王善保家的, 邢德全, 孙绍祖, 王一贴,

类别2:

黛玉, 宝钗, 贾政, 贾琏, 贾母, 宝玉, 王夫人, 凤姐, 薛姨妈, 邢夫人,

尤氏, 李纨, 刘姥姥, 袭人, 晴雯, 麝月, 紫鹃, 鸳鸯, 平儿,

类别3:

贾赦, 贾珍, 贾环, 贾瑞, 贾蓉, 贾兰, 贾蔷, 贾芸, 史湘云, 薛蟠,

薛蝌, 林黛玉, 香菱, 妙玉, 赵姨娘, 秋纹, 司棋, 雪雁, 琥珀, 莺儿,

丰儿, 彩云, 宝蟾, 茗烟, 焙茗, 兴儿, 芳官, 周瑞家的, 秦钟, 冯紫英,

赖大, 林之孝, 林之孝家的, 尤二姐,

看见类别2都是主角,类别3是配角,类别1就是跑龙套的了

再采用层级聚类的方式

得到如下的图

关系图

这幅图绿色的线都是主角,有些聚类比较准确,比如贾政、贾赦属于兄弟俩。

藕官、小红、春燕、坠儿都在丫头的分类里面。

有些比较搞笑,薛姨妈和李纨归为一类,难道因为都是寡妇的缘故吗(:-D)?

薛蟠和妙玉分在一类,这是什么鬼?难道预示了妙玉"无瑕白玉遭泥陷"的结局吗?

以上就是我的分析, gensim都是初学,就一个小时,一个新的红学家就诞生了,

python红楼梦_用Python读红楼相关推荐

  1. python词频统计之红楼梦_用 Python 分析《红楼梦》,后四十回是曹雪芹所写

    用 Python 分析<红楼梦>,后四十回是曹雪芹所写 2020年11月04日 16:03:11    作者:九九文章网 处理后的效果是这个样子: #甄士隐梦幻识通灵#贾雨村风尘怀闺秀#此 ...

  2. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  3. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  4. 红楼梦人物出场统计python_红楼梦有多少人物统计(一)

    原本打算写点有关在红楼梦中,有哪些人物是争议最多,以及有哪些人物争议最少.结果在统计红楼梦中人物时,在遍历了数据库所收集的红楼梦研究著作之后,发现了一个老问题. 这个问题就是:在红楼梦中究竟写了多少人 ...

  5. python红楼梦人物统计_Python分析红楼梦,宝玉和十二钗的人物关系

    红楼梦出场人物很多,人物关系极其复杂,这次我们用Python来分析主人公贾宝玉和他的姐妹们,金陵十二钗之间的关系,做一个简要的分析. 出场率 由于我们只统计宝玉和十二钗(正册)这些人物,因此我们需要实 ...

  6. 傲梦python笔试题_关于python的巩固练习

    python练习 巩固练习里边的内容是供你尝试的.如果你觉得做不出来,可以暂时跳过,过段时间再回来做. 对于这个习题,试试下面几项. 1.让你的脚本再多打印一行. 2.让你的脚本只打印其中一行. 3. ...

  7. 三国演义python分析系统_用python分析四大名著之三国演义

    点击上方"程序人生",选择"置顶公众号" 第一时间关注程序猿(媛)身边的故事 项目起因及意义 起初在浏览知乎时看见一篇文章觉得很有意思(用 Python 分析& ...

  8. python 创意项目_针对python开发人员的10个很棒的python项目创意

    python 创意项目 The joy of coding Python should be in seeing short, concise, readable classes that expre ...

  9. 红楼梦情感分析matlab,《红楼梦》情感型人格分析

    <红楼梦>情感型人格分析 读过古典小说<红楼梦>的人都知道,林黛玉是一个弱不禁风.多愁善感.整日郁郁寡欢.极易伤心落泪的人物.林黛玉的性格.为人表现属于变态心理学所讲的情感型人 ...

最新文章

  1. 深蓝学院的深度学习理论与实践课程:第一章
  2. python join字符连接函数的使用方法
  3. python pynlpir NLPIR许可证过期问题【RuntimeError: NLPIR function ‘NLPIR_Init‘ failed.】
  4. 十一、Python第十一课——用户输入和另一种循环(While)
  5. YOLACT论文笔记
  6. [设计模式-行为型]状态模式(State)
  7. CmemDC类 的使用方法
  8. 几纳米间风云:手机摄影的制高点争夺战
  9. 声音均衡器怎么调好听_调音师必备:如何调出最佳人声?
  10. Linux系统TTY串口驱动实例详解
  11. vue 倒计时 插件_vue+moment实现倒计时效果
  12. 利用JS模拟排队系统
  13. 【编译原理系列】文法、终结符、非终结符、产生式、子集构造法
  14. malloc、calloc、realloc函数讲解
  15. MobileNetV2: Inverted Residuals and Linear Bottlenecks--M Sandler
  16. 智慧工厂是什么 智慧工厂方案举例 智慧工厂案例
  17. vscode 下载地址
  18. spring boot 运行提示:Process finished with exit code 1
  19. 2021 年软件开发趋势大预测!
  20. HDR阴影高光图像增强

热门文章

  1. 【解决办法】移动硬盘在电脑上显示“本地磁盘”并且出现打不开的情况
  2. 三轴磁传感器QMC5883
  3. 计算机模拟教学法,模拟教学法在计算机英语课程中的应用.doc
  4. Git下载部署及常用命令
  5. CSS复合选择器—2
  6. echarts 数据重置图表刷新,带动画效果刷新
  7. Hbuilder将vue项目打包为app(具体步骤和注意点)
  8. DataGrid技巧大集合(转载)
  9. linux忘记登录密码可以进pe吗,Linux忘记密码的解决方法
  10. POS漏洞致使300万Dickey客户信息被贴上论坛