83163955 2019-04-29
《冰与火之歌》是由乔治·R·马丁所著的奇幻小说系列,由HBO改编成影视剧《权力的游戏》后在全球大热。
电视剧《权力的游戏》已播至最后一季,这正是仔细研究该剧原著的大好时机。本文将通过对书籍进行数字处理来揭示《冰与火之歌》的背后玄机。
怎样去客观地评价一本书呢?有没有一种模式,可以预测书籍或电视剧的剧情走向呢?未来的小说家和编剧们是否可以利用人工智能来构思情节,只消几周就写出一本书呢?马丁花了六年的时间才写完新作《魔龙的狂舞》,使得HBO的电视剧播到第六季时剧情进展竟超过了小说。如今,电视剧的进展已甩得原著望尘莫及!
有鉴于此,本文介绍了自然语言处理的一些概念,这是一个跨学科领域,旨在使用计算机编程处理大量自然语言数据。
注意,迄今为止出版的小说剧情大致与电视剧的一至六季吻合,但故事发展的时间轴略有不同。如果你已经追到了权游的最后一季或已读过出版的五卷小说,本文对你而言不会有任何剧透,可以继续阅读。对于其余的读者而言:在此做出剧透提醒!
词云形象地显示了五本书中的词汇使用频率。你知道乌鸦有很强的计数能力吗?最新研究表明,这种与人类几乎毫不相关的脊椎动物已经进化出了具有与人类相似神经元的端脑,可用来处理大量信息:https://www.pnas.org/content/112/25/7827
本文将介绍用数据处理解读《冰与火之歌》的三种方法,希望你既能享受其中又能有所收获:
处理文本时,自然语言处理使用Python的NLTK,可视化使用Seaborn,计算网络度量和图形则用Networkx。
1. 测量词汇多样性
首先,仔细研究文本的词汇丰富性和多样性。与研究生态系统中的生物多样性类似,我们也在研究诸如体积、变化率和密度等指标,以便用数字术语来表示感知丰富度:
· 体积:文本的长度(以字数表示)
· 变化率:不同词汇数量与总词汇数量的比值
· 密度:对信息密度的估计度量
比起莎士比亚全集(近80万字),《冰与火之歌》算是一个大部头,全文有近180万字。(到目前为止)马丁行文已经用了22000个不同的单词,词汇变化率约为1%。
这里,变化率等于不同的单词数除以文本中的总单词数,也称为种类—文本比率(TTR)。它是用来衡量文本复杂性、词汇丰富程度以及重复避免程度的一项标准。我们使用词形还原的技术来避免把同一单词的变体当作新词而重复计算。例如,动词run 和ran(run 过去时形式)应该计为一个单词,词形还原帮助将各单词还原为词根。
据说,莎士比亚是世界上词汇量最广博的作家之一,他的《哈姆雷特》共计3万词,其中含有4200个不同单词,词汇变化率十分惊人,高达13%!然而,这两部著作字数差距悬殊,比较起来显得不够公平,因为随着字数越来越多,保证词汇多样性的难度可想而知。
研究莎士比亚的全部作品,我们最终得到的变化率约为3%。进一步研究,可以采用变化率的平均变动值(一次看一个1000字的窗口),最终马丁的TTR为43%,而莎士比亚则为41%。值得注意的是,马丁先生为小说中所有的人物、器具和地方起了名字,这些名称占据了词汇变化率的很大一部分。
将《冰与火之歌》(ASOIF)、J.R.R托尔金的《指环王》(LOTR),莎士比亚的《哈姆雷特》和《莎翁全集》四部作品进行比较。从变化率的平均变动值来看,尽管三位作者作品中运用新词汇的比例不同,平均变动值几乎持平。
运用词汇词数量除以词总数来计算密度。词汇词包括名词、形容词、动词和副词。这些类型的单词承载着关键信息,使得文本具有意义。剩下的词则称为功能词,包括冠词(a,the)、介词(on,at,in)和连词(and,or,but)。功能词对于文本的语法结构来说很重要,但几乎与文本的意思无关。因此,密度可以体现文本涵盖信息量的大小。
平均来看,书面词汇密度远高于口语词汇密度。为了计算密度,需要使用词性标注(POS),也称为语法标记,它可以帮助我们识别所有单词的各种语法形式。使用POS标记时有几种不同的技术可供选择,它们是自然语言处理的重要部分。例如,POS算法要能区分单词的词性,比如“duck”这个词是名词还是动词,具体还是要看语境。
实际上,前面提到的词形还原的正常运行依赖于POS标记。诸如隐马尔科夫模型之类的算法通过参考邻近词来来识别某个单词的正确形式,这一算法已经得到充分验证,具有代表性。马丁的词汇密度为58%,而莎士比亚的词汇密度为61%。这与大多数英文书面词汇密度超过40%,而口语词汇密度平均不到40%的估计相一致。鉴于莎士比亚的戏剧以对话为主,这更佐证了其作品不凡的词汇密度和词汇丰富性。
1948年由劳伦斯·奥利弗执导并演绎的《哈姆雷特》
实际上,短语“to be or not to be”算下来密度只有17%,其中“to be”被当作一个助动词而不是词汇词。然而,大多数人都觉得这个短语令人难忘。从词汇丰富性的研究中可以得出:应该谨慎地评价不同指标,不深入研究文本,就无法体会个中差异。
这本书由几个篇章构成。《冰与火之歌》这一篇章通过不同人物的视点(POV)来进行叙述。从主要视点人物中选三个,就可以绘制一个单词分散图,从而了解贯穿整个小说的各种不同名称:
可以清楚地看到,人物足迹(每个点代表沿文本某一点出现的名称)确实根据不同的焦点集中在不同的地方。我们还观察到,在最新一卷《魔龙的狂舞》中,丹妮莉丝这一人物出现频度开始提升,影响力也在加强。在第四卷《群鸦的盛宴》中,琼恩、提利昂和丹妮莉丝这三个角色足迹有明显的空白。从书的索引可以发现,这一卷中没有以这三个角色视角讲述的章节,瑟曦和詹姆出镜率却很高。不过,就算在这些篇章中,琼恩和提利昂也还是有过短暂的出镜。
通过计算单词频率发现有很多对话谈到了‘死’(1690次)和‘血’(1629次)。紧随其后的是“爱”,这个词出现了703次。但涉及到这些词的情节就比其他情节更血腥,或更令人心潮澎湃吗?下面来具体看一些摘选的单词,根据它们在小说中的出现情况来绘制它们的核密度估计(KDE)。KDE基于一系列观察来估计和绘制隐藏信息分布。它不是干巴巴地呈现结果,而是有助于我们获得较为平滑的直方图,并针对曲线走向进行调整。
哪条曲线代表爱呢?
在《列王的纷争》这一卷的下半部分中,涉及死亡的表达出现频率似乎特别高,在前两卷中,“死”与“血”的曲线波动也高度吻合。接着与血有关的表达开始减少,在《群鸦的盛宴》一卷中这一频率几乎跌至谷底。有趣的是,与血有关的表达出现频率最低时,刚好与爱有关表达的频率恰好达到峰值。正如我们在角色足迹分析中记录的那样,第四卷重点突出了富有同情心的兰尼斯特兄弟,在这一卷里他们展现出了前所未有的浓厚的爱。在第五卷中,与血有关表达出现的频率重返高峰。死亡似乎也是无所不在。也许这一卷旨在强调丹妮莉丝身上“龙的血统”,因此这样的频率起伏并不显得奇怪。逐个来看每一卷的词云,会发现亲情在其中起着重要作用。父系尤为重要,曾提及2823次,竟接近本文总字数!
琼恩和艾德(又名奈德)主导着《权力的游戏》故事走向
《列王的纷争》中,提利昂逐渐成为中心人物,异鬼也被多次提及
《冰雨的风暴》中多次出现的你的父亲是谁?他是什么身份?
《群鸦的盛宴》中叙事视角换成了瑟曦和詹姆
《魔龙的狂舞》中一位女王登场,掀起血雨腥风
这五本书从头至尾共出现了两百多个有名有姓的人物,他们的生存与死亡,关联与羁绊,推进了故事情节发展。但该如何用数字来展现出这些人物关系?能从这些盘根错节的羁绊中总结出故事人物的重要性吗?
早前,对各所选人物的总体研究都是孤立的,但现在,我们试图从他们之间的关系来分析,并采用网络理论,这是一个较新的数学领域,已被广泛运用于分析各类事物,从电信网络到搜索引擎,无所不包。首先,需要一个统一标准来衡量两人物(节点)间一段关系的重要性。从一个简单的算法讲起,该算法基于两个人物的共同提及频次。请看下面这个句子:
“艾德·史塔克勋爵是我父亲”,琼恩冷冷地承认。
(在原文中),艾德(又名内德)与琼恩两个单词之间隔了四个单词,因此,在这个故事发展到这一阶段时,可简单地把他们的关系称为“亲近”。两个名字出现地越近越频繁,那他们在故事中的关系就越错杂,这两个名字也更能通过数字来反映其关系亲密性。打开一个包含25词的窗口,数一数该窗口内所有名字配对的共现频次,我们就能用这一数字作为衡量这段关系的“权重”。例如:“琼恩”这个名字与 “艾德”的这个名字相距25词以内,这样的情形共出现51次。对所有加权名字对进行可视化处理,得到下图,线条的粗细与这些名字对之间的共现数量成正比:
书中出现人物的亲密度网状图通过Python和Networkx绘制而成。
看起来像是一件艺术品,但从分析学的角度来看,所含信息过于庞杂,所以用处不大。那么接下来看看网络理论能否让可视化结果有所改观吧。网络理论能帮我们通过评估各人物在整个互相关联的人物网中的重要性来计算出最重要的角色。具体来说,尝试使用网络理论中的四个核心的中心性度量来计算单个人物(节点)相对于所有其他人物(节点)的重要性:
这种中心性度量通常用于Web搜索算法。
· 威望中心性(又称特征向量中心性):不关注连接到某个节点的数量,而是关注连接节点的重要性。高度连接的节点被认为比较少连接的节点更重要。这种中心性度量常用于网页搜索算法中。
计算《冰与火之歌》中所有人物的上述指标,最终获得位居前列的以下几个角色:
计算人物的各种中心性
从图中可以看出,由于琼恩、提利昂和詹姆在与所有其他角色的联系上具有中心地位,因此他们是最重要的角色。另一方面,丹妮莉丝与众角色的联系并没有很好,只在中介中心性方面排在第24位,反映了在地理位置影响下,她与维斯特洛大陆上各人物的联系不甚紧密。那么,哪些指标最适合作为重要性的指标?鉴于作者似乎在以稳定的速度写死故事中的一些关键人物,中介中心性就显得格外有趣。中介中心性提供了衡量替换单个节点难度的标准,即在不大幅影响人物网其余部分的前提下杀死一个角色。
考虑到这些因素,再仔细研究一下主要角色。以某个角色视角叙述超过五章的,这个角色就会算作主要角色(红色节点)。此外,还添加了一些角色(灰色节点),他们中介中心性很强,但不是视点人物。图中代表角色的圆圈大小反映着此角色中介中心性的强弱。与前文一致,线条的宽度与人物之间的共现数成正比:
通过中介中心性圆形可视化将《冰与火之歌》中的主要角色连接起来。
用同样的数据绘制另一个图形- 谁将幸存下来并登上铁王座?
该图有助于我们直观地了解主要角色的相对重要性。总之,显而易见,从网络理论角度看,琼恩是最重要的角色,为了使故事线有所交叉并保持连贯,他不太可能被杀掉。琼恩和山姆二人联手时最为明智,他们的这种联系是所有这类联系中最强的一对,两角色的共现多于262次。但两人在关系的中心性方面存在巨大差异,比起联系中心性很强的琼恩,山姆更像是一个位于边缘的节点。其他史塔克手足间的联系弱了很多,且主要存在于兄弟间(布兰和罗柏)及姐妹间(珊莎和艾莉亚)。同时,提利昂是另一重要角色,这一点也很明显。他是连接史塔克家族与兰尼斯特家族(以及后面的坦格利安家族)的纽带。在这五卷书里,丹妮莉丝确实处于边缘地位,与所有中心性最强的连接都保持一定距离,仅靠附加的充当“桥梁”的角色与维斯特洛大陆有所连接。大概是她已有了龙,就不需要多少人类朋友了吧。
胜算要比看上去的大?