【《音乐推广系统的设计与实现》14000字】_第1页
【《音乐推广系统的设计与实现》14000字】_第2页
【《音乐推广系统的设计与实现》14000字】_第3页
【《音乐推广系统的设计与实现》14000字】_第4页
【《音乐推广系统的设计与实现》14000字】_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

音乐推荐系统的设计与实现摘要互联网和移动等信息化科技的迅速发展,使得人们在网络上接收到的信息越来越多。因此想从于海量的信息中获得自己所感兴趣的内容也显得更加艰难。对于部分信息过载的问题可以靠传统的搜索引擎解决,但是由于搜索关键词的重复度比较高,用户筛选不出需要的信息的情况还是会常常出现。同时,由于互联网基础建设的完备导致了用户可以随时发现并聆听音乐作品,而个人用户自主寻找音乐作品的占比在近年来也不断减少。想要改善这一问题,精准的个性化推送服务就非常有必要。个性化的歌曲推荐系统,不但能够帮助用户找到他感兴趣的歌曲,还能够协助歌曲内容提供商获得更多流量,从而增加收入。本系统通过基于用户的协同过滤算法进行歌曲个性化推送,系统实现的主要功能包括:注册登录功能、评分功能、热点推荐功能、个性化推荐功能等。首先,当用户处于游客状态时,便可开始查看热点推荐,新用户进行注册登记后,即可对自己所听过的音乐进行评分。此时,音乐推荐系统可以通过采集该用户的评分情况,然后采用基于用户的协同过滤算法为其生成个性化推荐列表并进行推送。系统采用Python的开发语言,并通过Bootstrap前端架构,Django开发架构,以及MySQL数据库等实现了前台网页的产品设计和与后台数据分析的互动,使得用户可通过Web页面注册登录本音乐推荐系统,获得个性化推荐。系统完成后对本音乐推荐系统的各个部分进行了功能测试,结果表明本音乐推荐系统的各部分功能基本满足用户需求。关键词:音乐推荐系统;协同过滤算法;个性化推荐目录TOC\o"1-2"\h\u29441绪论 绪论(一)研究背景与意义 网络信息时代的来临,再加上移动信息化的飞速发展,导致人类获取信息的途径受到了前所未有的变革,人类的传统生活习惯也随之被打破。在网络信息时代到来之前,人们信息的源泉大多来自于网络、报刊、图书等。传统的资讯获得途径并没有为用户提供广泛的信息量,移动网络时代的出现使资讯能够在网络平台上得到指数爆炸式地传递,网络的出现就克服了物理局限造成的资讯传递困难的现象。人类从移动终端和互联网上接收到的资讯更多。毋庸置疑,网络已成为了人类文明史上最大的资讯分发中枢。但它又是把双刃剑,当面临海量的冗杂信息内容,用户为了获得自己所感兴趣的信息内容反而显得更加艰难。当爆炸式的信息内容增加,就意味着里面必然掺杂了很多无效的信息内容,当信息内容的量级在提高,使用者获取信息的效果反而大大降低了,这便是人们俗称的信息内容过载问题。在互联网信息时代下,资讯量之“多”早已无法适应当代用户对资讯获得的新要求,更不是资讯提供商的核心竞争力。而时效性、准确度,才能满足用户对信息的新需求。对杂乱无章、五花八门的信息内容加以有效管理,从而把使用者感兴趣的信息内容提取,不感兴趣的信息内容筛选掉,目前是各大软件提供商最着重研发的方面,同时也是非常有研究前景的方向领域REF_Ref3741\r\h[1]。当前解决信息过载问题主要有搜索和推荐这两种方法。搜索:在推荐系统出现以前最常用的信息筛选方法就是搜索,使用者可以在互联网搜索引擎上输入自己感兴趣的内容,互联网搜索引擎按照使用者所提供的关键字对网络上的信息内容实行查询、筛选、整合。而受限于互联网搜索引擎的算法、关键字的复杂性较高、查询结果中没有对用户个性化定向等因素,普通互联网搜索引擎仍然很难筛选出用户所需要的信息内容。推荐:推荐是对信息过载的另一种有效方法REF_Ref3869\r\h[2]。不同于搜索方法,推荐并不要求用户自主操作,而更多的是通过隐性的方式获取用户特征、兴趣、行为,并由此获取用户的兴趣画像,为用户推广新内容。由于对用户数据的采集和建模,推荐的信息内容往往更具有个性化,既保证了推送信息内容的准确度,又增强了使用感受。而推送的准确性又非常依赖算法的可靠性,以及应用中数据采集的完整性。移动终端的广泛应用加上多媒体的数字信息化发展,给人类的数码娱乐生活开启了全新的时代:泛娱乐化互联网时代。泛娱乐化随着网络时代的来临,也使得推送系统在歌曲、影视、新闻等APP中得以普遍应用。海外的Youtube,以及中国国内的豆瓣、网易云音乐,以及哔哩哔哩等,均依靠其先进的推荐算法获得了大批忠实用户REF_Ref3980\r\h[3]。音乐一直是人们日常生活中不能缺少的精神食粮,而网络时代的到来也给传统音乐歌曲行业带来了巨大的变革。海量的音乐歌曲资源已被数字化,加之互联网基础建设的完善让广大使用者可以有条件地随时发现、下载、聆听音乐歌曲。而身为泛娱乐时期的产物,传统音乐歌曲本身也没法逃避消息过载问题。铺天盖地的音乐歌曲资源使得互联网用户在茫茫的音乐歌曲海洋中寻找不到方向,加之网络的宣传效果,使用者所看到更多的反而是当下火热的音乐歌曲而不是自身真实喜爱的音乐歌曲。而与此同时,互联网用户自主搜索、发现音乐歌曲的占比在近年来也不断减少,互联网用户收听的音乐歌曲范围也日益稀疏。精确的个性化推荐能够让使用者在浏览过程中得到良好的体验,精确的推荐还能够带动数字化专辑的销量,把浏览量有效转换为销量,有助于音乐内容提供商获得更多用户流量,增加收入。由此而言,若服务商能够建立一种有效、优质的音乐歌曲推荐体系,就可以给音乐内容提供商创造更大的收益REF_Ref4205\r\h[4]。(二)研究现状推荐系统出现以后,吸引了众多研发人才,对推荐算法展开了研究,不断有出新的算法被提出。与此同时,大量的推荐技术也发展了起来,并普遍地运用在各类应用中,为用户群体服务,为他们推荐邮件、图书、影视、音乐、生活资讯等。协同过滤算法目前在推荐系统领域使用得最为普遍,该算法最初是由Goldberg在1992年提出的REF_Ref4296\r\h[5],该算法的提出也标志着推荐系统的产生。随后,第一个音乐推荐系统在1995年产生,该系统是由MIT实验室创立的名为RingoREF_Ref4959\r\h[6],音乐推荐系统Ringo可以给用户进行个性化音乐推荐。2012年开展了一项专门面向歌曲个性化推荐的大赛MillionSongDatasetChallenge,该大赛提供了一项涵盖一百万条用户收听历史记录的大数据分析集,不但包含了用户相关资讯、歌手、发布日期等基本元数据,而且还有标签信息、歌曲内容分析等内容。一百余个团队参加了比赛,并提供了解决方案REF_Ref4884\r\h[7]。目前国内和国外有很多学者对音乐推荐系统有过研究。比如薛婧REF_Ref30910\r\h[8]基于构建情景模式的推荐算法,提高了向客户介绍工作的准确性,与传统的介绍系统比较更有实际意义。比如曾凡聪REF_Ref30959\r\h[9]就通过基于标签和兴趣迁移协同过滤的算法,将音乐标签与兴趣协同过滤技术相结合,增强了歌曲推送的准确度。AnandR等REF_Ref6318\r\h[10]建立一个音乐建议框架,采用卷积神经网络(CNN)和递归神经网络(RNN),针对音乐的定制推荐系统有效地代表私人偏好,可以根据音频信号特征的相似性提供推荐。彭程等REF_Ref30998\r\h[11]提出了一种基于睡眠者的精神压力的音乐推荐系统。将心率变化和音乐推荐相结合,根据使用者的心率变化推荐不同的音乐,让使用者的睡眠时间延长。王新月等REF_Ref6223\r\h[12]通过各种因素对用户偏好产生的影响,给出了一个通过层级分类的歌曲选择方式,从几个角度来考察选择曲目,从而提高了音乐推荐的准确度。刘畅REF_Ref19196\r\h[13]提出一种基于注意力机制与改进RNN的混合推荐算法,将注意力机制和音乐推荐相结合,大大提高了推荐的准确度。RanranWang等REF_Ref31064\r\h[14]提出一种基于异构信息网络的音乐推荐系统,通过考虑外部因素,如上下文因素,内部因素,如用户的个性化偏好,以及歌曲信息项之间的异构关系,从多个方面感知用户的音乐选择,自动维护用户的播放列表,提高用户的音乐体验。李军REF_Ref31096\r\h[15]通过选择最主要的二种推荐方法,包括协同过滤和基于内容的二种推荐方式,并同时利用这二个方式进行对音乐数据集的过滤。然后再利用混合策略进行推送,组合各种推荐方法,从而扬长避短。宋倩雯REF_Ref5707\r\h[16]还将情感分析和音乐推荐相结合,能根据用户心情的变化改变音乐推荐的类型,提升用户体验。以及彭立涵REF_Ref5619\r\h[17]将大数据运用到音乐推荐系统当中,搭建音乐仓库,利用Hadoop分布式框架,进行音乐推荐。目前,音乐推荐工作在国内外都得到了很大的发展,大量的歌曲门户网站、线下电台产生。国外的知名音乐网站,有Pandora、Rhapsody、Spotify等。国内本土也涌现出了大量的在线音乐产品,如豆瓣广播、网易云音乐、酷狗音乐等。

