ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:194.61KB ,
资源ID:92567      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-92567.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电子科技大学计算机学院-综合课程设计报告-以电影资讯评论站点“豆瓣电影”的用户数据构建基于语义分析的协同过滤推荐系统.docx)为本站会员(龙***)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

电子科技大学计算机学院-综合课程设计报告-以电影资讯评论站点“豆瓣电影”的用户数据构建基于语义分析的协同过滤推荐系统.docx

1、ABSTRACT I 摘 要 本系统以一个大规模网络爬虫程序所获取的网络评论数据为基础 ,使用了词向量,用户画像等技术, 构建了一个基于影评的推荐系统 。主要的工作分为两部分,首先是研究分析了豆瓣电影网站是如何防御网络爬虫程序已经应对策略,其次根据网络爬虫程序获取的大量数据构建了一个推荐系统。 关键词: 大规模爬虫,用户画像,推荐系统 目录 目 录 摘 要 . I 目 录 . II 第一章 绪 论 . 1 1.1 背景与意义 . 1 1.2 本系统的总体设计构思 . 1 1.3 本文的主要贡献与创新 . 1 第二章 大规模数据获取 . 2 2.1 网络爬虫程序的原理 . 2 2.2 网络爬虫程

2、序的设计方案 . 2 2.3 豆瓣电影网站爬虫可行 性分析 . 3 2.3.1 豆瓣电影网站页面分析 . 3 2.3.2 豆瓣电影网站反爬虫策略分析 . 3 2.3.3 豆瓣电影网站爬虫策略的设计 . 4 2.4 网络爬虫性能优化 . 4 2.5 本章小结 . 5 第三章 影评分析推荐系统 . 6 3.1 推荐系统综述 . 6 3.1.1 推荐系统的概念和定义 . 6 3.1.2 推荐系统的形式化定义 . 7 3.2 推荐系统用户模型设计 . 7 3.2.1 文本分析简介 . 7 3.2.2 文本分析操作 . 8 3.3 推荐系统推荐对象模型设计 . 8 3.3.1 评分机制建模 . 8 3.

3、3.2 影片分类特征建模 . 9 3.4 推荐系统算法 . 9 3.4.1 协同过滤算法 . 9 3.4.2 基于项目的协同过滤算法 . 9 3.5 推荐系统推荐关键算法部分 . 10 3.5.1 距离定义部分 . 10 目录 III 3.5.2 近邻查找部分 . 11 3.5.3 评分向量的构建 . 12 第四章 课程设计总结与展望 . 13 4.1 总结 . 13 4.2 后续工作展望 . 13 致 谢 . 14 参考文献 . 15 1 第一章 绪 论 1.1 背景与意义 随着中国移动互联网的迅速发展, 网民数量也在大规模增长,用户在社交与电商网站上的活跃程度日趋增加。随着用户群体的增加,

4、用户在网络上留下的行为数据呈现指数级 增长。面对庞大的用户群体 以及如此大量的行为数据,如何从中快速、准确、有效的获取到有价值的数据,分析出用户的行为习惯以及偏好,在大规模内容的场景下,为用户提供精准的推荐服务,是现在大数据研究领域的一个热点和重点。 网络爬虫是大规模数据获取的必要程序 。由于网络上数据的高潜在商业价值,商业公司均会对其进行保密,即使能够直接获取的数据也会给出层层限制。 在互联网发展的二十余年里 ,网络爬虫程序设计和网站反爬虫程序设计共同进步发展。如何有效的进行大规模网络数据爬取,同样是在工程领域 的一个热点和重点。 1.2 本系统的总体设计构思 首先 通过设计一个高性能网络爬

