版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中国矿业大学计算机学院2018级本科生课程报告课程名称信息内容安全报告题目scrapy爬虫+文本分类报告时间2021.7.6姓名刘昊学号08182942任课教师曹天杰2020-2021(二)《信息内容安全》课程报告评分表序号毕业要求课程教学目标考查方式与考查点占比得分12.3目标1:掌握信息内容安全的基本概念、分类、原理和相关技术,能够根据课程基本知识对信息内容安全领域出现的问题进行归类、分析、并有初步分析和解决问题的能力。通过课堂讲授和课堂研讨掌握信息内容安全概念和理论知识。40%3.2目标2:掌握信息内容安全处理相关的理论、技术以及健全的评价体系,能够根据具体问题分析算法、设计算法、实现算法并能综合评价算法。24.3目标3:掌握信息内容安全的基础知识,针对具体问题和要求选择正确的技术路线,通过在实验环境中进行仿真实验并能根据算法特点进行攻击测试和综合性能评价,得到具有参考价值的结论。课程报告;实现有关信息内容安全的一个软件系统。分析和对比各项技术,选择相应的技术进行算法设计并在实验环境中进行仿真实验和性能评价,得到有效结论。60%总分100%评阅人:2021年7月10日报告摘要使用了python中的scrapy爬虫框架爬取了豆瓣电影TOP250的电影相关信息,对这些信息进行了初步的统计分析,使用jieba分词工具对爬取的电影简介进行了分词及提取关键词的操作。还爬取了短评最多的电影的短评,但是由于豆瓣的限制,只能爬取到1500条短评。在进行数据清洗后将其按照评分打上对应的标签,之后生成训练集和测试集。使用fasttext分本分类工具和CNN对训练集进行有监督的学习,得到分类模型,最后使用测试集进行测试,评估模型的准确率。关键词:scrapy;fasttext;监督学习;
报告正文scrapy爬虫scrapy是完全使用python语言编写的开源的爬虫框架。scrapy是基于twisted异步框架实现的,所以事件之间是异步非阻塞的。scrapy中已经实现了爬虫关键的部分,用户只需要编写几个模块就可以快速轻松的爬取网页内容。数据流图1.1scrapy数据流scrapy框架的数据流如图1.1所示,数据流是由引擎控制的,流动顺序如下。爬虫spiders将请求对象requests发送至引擎。引擎将请求对象交给调度器对若干请求进行调度,然后接收后续的请求。调度器将排序的第一个请求交给引擎。引擎将请求通过下载中间件送至下载器。请求页面下载完成后,下载器生成一个响应,再通过下载中间件送至引擎。引擎接收响应并将其送至爬虫做处理,中间通过爬虫中间件。爬虫处理响应,将需要的内容提取出来,和新的请求一并送至引擎。引擎将提取的内容送至管道,将请求送至调度器。重复上述步骤,直至调度器没有新的请求。组件功能引擎:控制所有组件之间的数据流,当特定行为发生时触发事件。调度器:从引擎接收请求加入请求队列,当前请求完成后传送下一请求给引擎。下载器:下载请求页面,生成响应,送至引擎。爬虫:这是需要用户编写的组件,实现解析响应、提取内容和生成新请求。管道:处理爬取的内容,一般为数据清洗、验证和可持续爬虫,如保存至数据库。下载中间件:处理引擎和下载器之间传送的请求和响应。爬虫中间件:处理引擎和爬虫之间传送的请求、响应和抓取的内容。全局设置在settings.py文件中进行全局的设置。主要的设置有设置下载延时为5秒,防止请求下载过快而被检测到;开启cookies,之后再进行请求的时候会自动带上上一次请求的cookies而无需再次添加;设置不遵循robots协议,豆瓣只允许几个特定的爬虫爬取其网页信息,所以想要爬取内容就要设置不遵循robots协议;设置日志等级为warning级别,使得输出信息更简洁;开启pipeline,需要指定pipeline及其优先级,多个管道之间通过优先级设置数据流通过管道的顺序,数字越小的优先级越高,管道内也可以区分爬虫,让不同的爬虫经过不同的管道;设置useragent,之后在请求的时候都会自动带上该useragent,一开始使用的是faker库来伪造useragent,每次请求时携带不同的useragent,但是由于没有使用代理,请求发送使用同一IP,useragent不同导致被检测到,IP被封禁了一段时间,所以后来直接使用真实的useragent。关键代码实现pipeline负责将爬取到的数据保存到本地的json文件中。电影信息爬虫文件中,top250页面列出了top250榜单,所以以此作为起始URL,请求该页面之后,在响应中使用XPATH提取出页面中的电影的详情页,构造新的请求并指定其回调函数,即由回调函数处理其对应的响应。之后构造下一页的URL,继续请求下一页。因为scrapy是基于twisted实现的异步框架,所以在请求下一页时,前一页的请求也在处理,使爬虫更快速。在电影的详情页中,继续使用XPATH提取信息,之后将爬取的内容传送给引擎就好了。对于评论的爬取,因为不同电影之间的短评相关度不大,所以这里只爬取了两部电影的短评。另外,豆瓣限制了用户浏览短评的数量,只能看到500条短评,不管登录与否,正常用户使用浏览器也是只能看到500条短评。豆瓣还将短评按照评分分成了三类,一星和二星的为低,percenttype=low,三星的为中,middle,四星和五星的为高,high。所以可以分三类请求,各自500条,一共1500条短评。因为在爬取电影信息时IP被封禁,要求必须登录才能浏览网页,所以爬取短评时需要登录。如果要模拟登录的话,豆瓣使用了滑动验证码,破解滑动验证码需要使用selenium库,这里为了简单,就直接将登录的cookies添加到请求中,之后的请求就都是登录状态了。请求评论页之后,再构造三种评论的URL,发起请求并指定其回调函数。回调函数就处理响应,使用XPATH提取信息并实现翻页就好了。数据清洗与统计分析爬取下来的数据是比较生硬的,会含有一些空格和\n,部分信息含有不必要的字符,比如短评的数量,“全部165944条”,可以直接去掉不必要的字符,改为整数165944,主要是为了方便之后的统计工作,整数可以直接排序,原本的字符串不便于统计。数据清洗主要利用pandas库,先读取保存在本地的json文件,之后pandas就会形成数据帧dataframe并分门别类,然后在数据帧的每一类上apply一个函数即可实现数据清洗。清洗之后就可以进行统计了。简单的统计由排序即可实现,如电影得分排名、电影时长排名、打分人数排名等。复杂一点的统计,如入围榜单作品数量最多的导演排名、演员排名、电影所属国家地区排名、电影使用语言排名等,就不能直接排序了,但是思路大概是一致的。以导演为例,先遍历所有电影,得到所有电影导演的列表,之后再遍历一遍,将作品加入其所属导演的列表,最后统计排序就可以了。在电影类别的统计中,剧情类最多,有184部之多,因为很多电影都带有剧情这个标签;其次是喜剧,56部,爱情55部。国家地区的统计中,美国135部,超过了所有其他国家地区的总和,好莱坞的地位无可撼动,但是在三年前的统计中,好莱坞的作品数量是141,好莱坞的地位是有所下降的,罕有新电影入围,都是些经典电影;其次是日本36部,其中多为动画,日本的动画行业还是领先国内很多,需要追赶;英国电影也是36部;之后是中国香港29部,港片也在没落;然后就是中国大陆了,25部,三年前这个数字还是16部,说明电影行业在不断进步,另一方面人们的审美也在变化,这是文化自信的结果。电影导演的排行中,宫崎骏以8部作品位列第一,其次是诺兰7部,斯皮尔伯格6部,华人导演李安和王家卫以5部作品紧随其后,鬼才导演姜文也有3部作品入围,导演榜单上都是些著名大导演。电影语言的排名,毫无疑问英语最多162部,其次是日语46部,然后是汉语普通话41部。爬取的电影信息中还有电影的简介,使用jieba分词工具对所有电影的简介进行了分词和去停用词,最后使用jieba自带的关键词提取函数提取了关键词,jieba提供了两种算法,TF-IDF和TextRank,二者结果有些许不同。对于短评数据同样先进行数据清洗,之后按照用户打分将短评分为两类,大于等于三星的视为喜欢该电影,小于三星的视为不喜欢该电影。然后给所有短评打上标签,jieba分词并去掉停用词,用作之后有监督学习的训练和测试的数据集。fasttext文本分类fasttext是Facebook开源的一个词向量与文本分类工具,在2016年开源,典型应用场景是“带监督的文本分类问题”。提供简单而高效的文本分类和表征学习的方法,性能比肩深度学习而且速度更快。fasttext结合了自然语言处理和机器学习中最成功的理念。这些包括了使用词袋以及n-gram袋表征语句,还有使用子字(subword)信息,并通过隐藏表征在类别间共享信息。另外采用了一个softmax层级(利用了类别不均衡分布的优势)来加速运算过程。fasttext识别的标签需要以“__label__”开头,在数据清洗阶段按照此格式给所有短评打上标签,“__label__like”和“__label__nlike”。之后使用random库打乱整个数据集,再按照8:2的比例生成训练集和测试集。fasttext在python中的使用很简单,已经封装的很好了。导入之后,监督学习只需要给出训练集和几个超参数学习率、迭代次数等即可生成一个模型。有了模型就可以使用测试集测试其准确率。测试结果并不好,准确率只有60%+,加上词袋的参数,设为2之后,准确率略微有所提升,约68%。因为3星中评里面有喜欢的也有不喜欢的,干扰比较大,所以将其去掉。1000条短评,500条好评,500条差评,这时准确率达到了70%。若将中评单独作为一类,作三分类的话,fasttext的准确率只有约53%。因为选择的电影是《我不是药神》,这是短评数量最多的电影,但是这部电影的争议比较大,所以很多短评不够典型。之后换用《肖申克的救赎》,top250排名第一的电影。还是将三星及以上的视为喜欢,三星以下的视为不喜欢,此时fasttext分类的准确率达到了72%,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版食堂泔水处理与环保设备销售合同2篇
- 2025年度电子商务平台承包招商合同范本3篇
- 二零二五版大棚租赁合同绿色环保附加条款3篇
- 2025年度安全生产风险评估与管理合同集3篇
- 年度钴基及钴镍基竞争策略分析报告
- 2025年暑期实习岗位劳动合同范本3篇
- 2025年度专业舞台搭建租赁合同3篇
- 2024-2025学年高中历史课时分层作业十二5.1科学社会主义的奠基人马克思含解析新人教版选修4
- 2025年度环保节能零星工程设计与施工一体化合同4篇
- 2025年度现代农业示范区农资集成采购合同3篇
- 农用地土壤环境质量类别划分技术指南(试行)(环办土壤2017第97号)
- 反向开票政策解读课件
- 工程周工作计划
- 房地产销售任务及激励制度
- 六年级语文下册14文言文二则《学弈》课件
- 2024年内蒙古中考语文试卷五套合卷附答案
- 并购指南(如何发现好公司)
- 垃圾分类亭合同协议书
- 物权转移协议
- 高三高考地理一轮课时练习:洋流(单选题)
- 2024年餐饮类“食品安全及质量管理员”知识考试题库(附含答案)
评论
0/150
提交评论