二、相关理论和技术本章将重点阐述在设计和实现音乐推荐系统中所应用到的重要算法和技术。其中,对系统的核心推荐算法做出了详尽的阐述,并对Django的开发架构做出了相关说明和优点总结。(一)基于用户的协同过滤算法协同过滤推荐技术在推荐信息系统发展中很快成为了一项热门的技术REF_Ref31155\r\h[18]。与传统单一的根据内容直接分析而得到推荐的方式有所不同,协同过滤算法通过直接分析用户行为来分析用户的兴趣爱好,从众多用户中发现和该用户兴趣爱好相似的用户,再通过综合这些用户对特定信息内容的评分,从而形成系统对该用户的兴趣预测和推荐内容。协同过滤也是目前最成熟和常用的推荐系统技术,许多成熟的推荐管理系统中都有用到该算法。例如在很多电子商务的推荐系统中,就可通过分析和目标用户相似的用户对一些商品的评价,来推送他们可能感兴趣的产品,目前国内大部分电商APP,例如淘宝,京东等都有用到相关技术。协同过滤算法一般划分了采取启发式和构建模型形式的二类。另外,在一个启发式系统的协同过滤算法中,还应该包含一个用户项目的协同过滤算法(User-Based)和根据项目的协同过滤算法(Item-Based)。本音乐推荐系统采用的是基于用户的协同过滤算法,因此下面将对基于用户的协同过滤算法做出详细说明。1.基于用户的协同过滤方法步骤(1)收集用户信息收集可以代表用户兴趣的信息。一般的网页系统采取让用户打分的方法或是给予评价的方法,例如豆瓣网站,这些方法就被叫做“主动打分”。还有一类是“被动评分”,是按照使用者的行为模式由管理系统替代使用者进行评判,并不要求使用者进行评价或录入评价数据信息,例如淘宝等平台利用用户的浏览行为来判断用户喜好度。(2)最近邻搜索(Nearestneighborsearch,NNS)以用户兴趣喜好为基本(User-based)的协同过滤的工作出发点是,统计二种趣味喜好相同的使用者间的亲近程度。例如:通过寻找几个与A有相同趣味爱好使用者,以他对C的打分结果作为A对C的打分估计。由于各种数据的各种特点可采用各种的方式统计,目前应用较多的相似性度算法主要有皮尔逊相关系数、余弦相似性度,以及经过调节后的余弦相似性度等。基于用户的协同过滤算法首先要通过用户过去的行为信息,发现和用户一致的其他用户;同时,可以通过这些相似用户对其他内容的评价信息,来预测当前用户可能会感兴趣的内容。2.选择合适的相似度计算方法在协同过滤中,一个很关键的环节便是怎样选取最恰当的相似度计算公式,常见的二种相似度计算公式包括皮尔逊相关系数和余弦相似率等。皮尔逊相关系数的计算公式(见式1):(式1)式子当中,i代表项目,例如歌曲;代表用户u评价的项目集;代表用户v评价的项目集;代表用户u对项目i的评分;代表用户v对项目i的评分;代表用户u的平均评分;代表用户的平均评分。余弦相似度的计算公式(见式2):(式2)3.计算用户u对未评分商品的预测分值另一关键的环节,便是计算用户对未评价歌曲的预测打分。先利用上一步中的相似度算法,先寻找用户的邻居集,其中表示邻居集,表示用户集。接着,再根据用户评分数据集,预测用户对项的评分,计算公式如下所示(见式3):(式3)其中,表示用户和用户的相似度。4.实例介绍假若有如下歌曲评分数据集,可以预测用户C对歌曲4的评分。表1歌曲评分数据表用户歌曲1歌曲2歌曲3歌曲4用户A4*35用户B*54*用户C542*用户D34*3用户E345*表中*表示评分未知。通过基于用户的协同过滤算法流程,可以计算用户C对商品4的评价结果,其过程如下所示。(1)寻找用户C的邻居从数据集中可以看出,只有用户A和用户D对歌曲4评了分,所以候选邻居有两个,分别是用户A和用户D。用户A的平均评分为4,用户C的平均评分为3.667,用户D的平均评分为3。如图1所示图1评分数据选择示意图根据皮尔逊相关系数公式,从上图红色区域内计算用户C与用户A之间的最大相似度即为:从上图蓝色区域计算用户C与用户D的相似度为:(2)预测用户C对歌曲4的评分根据上述评分预测公式,可以估计用户C对商品四的评分,如下所示:根据这个方法,可计算出其他的未知评分。(二)Django框架1.Django的简单介绍Django是一种先进的Python网络架构,能够快速开发安全性高和可维护的网站。由富有经验的开发人员创建,Django框架负责解决网站设计中繁琐的部分,使得你能够专心地撰写应用程序,而无须重复设计。Django最初是负责制作和维护报纸网站的网络团体,于二零零三年至二零零五年迅速发展。在制作了许多网站以后,团体便着手考虑并使用了许多经典的代码和设计模板。这些共同的代码转化为一个通用的互联网开发框架后,于二零零五年七月被开源成为“Django”的项目。随着Django这些年不断地在壮大,功能日益完备,从提供了支持新分类的数据库,模版引擎和缓存,到增加了通用的视图函数和类,这就大大减少了开发者需要编制的程序量和其他程序任务。Django项目现在是一项蓬勃发展的全球合作开放服务项目,有成千上万个用户和贡献者。虽然它仍然保留着它最初的部分功能,但Django现在已经逐步发展成为能够发布所有种类的网站内容的多功能框架。2.Django的优点使用Django开发框架非常高效便捷,它具有如下的一些优点。(1)完备性Django秉承“功能完备”的宗旨,供给开发者可以想到“开箱即用”的近乎全部功用。因此你所需要的一切东西都是作为“产品”的重要组成部分,这些东西都能够无缝整合到一起,并遵守一致性的设计准则,同时拥有广泛和最新的技术文档。(2)通用性Django可以用来创建几乎任何类型的网站—从内容管理和维基,到社区网络和新闻网站。它也可以与其他的客户端框架一起运行,并且可以提交几乎任何形式(包括HTML,JSON,XML等)的内容。在内部,虽然它为基本任何可能需要的各种功能(包括一些主流的数据库,模版引擎等)都提供了选择,不过如果需要时,它也能够延伸到应用的任何部分。(3)安全性Django提出了一种更加安全的方式来管理用户账号和密码,并减少了常见的错误。默认状况下,Django能够避免很多问题,包括SQL注入,跨站脚本,跨站点对请求的篡改和点击劫持等。(4)可扩展Django采用了一个组件的“无共享”体系结构,框架的各个组成部分都完全自立于其框架,因而能够按照需求加以替代或更新。在不同部分之间有严格的隔离,也就是说你能够通过在各个层级增加硬件设备来拓展业务。(5)可维护性Django的程序发展总体目标是严格遵照设计标准和设计模型,并鼓励提供可维持和可使用的程序。尤其是由于它采用了不拷贝自己(DRY)原则,所以没有了无谓的拷贝,极大减小了程式的数量。Django还将相应操作划分到可复用的操作中,从而在较低层级将相应程式分级或模块化(模型视图控制器(MVC)模式)。(6)灵活性Django是用Python创建的,它可以在许多平台上工作。这也意味着,你将不会受到任务特定的服务器平台的影响,而且能够在很多类型的Linux,Windows和MacOsX上工作应用。3.Django的结构MVC全简称ModelView和Controller,是在应用软件体系中的一个综合应用软件系统结构模式,将整个应用软件体系分为3个基础的部分:建模(Model)、视图模型(View)和控件(Controller),具有耦合度小、复合度高、生命周期成本小等优势。其结构图如下图2所示。图2MVC结构图Django构架的设计模式借用了MVC结构的设计思想,但同时还是分为了三个组成部分,来减少不同组成部分相互之间的耦合度。Django构架的主要特征,就在于可以将它拆分的三组成部分为:Model(模型)、Template(模版)和View(视图),这便是MTV框架。Django的框架图如图3所示。图3Django框架图

