APP下载

基于Django框架的电影推荐系统的设计与实现

2023-03-24武玲梅李秋萍黄秀芳张立强董力量罗芳琼

电脑知识与技术 2023年4期
关键词:设计

武玲梅 李秋萍 黄秀芳 张立强 董力量 罗芳琼

关键词:混合推荐;电影推荐;协同过滤算法;设计

1 引言

随着互联网技术的不断发展与普及,短视频、电影、电视剧等网络视频快速发展。“信息过载”让用户很难快速查找想要的信息。为了帮助用户从大规模数据中挑选出对其有价值的信息,分类目录和搜索引擎技术可以有效地解决“信息过载”的难题[1]。

随着推荐算法在各个领域的运用,将算法运用在电影上,对用户进行个性化的推荐也变得更加重要,通过推荐技术推荐用户将来会选择的电影,过滤不感兴趣的信息,将会增加用户对系统的关注[2]。电影推荐系统可通过用户的喜好有针对地推荐电影,既能解决用户的需求,也能够缩短用户查找电影的时间,推荐电影能让用户称心,增加用户满意度[3-4]。推荐系统不仅为用户提供个性化的服务,还为用户提供喜爱的电影,同时增加电影的收视率,达到两全其美的效果。

个性化推荐系统精髓在于它算法部分,即推荐系统最重要的部分或者是核心就是其算法,它决定着推荐结果是否能够满足用户的需求[5]。目前最流行的推荐算法是协同过滤,国外六大主流电影推荐网站系统也使用到了协同过滤算法[6]。YouTube、Amazon、Grou?pLens在实现个性化推荐系统中应用到了协同过滤算法。协同过滤算法一直以来受到许多国内外学者的关注,将许多优秀的技术运用到推荐系统中,现如今协同过滤算法相比之前更加成熟,更加准确。但是协同过滤算法还有稀疏性、冷启动等常见的问题,如今许多学者也尝试不同办法解决算法的短板,如对算法进行改进,或者组合多种算法的方式,组合算法方式也是当今研究的方向[7],所以协同过滤算法仍有较强的研究价值。

本文通过对基于邻域协同过滤算法的研究,将算法混合推荐设计并实现一个电影推荐系统,用户可以在推荐电影列表当中选取中意的影片,并且可以在系统进行浏览、收藏、评分等操作。

2 Django 架构概述

Django架构是一个具有完整架站能力的Python开源WEB框架[8]。Django遵循MVC设计模式,它本身提供了许多功能组件,这使开发速度更快,并具有出色的安全性和灵活性。MySQL数据库能够存储大量的结构化数据,本身体积小,存储速度快,并且安全。Bootstrap框架是受欢迎的一种前端框架,前端处理简洁,美化效果漂亮,能够兼容一般的浏览器。

3 算法模型

基于邻域的协同过滤算法分为两个类别,一个是基于用户的协同过滤算法,即UserCF;另一个是基于物品的协同过滤算法,即ItemCF。随着时间的推移,协同过滤算法不断地发展与进步。学者们也做进一步改进来提高算法的准确度,改进的UserCF-IIF是在UserCF 的基础上增加1/log1+ |N(i)| 参数;改进的ItemCF-IUF在ItemCF基础上加入IUF参数[9]。

UserCF是通过用户的爱好找出口味相似的邻居,将这类邻居的喜好放进推荐列表。当计算相似邻居时,将用户的兴趣作为向量来计算与其他用户的相似度,根据相似度权重以及相似邻居的喜好,为用户预测将来要选择的物品。根据算法的基本思想,UserCF主要分为两个步骤进行,第一步计算用户间的相似度,第二步为预测用户对电影评定的分数。ItemCF则是通过用户喜好找到类似物品,将这些物品作为推荐。在计算物品间的相似度时,把所有用户对相同物品的行为作为一个矢量,然后根据历史的喜好预测用户没有听说过的物品的得分,通过分数排名选取前N个作为推荐。

在加权混合推荐的思路下,将UserCF-IIF 和ItemCF-IUF产生的电影预测分数进行组合加权,经过冒泡排序后生成新的推荐结果。通过组合算法方式,不仅可以发挥UserCF-IIF的新颖性和ItemCF-IUF的解释性,还可以解决从单一用户角度或者是物品角度进行推荐的问题。

4 基于Django框架的电影推荐系统的设计与实现

4.1 开发环境

本系统使用Python语言作为基础,基于Django架构来开发,使用mySql来存储电影数据集、评分数据集、用户数据集,在网页美化时主要使用Bootstrap框架。本系统具体开发环境如表1。

4.2 系统架构

本系统采用三层架构设计模式。这种B/S的架构模式可以应用在客户端和服务器上,如图1所示。第一层表现层即用户交互层,系统通过浏览器向用户展示页面,用户通过点击页面与系统互动。第二层业务逻辑层即系统核心层,它的主要任务是处理逻辑事务,因为它在系统中处于中心的位置,能够起到一个承上启下的作用。第三层数据层用来存储数据,它既能够存储来自表现层的用户数据,也能够通过业务层将数据传递到浏览器中。

4.3 系统功能模块设计

系统功能模块总共9个模块,其中包括前端展示子系统的7个模块和后台管理子系统的2个模块。具体9个模块的功能如下:

1) Top100电影模塊:该模块根据9742部电影找出5星好评数最多的100部电影,Top100电影具有实时更新功能,对于所有的用户是实时推荐的,在该模块用户也可以点击图片或者电影名字进入电影详情。

2) 注册登录模块:游客无法直接登录系统,需要在注册时填写用户名、邮箱、密码后才能登录;系统用户输入信息后直接点击登录。

3) 个人中心模块:在该模块用户可以修改个人信息或者密码,并且可以浏览历史评分、收藏、推荐的电影。

4) 电影详情模块:用户单击影片海报或标题浏览详细信息。该页面的内容有电影主演、片长、地区等;还设置评分、收藏、推荐按钮和评论功能,用户可通过这些方式提供反馈。

5) 电影推荐模块。为用户展示混合算法的电影推荐列表,并设置该页面带有movielens链接,用户可到movielens查看更多详情与评分。

6) 电影评分模块:在系统为用户推荐影片之前,用户先对5部电影评分,评价分数分为5个等级:差,一般,良,优秀,超级满意。差的得分是1,一般表示得分是2,以此类推超级满意得分是5。当用户没有登录时会提示用户先登录后评分。

7) 搜索电影模块:因为电影数量太多,用户一一浏览花费时间,用户可以输入电影的名字搜索电影并且可以查看电影详情。

8) 电影管理模块:管理员用户在后台登录成功之后,他更新或修改影片。

9) 用户管理模块:该模块用于对用户信息的管理。

4.4 系统设计方案

数据集:本系统及后面实验的数据集,使用的是美国苏明达大学GroupLens项目组整理出来的Mov?ieLens数据集,该数据集是公开的并生成于2018年9月26日。它描述了来自MovieLens电影网站的五星级评级和免费为电影打标签活动,覆盖9742部电影、100836评分以及3683个标签应用,共有610名用户并且用户是随机的,其中每一个用户有超过20部电影的打分,评价分数为1-5,等值越大就表示用户对这部电影喜爱程度越高,除了以上内容之外,还包含有电影一些信息,如电影名字、电影类型、movieLens电影网站id号等。

本系统通过对MovieLens数据集处理后存储到数据库中,考虑到有些字段暂时用不到而且占用存储空间,本系统选用一些字段数据存储到数据库。本系统共设计5张表用来存儲数据,分别是:auth_user用户表、movies电影表、topmovies电影表、ratings用户评分表、recommend推荐表。系统主要信息见表2~表6。

1) auth_user用户表。该表用来保存用户的基本信息,具体字段如表2。

2) movies电影表。该表用来保存全部电影信息,具体字段如表3。

3) topmovies电影表。该表用来保存Top100电影信息,具体字段如表4。

4) ratings用户评分表。该表用来保存评分信息,具体字段如表5。

5) recommend推荐表。该表用来存储电影数据,具体字段如表6。

4.5 系统推荐流程

本电影推荐系统的算法流程图,如图3:第一步:当用户想要获取推荐页面的电影时,系统先去查询数据库中recommend的推荐列表,有则展示电影,没有则提示用户去评分,评分的方式可以去搜索电影评分或者是进入电影详情评分,系统设置每个用户至少为5部电影评分,因为有一定数量的评分才能更好地为用户提供个性化服务。第二步:系统查看用户电影评分的数量,若评分已经达到5部电影,取出电影评分数据构建用户评分数据和共现矩阵,然后计算用户间相似度和物品间之后,下一步为推荐的用户选出最相似的用户或者物品用于预测未看过的电影,然后根据混合算法将电影进行排序,将分数最高的10部电影信息存储数据库,最后通过django框架展示推荐列表给用户。第三步:如果用户评分少于5部电影,则系统不会对该用户推荐电影,除非他们的评分数量达到或者超过5部电影。

4.6 算法优化

使用MovieLens电影网站的真实评分数据,是美国苏明达大学GroupLens整理的数据集,评分数据集是610个用户对9742部电影的100836评分,其中每一个用户至少有对20部电影的打分,其中一个用户对一部电影的评分就是一条记录,所以共有100836个样本。在每一次实验过程中,将用户对电影的评分数据集分为90%的测试集与10%训练集,在训练集建立模型和测试集预测模型,通过评测指标TopN推荐的准确率、召回率对算法进行评估。

固定N=10,取10组不同的K值。将UserCF-IIF与ItemCF-IUF算法做混合加权推荐,并与UserCF-IIF算法和ItemCF-IUF算法进行比较,结果数据见表7和表8。

从见表7和表8中明显看出K在5到20之间时,因为是将原来的两个算法的推荐结果相结合,然后按电影的评分重新排序后,推荐质量远比原来的两个算法更好。同样从整体来看相比之下混合算法的准确率和召回率有提高,即其推荐精确度比原来的算法高,推荐列表与用户将来会选择的电影更接近。实验结果表明通过混合算法的方式能够在电影数据集上提高评测指标的准确率以及召回率,即混合算法的方式有助于推荐精度的提升。

4.7 系统实现

4.7.1 首页

首页展示Top100的5星级电影,每进一次该页面系统会进行刷新,实现实时更新,在该页面所有人可选择分类浏览。在导航栏部分设置logo、搜索、登录接口,每个页面都会继承这部分,点击登录头像会有其他页面的下拉菜单。Top100 页面如图4。实现Top100电影的实时刷新是该页面的核心部分。其逻辑是从评分模型中取出电影id和评分,计算评分为5星级的电影数量,然后排序只取前100部电影,最后存储到数据库的topmovies表中。

4.7.2 注册和登录

用户点击登录按钮即可进到登录页面,若用户没有注册,在登录的时候会有提示,如图5。

4.7.3 个人中心

用户登录之后点击头像的下拉菜单中的用户中心即可进入页面。该页面设计左右两边内容,左边为菜单栏,右边为对应的内容。如图6。在该页面系统会固定个人中心为激活状态,当点击其他菜单项时才设置此项为激活状态。

4.7.4 电影详情页面

系统提供一些电影内容展示给用户,当用户收藏该电影后其按钮背景颜色变深,如图7。当用户要收藏电影时,前端会将state=1发送到后台;当用户取消收藏时,前端发送到后台的state=0。用户收藏电影的动作会对数据库进行操作,系统则根据state的值判断用户的行为实现收藏功能。

4.7.5 推荐页面

该页面展示混合算法计算后的推荐的电影,页面中蓝色字体的点我是movielens按钮链接。如图8。

4.7.6 搜索页面

当用户搜索电影后,系统为用户提供评分按钮,如图9。

4.7.7 评分页面

在这个页面中,不同星星的数量表示不同的评价,用户可选择星星的数量表达对该电影的满意程度。如图10。

4.7.8 电影管理页面

管理员可添加最新的电影,或者更新影片信息。如图11。

4.7.9 用户管理页面

管理员在admin页面管理后台登录后,可以对用户的信息进行操作,不必到数据库中修改。如图12。

5 结束语

本文主要是对基于邻域协同过滤算法的研究,并设计一个基于Django框架的电影推荐系统。设计系统的各个功能模块,主要包括用户注册登录、Top100电影展示、用户搜索、用户评分、用户推荐、电影和用户管理模块。为验证系统实现算法是否可行,通过推荐算法评测指标topN进行仿真比对实验,实验结果表明该混合方法推荐效果更好,在准确度和召回率方面都比UserCF-IIF和ItemCF-IUF算法高。实验结果表明,该系统具有很好的稳定性。本文对于类似个性化推荐技术开发亦具有参考借鉴意义。

猜你喜欢

设计
二十四节气在平面广告设计中的应用
何为设计的守护之道?
基于PWM的伺服控制系统设计
基于89C52的32只三色LED摇摇棒设计
基于ICL8038的波形发生器仿真设计
瞒天过海——仿生设计萌到家
设计秀
有种设计叫而专
基于iOS的室内定位系统设计与实现
设计之味