南风金融网 - 中原最权威行情财经门户

热门关键词:  缪学刚  xxx  www.ymwears.cn    
热门: 对付勒索软件的利器:二级 还在为云存储掏冤枉钱?那 【MLinEcon文献推送1】文本 帮助你预防灾难的10款免费 【MLinEcon文献推送3】新闻 利用Intel傲腾存储制定更智

Python课程期末作业选编1:对小说《花千骨》文本及其评论态度的分析

来源:南风金融网 作者:南风金融网 人气: 发布时间:2020-02-06 20:55:07

? ? ? ? 编者注:2019年秋季学期,郭峰老师在上海财经大学为本科生开设了一门选修课程《Python语言与经济大数据分析》,以期末作业的形式完成了考核。部分学生完成的作业思路清晰,内容完整,展现出了利用Python语言这个工具独立完成一些简单工作的能力,特精选了几个作业,精简润色后,在本公众号上展示。


文|薛宗岳(上海财经大学公共经济与管理学院2017级投资经济班本科生)



《花千骨》 是2008年独家首发于晋江文学城的一部小说,内容“主要是讲述少女花千骨与长留上仙白子画之间关于责任、成长、取舍的纯爱虐恋。

这种网文本不会吸引我的关注,但自2015年改编自该网文的同名电视剧开始上映,由霍建华,赵丽颖主演,这为网文大大增加了知名度与关注。

图为“花千骨”2015年百度指数的搜索趋势

但另一方面,关注量也带来了不少争议,其中最大的争议在于《花千骨》抄袭的问题。批评者直言:“这是一部大拼盘作品。”[1]抄袭的最大对象是蜀客写的《重紫》。抄袭实锤,证据确凿,笔者关心的是电视剧上映对于读者对这本小说的评价有何影响。


因此本文将用python爬虫和情感分析等技巧,对文章文本进行分析,之后再对晋江文学城网友对该文的评论进行分析,主要关注于同名电视剧上映对读者的态度是否有影响,以及有何种影响。





snownpl可以进行中文分词,词性标注,情感分析,文本分类等多个工作,原理主要是朴素贝叶斯,本文主要使用其情感分析的功能,它会在0到1之间给一个分数,指态度为积极的概率。由于snownpl原生的语料库是用一个购物网站的评论,数量与种类都有局限,在准确度方面还有提升的空间。但是有一篇文章《利用500W条微博语料对评论进行情感分析》按步骤阐述了怎么利用500万条微博的预料对snownpl进行训练与改进[2],本文将根据这篇教程操作。



1.下载并利用语料库进行训练

作者提供了500万条微博语料的下载地址,必须用mysql打开。训练的机制主要是先用原先的评分方式对每一条微博语料进行分析,分值大于0.8的归入一个新的积极语料库,分值小于0.3的归入新的消极语料库,然后在根据这两个新语料库进行训练。这自然带来一个问题:这种方法训练完之后效果真的能更好吗?教程的作者持肯定态度,他认为会形成一个正面的循环,而且反复训练的话准确度还会提升。


语料库的训练过程是耗时最长的,如果用全部500万条数据进行训练我的电脑估计很难跑完,反复尝试后,决定用其中的50万条数据训练,训练了一晚上成功。


下图是教程中的最终效果:

这是我训练后实现的效果

这是原版:

奇怪的一点是,教程训练完最终效果的图中,第4,5,6,7句话和原版的打分完全一致,具体原因笔者也不甚了解。但是对比笔者训练后和原版的效果,在几句消极的话上,训练后的打分更低,在积极的话上我的打分可能会更高。不过总体差别不大,可以认为略有提升。


之后我尝试了其他的一些语句,发现还是如此。如果以后有时间可以找更多数据打好标签,分出样本集和训练集,进行训练并将训练完的和原版效果进行大样本的量化比较。


以上是对爬虫前对snownpl进行的准备工作。

1. 爬取每一章节的内容

由于晋江文学城具有反爬机制,如果爬虫过快网站会在接下来几个小时内封IP地址,打开这本书的任何一个章节都会报错,在代码中规定每爬一次休眠1秒即可解决。

最后总共爬取小说文本227698个字(因为vip限制,只能爬前63章)。


2.绘制文本词云图

对上述文字进行jieba分词。由于男主白子画的名字jieba无法识别,使用这行代码增加:。去除文本中的乱码、字母或数字后,在stopword文件里增加停用词,将无意义的副词或者标点符号加进该文件。最后使用jieba分词,制作词云图。


文本词云图

词频前三十的词分别为:花千骨? 师父? 白子画? 糖宝? 弟子? 十一? 长留? 茅山? 道? 霓? 漫天? 落? 掌门? 杀? 东方? 见? 尊上? 剑? 做? 起来 ?阡陌? 彧? 卿? 众人? 神器? 事? 吃? 出来? 妖魔? 云隐?


女主和男主在词频中的频率分为位列第一和第三。