5、虫 , 对部分数据进行爬取 。 在数据集上进行清洗 , 选择一些高质量的 活跃 用户 , 设计算法 , 提取特征 , 进行回测 , 调整特征的选择 。 之后再在大规模数据集上进行运算 。 1.3 本系统 的主要贡献与创新 本论文以 大 规模爬虫获取实时豆瓣电影数据为基础 , 实现了用户画像系统与推荐系统 , 根据历史数据得到的用户群体行为分析报告 , 并根据用户行为以及评论数据实现了智能化的电影推荐 。 2 第二章 大规模数据获取 在大规模互联网社群站点中, 由于网站运营策略以及一些涉及到潜在商业价值的考虑,运营公司通常会设置一些特殊的访问流量识别措施阻止外界使用程序大规模获取数据。对于网络爬

6、虫程序设计者来说,必须要识别并且进行一定的特殊设计,才能高效的大规模并行获取数据。 2.1 网络爬虫程序 的 原理 网络爬虫程序, 也叫网络蜘蛛 , 在工程界通用简称 “爬虫”,是一种可以自动实现模拟真实用户对网络资源访问并进行数据记录的程序。爬虫 程序一般会选择记录目标站点的索引数据,以及所关注的主要内容的完整记录。 2.2 网络爬虫 程序 的设计 方案 网络 爬虫的形式多种多样 , 从早期的 C、 C+设计,到现在主流的 Python、 Java设计都有其辉煌的历史。早期网络站点大部分内容、形式单一,静态网页居多,网络中富文本内容较少,计算机资源较少。使用 C、 C+编写的程序占用资源小,

7、运行速度快,进行网络通讯的方式灵活,加之语言本身使用广泛,受到大量爬虫程序员的青睐。 随着全球互联网产业、互联网基础设施的高速发展,谷歌、百度等搜索引擎的崛起,互联网上的资源爆炸性增长,基于各种目的,越来越多的程序员开始设计自己的网络爬虫程序。此时 C、 C+语言的一些缺点显现出来,集中在编码的不通用,设计繁琐,缺乏高度抽象的类库等。加之大规模数据存储平台的出现, C、C+爬虫程序日渐减少。 爬虫程序主要的任务在于 : 访问网络资源 , 解析返回结果 , 对资源进行合理存储 。 由于高度抽象以及简洁的语法 , Python以及 Java等一下代的更加工程化的语言被大家所青睐。网络爬虫的开发极具

8、灵活性,由于现代前端技 术的成熟,爬虫程序所获取的内容可能随时变化,无法使用传统的软件工程方法进行设计开发,通常的做法是迭代式的对网络站点进行交替的探测、开发。 网络爬虫的主要模块功能比较固定,遇到的异常情况繁杂,需要有完善的异常处理机制。在对大规模数据设计的爬虫中尤其重要。 Python 在网络爬虫类程序的开发效率上有着无可比拟的先天优势,在文本分析、异常处理方面同样有着大量的简洁的设计,使得开发网络爬虫程序的方便程度与灵活程度大大提升。加之有许多专门为 Python语言3 设计的网络访问库,数据库访问框架,浏览器模拟器,文本解析器的存在, 使得这门语言有着一个完备的网络爬虫程序开发生态环境

9、。 本文选择使用 Python3 语言实现一个网络爬虫程序 , 对豆瓣电影网上 Top250电影榜单上 共计一千四百余万条用户对电源的短评进行完全的爬取 。 在爬取数据的过程中,使用结构化序列化的方式进行数据的存储。 2.3 豆瓣 电影网站爬虫可行性分析 2.3.1 豆瓣电影网站页面分析 编写网络爬虫程序 , 首先要对目标站点进行页面分析 。 第一个参考页面 : 豆瓣 Top250电影榜单 第二个参考页面 : 豆瓣任意电影页面 第三个参考页面 : 豆瓣任意电影短评页面 使用 Chrome浏览器的开发者模式观察页面 。 所有关键信息都以静态方式给出 ,不需要模拟用户鼠标键盘行为与用户观察延时行为

