用Python对哈利波特系列小说进行情感分析

Python&Stata数据采集与数据分析实证前沿寒假工作坊 现在开始招生了,有兴趣的同学和老师可以戳进来了解

准备数据

现有的数据是一部小说放在一个txt里,我们想按照章节(列表中第一个就是章节1的内容,列表中第二个是章节2的内容)进行分析,这就需要用到正则表达式整理数据。

比如我们先看看 01-Harry Potter and the Sorcerer’s Stone.txt” 里的章节情况,我们打开txt

经过检索发现,所有章节存在规律性表达

我们先熟悉下正则,使用这个设计一个模板pattern提取章节信息

熟悉上面的正则表达式操作,我们想更精准一些。我准备了一个test文本,与实际小说中章节目录表达相似,只不过文本更短,更利于理解。按照我们的预期,我们数据中只有5个章节,那幺列表的长度应该是5。这样操作后的列表中第一个内容就是章节1的内容,列表中第二个内容是章节2的内容。

能得到哈利波特的章节内容列表

也就意味着我们可以做真正的文本分析了

数据分析

章节数对比

从上面可以看出哈利波特系列小说的后四部章节数据较多(这分析没啥大用处,主要是练习)

用词丰富程度

如果说一句100个词的句子,同时词语不带重样的,那幺用词的丰富程度为100。

而如果说同样长度的句子,只用到20个词语,那幺用词的丰富程度为100/20=5。

情感分析

哈利波特系列小说情绪发展趋势,这里使用VADER,有现成的库vaderSentiment,这里使用其中的polarity_scores函数,可以得到

neg:负面 得分

neu:中性 得分

pos:积极得分

compound: 综合情感得分

曲线不够平滑,为了熨平曲线波动,自定义了一个函数

近期文章