[转录] 用机器学习判定红楼梦后40回是否曹雪芹

楼主: mited (太郎)   2016-07-06 15:34:09
知乎:用机器学习判定红楼梦后40回是否曹雪芹所写
https://zhuanlan.zhihu.com/p/21421723
作者:黎晨
作为一个从没看过红楼梦的人,我的大致思路是这样的:
1.受到全职猎人里蚁王破解会长无敌招数的启发,每个人的写作都有些小习惯,虽然文章
前后说的内容会有差别,但是这些用词的小习惯不容易改变;
2.用开源的分词工具把全书分词(python的jieba分词),然后统计词频。把出现频次超
过100次的词语找出来,人工去掉一些可能因为文章内容造成前后出现不一致的人名、
地名
3.然后每一章按照2中的词频表,看这一章中出现这些词语的频次;
4.前80回、后40回各选15回作为机器学习的数据,让机器学习这些章节的用词特点,然后
推算其他章节的用词特点是属于前80回呢、还是后40回;
5.如果机器根据这些用词特征推算的是否属于后40回的结果跟实际的结果吻合,那么就说
明后40回的写作风格跟前80回有很大不同,很可能是两个人写的;
好了,下面我尽量少涉及数学跟编程的知识,来一步步解读机器学习是怎么完成这个问题
的。
生成全书的词频表
https://pic4.zhimg.com/86db71e47e3cbd6091906d50c61ab967_b.png
我截取了其中一段的词频表。像宝二爷、黛玉笑这种涉及人物的词语,可能前面戏份多、
后面戏份少,所以就不选它们作为用词习惯的特征,而像忽然、故、只要、可不是这种承
接性质的碎词,就不太容易会受情节的影响,所以适合选出来作为用词习惯的特征。
最终,我按照出现从多到少排序,选择了278个词作为机器学习的用词习惯。
将120回的词频进行统计
接下来我把每一回出现这278个词的频次统计出来,得到我们给机器学习的样本。这个样
本的样子大概是这样的:
https://pic1.zhimg.com/999d0b7e34e5df4f9f00a6bdffec245c_b.png
比如以B行2列举例,说明在第一回里面“道”这个动词,出现了36次。
通常我们在进行复杂的事情前,喜欢先简化问题,或者给自己一些直观的图表,以便了解
问题。机器学习也是一样的。
我尝试着在图上把前80回和后40回习惯用词出现的频次画出来。以第一回为例,x1坐标代
表“道”出现多少次,x2坐标代表“说”出现多少次,x3坐标代表“也”出现多少次
......x280坐标代表“则”出现多少次。
什么?超过三维了,那人类的大脑可是没办法理解的啊。
没关系,当我们用灯光照射一个立体的图时,平面会有它的影子。这个影子虽然没有立体
图的信息这么丰富,不过我们看影子还是可以猜出来大致的样子。对于高纬度的问题,我
们也可以用投影的方式来降低纬度。
虽然信息损失了不少,不过能给我们一个直观的感受。
https://pic3.zhimg.com/d89993509cfb2ea46e2fead27df7616e_b.png
这个是120个章节的用词习惯从278纬降到3维以后的图,红色+的点是前80回,蓝色o的点
是后40回。
从这个图可以直观地看到,确实在用词习惯上有明显的区别。就算我们没有机器学习工具
的帮忙,也可以大胆猜测后40回是出自于另外一个人了。
下面我们用机器学习来看精确一点的判断。
机器学习
通过课程我大致了解了SVM的原理和简化版问题的算法实现,不过对于复杂问题我还是没
这个编码能力的。于是用python的scikit库来帮助我来完成这个预测。
算法的步骤很简单,前80回、后40回各选15个来喂给机器学习它们的特点,然后把剩下的
章节输入给机器,问它们属于前80还是后40。
https://pic4.zhimg.com/8269c925992144fa4ab1cc18be09d7af_b.png
看out[44]的结果,代表了机器预测这120回的用词习惯到底属不属于后40回(0为不属于
,1为属于)。
如果你看不懂上面的代码,没关系。我告诉你结果好了。
机器在学习以后告诉我,如果我把随便一章的用词习惯告诉它、但不告诉它到底是前80回
还是后40回,那么机器有95%的把握能猜出它是不是后40回。
至此,我们可以很有信心地判断它们的写作风格不同。
那么,问题来了,会不会因为是情节的需要所以导致写作风格不同了呢?
情节不同会造成用词习惯多大的差别?
好吧,那我再来做一个旁证。我把另外一部四大名著“三国演义”拿来分析,看看上部跟
下部的用词习惯会不会有比较明显的差别。
https://pic2.zhimg.com/83a849aba46a550bf5fb9094aa76b121_b.png
这个是三国演义的用词习惯缩到三维以后的图,红色+代表前60部的用词习惯,蓝色o代表
后60部的用词习惯。
你可能会说,虽然中间交叉的地方比较多,但是还是可以看出来是有区分的。
可如果你比对一下跟红楼梦的图,你就会发现红楼梦的差别会明显得多。
https://pic2.zhimg.com/c3117edef7f9f8a05672c37fac4a6f59_b.jpg
(红色+为红楼梦前80回/三国前60回,蓝色o红楼梦后40回/三国后60回)
最后,用机器学习的方式来说,如果我把三国演义随便一章的用词习惯告诉它、但不告诉
它到底是前60回还是后60回,那么机器有7成的把握猜对,这个准确度已经远远低于红楼
梦的95%的预测水平。
所以,我们用“三国演义”这个旁证来分析,即便是因为情节需要导致的用词习惯差别也
不应该这么大。
所以,我们就更有信心说曹老先生没有写后40回了。
更多的机器学习有趣的玩法,我会在学习的过程中慢慢尝试的。以上。
作者: femlro (母猪教谋神异端审问官1.5)   2016-07-06 15:53:00
只有工程师才会无聊到 用机械学习判断是不是谁写的谁写的不重要 重点是文学上的成就与价值一堆大师写出的垃圾仍是垃圾有品牌迷思的人 就没办法独立思考品牌与价值有正向相关 但不是绝对相关
作者: cashko   2016-07-06 16:03:00
觉得提供不同角度的判断法也挺有意思的
作者: winken2004 (新竹肥宅)   2016-07-06 16:04:00
挺有趣的
作者: lemon7242 (柠檬酸)   2016-07-06 16:40:00
一楼干嘛那么激动 照这说法名画都不用鉴定了
作者: art787472 (Sumiki)   2016-07-06 16:51:00
原PO并没有要讨论文学价值的问题吧他只是提供另一个方法来探讨后四十回的作者是不同人
作者: fosa (阿盛)   2016-07-06 16:52:00
我觉得很有意思耶,这已经算是AI的领域了~
作者: tom50512 (空心菜)   2016-07-06 17:17:00
蛮有趣的!!
作者: Hitle (希透)   2016-07-06 17:35:00
有趣!不过好像缺乏一些更精细的分析设计
作者: rpg1234pk (giveme5)   2016-07-06 17:41:00
厉害,就跟模仿一样,被模仿者总是有些眉角是他人学不来的。用电脑统计分析的方法,比人类直观判断来的精准!
作者: yudofu (豆腐)   2016-07-06 18:13:00
如果是两个人写的,那么这个第二个人本身当然也有研究价值,对于结局也不能把后40回视为一个人风格的改变而是两个人,当然能厘清的话就厘清,怎么会没有价值,是就是,不是就不是,严谨的研究精神有工程师跟不是工程师吗?讲得好像这个问题是工程师提的,研究红学的人都无所谓一样。
作者: semicoma (后勤人力足 前进灾区吧)   2016-07-06 19:00:00
这篇并没在讨论作品成就及价值 一楼要加油喔 做为台大文院毕业生现在在写程式 两者并不是互斥的 如果你愿意试着理解 我可以教你的 不客气
作者: milyspice (香米)   2016-07-06 19:38:00
我也是学机器学习的,满有趣的。
作者: edum (lazybone)   2016-07-06 19:39:00
超酷
作者: blake7899 (starblake)   2016-07-06 19:57:00
这是文献计量学的一种应用吧
作者: demonOoO (demonOoO)   2016-07-06 20:12:00
你要不要把前四十回 中四十回 后四十回 都分开来算算这本书前后花了十年 十年前你的文字跟十年后?另外 后四十回本来不就是残稿? 文字量远低于前八十回残稿经过修补 本来就会有落差 这又何能证明完全无残稿?另外 三国演义是民间集体创作 由同一人编定而成这有何好比较? 事实就是这样啊...不晓得你有懂我意思吗 一个出版序言已明讲是断稿修补本来文字就有落差 但不能证明全无原作者文字一个是出于单一修订成同时间集合完成 文字本就统一许多我的意思是说 你这不能证明新的事实同样 也不能反推没有曹雪芹文字在内妳只能说后四十回文字使用与前八十回不同, 但不代表你的结论: 后四十回非曹雪芹文字因为作家文字风格会变、按高鹗叙言此40回乃残稿蒐罗而成加上前后创作达10年之久 这种种因素并不能排除在外所以你不能全盘否定300年前当事人高鹗的说法并简单结论说: 这里头没有曹雪芹的文字之可能既然科学求证 也应该下科学式的结论: 后四十回文字有部份异于前八十回之使用习惯 可能更合科学精神否则反对方 依然可找到大量前后相同之使用词汇来反驳你
作者: oreo17 (T3T)   2016-07-06 21:31:00
好酷!人永远无法完全模仿另一人啊
作者: enjoyloli (M)   2016-07-06 22:05:00
好文推
作者: yudofu (豆腐)   2016-07-06 22:23:00
高鹗是当事人,但是当事人已死,如果你以高鹗所为必为真的前提来讲的话也没什么好研究了
作者: xelnaga (Xel'Naga)   2016-07-06 22:24:00
一楼就无法独立思考
作者: demonOoO (demonOoO)   2016-07-06 22:50:00
按楼楼上逻辑 那你说后四十回非曹氏所写 当事人已作古他连反驳或同意的话都没机会说了老实说 讨论后四十回究竟是谁写的根本就是很____的事情把它当成文学作品阅读有这么困难吗?不是他写的又怎样 他写的又怎样 现存文本结局就长那样
作者: semicoma (后勤人力足 前进灾区吧)   2016-07-06 22:54:00
我的思维比较像demon大 工程师要不要做这件事情根本没啥好批评的 但是工程师下的结论或是演算方式倒是可以挑战但无论如何 都无涉文本的价值 今天这篇文章比较像是拿几个 buzzwords(机器学习 红楼梦) 来吸引眼球 但很可能一开始就是个假议题
作者: demonOoO (demonOoO)   2016-07-06 23:04:00
研究红楼梦的部分人常常厌恶现存的结局,而将怒气推到高鹗身上,所以不信他的说词. 但又极端支持 脂砚斋 的评语及结局预测, 不是自打嘴巴吗? 不论高鹗或脂砚 都非作者!所以一切的推论揣测 从头到尾都是假议题
作者: episold (episold)   2016-07-06 23:36:00
很有趣 但是以词汇频率来推断作者 这feature太粗略了再想想怎样把“写作风格”变成特征吧
作者: s9041200 (小明阿)   2016-07-07 00:23:00
原来机器学习可以这么玩,好有趣!!
作者: ttyycc (小卷)   2016-07-07 01:34:00
可以试试看从中间分一半,看看电脑区分的准确度是否下降
作者: BIGP (ツンデレ大好!)   2016-07-07 09:05:00
超酷的 XDDDDDDDDDDDDD
作者: swingman (勇敢gogo)   2016-07-07 13:11:00
能否分析一下洪兰译文XD
作者: michelleadio (H i d e)   2016-07-07 13:39:00
纯嘘1F补推
作者: hgs1906 (受遗弃之子)   2016-07-07 14:02:00
推 很有趣
作者: nebbia (nebbia)   2016-07-07 14:14:00
我觉得应该要做一下 permutation test
作者: thegod13 (thedog13)   2016-07-07 14:21:00
拉板凳囉
作者: islandqoo (You Don't Know Me )   2016-07-07 14:34:00
酷!!
作者: lin0817 (lin0817)   2016-07-07 15:08:00
推,想看分析洪兰的翻译作品
作者: celebleaf (Polaris)   2016-07-07 15:55:00
作者: guesting (茶君)   2016-07-07 16:26:00
推 有趣的方法
作者: elapseregret (不知何往)   2016-07-07 22:57:00
推!! 很有意思的研究!!
作者: galaxystyle (卍新北首席法骑卍)   2016-07-07 23:03:00
推!好特别又好有趣啊!
作者: ChouTzuyu (子瑜欸唷↘)   2016-07-07 23:05:00
好酷啊!
作者: carrothead (イズミ)   2016-07-07 23:54:00
好有意思啊!!
作者: scimonster (紫色的初夏)   2016-07-08 10:11:00
有趣 作品的好坏 跟 正牌作者是谁一样重要
作者: cloudworld (艾利欧特)   2016-07-08 13:52:00
作者: naminono (诺诺)   2016-07-08 14:18:00
我倒觉得词频已经是不错的feature了,因为能使用的资料少(曹的训练+测试只有四十回),而且还要排除容易被剧情影响的特征
作者: luciferii (路西瓜)   2016-07-09 08:24:00
其实应该要把同作者不同时期的作品都一起参考词频表才会比较准确
作者: Gosssiping (抠吸品)   2016-07-09 14:23:00
干超屌的 原始码会开源吗@@
作者: k800i (K800i)   2016-07-11 15:34:00
判词、情节、诗词等等是很重要的提点,可偏偏后四十回跟前面就是矛盾。而一大堆前人的笔记记载,都表示见过异本。这统计不错,虽然原始还无法用AI去模拟人脑如何判断文风,总是尝试开端,科学不就是这样,质疑修正,慢慢完备。考据版本这个,去红楼专版吵吧。
作者: ssd123698745 (noel)   2016-07-12 17:43:00
这篇只是提供一个角度看这问题,当然不是100%完善的方法,也没有要对文学价值作评价不懂有什么好激动

Links booklink

Contact Us: admin [ a t ] ucptt.com