16

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

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzI1MTE2ODg4MA%3D%3D&%3Bmid=2650071724&%3Bidx=1&%3Bsn=831a3153d824839ce86bbb460b761870
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

准备数据

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

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

jqa2YnB.jpg!web

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

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

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

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

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

数据分析

章节数对比

aQ3eaum.png!web

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

用词丰富程度

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

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

zQ7R3af.png!web

情感分析

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

  • neg:负面 得分

  • neu:中性 得分

  • pos:积极得分

  • compound: 综合情感得分

qeA3yeB.jpg!web

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

n6vEBzV.jpg!web

近期文章


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK