
当我听说去年秋天滑铁卢提供基于哈利·波特的英语文学课程时,我立即对有机会参加该课程感兴趣。 我的意思是,您真的有多少次机会说自己上过大学的哈利波特 课程 ? 更不用说这是与我通常的技术计算机科学/工程类课程完全不同的选修课,我喜欢阅读和写作作为分散我注意力的一种方式,而且我确实认为自己是哈利·波特的狂热男孩。 因此,我报名参加了这个春季学期的课程,除了自适应算法,分布式计算和现场生态学之外,我发现自己也选择了流行波特。
本课程中的第三个也是最后一个任务是一个开放式项目,在这个项目中,它实际上可以是任何东西 。 以您选择的格式进行的作业,可以根据需要选择创意或技术。 考虑到这种灵活性,我决定借此机会尝试做一些以前从未真正做过的有趣的事情-对小说的文本分析 。
根据哥伦比亚大学CS部门的这篇论文,文本分析描述如下:
- 博客文章:印度的军事需要为海外任务做好准备
- 热门发布! TJ Hope的Hood Lemonade 3现在在Kindle上
- 如果我们节省书店怎么办?
- “机器,平台,人群”启动书,LiveChat视频
- 终极年度阅读清单-适用于儿童,青少年和成人#ReadingList #Books
当我们对文本进行文本分析时,我们会对可能由该文本做出的一些最有可能的解释做出有根据的猜测
因此,我继续进行快速搜索,找到了.txt格式的图书系列,并进行了分析。 我主要将Python与NLTK和Pattern库一起用作分析的主要工具。 我不希望这篇文章在我的实现中过于技术化以收集数据,但是我确实要查看我的代码。
在讨论某些结果之前,我想先说一下我不是数据专家,以此作为开头。 对于经验丰富的分析师和数据科学家读者,请随时批评我的分析(或提供一些反馈)。 我利用这次作业作为学习的机会,并在以哈利·波特为基础的同时肯定地学到了一些有趣的自然语言处理和文本分析技术。 因此,我想到了一些结果。
字数统计
因此,这是一个很好的入门方法。 让我们只计算每本小说中的单词总数 :

菲尼克斯勋章的长度是阿兹卡班囚徒的两倍 ? 是的,我们不需要进行文本分析就可以看出这一点,仅通过查看实际书本大小就可以明显看出这一点。 但是,为什么从第四本书开始,这些书会变得更长呢?
显然,罗琳在《火焰杯》中写了一个巨大的阴谋洞,并花了一半的书试图修复它。 除此之外,您会相信罗琳在这一点上拥有更多的创作自由来接触小说。 通过发行《火焰杯》,罗琳显然吸引了观众。 为情节,人物和场景奠定了坚实的基础,从而使罗琳可以继续构建世界,并探索该系列继续朝着更黑暗的主题发展。
好的,这很简单,为什么我们不看看一些有趣的地方 。 以下是整个系列中各种设置的字数统计:

霍格沃茨显然是本系列中最常提及的地点,但是我们可以看到有关其他一些地点的有趣信息。 在阿兹卡班的囚徒中最经常提到阿兹卡班,从那以后,随着人们被遣送出狱和越狱,地点被一再提及。 后来的小说中都提到 了魔法部和格里莫尔德广场等地方 ,但最引人注目的是凤凰社,魔法部代表乌姆里奇接管了霍格沃茨,而该勋章以格里莫尔德广场为总部。
除了位置之外,我们为什么不查看另一个有趣的计数数字-提及咒语/咒语的次数。 该系列中使用了各种各样的咒语和咒语,但是一些更流行的咒语和咒语包括:
- Expecto Patronum (精神守护者召唤)
- Accio (手头召唤物体)
- Expelliarmus (撤防)
- 笨拙 (昏迷)
- 发光(手电筒)

随着《阿兹卡班囚徒》中的摄魂怪的介绍,发现Expecto Patronum是该书中使用最多的咒语就不足为奇了。 但是仅在那本小说中,就有将近25条明确提及,这是很反常的。 进一步检查文本,我们发现在《 摄魂怪之吻》一章中,当哈利,赫敏和小天狼星被摄魂怪包围时,角色明确使用了Expecto Patronum共16次 。
摄魂怪正在关门,离他们只有十英尺。 他们在哈利和赫敏周围形成了一堵坚固的墙,并且越来越近了。 “ EXPERCTO PATRONUM!” Harry大喊,试图掩盖住他耳朵里的尖叫声。 “呼神护卫!”
最后,我们还有以下不可原谅的诅咒 : Imperio (精神控制), Crucio (酷刑)和Avada Kedavra (杀戮)。 当它们被引入火焰杯时,不可原谅的诅咒的使用率开始达到顶峰,然后下降直至死亡圣器在最后的战斗中被再次使用。