10、 。 我们可以直接解析 , 通过发出 Get请求得到的返回页面 。 榜单页面可解析信息如下:总数,排行榜名称,排行榜排名,电影中文名,电影英文名,电影 id,电影导演,电影主演,电影封面 电影详情页面可解析信息如下:电影 id,电影中文名,电影别名,电影豆瓣评分,看过人数,想看人数,评分人数, 5张海报图,条目分类,导演,主演,编剧,官方网站,豆瓣小站,上映时间日期,年代,语言,电影时长,影片类型,制片国家和地区,简介,长评 数量,短评数量。 电影短评页面可解析信息如下 :短评数量,每条短评。对于每条短评:短评id,发布日期,上传用户,短评内容,短评评分,有用数。 通过轮询请求以上页面 , 我

11、们可以获得几乎所有豆瓣电影公开的数据 。 2.3.2 豆瓣电影网站反爬虫策略分析 豆瓣 电影作为国内电影领域最大的在线交流平台 , 拥有着大量的电影数据以及观众用户数据 , 一直被广大程序员以及数据分析人员作为目标数据站点使用网络爬虫获取数据 。 该网站的反爬虫策略已经比较完善 , 例如对单个 IP 地址并发访问量的限制 ,单个 IP 时间段内访问次数限制,用户浏览器 Cookie 检测,用户访问页面连续性检测,等等。 经过长时间访问的实验,以及编写网络爬虫程序的经验,总结出了如下规律: 4 1. 当发起 Get请求是不带上 Cookie, 连续访问次数稍多 , 豆瓣网站将直接对操作的 IP

12、进行封禁 。 此时无论如何操作都将返回 HTTP403的结果 。 需要等待半小时至一小时 IP 才会解除封禁 。 2. 使用 Cookie进行访问。第一次发起 Get请求任意一个豆瓣页面,豆瓣都会返回一个名为 bid的 Cookie。之后带上这个 Cookie请求页面,可以在约 2秒一次访问频率上, 5分钟不封禁的结果。但此时的封禁是对于该 Cookie的,只要清空该 Cookie,又可获得一个新的 Cookie 进行访问。 IP 地址是不会被封禁的。 3. 若保持低频率访问豆瓣页面 , 比如在 10 秒一次的基础上 , 不论如何都不会被封禁 。 2.3.3 豆瓣电影网站爬虫策略的设计 1.

13、首先进行多次次无 Cookie的请求,获取多个 bid,对这多个 bid进行保存,并且进行访问次数的统计。 2. 对于每次的 Get 请求,随机在 bid 池中获取一个 bid 随请求发出,并根据返回结果更新次数统计。若该请求返回 HTTP 403 或者 bid 使用次数到达100次,即将该次访问操作回滚,将该 bid抛弃 3. 在池中 bid数量小于一个阈值时 , 进行一轮无 Cookie请求 , 更新 bid池 在之后的访问试验中 , 对 bid 进行测试时 , 发现豆瓣电影并没有对某个 bid 的第一次使用进行合法性判断 。 于是修改访问策略为 :每次访问前 对 bid进行随机 , 并随

14、请求发出 , 若失败则直接重新随机 bid到成功为止 。 2.4 网络爬虫 性能 优化 经过第一轮对电影榜单数据的统计 , 得到短评总数有一千四百万条 。 传统单线程爬取完全无法获取所有的短评信息 。 针对网络爬虫这种 IO 密集型的应用场景 , 多线程 、 多进程能够很好的解决并发访问的问题 。 使用 Python3中的 multiprossesing库对访问进行多线程加速 。 同时使用 time库对访问频率进行控制 。由于单次请求返回时间的不确定性(页面大小,网络情况),我们统计一段时间内 Get次数,若超过阈值则在每个请求完成之后进行一个 sleep操作以降低总体速度。 针对单 IP 访

15、问数量的限制 , 建立了一个 IP 代理池 ,部署在一台阿里云服务器上,全天候自动在各大代理网站上刺探可用的 HTTP/HTTPS 代理服务器 。 网络爬虫程序可直接调用接口获取一个代理 IP。 若某个 IP 连续请求失败次数超过阈值 ,5 可以 立即更换代理 IP, 以躲过豆瓣晚上对爬虫的 限制 。 针对爬虫需要全天候运行的特点 ,使用 Git作为源代码管理工具, 分别管理开发分支与稳定版本分支 , 将稳定版分支实时同步到一台阿里云服务器上 , 并合理设计数据序列化保存格式 , 实现全天候运行的能力 。 2.5 本章小结 本章内容从工程的第一个需求出发,逐步迭代开发了一个具有针对目标站点完备

