基于ALS电影个性化推荐系统设计与实现

伴随着互联网技术的飞速发展,21世纪是一个信息爆炸的时代,同时人民对精神文化的需求也越来越大,导致电影市场不断扩张,网络上可供用户观看的电影数量巨大,类型也多种多样。从海量影片资源中找到自己喜欢的电影变的越来越困难,影片信息利用率很低。为了解决这个问题,推荐系统应运而生。 推荐技术是一种信息过滤的手段,可以挖掘用户的兴趣偏好,根据用户的兴趣给用户推荐感兴趣的信息,提供给用户个性化服务,还能有效解决信息过载的问题。协同过滤算法是一种应用广泛的个性化推荐算法,通过搜集用户个人喜好等信息,计算与其他用户相似度,利用相似用户的评价来预测目标用户对特定项目的喜好程度。 帮助用户挑选喜欢的电影,节省用户寻找资源的时间,提高用户体验,同时还能提高用户和系统的黏着度。用户快速找到感兴趣的资源的同时也能够减轻一个站点的网络负载。

电影数据爬虫

该子任务主要以爬取现有电影资源,主要负责将爬取到的电影资源加载到数据库和搜索服务器中。也为后续推荐算法提供有效参考信息。 具体的工作内容如下所示: (1) 基于scrapy框架实现对单个类型网站的定制化抓取。 (2) 从spider中发送豆瓣电影,1905电影网的具体页面URL请求,发送给engine,engine不经过任何处理发送给scheduler。然后engine不断的从scheduler中不断调取请求,engine获取请求后就发送给Downloader,Downloader就会从互联网上下载数据,在把数据返回给spider,此时就用到网页解析器等,将不需要的数据去除掉。 (3) Scrapy框架基于Lxml实现的网页解析器Selectors(选择器)提供了XPATH以及CSS选择器表达式语法进行网页解析。因为Lxml只能局部遍历,有一定的局限性,所以需要配合beautifulsoup使用,beautifulsoup是基于Html DOM的,自动将输入信息转为Unicode,输出信息转为utf-8,省略了转码的麻烦。对于一些电影的名称,导演,演员,类型,上映日期,片长等一些静态数据,只需要使用beautifulsoup和Lxml的网页解析器就可以筛选,但是有些电影的评论,简介等一些需要js动态渲染的页面,就无法抓取,所以需要动态加载模式,采用Selenium以及浏览器驱动webDriver的方式实现网页的异步加载。 (4) 提取数据后,再把数据扔给engine,engine拿到数据后,再把数据扔给Item Pipelines, 把筛选出的请求(例如下一页,或其他电影详细页的请求)继续扔给scheduler。如果需要对数据进一步的清洗,和处理,则使用正则表达式来进一步的筛选。清理好的数据则存储到数据库当中。 (5) 采用了MongoDB数据库进行对数据进行持久化的保存。大概的存储形式是(电影表movie_id` `movie_name“movie_describe` `movie_time` `language` `issue` `movie_img_URL` `movie_URL` 、电影类型表`mid` `genres` 、电影演员表`mid` `actor` 、电影评分表`uid` `mid“score` `score_time`。) (6) 基于headers的反爬,即在访问页面的时候服务器会检查User-Agent信息,所以需要构建用户代理池随机变换用户代理;使用UA中间件对RequestHeader的信息进行修改使用cookies中间件对接到相应的cookies服务池. 通过调用服务池暴露的Web接口,获取到cookies信息,并附加到Request中。 (7) 验证码登录,对于物体识别类型需要通过Python的开源库,或者机器学习算法识别验证码;如果是点击验证,则可以通过模拟浏览行为的工具进行点击。对于验证码的反爬,只能结合具体的情况进行代码设计 (8) IP限制是由于网路爬虫不间断抓取导致同一个IP在短时间内频繁访问服务器并给服务器造成了一定的压力,所以被服务器识别为爬虫而禁止访问。一般的解决方法:一是设置较大的抓取间隔时间;二是实现IP代理池不断的变换IP地址进行爬取,这里用Proxy代理技术来应对反爬虫系统封锁ip。 (9) 使用selenium模拟浏览器进行数据抓取无疑是当下最通用的数据采集方案,它通吃各种数据加载方式,能够绕过客户JS加密,绕过爬虫检测,绕过签名机制。它的应用,使得许多网站的反采集策略形同虚设。但是selenium在运行的时候会暴露出一些预定义的Java变量(特征字符串),例如”window.navigator.webdriver”,在非selenium环境下其值为undefined,而在selenium环境下,其值为true。 所以需要使用mitmproxy实现中间人代理,将JS文件中的特征字符串给过滤掉(或者替换掉,比如替换成根本不存在的特征串),让它无法正常工作,从而达到让客户端脚本检测不到selenium的效果。

数据展示维护

数据展示及维护主要是将电影显示在前端供用户查看,以及在后端对网站电影数据的修改删除及维护等,具体如下。 具体的工作内容如下所示: (1) 用户注册(账号,密码,)。 (2) 进行用户偏好类型电影选择。(解决后期的冷启动问题)。 (3) 用户登录与登录界面实现。 (4) 用户可以对电影进行打分(按照打分高低评估用户对电影得偏好值)。 (5) 电影首页推荐结果的展示,对推荐结果的可视化(优质电影推荐、热门电影推荐、离线推荐和实时推荐的展示)。 (6) 电影的检索查询(按照电影name进行检索)。 (7) 单击电影,进入单个电影信息的详细展示页面。 (8) 用户对电影的搜索存入日志,用户最近若干次对电影的评分存入redis。 (9) 广告位招商(轮播)。 (10) 各类电影的点击量统计示意图展示(柱状或者饼状)。 (11) 管理员登录与登录界面。 (12) 用户信息的管理(性别,年龄,身份)。 (13) 电影信息的管理(电影名字,电影上映时间,电影简介)。 (14) 管理员对招商轮播图的管理(可以增加,删除,修改展示的轮播图)

个性化推荐

此隐藏内容仅限VIP查看,请先
客服QQ:1140471798
0
分享到:

评论0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
没有账号? 忘记密码?