三、需求分析(一)需求概述本次设计的目标是实现一个能为用户提供个性化歌曲推荐的音乐系统。为了能正常使用,音乐推荐系统的功能要齐全。本系统前台用户必须有登录、注册、注销、搜索歌曲、给歌曲打分、个性化歌曲推荐等功能,而后台管理者则要有登录、注销、用户管理、歌曲管理、歌曲类型管理等功能。在最关键的音乐推荐模块,系统需要采集使用者对音乐的评分,而使用者评分则代表了使用者对该音乐的喜好。系统在获得用户-音乐评分矩阵之后,利用协同过滤算法获得推荐列表,把排序最靠前的音乐推送给当前客户。(二)系统用例音乐推荐系统的主要目标是实现基本的用户功能,并根据用户对音乐的历史评分数据计算得到个性化音乐推荐列表。访客状态可以查看歌曲信息以及热点推荐,普通用户登录后可以进行信息修改等操作,以及可以查看个性化音乐推荐列表,管理员登录后可以对用户和歌曲信息进行管理。本音乐推荐系统用例如图如下图4所示。图4音乐推荐系统用例图本系统的主要用户包括访客,用户以及系统管理员。访客:访客可以使用网页地址进入网站首页。访客一般只能完成普通操作,如查看音乐信息,搜索音乐,查看热点推荐等。普通用户:用户在以访客身份登陆后,即获取了系统的完整授权。普通用户可以进行个人信息修改,搜索音乐,查看音乐信息,查看热点推荐,以及对音乐进行评分,查看自己对音乐的评分记录,然后还具有个性化音乐推荐功能。系统管理员:系统管理员必须通过管理员账号登录以后才可以进行管理,系统管理员可以对音乐类型,音乐信息,用户进行管理以及对授权进行管理。(三)系统功能性需求音乐推荐系统的主要目的,是向用户推荐他们有可能感兴趣的歌曲,除此之外,要想音乐推荐系统能够正常使用,还需具备注册登录等功能,让用户可以自由注册登录,管理个人信息,给自己听过的音乐进行打分,同时还能获得系统为其进行个性化音乐推荐。另外,还需要有后台管理员做好音乐信息和用户的相关管理工作。(1)用户注册登录用户注册和登陆过程既是用户的识别流程,同时还是收集用户信息的主要方式,在游客状态时,系统提供查看歌曲信息和热点推荐的功能,当游客想要获得个性化推荐功能以及其他功能时,系统就建议用户按需要注册和登陆。此外,登录过程也需要尽可能简单。系统提供用户自己填写用户名和密码的注册方式,选择这个方法的主要原因是简单方便。(2)热点推荐功能当用户是访客状态时,网站首页会按照系统歌曲库中歌曲的已有评分进行排名,评分高的歌曲靠前显示。当用户注册之后,还没有对歌曲进行评分时,个性化推荐栏显示的实际也是按歌曲综合评分的热点推荐内容。(3)信息修改功能用户在使用系统时,可能会想要修改个人信息,例如用户不想用之前注册的用户名了,需要更改用户名;例如密码忘记了,需要修改密码;例如用户邮箱变化了,需要更换新的邮箱等。(4)音乐评分功能用户注册登录后,可以对自己感兴趣的或者听过的歌曲打分,也方便系统收集用户的评分数据,给用户进行个性化音乐推荐。(5)查看评分功能用户对歌曲进行评分后,若想查看自己对歌曲的评分记录可以在我的评分栏查看,同时在该功能下可以对自己的评分记录进行删除。(6)个性化推荐功能个性化推荐功能是本音乐推荐系统最关键的功能,关系着系统推荐的准确度。推荐功能主要采取基于用户的协同过滤算法,主要过程为搜集用户评分,把用户对歌曲的评分当做用户对歌曲喜爱程度,找出和目标用户兴趣相似的临近用户,后计算出目标用户可能感兴趣的曲目,完成歌曲个性化推荐。(7)后台管理功能系统管理员使用此模板实现了用户管理,可更改用户的邮箱信息;音乐类型管理,可以增加和修改音乐的类型;音乐管理,可以增加和修改音乐信息;评分记录管理以及用户权限管理。(四)系统非功能性需求要完成一个优秀的软件系统,需要从以下几个方面加以考虑,不但要注重于功能方面的要求,对其他方面的处理也必须跟上,以下是必须考察的一些非功能性指标:(1)安全性:操作系统的一项十分关键的技术指标便是安全性,也就是说当出现问题时,操作系统依然可以为使用者带来安全的服务,这就要求在产品设计时会多考虑突发性的问题,因为这种问题可以影响操作系统的稳定性。如实在出现无法处理的问题,则必须及时考虑好问题的应急方法。操作系统只有在安全的前提下,方可实现其他的优化与扩展。(2)可扩展性:对系统业务功能拓展而言,除了满足用户的基本需要之外,还可能需要另外增加新的接口,甚至是在后期还可能会增加一些功能,这就要求企业在产品设计的时候留下可以拓展的接口,并且在编程中还必须要遵循高内聚、少相互耦合,面向接口编程的规律。对系统功能的拓展而言,当用户数量增加,一个机器满足不了需要时,就必须通过集群或者分布式,通过扩展系统功能来提升效能,以争取为使用者提供更佳的体验。(3)可维护性:为了做到可维护性好,在系统开发时候就需要根据相应的标准编制好业务代码,同时还要在复杂的代码旁加以标注,这样在后期进行维修的时候,就可以事零点五功倍了,也方便于后序维修技术人员的进行调试工作。当整个系统设计实现完毕后,就必须要留下详尽的开发过程与部署文件,以增加整个系统的可维护性。(4)可恢复性:系统数据应该采用集群计算机的方法进行保存,在提升数据处理性能的同时,还可以对历史数据进行备份,而在系统崩溃数据损失时,也能够通过系统日志实现灾后的及时修复。(5)其他:除了以上几点以外,操作系统的顺畅程度、界面设计、以及服务器宕机的次数等,都是设计一种能令使用者感受良好的操作系统时所必须考量的。

