摘 要
各种主流的音乐平台都为用户提供了的大量的音乐,让他们时刻都能沉浸在音乐的海洋之中。然而,过多的音乐往往使用户眼花缭乱,很难发现他们真正所需要的。一套优秀的推荐系统,可以很好地解决这个问题,既能帮助用户找到自己喜欢的歌曲,又能提高用户对App的粘性,从而为平台方带来更多的流量和收益。
本系统的设计包括了后台管理系统、音乐推荐系统以及可视化系统。利用Python进行数据采集与离线分析,利用Hadoop的Map Reduce计算框架实现基于项目协同过滤算法,利用Django框架设计网页界面和后台管理界面。该音乐推荐系统使用了HDFS以及MySQL数据库,HDFS主要用于存储利用爬虫获取的海量的音乐数据,经过数据处理后,再通过Map Reduce计算框架进行计算,实现推荐算法后,将推荐结果保存在MySQL数据库中,以便于在前端页面展示中进行调用。
关键词:音乐推荐系统;大数据;协同过滤
管理员登录相关功能
(1)可以对音乐的信息进行查看、修改,并可以对于音乐进行增加删除操作。
(2)可以对用户的信息进行查看,但是不能查看涉及用户隐私的信息,也可以对于用户进行增加、删除操作。
图1系统功能模块图
数据库设计
2.1数据库设计原则
该系统采用的是MySQL数据库.在数据库的数据结构设计中,要确保数据库的实体和实体的关系紧密,在数据结构层次上不存在任何差错,避免了后期的纠错,而且要严格遵守数据库的第一范式、第二范式以及第三范式。
在数据库的设计中,使用了Navicat作为一个数据库管理工具,它可以建立多个连接,便于对各种数据库进行管理,同时也可以对特定的云数据库进行管理。
本系统所依靠的数据库是MySQL,它的前端网页显示的是依赖数据库内部的数据。所以,要对采集到的数据进行处理和提取,按照数据库的设计原理,尽量减少数据的冗余。
2.2表设计
在数据库中,需要对于表进行设计,包括用户表、音乐表、用户音乐收藏表以及音乐推荐表等。
E-R图设计
音乐实体是用来存储音乐信息的实体,里面记录了song_id、song_name、song_singer、song_time、song_album、song_language、song_img、song_file、song_type等信息,这些信息构成了song表的主要内容,主键为song_id。歌曲E-R图如图1所示。
图1歌曲E-R图
用户实体是存储用户信息的实体,其中记录了用户的user_id、user_name、user_age、user_area、user_phone、user_gender、user_password、user_email等信息,主键为user_id。用户E-R图如图2所示。
图2用户E-R图
通过以上歌曲、用户、管理员、收藏记录、推荐列表的五个实体设计以后,可以根据系统功能以及业务逻辑衍生出以下关系。系统ER图如下图3所示。
图3推荐系统E-R图
系统主页面
前端页面采用的基于python开发语言的Django框架设计的,通过运行pythonmanage.pyrunserver命令可以运行前端部分的代码,然后通过http://127.0.0.1:8000/的链接就可以进入系统的主页面,主页面展示如图所示。
在系统的主页面中,当前是以游客的身份进入的,可以进行音乐的查询以及热门音乐的查看和播放,也可以通过主页面中的用户中心来进行用户的注册和登录。
图4系统主页面展示
2注册登录页面
在系统的主页面中,可以通过主页面中的用户中心来进行用户的注册和登录,登录界面如图5所示。
图5用户登录页面展示
结论
本文设计实现的是基于Hadoop的大数据音乐推荐系统,设计之初是为了让广大音乐爱好者们有一个更好的平台来满足自己对于音乐的追求。随着人们的精神生活水平的不断提高,音乐在人们生活中的地位越来越重要。
系统的设计实现主要包含两部分:前端页面与后台系统。前端页面主要由游客登录、用户登录、管理员登录三部分组成,主要实现的功能如下:
(1)注册\登录模块:用户可以在系统主页面进行注册、登录,登录过程中若信息不符合要求则不能进入系统。
(2)音乐推荐模块:实现了在主页面中对于热门音乐的推荐,用户登录之后还可以根据用户的行为数据对其进行个性化音乐推荐功能。
(3)信息管理模块:系统管理员可以增添、修改、查看用户以及歌曲的信息。
(4)音乐收藏模块:用户可以对于自己喜欢的歌曲进行收藏,同时也可以作为数据进入推荐算法,为用户带来更优质的服务。
本项目的设计过程中使用Python进行数据爬取,爬取目标为网易云音乐网站,爬取过程中使用到了selenium爬虫和requests库,通过bs4库来解析源码。将爬取的数据存储到MySQL数据库中,使用Django框架搭建web页面,构建音乐网站,读取数据库爬取的数据进行展示。推荐算法部分采用Java语言实现基于物品的协同过滤算法,使用Map Reduce计算框架进行计算,并将数据存储到MySQL和HDFS中。
经过上述技术和算法的整合,项目开发已经取得成功,需求分析中所提及的内容都已实现,但是由于开发时间较紧,加之技术和环境的限制,系统功能并不完善,并没有达到理想的预期结果,需要通过今后不断地学习来完善和改进本系统。
参考文献
[1]刘帅,刘婵娟.音乐推荐系统综述[J].广州大学学报(自然科学版),2020,19(05):36-46+77.
[2]谭学清,何珊.音乐个性化推荐系统研究综述[J].现代图书情报技术,2014(09):22-32.
[3]陈雅茜.音乐推荐系统及相关技术研究[J].计算机工程与应用,2012,48(18):9-16+47.
[4]彭立涵.基于大数据平台的音乐推荐系统的设计与实现[D].哈尔滨理工大学,2021.
[5]黄川林,鲁艳霞.基于协同过滤和标签的混合音乐推荐算法研究[J].软件工程,2021,24(04):10-14.
[6]余明辉,张良均.《Hadoop大数据开发基础》[M].北京:人民邮电出版社,2018.2:1-144.
[7]嵩天,礼欣,黄天羽.《Python语言程序设计基础(第2版)》[M].北京:高等教育出版社,2017.2:1-309.
[8]张燕,唐振民,李燕萍.面向推荐系统的音乐特征抽取[J].计算机工程与应用,2011,47(05):130-133.
[9]黄立威,江碧涛,吕守业,刘艳博,李德毅.基于深度学习的推荐系统研究综述[J].计算机学报,2018,41(07):1619-1647.
[10]张国华,叶苗,王自然,周婷婷.大数据Hadoop框架核心技术对比与实现[J].实验室研究与探索,2021,40(02):145-148+176.
[11]华泽,叶雨航.协同过滤算法及在个性化音乐推荐中的应用[J].现代计算机,2021(22):43-46+54.[12]郝树魁.HadoopHDFS和Map Reduce架构浅析[J].邮电设计技术,2012(07):37-42.[13]王冉阳.基于Django和Python的Web开发[J].电脑编程技巧与维护,2009(02):56-58.