571
社区成员




随着互联网设备的普及及文化产业的蓬勃发展,从唱片、磁带、到如今的数字媒体,人们聆听音乐的方式一直在随着技术的发展而改变,各式各样的线上音乐系统也逐渐成为了人们聆听音乐的主流渠道,成为了代替唱片店的重要文化产业。
但由于人们版权意识的增加,资本介入,产业竞争等多种问题的出现,现存音乐系统的内卷现象严重,在自身资源素质并未得到良好解决的情况下,盲目拓展直播、购物、社交等功能,使应用本身臃肿、商业化。除此之外,众多音乐系统为盲目迎合听众,弱化专辑、歌手、风格的重要性,使歌曲本身分散、独立,在很大程度上削弱了其欣赏价值。对于其推荐功能,多数音乐软件推荐歌曲与商业相关,非常缺乏专业性
本系统目标设计一个界面简明易懂、专业性大于娱乐性的音乐系统,且具有以下功能:
(1)设置用户端和后台管理端,界面简洁大方,信息直观易懂,主次分明,功能按钮人性化。
(2)设置用户登录推荐、搜索、收藏等基本功能,功能少而精,满足用户基本需求的同时放大专辑音乐本身的欣赏价值。
(3)在推荐功能内,部署基于关联规则、内容、专业评分数据的音乐推荐算法,平衡热度、专业性、个性化。
音乐推荐系统有两个基本角色,一个是普通用户,另一个角色是系统管理员。
首先,我们为普通用户提供了基本的登录、注册以及个人信息修改功能。除此之外,应该满足其搜索音乐、查看热门榜单、分类搜索歌曲、查看音乐详情、音乐评论以及收藏的需求。根据用户在系统中的行为,产生用户偏好数据库,由推荐引擎生成推荐数据。
对于用户模块,需要完成的功能如下:
登录与注册:实现基础的用户注册、用户登录等动作。 为了实现个性化推荐,需对不同用户的行为数据进行收集。用户在使用过程中产生的行为数据绑定与标识其的唯一ID。
个人信息管理:供用户修改诸如用户名、邮箱、出生年月、故乡、性别、现住地、听歌喜好等个人信息。
热门音乐榜单: 将音乐列表按播放量、受喜爱程度、购买量等不同维度产生榜单视图展示给用户,供用户选择。
音乐搜索:完成用户对相应乐曲的查找,可以选择模糊搜索(输入歌曲名的一部分对歌曲进行查找)或者分类搜索(根据曲风查找音乐)
查看音乐详情;点击歌曲海报或者歌曲名称,即可进入歌曲详情界面(播放,查看作者、曲风、音乐评论等)
歌曲留言与评论:用户可以对歌曲进行评论与查看其他用户对于该歌曲的评论
个性化音乐推荐:根据用户使用过程中产生的数据,采用标签和兴趣迁移的协同过滤推荐算法进行分析运算,生成相应的音乐推荐结果。
音乐收藏管理:用户在使用过程中可以收藏(喜爱)心仪的音乐,收藏的音乐会放到对应的收藏夹中,便于用户对其进行管理
管理员需要对两个方面的数据进行管理(完成基本的增删改查):用户数据和歌曲数据。
对于管理员模块,需要完成的功能如下:
歌曲管理:管理员可以对音乐资料库进行管理,可以实现歌曲的增加、删除、查找和信
息修改的功能。
用户数据管理:管理员可以对用户数据管理可以实现用户信息的增加、删除、查找和信息修改的功能。
目标用户为线上的音乐用户,主要收集用户使用过程中所表现出的行为特征,通过对获取到的用户行为特征的数据进行分析,生成用户可能感兴趣的播放列表,方便用户探索自己感兴趣的音乐。本系统需要具备的功能如下:
推荐对象信息维护
推存在于系统中的对象包括用户、歌手、歌曲等。这些信息既是推荐的依据,也是信息展示的重要数据来源。这些信息有些是在用户端产生的,例如用户的个人信息、用户的注册时间等,又或者是在管理员端产生的(歌曲信息等)。
用户自定义信息设置
用户在使用该系统的过程中,可以根据自己的喜好收藏喜欢的音乐或者屏蔽不喜欢的音乐,并且可以对自己的收藏列表进行调整。根据用户设置的音乐偏好信息,本系统可以为其推荐感兴趣的歌曲,并且减少其不喜欢的歌曲出现在其播放列表中的频次。
用户行为管理
这部分主要完成收集并存储用户的在线行为数据。用户在线行为指的是用户收听新的歌曲、跳歌或收藏歌曲等行为数据。把对应的数据保存到数据库中,对数据库中的信息进行分析可以得出得出用户的喜好。同时用户可随时查看自己的收听记录。
推荐产生
本系统的核心功能。通过收集上述信息来建立用户——歌曲模型,挖掘出用户的偏好,以此寻求向用户推荐对象所具备的行为特征(标签),并为在线的音乐用户计算出其感兴趣的歌曲,最终为用户生成个性化的音乐推荐列表。
准确性和安全性。确保系统相关数据能够完整、准确保存,系统的数据不会丢失和非法篡改,用户的信息能得到有效的安全防护,系统各个功能能够正常运行,能依据用户习惯合理推荐
稳定性。系统稳定性和兼容性良好,系统在不同环境下,能够稳定运行和推荐资源
扩展性。在系统运行和系统版本更新过程中,系统功能、系统数据会逐渐增加,导致系统负载增大,导致系统的性能降低等问题,系统需要具备可扩展性来为解决这些问题
及时性。系统需要依据用户信息设立推荐优先级,及时响应用户的推荐当推荐列表都不被用户接受时,系统能快速更行用户的推荐列表。
将系统划分为用户管理、音乐管理和搜索和播放音乐模块等四个子模块。
用户管理模块 用户登录和注册的实现是这个部分主要的实现功能。对用户的权限进行设置、管理员可以对普通用户进行管理,普通用户只只能对其个人信息进行简易修改。等操作。
音乐管理模块 在这个模块中管理员可以执行对音乐信息的增删改查(歌手、发行时间、风格等)
用户-音乐交互管理模块 该模块的功能是将用户对音乐的操作记录下来(收藏、播放)来形成供推荐引擎决策的用户行为数据。
音乐评论管理
该模块的功能是支持用户对音乐进行评论、删除自己的评论、查看和评论别人的评论等操作。
音乐搜索模块 该模块是支持用户对歌曲进行模糊搜索和分类搜索,使得用户可以更好地得到自己想要的结果。
音乐推荐模块 使用协调过滤算法分析用户的行为及个人信息,从而分析获取到的用户相似度和基因偏好,产生个性化推送给用户的推荐音乐列表。推荐的准确率是用户收听、收藏歌曲的数量呈正相关。
系统功能结构如图所示:
用户用例图
管理员用例图
本系统需要收集部署三类数据:音乐数据、用户数据、用户-音乐交互数据,并在此数据基础上通过推荐算法处理获得第四类数据——推荐数据。这四类数据的采集获得方式如下:
(1)音乐数据:为通过爬虫程序爬取的pitchfork网站上的专辑数据,在预处理后保留专辑姓名、年代、音乐人、风格、封面、等关键信息后,存入mysql数据库中。
(2)用户数据:为根据系统需求设计得到的数据集合,在前端用户注册的过程中增加数据。
(3)用户-音乐交互数据:为根据系统需求设计后,在前端用户对专辑进行操作后中获得的数据集。
(4)推荐数据:为推荐算法根据数据库内已有的用户数据、音乐数据、用户-音乐交互数据,通过计算获得。
以上数据的交互信息如图:
界面层作为底层与用户直接交互的媒介,我们在设计的时候需要充分考虑用户的使用体验,为规避前文中提到的系统冗余、臃肿的情况,本系统在界面设计上秉持简介大方的准则,色彩统一,字体舒适。同时还应该充分考虑系统的实用性,在按钮形状、位置的设计上要人性化,充分考虑用户在使用本系统时会遇到的困扰,优化用户体验。
推荐算法作为本系统需实现的首要功能,我们不仅要完成基于关联规则的推荐也需要考虑到关联规则的局限性,以及我们设计本系统的初衷。确定本系统推荐功能实现中,其算法需求如下:
(1)实现基于关联规则的热度推荐:关联规则是在已有数据集上通过算法挖掘数据,得到数据实体之间的关联关系的算法,在本系统内我们需要通过设计算法,分析系统内已有的用户-音乐交互数据、音乐数据等,得到用户行为数据的关联规则,并以此结果作为推荐的标准。
(2)实现基于内容的个性化推荐:由于关联规则是基于已有数据集的数据挖掘方法,其冷启动问题就成为了关联规则算法的弊端,这里引入基于内容的推荐算法在用户还未产生或产生较少行为数据导致无法获取足够推荐结果时,使用基于内容的推荐算法以弥补。
(3)实现基于专业评分数据的专业推荐:为避免出现前文提到的商业化、个性化过重导致的推荐音乐艺术性、可欣赏性不佳的情况,这里引入了专业乐评网站的评分数据,为我们的推荐结果把关,特别是在基于内容的推荐中,加入专业评分数据作为依据可以获得更优质的推荐。
具体算法实体内容如图:
技术 |
类型 |
Vue |
前端框架 |
Vue-Router |
前端路由 |
Axios |
HTTP库 |
Vuex |
前端状态管理 |
Element-ui |
Vue组件 |
技术 |
类型 |
Springboot |
前端框架 |
Mybatis-Starter |
ORM框架 |
Maven |
项目构建 |
本系统的前端开发使用Visual Studio Code,测试浏览器使用谷歌浏览器,后端开发使用InteliJ IDEA,数据库方面使用MySQL,并使用Navicat对其进行管理操作。
根据系统需求分析,可以设计得到系统的结构框架,如下图所示:
本系统设计过程采用前后端分离的模式开发,前后端交互采用RESTFul API规范,通过Http以Json格式请求数据,前端后端分开设计,互不干扰,耦合性低。底层数据库使用MySQL,当前系统的体量较小,产生的业务活动数据较小,可以选择和后端都部署在同一服务器上。用过滤器设计模式,进行权限检查,增加系统安全性。使用单例模式封装数据库,使用适配器模式封装接口。项目整体采用中介者模式
本系统的开发中用到了VUE+ spring boot+ Mybatis的J2E框架实现系统的MVVM模式。每一应用层都完成相应的任务,各层之间既独立又统一。为了实现音乐推荐系统,我们在每层采用不同的子框架,表现层用VUE实现;业务层使用 Springboot;而 Mybatis则应用于持久层(数据获取层采用python);贯穿于前三层的是域对象层。通过这些框架层次搭建的系统有着松散耦合的特征,使得用户在使用系统时,可以完全忽略底层技术。
作者:555
您好,可以分享一下源码吗
可以分享一下源码吗 1836191213@qq.com
能分享一下源码嘛??
您好,可以分享一下源码么 604320314@qq.com