四、系统设计(一)音乐推荐系统总体设计1.系统的架构设计本文中所设计的系统是使用B/S框架的基于Web的音乐推荐系统。B/S(Browser/Server)结构的好处就是使用者无须下载服务器端,而只需要通过Web网页登陆使用而已,并且对用户终端的需求也更少,从而方便了更多的用户使用。本系统由Python的Web开发框架Django搭建,使用Bootstrap前端框架,实现个性化音乐推荐系统。本推荐系统的总体架构从上至下,主要分为了表现层、逻辑层、算法层和数据层。其中表现层主要负责前台页面展示;逻辑层主要是各个功能模块实现的逻辑处理;算法层主要是基于用户的协同过滤算法的实现;数据层主要负责数据的查询和数据组装。音乐推荐系统的基本架构如下图5所示。图5系统框架图2.音乐推荐系统功能模块划分本音乐推荐系统共分为了两个部分,一个是前台功能模块,处理用户相关功能,主要包括:注册登录模块,修改信息模块,密码安全,音乐搜索,音乐评分模块,和音乐推荐模块。音乐推荐模块中用户评分数据太少无法进行个性化推荐时采用基于统计的推荐方式,即热门音乐推荐。对有多条音乐评分数据的用户通过基于用户的协同过滤算法得到个性化推荐音乐列表。另一个是后台管理员功能模块。主要利用Django自带的admin模块进行,主要实现对歌曲类型、歌曲信息、用户和评分记录的管理。本音乐推荐系统的系统组织结构图如下图图6所示。图6系统组织结构图(二)系统功能模块设计在功能模块设计部分前台相关模块主要介绍用户管理、音乐搜索、音乐评分、音乐推荐这四个模块。后台管理模块主要介绍音乐管理模块。1.用户管理模块用户管理模块主要包括用户的注册登录,以及修改密码,修改用户信息,其中修改用户信息主要为修改邮箱信息。(1)注册登录在系统首页的右上方,有注册登录按钮,使用者可在游客状态下单击登陆按键弹出登陆页面。登陆页面中,用户可以通过输入账号名和密码进行登陆。如果用户所输入的账号名或密码有误,提示“用户名或密码错误!”。若用户名密码正确,则成功登录,系统自动关闭登录页面,以用户已登录状态返回系统主页。用户点击页面右上角的注册按钮弹出注册页面,然后可以进行注册,用户在注册页面需填入用户名,密码和确认密码。完成注册后,可以进行用户登录流程,登录系统主页。(2)信息修改用户在注册完成后,系统首页的右上角有个人信息修改功能。点击个人信息更改进入个人信息变更界面,用户即可更改自己的邮箱。(3)密码修改用户登录完成后,系统主页右上角有密码安全功能。用户点击密码安全进入密码修改页面,当用户忘记密码或想要修改密码时可以使用该功能。2.音乐相关模块音乐相关模块需涵盖用户搜索音乐以及给音乐打分,用户评分收集后可用于后续的个性化推荐。(1)音乐打分用户可以给音乐进行打分,用户可以直接从主页上根据类型标签选择自己感兴趣的音乐,在音乐详情页进行打分,也可以搜索感兴趣的音乐后进入详情页打分。用户可以点击主页右上角“我的评分”查看自己的评分记录。(2)搜索音乐用户可以搜索音乐,本系统支持根据歌曲名进行搜索,用户点击右上角的搜索框输入歌曲名,可以搜索到你想查看的音乐信息。3.推荐系统模块设计个性化音乐推荐功能的按钮位于系统主页右上角,用户点击个性化推荐按钮后即可查看个性化推荐歌曲列表。歌曲列表的产生主要是采用基于用户的协同过滤算法,大致过程为:首先根据用户评分信息构建用户-音乐评分矩阵,然后根据用户-音乐评分矩阵计算用户之间的相似度,采用余弦算法计算相似度,再根据用户之间的相似度得到目标用户的最近邻居KNN,最后预测音乐评分并进行音乐推荐。推荐算法设计框图见图7。图7音乐推荐算法框图4.后台模块设计后台管理模块,主要包括:前台用户管理,音乐类型管理,音乐管理,评分记录管理。利用Django框架自带的admin模板实现,可实现对前台用户,音乐类型,音乐,评分记录的管理,管理员操作流程如图8所示。图8管理员操作流程图(三)数据库表结构设计1.数据库概要设计本音乐推荐系统主要功能为音乐评分和音乐个性化推荐,主要涉及到用户、音乐、类型和评分四个实体,打分、音乐类型、管理和音乐评分四种关系。数据库主要存储了用户信息表、音乐信息表、音乐类型表和用户评分表等数据。本系统的E-R模型设计如图9所示。图9系统E-R图2.数据库表结构设计本音乐推荐系统最主要的数据表有:用户信息表(user),音乐信息表(item),音乐类型表(type),和评分记录表(scorerecord)。(1)用户信息表主要用于存储用户信息,用户信息表包括了用户的id,用户名,用户密码,用户邮箱和用户创建时间这些信息,信息来源于用户注册时提交的内容。用户信息表结构如表1所示。表1用户信息表字段名数据类型长度是否为空主键备注idint11notnull√用户idusernamevarchar255null用户名passwordvarchar255null用户密码emailvarchar255null用户邮箱createtimevarchar255null创建时间(2)音乐信息表音乐信息列表主要用来存储歌曲相关信息,包含了所有的歌曲的id,歌曲名,歌曲类型,歌曲封面,歌曲具体内容介绍以及创建时间等信息。音乐信息可由后台管理员添加,本系统中的音乐信息来源于爬取豆瓣网获取的数据。音乐信息表结构如表2所示。表2音乐信息表字段名数据类型长度是否为空主键备注idint11notnull√音乐iditemnamevarchar225null音乐名typeidint11null音乐类型idimagevarchar255null音乐封面contenttext0null音乐内容createtimevarchar255null创建时间音乐类型表音乐类型表用于存储音乐类型数据,可由系统管理员在后台添加,本系统最初的音乐类型数据来源于豆瓣网的音乐类型数据。音乐类型表结构如表3所示。表3音乐类型表字段名数据类型长度是否为空主键备注idint11notnull√音乐类型idtypenamevarchar255null音乐类型名评分记录表评分数据表用于存储用户对歌曲的评分数据,包括评分id,用户id,音乐id,评分和创建时间这些数据,来源于用户在前台页面对歌曲的评分。评分记录表结构如表4所示。表4评分记录表字段名数据类型长度是否为空主键备注idint11notnull√评分iduseridint11null用户iditemidint11null音乐idscoreint11null评分createtimevarchar255null创建时间