16、功能和高运行效率的网络爬虫程序。在连续运行 4天后爬取了豆瓣电影 Top250榜单中所有电影共计 一千四百余万条影评信息,并构建初步的影评数据库。 6 第三章 影评分析推荐系统 3.1 推荐系统综述 互联网的出现和普及给用户带来了大量的信息,满足了 用户在信息时代对信息的需求,但随着网络的迅速发展而带 来的网上信息量的大幅增长,使得用户在面对大量信息时无 法从中获得对自己真正有用的那部分信息,对信息的使用效 率反而降低了,这就是所谓的信息超载( information overload) 问题。 信息超载问题 一个非常有潜力的办法是个性化推荐系统,它是根据用户的信息需求、兴趣等,将用户感兴趣的

17、信息、产品等推荐给用户的个性化信息推荐系统。和搜索引擎相比推荐系统通过研究用户的兴趣偏好,进行个性化计 算,由系统发 现用户的兴趣点,从而引导用户发现自己的信息需求。一个好的推荐系统不仅能为用户提供个性化的服务, 还能和用户之间建立密切关系,让用户对推荐产生依赖。 3.1.1 推荐系统的概念和定义 推荐系统的定义有不少,但被广泛接受的推荐系统的概 念和定义 Resnick 和Varian在 1997年给出的: “它是利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程 ”。推荐系统有 3 个重要的模块:用户建模模块、推荐对象建模模块、推荐算法

18、模块。通用的推荐系统模型流程如图所示。 推荐系统把用户模型中兴趣需求信息和推荐对象模型中的特征信息匹配,同7 时使用相应的推荐算法进行计算筛选,找到用户可能感兴趣的推荐对象,然后推荐给用户。 3.1.2 推荐系统的形式化定义 推荐系统的形式化定义如下:设 C 是所有用户的集合, S 是所有可以推荐给用户的对象的集合。实际上, C 和 S 集合的规模通常很大,如上百万的顾客以及上亿种歌曲等。设效用函数 可以计算对象 s对用户 c的推荐度(如提供商的可靠性( vendor reliability)和产品的可得性( product availability)等),即 , R是一定范围内的全序的非负实

19、数,推荐 要研究的问题就是找到推荐度 R最大的那些对象 S* ,如式 : 从上述模型看来 ,推荐系统的构建有三个主要步骤:对用户(服务)对象建模(即用户画像),对推荐对象建模,在(离)线推荐算法。 3.2 推荐系统 用户 模型设计 在所有通过网络爬虫程序获取的数据当中 , 可以作为用户画像的 有两个方向的数据 : 1. 每个用户对电影的评分 2. 每个用户对电影的文字短评 根据以上信息,我们可以 以上数据构成多维度模型对用户的喜好进行刻画 。下文将介绍文本分析以及 3.2.1 文本分析简介 在自然语言处理领域 ,传统的词汇语义相似度方法主要是依靠本体词典或知识库的规则方法,利用统计语言模型在大规模语料库上进行分析处理 但是由于词典和知识库大多依赖人工构建,其实时性和扩展性都比较差,因此在互联网文本和专 业领域文本处理中很难发挥出作用 , 在传统研究方法中,词汇通常用 one-hot 编码 形式表示,即假设词表大小为 V,第 k 个词表 示为一个维数为 V 的向量,除了第 k 维为 1,其他维均为 0 一 方面 , 这种表示方法无法刻画两个词语义上相似性,如 “电脑 ”和 “计算机 ”两个词汇,虽然它们在语义有着相似性,但是由于它们在词表中的位置不同, one-hot 表示是正交的 。 另一方面,这种方法容易造成

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。