温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
Django
框架
电影
推荐
系统
设计
实现
武玲梅
本栏目责任编辑:谢媛媛软件技术Computer Knowledge and Technology电脑知识与技术第19卷第4期(2023年2月)第19卷第4期(2023年2月)基于Django框架的电影推荐系统的设计与实现武玲梅,李秋萍,黄秀芳,张立强,董力量,罗芳琼(广西科技师范学院 数学与计算机科学学院,广西 来宾 546199)摘要:智能化推荐系统的出现为人们生活带来了便利,在电影领域,它不仅能够挖掘用户喜好,在增加电影点击率的同时也创造一定的商业价值。文章主要工作是研究基于邻域的协同过滤算法,在修正相似度算法的基础上实现基于用户和物品的混合算法,其混合方式是将两个算法生成的推荐结果按加权式混合技术产生推荐列表,在Movielens数据集上构建并基于Django框架的电影推荐系统,实现实时Top100浏览、电影推荐、个人用户中心等功能。为验证系统实现算法是否可行,通过推荐算法评测指标topN进行仿真比对实验,实验结果表明该混合方法推荐效果更好,在准确度和召回率方面都比UserCF-IIF和ItemCF-IUF算法高。关键词:混合推荐;电影推荐;协同过滤算法;设计中图分类号:TP311文献标识码:A文章编号:1009-3044(2023)04-0056-06开放科学(资源服务)标识码(OSID):1 引言随着互联网技术的不断发展与普及,短视频、电影、电视剧等网络视频快速发展。“信息过载”让用户很难快速查找想要的信息。为了帮助用户从大规模数据中挑选出对其有价值的信息,分类目录和搜索引擎技术可以有效地解决“信息过载”的难题1。随着推荐算法在各个领域的运用,将算法运用在电影上,对用户进行个性化的推荐也变得更加重要,通过推荐技术推荐用户将来会选择的电影,过滤不感兴趣的信息,将会增加用户对系统的关注2。电影推荐系统可通过用户的喜好有针对地推荐电影,既能解决用户的需求,也能够缩短用户查找电影的时间,推荐电影能让用户称心,增加用户满意度3-4。推荐系统不仅为用户提供个性化的服务,还为用户提供喜爱的电影,同时增加电影的收视率,达到两全其美的效果。个性化推荐系统精髓在于它算法部分,即推荐系统最重要的部分或者是核心就是其算法,它决定着推荐结果是否能够满足用户的需求5。目前最流行的推荐算法是协同过滤,国外六大主流电影推荐网站系统也使用到了协同过滤算法6。YouTube、Amazon、GroupLens在实现个性化推荐系统中应用到了协同过滤算法。协同过滤算法一直以来受到许多国内外学者的关注,将许多优秀的技术运用到推荐系统中,现如今协同过滤算法相比之前更加成熟,更加准确。但是协同过滤算法还有稀疏性、冷启动等常见的问题,如今许多学者也尝试不同办法解决算法的短板,如对算法进行改进,或者组合多种算法的方式,组合算法方式也是当今研究的方向7,所以协同过滤算法仍有较强的研究价值。本文通过对基于邻域协同过滤算法的研究,将算法混合推荐设计并实现一个电影推荐系统,用户可以在推荐电影列表当中选取中意的影片,并且可以在系统进行浏览、收藏、评分等操作。2 Django架构概述Django架构是一个具有完整架站能力的Python开源WEB框架8。Django遵循MVC设计模式,它本身提供了许多功能组件,这使开发速度更快,并具有出色的安全性和灵活性。MySQL数据库能够存储大量的结构化数据,本身体积小,存储速度快,并且安全。Bootstrap框架是受欢迎的一种前端框架,前端处理简洁,美化效果漂亮,能够兼容一般的浏览器。3 算法模型基于邻域的协同过滤算法分为两个类别,一个是基于用户的协同过滤算法,即UserCF;另一个是基于物品的协同过滤算法,即ItemCF。随着时间的推移,协同过滤算法不断地发展与进步。学者们也做进一收稿日期:2022-09-20基金项目:广西高校中青年教师科研基础能力提升项目(项目编号:2019KY0867)作者简介:武玲梅(1990),女,山西长治人,讲师,硕士,研究方向为机器学习、推荐算法;李秋萍(1998),女,广西南宁人,学士,研究方向为数据挖掘;黄秀芳(1992),女,广西南宁人,讲师,硕士,研究方向为图神经网络、金融衍生品定价;张立强(1988),男,湖南湘潭人,高级工程师,硕士,研究方向为深度学习、图像处理;董力量(1995),男,湖北咸宁人,助教,硕士,研究方向为机器学习;罗芳琼(1971),女,广西柳州人,通信作者,教授,学士,研究方向为神经网络、智能优化及网络技术研究。E-mail:http:/Tel:+86-551-65690963 65690964ISSN 1009-3044Computer Knowledge and Technology电脑知识与技术Vol.19,No.4,February202356DOI:10.14004/ki.ckt.2023.0204软件技术本栏目责任编辑:谢媛媛Computer Knowledge and Technology电脑知识与技术第19卷第4期(2023年2月)第19卷第4期(2023年2月)步改进来提高算法的准确度,改进的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。表1开发环境运行环境操作系统CPU内 存数据库开发工具系统框架配置参数Windows10i58GBmysql 5.7PyCharm前端:Bootstrap框架;后台:django框架4.2 系统架构表现层注册、登录、浏览top100电影、查看电影推荐、电影评分等业务逻辑层电影推荐引擎、插入数据、处理数据集等数据层用户数据集、电影数据集图1系统总体架构图本系统采用三层架构设计模式。这种B/S的架构模式可以应用在客户端和服务器上,如图1所示。第一层表现层即用户交互层,系统通过浏览器向用户展示页面,用户通过点击页面与系统互动。第二层业务逻辑层即系统核心层,它的主要任务是处理逻辑事务,因为它在系统中处于中心的位置,能够起到一个承上启下的作用。第三层数据层用来存储数据,它既能够存储来自表现层的用户数据,也能够通过业务层将数据传递到浏览器中。4.3 系统功能模块设计top100电影模块注册登录模块个人中心模块电影详情模块电影推荐模块电影评分模块搜索电影模块前端展示子系统后台管理子系统电影管理模块用户管理模块电影推荐系统图2系统功能模块图系统功能模块总共9个模块,其中包括前端展示子系统的7个模块和后台管理子系统的2个模块。具体9个模块的功能如下:1)Top100电影模块:该模块根据9742部电影找出5星好评数最多的100部电影,Top100电影具有实时更新功能,对于所有的用户是实时推荐的,在该模块用户也可以点击图片或者电影名字进入电影详情。2)注册登录模块:游客无法直接登录系统,需要在注册时填写用户名、邮箱、密码后才能登录;系统用户输入信息后直接点击登录。3)个人中心模块:在该模块用户可以修改个人信息或者密码,并且可以浏览历史评分、收藏、推荐的电影。4)电影详情模块:用户单击影片海报或标题浏览详细信息。该页面的内容有电影主演、片长、地区等;还设置评分、收藏、推荐按钮和评论功能,用户可通过这些方式提供反馈。5)电影推荐模块。为用户展示混合算法的电影推荐列表,并设置该页面带有movielens链接,用户可到movielens查看更多详情与评分。6)电影评分模块:在系统为用户推荐影片之前,用户先对5部电影评分,评价分数分为5个等级:差,一般,良,优秀,超级满意。差的得分是1,一般表示得分是2,以此类推超级满意得分是5。当用户没有登录时会提示用户先登录后评分。57本栏目责任编辑:谢媛媛软件技术Computer Knowledge and Technology电脑知识与技术第19卷第4期(2023年2月)第19卷第4期(2023年2月)7)搜索电影模块:因为电影数量太多,用户一一浏览花费时间,用户可以输入电影的名字搜索电影并且可以查看电影详情。8)电影管理模块:管理员用户在后台登录成功之后,他更新或修改影片。9)用户管理模块:该模块用于对用户信息的管理。4.4 系统设计方案数据集:本系统及后面实验的数据集,使用的是美国苏明达大学GroupLens项目组整理出来的MovieLens数据集,该数据集是公开的并生成于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用户表字段名idusernamepasswordemailphoneavatarbio描 述用户id用户名密 码邮 箱手机号头 像个性签名数据类型intvarcharvarcharvarcharvarcharvarcharlongtext2)movies电影表。该表用来保存全部电影信息,具体字段如表3。表3电影表字段名idimdbIdtitlecover_linkgenresdirectorslead_role描 述电影编号电影号电影名图片链接电影类型导 演主 演数据类型intintvarcharvarcharvarcharvarcharvarcharregionrelease_timelengthratingsummary地 区上映时间片 长imdb评分剧情简介varchardatevarchardecimallongtext3)topmovies电影表。该表用来保存Top100电影信息,具体字段如表4。表4Top100电影表字段名idimdbIdtitlecover_linkgenres描 述电影编号电影号电影名图片链接题 材数据类型IntIntvarcharvarcharvarchar4)ratings用户评分表。该表用来保存评分信息,具体字段如表5。表5评分表字段名iduserIdimdbIdrating描 述编 号用户id电影号评 分数据类型varcharvarcharvarcharvarc