五、系统实现与测试(一)开发环境 本音乐推荐系统的主要开发环境如下:(1)操作系统:MicrosoftWindow10(64位);(2)开发工具:PyCharm、Navicat;(3)开发语言:Python语言,Python3.8版本;(4)开发框架:Django框架,bootstrap前端框架;(5)数据库:Mysql数据库。(二)数据获取与存储1.音乐数据获取与存储本系统用的音乐相关数据来源于豆瓣网站,选择豆瓣网的原因是爬虫较为简单方便,且音乐信息量充足,有直接的音乐分类。打开豆瓣音乐的标签板块(网址:/tag),网站页面中有很多音乐风格,点击相应的标签下有相应类型的音乐,点击相应的音乐可以查看音乐详情,如图10所示:图10豆瓣网页图初始化数据库链接,设置音乐类型字典,将各音乐类型手动保存在typeList中,然后爬取音乐类型,查询数据库中是否已存在当前音乐类型,如果存在那么查询出来,不存在那么添加音乐类型后查询出来,然后爬取音乐列表,分页查询当前音乐类型下的音乐,从第一页开始,每页20条音乐数据,然后遍历音乐列表,从数据库中查询音乐名称判断是否存在,如果数据库中不存在该音乐那么就创建一个音乐字典,然后爬取音乐详情信息,将爬取到的音乐详情数据保存在数据库中,最后音乐数据在数据库中如图11所示:图11音乐数据在数据库中存储图2.用户数据和评分数据存储系统用户数据和用户的评分数据来源于手动添加,为了能更好的实现基于用户的协同过滤推荐算法,需要较多的用户,所以手动添加了50个用户和1000条评分数据,用户数据和评分数据在数据库中的存储如图12所示:图12用户和评分数据在数据库中的存储图(三)系统功能模块实现1.注册登录模块实现(1)功能描述用户进入系统主页后是访客状态,由于还没有评分数据,用户无法体验个性化音乐推荐以及其他需要注册登录后才能使用的功能。对于已有账号的用户,可以点击右上角的登录进入登录页面,填写用户名和密码进行登录,对于还没有账号的新用户,可以点击右上角的注册按钮进入注册页面,填写用户名,密码和确认密码,注册账号后再登录。(2)登录页面和注册页面实现效果如图13和图14所示。图13登录页面图14注册页面2.修改信息模块实现(1)功能描述用户完成系统登录后,若用户想要修改自己的信息,可以点击右上角的修改信息按钮进入信息修改页面,目前仅支持修改自己的邮箱等信息。(2)修改信息页面实现效果如图15所示。图15修改信息页面3.音乐评分模块(1)功能描述当用户需要对自己听过的歌曲打分时,用户可以从主页按类型分类的歌曲中点击自己需要打分的歌曲进入歌曲详情页面,也可以在搜索框中输入歌曲名直接搜索需要打分的歌曲点击进入详情,音乐详情页面包含歌曲的名称,类型,添加时间和简介等信息,在音乐详情页面可以对音乐进行打分操作,总共五颗星,未打分时五颗星为灰色,打分后根据打的分数变成黄色,五星代表满分5分。(2)音乐评分页面实现效果如图16所示。图16音乐评分页面4.音乐推荐模块实现(1)功能描述输入音乐推荐系统的访问地址,可进入系统主页。系统主页会显示按类型分类的歌曲,在未登录的游客状态时,点击页面右上角的热点推荐可以进入热点推荐页面,热点推荐页面显示的是基于统计的热点音乐推荐,即根据别的用户对音乐的评分降序推荐。点击右上角的登录按钮进入登录页面,登录成功后,系统右上角会出现个性化推荐按钮,点击个性化推荐可以进入个性化推荐页面,查看个性化音乐推荐,当用户还没有评分数据时,此处显示的个性化推荐实际上也是热点推荐,当用户的评分数据足够时,才能通过基于用户的协同过滤算法得到个性化推荐。热点推荐和个性化推荐实现效果如图17和图18所示。图17音乐热点推荐页面图18音乐个性化推荐页面5.后台管理模块的实现Django提供了完善的后台管理功能,admin后台是Django内置的一个后台管理界面,集成了一系列的功能,admin同时也是一种可替代的app,你还可自行创建。系统后台可以对前台用户、音乐信息、音乐类型、用户的评分记录进行管理。认证和授权是对系统管理员授予不同的身份和权限,管理员的操作被记录在右侧的最近动作栏中。系统后台管理总览页如图19所示。图19系统后台管理页面管理员具有用户管理权限,可以管理前台用户,对前台用户进行增加和修改,效果如图20所示。图20系统后台用户管理页面管理员具有对音乐类型的管理权限,可以对音乐类型进行相应的操作,如增加新的音乐类型和修改音乐类型如图21所示。图21系统后台管理音乐类型管理页面管理员具有音乐管理权限,可以完成对音乐的管理操作,例如添加和修改音乐信息,效果如图22所示。图22系统后台音乐管理页面(四)系统功能测试系统功能检测,主要是指对系统的所有操作模块系统做出相应检测,看是否达到设计要求,用户可以在系统初始界面或使用注册登录界面进入系统,以测试各个模块的功能,比如登录、注册,修改信息,密码安全,音乐搜索,音乐评分,对音乐推荐系统各个模块进行了检测,并发现评测结果更合乎预期,而推送的结果也就比常规的音乐推荐方法命中率更高。将系统部署上线后,进行了检测,在各方面均显示情况良好,未出现严重瑕疵和问题,系统稳定性也较好。具体测试步骤如表5所示:表5测试功能和测试效果表测试功能测试效果登录注册对于错误密码能检测出来,测试通过热点推荐推荐效果良好,推荐结果符合预期音乐搜索输入歌曲名后,能准确显示相关条目音乐打分打分功能良好资料修改资料修改功能良好个性化音乐推荐推荐效果良好,推荐结果符合预期(五)系统性能测试系统的性能检测重点主要是测量操作系统的流畅程度,以及在大规模应用请求冲击下,是否会产生问题,从而导致系统卡顿和不稳定。在上网条件较一般的情况下,通过注册登录系统,对所有功能模块的点击,从申请信息发出到反馈结果页面,时间基本上都可以保持在毫秒量级,从而达到了预期,系统性能良好。

