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

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

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

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


[
Chapter
][空格][整数][换行符\n][可能含有空格的英文标题][换行符\n]

我们先熟悉下正则,使用这个设计一个模板pattern提取章节信息 熟悉上面的正则表达式操作,我们想更精准一些。我准备了一个test文本,与实际小说中章节目录表达相似,只不过文本更短,更利于理解。按照我们的预期,我们数据中只有5个章节,那么列表的长度应该是5。这样操作后的列表中第一个内容就是章节1的内容,列表中第二个内容是章节2的内容。 能得到哈利波特的章节内容列表

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

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

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

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

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

  • neg:负面得分

  • neu:中性得分

  • pos:积极得分

  • compound: 综合情感得分

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