【《基于Android的个性化视频系统设计》17000字(论文)】_第1页
【《基于Android的个性化视频系统设计》17000字(论文)】_第2页
【《基于Android的个性化视频系统设计》17000字(论文)】_第3页
【《基于Android的个性化视频系统设计》17000字(论文)】_第4页
【《基于Android的个性化视频系统设计》17000字(论文)】_第5页
已阅读5页,还剩36页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Android的个性化视频推荐系统设计摘要众所周知,科技的进步导致互联网上的视频资源成为了网络资源的重要组成部分。随着网络上视频资源的数量越来越庞大,人们被海量的信息所淹没。在这种背景下,本文设计了一种个性化视频推荐系统ADDINNE.Ref.{73A9EEE7-4409-41D7-97BA-11D7C6EB0514}[1],旨在为每一个用户推荐与其兴趣爱好契合度较高的视频。论文首先介绍了推荐系统的研究意义以及研究现状,随后介绍了本项目涉及的重要技术,为接下来系统的开发奠定基础。其次,详细阐述了对于本项目的需求分析内容,并根据需求分析的内容将系统划分为对应的耦合度低的模块。接下来,重点介绍两种协同过滤算法,并对系统实现所需技术进行了研究,接着介绍了整个推荐系统的实现以及对于系统的相关测试工作,最后对整个项目进行了回顾与总结。本系统包含电影前端展示界面、电影评分板块、推荐算法的实现以及后端数据库的设计,整体采用Django框架实现,数据集采用豆瓣数据集。对于整个视频推荐系统来说,实现推荐算法是其核心,本系统使用了基于用户的协同过滤算法和基于视频标签的协同过滤算法ADDINNE.Ref.{2A20275D-718A-41D4-BD71-CE76472EB57C}[2]。最终通过测试,得出系统可以很好地完成推荐功能且可以做到用户友好。关键词:推荐系统;Android;协同过滤;视频目录摘要 第七章结论与展望7.1结论随着互联网飞速地发展,关于推荐系统的研究工作也蒸蒸日上。本文主要研究了实现推荐系统所需的技术,选择了协同过滤的推荐算法并总结了推荐系统的一些国内外现状。接下来以视频推荐系统为实例,对整个推荐系统的架构以及所有功能做了详尽的阐述与分析。从系统的需求分析出发,剖析了用户对功能的需求,做到了用户友好。最后介绍了系统的各个功能模块,充分展示了系统数据库的设计以及数据表的内容。设计的系统包含用户信息模块、视频展示模块、用户评分模块、推荐结果模块。每个模块的介绍都有对应的流程图和系统截图辅以直观介绍。数据库中的核心数据表也充分得到了对所存内容、每个字段的类型的阐述。本系统采用了两种协同过滤算法:基于用户的协同过滤和基于视频标签的协同过滤,使用户能从两种不同角度获得推荐,提高用户的可选择性,从而让用户得到非常好的使用体验。核心的推荐算法工作完成后,本文结合现有的较热门的PythonWeb框架Django,利用其内置的用户注册表单实现用户注册并结合Django官方网站提供的后端管理系统模板实现数据库的管理,编写视图代码进行视频推荐结果的UI前端展示。利用CSS3语言对网页进行排版、美化,使系统看上去更加简洁和美观,增加用户的体验。最终在Chrome浏览器中进行Android模拟调试,测试完成Android端的应用开发。7.2展望本文工作完成了一个简单的个性化视频推荐系统ADDINNE.Ref.{8508B1D4-F1DE-484E-9E03-D771F761F2F5}[19],仍有很多地方不足需要继续完善,主要包括以下几点:1、采用的算法效率不够高。当前使用的两种算法依旧是上个世纪提出的算法,所以系统运行效率不高,速度很慢,推荐的物品准确率不高。未来可以考虑替换或者改进基于协同过滤的推荐算法,采用更新、效率更高的推荐算法,并结合基于标签和基于内容的推荐算法进行混合推荐。在用户注册时,可以直接让用户填写年龄、性别、职业等信息先进行初步的分类给出推荐,再根据评分精准推荐,效果会更好。2、本系统使用的是用户对视频的历史评分数据,这些数据都存在一定的稀疏性。登录用户看过的视频可能很少,这样就导致他和数据库中所存用户评过分的视频有较少的交叉项目,使得计算出的相似度很不准确。如何减少数据稀疏带来的困扰是提高推荐系统准确度的又一个出发点。系统采用的是豆瓣网站爬取的部分数据集,整个数据集大小有限,所以包含的视频数目也不是很多,推荐的效果大打折扣。之后可以用更大的数据集,考虑爬取百万条评分数据来进行推荐。3、本系统视频网站的分类模块,只针对数据集中含有的视频类别分别挑选了部分视频数据,导致用户能进行评分的视频数量有限。参考文献ADDINNE.Bib[1] 郑策.基于图计算的视频服务的关联性分析与预测系统[D].中国科学院大学电子与通信工程,2019.[2] 胡海潮.基于改进协同过滤算法的电影推荐系统的设计与实现[D].浙江师范大学软件工程,2019.[3] 张明珺.基于用户的个性化影视推荐系统的研究与实现[D].电子科技大学软件工程,2017.[4] LuisEP.Informationoverload,choicedeferral,andmoderatingroleofneedforcognition:Empiricalevidence[J].RevistadeAdministração,2016,51(1).[5] 朱杰.基于标签和协同过滤的图片推荐系统[D].天津师范大学计算机技术,2014.[6] 王国霞,刘贺平.个性化推荐系统综述[J].计算机工程与应用,2012,48(7):66-76.[7] 许海玲,吴潇,李晓东,等.互联网推荐系统比较研究[J].软件学报,2009,20(2):350-362.[8] 卓煜.网络视频服务质量预测系统关键技术研究[D].中国科学院大学信号与信息处理,2018.[9] HOFMANNT.LatentSemanticModelsforCollaborativeFiltering[J].ACMtransactionsoninformationsystems,2004,22(1):89-115.[10] 杨杰.个性化推荐系统应用及研究[D].中国科学技术大学计算机应用技术,2009.[11] 张志伟.基于移动计算的县域测土配方精确施肥推荐系统[D].河南农业大学农业信息化,2015.[12] 李鹏辉.基于移动平台的电商个性化推荐系统研究[D].大连海事大学管理科学与工程,2014.[13] 鲍美英,申晋祥.基于Android的音乐推荐系统的设计与实现[J].山西大同大学学报(自然科学版),2019,35(4):32-33,87.[14] 谭学清,何珊.音乐个性化推荐系统研究综述[J].现代图书情报技术,2014(9):22-32.[15] 裴丽丽.改进的实值UI-RBM协同过滤推荐算法[D].兰州大学计算机技术,2017.[16] PazzaniM,MuramatsuJ,BillsusD.Syskill&Webert:identifyinginterestingwebsites:13thNationalConferenceonArtificialIntelligence&8thConferenceonInnovativeApplicationsofArtificialIntelligencev.1,Portland,OR,1996[C].[17] 陈丹阳.基于位置的协同过滤推荐方法研究[D].哈尔滨工程大学计算机技术,2017.[18] XinxiW,DavidR,YeW.Context-awaremobilemusicrecommendationfordailyactivities[J].Multimedia,2012.[19] 冯阿敏.基于用户协同过滤算法的推荐系统的设计与实现[D].西安电子科技大学计算机技术,2017.[20] 土祥.黄土高原典型区沟道工程治理适宜性空间分异分析[D].西北大学地图学与地理信息系统,2019.[21] 曾文,湛腾西.网络视频爬虫系统的设计与实现[J].中国科技信息,2010(15):96-99.[22] 刘佳奇,王全民.基于改进的用户协同过滤算法的高校个性化图书推荐系统[J].计算机与数字工程,2020,48(10):2458-2461,2479.[23] 王希,胡玉娇.协同过滤推荐算法原理对大学生互联网阅读的指导[J].河南教育(高校版),2019(4):45-47.[24] 高连花.基于社会化标签的个性化信息服务研究[D].华中师范大学情报学,2012.[25] 杨爽.基于Hadoop的电影推荐系统的研究与实现[D].湖南大学软件工程,2018.[26] 李潼.个性化视频推荐系统的设计与实现[D].北京交通大学软件工程,2019.[27] 孙小平.民办高校图书馆社区教育信息平台构建探讨——以南通理工学院社区教育平台为例[J].湖北开放职业学院学报,2020,33(4):17-19.[28] 高堃.教育视频多模态信息推荐系统设计[D].西安电子科技大学信号与信息处理,2014.[29] 杨卫.基于Android的家淘管理平台的技术研究与应用[D].苏州大学计算机技术,2018.[30] 彭亮,郑淑文,何英,等.基于MODIS的积雪时空变化与CMADS气象因子相关性研究——以塔什库尔干河流域为例[J].水资源与水工程学报,2019,30(4):53-62.[31] RamezaniM,YaghmaeeF.Anovelvideorecommendationsystembasedonefficientretrievalofhumanactions[J].Physica,A.Statisticalmechanicsanditsapplications,2016,457:607-623.