六、总结与展望(一)全文总结本文设计并实现了一种基于用户的协同过滤算法的的音乐推荐系统,该系统主要功能为用户登录注册、音乐搜索、音乐打分、音乐个性化推荐等功能,本系统设计实现了完整的前台用户使用和后台管理功能,能为用户提供个性化的音乐推荐。本文的主要工作如下:分析了当前互联网高速发展的背景下,个性化推荐的重要性。阐明了本文的研究背景及研究意义,介绍了当前音乐推荐系统的研究现状。介绍了本文用到的基于用户的协同过滤算法的详细内容,以及本文用到的Django框架的基本信息和优点。本系统代码采用Python语言编写,采用Bootstrap前端架构,系统总体采用的是Django框架。其中,推荐算法使用基于用户的协同过滤的推荐算法实现。使用Django自带的admin模块,实现对音乐推荐系统的后台管理,系统管理员可以对音乐、音乐类型、前台用户、和用户评分进行管理。本音乐推荐系统的开发遵循软件开发规范和要求,系统采用了MVC的设计理念以及目前较为常见的技术。最后通过运行和测试,本音乐推荐系统的各项功能完善,能够满足音乐推荐系统需求设计的各项要求。(二)展望本文所编写的音乐推荐系统已经完成了总体结构的构建和基本功能的实现,但因为本人的技术不足和时间不够,在推荐的准确度和系统功能的完整性方面还存在一些不足。从以下这两个方面来看,还有很大的需要改进的地方。推荐算法的优化本文采用的协同过滤算法是一种基于用户评分的推荐算法,对系统剩余数量要求较高,所以处理冷启动方面还存在一些问题。未来可以通过引入基于内容的推荐算法,更有效地处理操作系统的冷启动问题,在未来的算法优化过程中,能采用提取音乐特征,校正音乐分类标签的方法

温馨提示

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

评论

0/150

提交评论