词分散
获得某些单词的总数可以提供一些有趣的见解,但是另一个有趣的分析是观察单词在整个文本中的相对位置。 单词分散,或词汇分散,是特定单词的出现。 这本质上是确定特定单词相对于整个文本出现的位置。 以下是《哲学家之石》中某些字符名称的单词分散图,其中各章的提及程度很高:

哈里是该系列的主要人物,很显然,他的名字在整本书中都得到了广泛提及。 在最初的章节之后, 海格发现了一大堆海格 ,因为他找到了哈利并协助他前往对角巷。 罗恩 ( Hon) , 赫尔莫因(Hermoine)和马尔福(Malfoy)是在哈利(Harry)到达第9平台和第三个季度以及霍格沃茨特快列车上时首次介绍的。 最初提到邓布利多是在他离开哈里(Harry)到Privet Drive时,但与斯内普(Snape)一起 ,当他们到达霍格沃茨(Hogwarts)时,经常被提及。 伏地魔在本书中很少提及,因为大多数人物仍将他称为“他必须不被提名的人”,但最后通过他的一连串提及就可以明显看出他通过基雷尔的归来。
因此,查看主要角色的散布图并不能提供太多的见解,它们通常会在整个系列中清楚提及。 那么为什么我们不看整个系列中一些有趣的辅助角色的散布图:

我决定研究的更有趣的角色之一是达德利·达斯利 ( Dudley Dursley) 。 由于每本小说通常都有哈利从《女贞路》开始,所以我们可以在每本书的开头看到成堆的达德利提及。 另一方面, 小天狼星·布莱克 ( Sirius Black)直到第三本书才露面,但从那以后就被频繁提及,甚至在他死后的尸检中也是如此。 Triwizard Tournament的参与者Viktor Krum和Cedric Diggory以及记者Rita Skeeter在《火焰杯》中获得了显着的成就 ,而Bellatrix Lestrange和Andromenda Tonks姐妹则在《凤凰社》中被介绍,并因其参与了战争而多次提及。最后两本书。
情绪分析
正如我之前提到的,随着系列的发展,对诸如谋杀之类的主题进行了更彻底的探索,罗琳无疑开始涉猎更黑暗的主题。 为了对此进行更详细的调查,我们可以对文本进行情感分析 。 情感分析是对文本片段进行识别和分类以确定其特定态度(例如肯定,否定或中立)的过程。
对于此分析,我将使用Python库Pattern进行简化的情感表达方法。 模式提供了一个情感库,该库使用一组预定义的形容词( 好 , 坏 , 惊人 , 令人 不快 等 ),这些形容词在产品评论中频繁出现,并带有情感分数。
使用此方法,我们可以根据极性 (负↔正)和主观性 (客观↔主观)对句子进行分类。 极性得分的范围从-1(负)到1(正),而主观得分的范围从0(客观)到1(主观)。 例如:
排名第四的Privet Drive的Dursley夫妇很自豪地说他们很正常,非常感谢。
该句子的情感评分为(0.403,0.637) ,这意味着该句子在正面和主观方面更多。 另一方面:
“他总是挥霍一切!”他在哈利的母亲怀抱中向哈利开了个讨厌的笑容。
此句子的情感评分为(-1.0,1.0) ,表明这是一个非常否定的陈述,也非常主观。
当达德利和母亲一起到达厨房时,哈利正在煎鸡蛋。
上面的句子是中立的,既不是肯定的也不是否定的,得分为(0,0) 。
对于整体分析,让我们将极性得分为0的句子视为中立,小于0的句子为负,大于0的句子为正。 让我们仔细阅读每本书,计算中性,否定和肯定句子的百分比 ,并查看随着系列进展的趋势:

因此,随着系列的进行,带有负面情绪的句子所占的百分比会增加,从《凤凰社》开始便有很大的增加,这表明该系列在最终书籍中的确变暗了。
需要注意的一个有趣发现是,每本书中中性句子的比例仍然很高 。 这并不奇怪。 在写作中,大多数陈述性句子并没有真正附加任何情感。 但是关于系列的另一个原因是我们没有使用经过训练的文本集 。
前面我提到过,我们使用的是Pattern的预定义形容词集,因此它不能真正识别Harry Potter的特定情感。 例如,以下句子被认为是中立的,得分为(0,0) :
“那就杀了他,傻瓜,做吧!”伏地魔尖叫着
包含kill和Voldemort单词的任何句子都应该绝对具有否定含义,但是这些很可能未包含在Pattern的库中,因此它无法正确地对该句子进行分类。
因此,使用Pattern进行情感分析并不完全完美,但是我们为什么不看看该系列中一些有趣的肯定句子 :
那是哈利有史以来最好的圣诞节。 (1.0,0.3)
这是一场美味的盛宴; 大厅里回荡着谈话,笑声和刀叉声。 (1.0,1.0)
像海格和小天狼星这样的人难道没有告诉哈利他父亲过得多么美好吗? (1.0,1.0)
”赫敏说:“我为什么不应该这样呢? (1.0,1.0)
从所有这些事情中,哈里推断出金妮,乃至内维尔和露娜,以及她,都在尽最大的努力继续邓布利多军队。 (1.0,0.4)
“您以霍格沃茨的两位校长而得名。 其中一个是斯莱特林(Slytherin),他可能是我所认识的最勇敢的人。” (1.0,1.0)
连同一些更否定的句子 :
麦格教授说:“我很恶心。” (-1.0,0.8)
摄魂怪使一个人重温人生中最糟糕的时刻。 (-1.0,1.0)
穆迪再次举起魔杖,将魔杖指向蜘蛛,喃喃地说:“克鲁西奥!”蜘蛛的腿立刻向身体弯曲。 它翻了个身,开始可怕地抽动着,从一边摇摆到另一边。 (-1.0,1.0)
“我讨厌那个斯基特女人!”她野蛮地爆发。 (-1.0,0.9)
“他敢-他敢-”贝拉特里克斯语无伦次地尖叫。 “-他站在那儿-肮脏的混血-” (-1.0,1.0)
校长死于我们一位同事的手中,这对霍格沃茨的历史是一个可怕的污点。 (-1.0,1.0)
我们可以使用Pattern来确定基本情绪,尽管使用经过训练的书套肯定会改善我们在这些书中确定情绪的方式,这也许是未来的项目。
语法计数
现在,我们通常对句子进行研究,为什么不分解这些句子并研究其适当的词性。 在文本分析中,称为令牌 化的过程用于将文本分解为单词,短语,符号或称为令牌的其他有意义的元素。
将文本分解为标记,我们可以进一步将标记分类为它们各自的语音部分,例如它是名词还是动词。 例如,标记以下句子:
哈利·波特在许多方面都是个非常不寻常的男孩。
结果为以下标记:
[“哈利”,“波特”,“是”,“一个”,“高度”,“不寻常”,“男孩”,“中”,“许多”,“路”,“。”]
如果将每个标记标记为语音的一部分,则会得到以下结果:
[('Harry','NNP'),('Potter','NNP'),('was','VBD'),('a','DT'),('highly','RB') ,('unusual','JJ'),('boy','NN'),('in','IN'),('many','JJ'),('ways','NNS') ,('。','。')]
它确定“ 哈利”为NNP (专有名词),“ 为”为VDB (过去时动词),“ 高度”为RB (副词)。 此处提供了每个标签含义的完整列表。
现在我们可以识别词性了,让我们开始计算一些形容词,动词,副词和名词:

随着主要系列剧在霍格沃茨举行,可以肯定的是,最流行的非专有名词是“ room”。 有趣的是,“事工”和“学校”也成为顶级名词。
对于形容词,我们可以看到罗琳对颜色的偏爱,其中“白色”,“金色”(也许是打喷嚏吗?)和“黑色”都是本系列前15名中的一部分。 当然,由于这本书是关于巫师和女巫的,我们也确实在那里发现了“魔术”。
人际关系
寻找角色之间的特定关系该怎么办? 为此,让我们看看在文本中所有出现的特定字符,例如Harry。 对于Harry在文本中出现的每个实例,让我们观察一下Harry发生前后的文本字符切片,例如50个文本字符 。 在此切片中,让我们看看第二个字符(例如罗恩)出现了多少次。 让我们将其计算为Ron在切片中出现的次数占切片总数的百分比 。
对于观察哈利(Harry)文本片段中罗恩(Ron)出现的特定示例,从这7本书中获得了以下百分比:
哈里与罗恩:[0.153,0.192,0.173,0.149 0.133,0.127,0.144]
这似乎很一致,罗恩平均出现在哈利的文字片段中的时间约为15%。 我们为什么不观察Harry文字切片中的其他字符,并在绘图上进行比较:

由于Ron和Hermione是主要的辅助角色,我们发现它们在Harry文本片段中被发现的比例最高,因此我们可以说Harry与这些角色之间的联系最紧密。
请注意,我们在阿兹卡班囚犯和混血王子中发现了赫敏和邓布利多的百分比峰值。 这是由于赫敏在阿兹卡班囚徒的最后部分中与哈利一起度过了很多时间,以及哈利与半血王子中的邓布利多一起进行了“暴动”课程,以及他们消灭魂器的任务。
这种检查文本片段中字符的方法不是完全双向的,因此让我们检查另一个字符。 让我们使用Ron作为主要角色文本片段,并检查Ron文本片段中Harry和Hermione的实例:

因此,从罗恩(Ron)的角度来看,我们发现赫敏在他的文字片段中出现了强劲的增长趋势。 也许我们可以通过观察这种趋势来预测它们在早期小说中的关系?
结论
《哈利·波特》系列显然有大量的文字和各种各样的单词,可以轻松地以不同的方式进行分析。 我在上面提供了几种可以用来分析文本的方法,但这绝对不是详尽无遗的,还有许多其他方法可以完成。