3.计算男主和女主在各章的出现次数并画出柱形图:

可以看出,男主名字的出现频次远远少于女主,在很多章节甚至完全不出现。?


至此,对文本的分析告一段落,接下来分析晋江文学城中《花千骨》的评论。


这部分总共爬取各章节评论总计22180条,共计1866925个字。


1.爬取每一章的评论

在对文本分析时,首先要把每一章的评论内容爬取下来。但如果用requests.urlopen()爬晋江文学城,读取出来的网页源代码是乱码。

网页源代码中写得很清楚编码格式为gb2312,但无论用这个还是用gbk或gb18030的解码方式都是乱码,爬其他网站就没有此问题。


于是笔者决定使用requests.get()函数进行爬虫,这次成功了。这可能是因为requests.get()的方法更直接,减少了出错的可能性。



2.绘制评论词云图

从词云来看,评论总体还是积极的:

从词频上看,“抄袭”这个词确实反复出现,但相较而言出现频率不算高,排在55位。


出现次数最多的前55个词:

师傅 果果 喜欢 小骨 白子画 作者 骨头 爱 回复 花千骨 写 太 加油 东方 杀 大大 看到 好看 师傅 更新 呵呵 真的 感觉 可爱 偶 虐 不要 糖宝 文 大人 真是 其实 琉璃 希望 期待 话 出来 做死 终于 补分 快 嘿嘿 千骨 阡陌 不错 十一 女主 真 打分 小说 完 果子 抄袭



3.按年份统计评论数量
这里将评论分日期写入csv文件,然后用datetime处理成标准的格式,运用pandas进行统计。

最后绘出面积折线图:

由图可知评论最多的时候是在2008年,这一年这本书开始在晋江文学城更新,2015年花千骨电视剧上映时评论也突然增多,应该是电视剧导致曝光度增加带来的。

4.对评论整体进行态度分析

本文用snownpl每条评论的态度打分,并计算了总体评论的评分均值以及差评比率。如图所示:(打分低于0.4的被识别为差评)

总体上,评论是积极的。



5.各评分段评论数量

如图所示,这是用snownpl对每条评论打分后分段统计的数量。可以看出有评论的态度有两极化趋势,打分在0-0.1区间与0.9-1区间的评论明显高于相邻的区间。0.5-0.6的偏中性评论也较多,这可能就是很多无意义的水评论。总体上积极评论更多。


6.对评论分年份态度分析

本文用snownpl分别对各个年份的评论的态度打分,并计算了各个年份的评分均值以及差评比率。如图所示:


观察该图,总体上评论区的情感态度是积极的,在2008年至2013年,评论区的评论态度积极程度不断加强,然后转折点出现在2015年,这恰恰是《花千骨》电视剧上映的年份。这一年评论区的消极评论的比重相较于前一年猛增了一倍左右,之后差评比重不断上扬,同时评论分数的均值也在扭转上升态势开始急剧下跌。让人惊讶的是这个消极化趋势一直持续到2018年。


这说明《花千骨》电视剧的上映和其小说读者的评价很可能成负相关,而且鉴于消极化趋势持续时间之长,意味着电视剧影响可能非常深远。


这个现象背后的原因可能比较复杂,也不能妄下定论,但我们可以推测,这或许部分是由于其抄袭风波的发酵,也可能是电视剧让小说获得了更多的关注,这种网络言情小说在其小众圈子里可能评价很高,但当走向大众化时或许会和大众的口味不符,因此读者中持批评态度的人的比例会增大。也无法排除部分人并非小说读者,只是看了电视剧专门到晋江文学城的评论区下发表批评言论等干扰因素。





四、总结

本文综合运用python,对晋江文学城中《花千骨》的文本内容及其评论进行统计与分析,对snownpl进行训练与改进后,用其分析评论的情感态度,并与《花千骨》改编电视剧的上映时间相比较,发现情感态度转向负面的转折点就是电视剧上映的年份,并分析背后的可能原因。


在这个过程中,由于笔者经验不够充足以及思路也在变化,中间走了一些弯路,但是像这样的实操对python语言的学习是不可或缺、至关重要的。Python等编程语言可以简化很多复杂、重复的工作,学习这门语言实在是受益匪浅,对以后的学习也有很大帮助。




参考资料

[1]. 搜狐新闻 扒皮:《三生三世十里桃花》是抄袭的,《花千骨》也是抄袭,你造吗?.

http://www.sohu.com/a/126321194_564020. 2017-02-15


[2]. 少数pai. 利用500W条微博语料对评论进行情感分析. https://blog.csdn.net/karamos/article/details/80132231


责任编辑:南风金融网

最火资讯

首页 | 财经资讯 | 金融理财 | 价格行情

Copyright © 2012-2015 南风金融网门户站 版权所有 Power by DedeCms 豫ICP备12016580号  技术支持:南风金融网

电脑版 | 移动版