附录附录名称@recommend.pyimportosos.environ["DJANGO_SETTINGS_MODULE"]="movie.settings"importdjangodjango.setup()fromuser.modelsimport*frommathimportsqrt,powimportoperatorfromdjango.db.modelsimportSubquery,Q,Count#fromdjango.shortcutsimportrender,render_to_responseclassUserCf:#获得初始化数据def__init__(self,all_user):self.all_user=all_user#通过用户名获得商品列表,仅调试使用defgetItems(self,username1,username2):returnself.all_user[username1],self.all_user[username2]#计算两个用户的皮尔逊相关系数defpearson(self,user1,user2):#数据格式为:商品id,浏览此sum_xy=0.0#user1,user2每项打分的成绩的累加n=0#公共浏览次数sum_x=0.0#user1的打分总和sum_y=0.0#user2的打分总和sumX2=0.0#user1每项打分平方的累加sumY2=0.0#user2每项打分平方的累加formovie1,score1inuser1.items():ifmovie1inuser2.keys():#计算公共的浏览次数n+=1sum_xy+=score1*user2[movie1]sum_x+=score1sum_y+=user2[movie1]sumX2+=pow(score1,2)sumY2+=pow(user2[movie1],2)ifn==0:#print("p氏距离为0")return0molecule=sum_xy-(sum_x*sum_y)/n#分子denominator=sqrt((sumX2-pow(sum_x,2)/n)*(sumY2-pow(sum_y,2)/n))#分母ifdenominator==0:return0r=molecule/denominatorreturnr#计算与当前用户的距离,获得最临近的用户defnearest_user(self,current_user,n=1):distances={}#用户,相似度#遍历整个数据集foruser,rate_setinself.all_user.items():#非当前的用户ifuser!=current_user:distance=self.pearson(self.all_user[current_user],self.all_user[user])#计算两个用户的相似度distances[user]=distanceclosest_distance=sorted(distances.items(),key=operator.itemgetter(1),reverse=True)#最相似的N个用户#print("closestuser:",closest_distance[:n])returnclosest_distance[:n]#给用户推荐商品defrecommend(self,username,n=3):recommend={}nearest_user=self.nearest_user(username,n)foruser,scoreindict(nearest_user).items():#最相近的n个用户formovies,scoresinself.all_user[user].items():#推荐的用户的商品列表ifmoviesnotinself.all_user[username].keys():#当前username没有看过ifmoviesnotinrecommend.keys():#添加到推荐列表中recommend[movies]=scores#对推荐的结果按照商品浏览次数排序returnsorted(recommend.items(),key=operator.itemgetter(1),reverse=True)#入口函数defrecommend_by_user_id(user_id):user_prefer=UserTagPrefer.objects.filter(user_id=user_id).order_by('-score').values_list('tag_id',flat=True)current_user=User.objects.get(id=user_id)#如果当前用户没有打分则看是否选择过标签,选过的话,就从标签中找#没有的话,就按照浏览度推荐15个ifcurrent_user.rate_set.count()==0:iflen(user_prefer)!=0:movie_list=Movie.objects.filter(tags__in=user_prefer)[:15]else:movie_list=Movie.objects.order_by("-num")[:15]returnmovie_list#选取评分最多的10个用户users_rate=Rate.objects.values('user').annotate(mark_num=Count('user')).order_by('-mark_num')user_ids=[user_rate['user']foruser_rateinusers_rate]user_ids.append(user_id)users=User.objects.filter(id__in=user_ids)all_user={}foruserinusers:rates=user.rate_set.all()rate={}#用户有给电影打分在rate和all_user中进行设置ifrates:foriinrates:rate.setdefault(str(i.movie.id),i.mark)all_user.setdefault(user.username,rate)else:#用户没有为电影打过分,设为0all_user.setdefault(user.username,{})user_cf=UserCf(all_user=all_user)importrandomrecommend_list=[each[0]foreachinuser_cf.recommend(current_user.username,15)]movie_list=list(Movie.objects.filter(id__in=recommend_list))[:15]random.shuffle(movie_list)other_length=15-len(movie_list)ifother_length>0:fix_list=Movie.objects.filter(~Q(rate__user_id=user_id)).order_by('-collect')forfixinfix_list:iffixnotinmovie_list:movie_list.append(fix)iflen(movie_list)>=15:breakreturnmovie_list#计算相似度defsimilarity(movie1_id,movie2_id):movie1_set=Rate.objects.filter(movie_id=movie1_id)#movie1的打分用户数movie1_sum=movie1_set.count()#movie_2的打分用户数movie2_sum=Rate.objects.filter(movie_id=movie2_id).count()#两者的交集common=Rate.objects.filter(user_id__in=Subquery(movie1_set.values('user_id')),movie=movie2_id).values('user_id').count()#没有人给当前电影打分ifmovie1_sum==0ormovie2_sum==0:return0similar_value=common/sqrt(movie1_sum*movie2_sum)returnsimilar_valuedefrecommend_by_item_id(user_id,k=15):#前三的taguser_prefer=UserTagPrefer.objects.filter(user_id=user_id).order_by('-score').values_list('tag_id',flat=True)user_prefer=list(user_prefer)[:3]current_user=User.objects.get(id=user_id)#如果当前用户没有打分则看是否选择过标签,选过的话,就从标签中找#没有的话,就按照浏览度推荐15个ifcurrent_user.rate_set.count()==0:iflen(user_prefer)!=0:movie_list=Movie.objects.filter(tags__in=user_prefer)[:15]else:movie_list=Movie.objects.order_by("-num")[:15]print('fromhere')returnmovie_list#most_tags=Tags.objects.annotate(tags_sum=Count('name')).order_by('-tags_sum').filter(movie__rate__user_id=user_id).order_by('-tags_sum')#选用户最喜欢的标签中的电影,用户没看过的30部,对这30

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论