摘  要

各种主流的音乐平台都为用户提供了的大量的音乐,让他们时刻都能沉浸在音乐的海洋之中。然而,过多的音乐往往使用户眼花缭乱,很难发现他们真正所需要的。一套优秀的推荐系统,可以很好地解决这个问题,既能帮助用户找到自己喜欢的歌曲,又能提高用户对App的粘性,从而为平台方带来更多的流量和收益。

本系统的设计包括了后台管理系统、音乐推荐系统以及可视化系统。利用Python进行数据采集与离线分析,利用Hadoop的Map Reduce计算框架实现基于项目协同过滤算法,利用Django框架设计网页界面和后台管理界面。该音乐推荐系统使用了HDFS以及MySQL数据库,HDFS主要用于存储利用爬虫获取的海量的音乐数据,经过数据处理后,再通过Map Reduce计算框架进行计算,实现推荐算法后,将推荐结果保存在MySQL数据库中,以便于在前端页面展示中进行调用。

关键词:音乐推荐系统;大数据;协同过滤


目录

第1章 绪论

1.1研究背景

1.2选题目的和意义

1.3本文的研究内容

第2章 系统概述与技术简介

2.1系统开发环境

2.2系统运行环境

2.3技术简介

2.4.1selenium简介

2.4.2Hadoop简介

2.4.3MySQL简介

2.4.4Django简介

2.4 本章小结

第3章 可行性研究

3.1技术可行性

3.2经济可行性

3.3社会可行性

3.4本章小结

第4章 需求分析

4.1功能性需求

4.2非功能性需求

4.3本章小结

第5章 概要设计

5.1设计目标

5.2设计原则

5.3功能模块设计

5.3.1游客登录相关功能

5.3.2用户登录相关功能

5.3.3管理员登录相关功能

5.4总体架构设计

第6章 数据库设计

6.1数据库设计原则

6.2表设计

6.3E-R图设计

6.4具体表信息设计

第7章 详细设计

7.1数据获取

7.1.1数据爬取

7.1.2数据存储

7.2Hadoop伪分布式环境搭建

7.2.1虚拟机配置

7.2.2Linux配置

7.2.3Hadoop配置

7.3推荐算法设计

7.4前台页面部分

7.4.1系统主页面

7.4.2注册登录页面

7.4.3音乐查询页面

7.4.4热门音乐推荐

7.4.5歌曲播放

7.4.6个性化音乐推荐

7.5后台管理部分

7.5.1后台系统界面

7.5.2管理员管理操作

第8章 系统测试

8.1测试目的

8.2测试方法

8.3测试结果

8.3.1用户注册测试

8.3.2用户登录测试

8.3.3管理员增加歌曲信息测试

8.4测试结论

结论

参考文献

致谢

第1章 绪论

1.1研究背景

从上个世纪到现在,随着信息技术和网络的迅猛发展,人们的生活发生了巨大的改变。尤其是近年来,以网络大数据为基础的各种应用,如网上商城、政府办公、智能大数据分析等服务内容不断涌现,导致数据呈现指数级的增长,信息的传递与获取的代价日益增加,网络已经进入了一个信息超载的时代。

同样,音乐数据也已经达到了信息超载的状态。听音乐作为人们放松身心的一种重要途径,其方式也在不断发生着变化:从开始听收音机、听广播等方式被动地收听别人设置好的歌曲列表;到搜索引擎的出现,人们可以自己过滤出一些喜欢的音乐;再到推荐系统的出现,可以根据用户的历史行为数据挖掘出用户的潜在偏好,帮助用户发现自己可能会喜欢的音乐。

传统的音乐推荐系统在推荐算法中还存在少许弊端,同时其在海量数据的存储和处理方面也并不能适应当前的存储、运算需求。

1.2选题目的和意义

推荐系统是解决信息过载的一种有效途径,而音乐推荐是其中的一个主要研究领域。对于使用者来说,没有时间且并不可能收听全部歌曲然后选择出自己喜欢的歌曲。同时,音乐对人们的日常生活来说,也是一种背景音,可以让人一边听着,一边专心地做着别的事情,这样就会造成使用者的需求变得模糊,所以需要根据用户的喜好向他们推荐出跟其相匹配的歌曲。

随着数据的不断增加,传统的推荐系统对于数据处理等方面显得有些力不从心。Hadoop是一个具有良好存储和运算能力的分布式大数据开放源框架,可以在海量的有效数据基础上进行运算,提高数据的存储和运算速度,从而提高推荐算法的运算速度。

因此,将Hadoop与推荐系统结合之后,一个能够存储海量数据,快速处理数据,快速运行算法,并能为用户提供个性化的推荐服务,在现实中有很大的使用价值。

1.3本文的研究内容

本文主要是研究了一个利用大数据运算架构分析和推荐音乐数据的软件系统,能够完成数据采集、处理、分析、显示等功能,基本能满足用户对音乐的推荐要求。

本文共分为八章,对于每一章的安排如下:

第1章:前言。文章对本文的研究意义进行了总结,并对目前国内外有关推荐算法和音乐推荐系统的研究状况进行了总结,并对论文的主要内容进行了阐述。

第2章:系统概述与技术简介。首先对推荐算法进行了研究,主要包括基于内容的推荐算法、基于协同过滤的推荐算法。其次,本文对推荐系统所采用的核心技术和计算架构进行了介绍。

第3章:本章主要从技术、经济、社会三方面分析了该系统设计可行性。

第4章:对音乐推荐系统的需求进行了分析。针对系统的功能需求和非功能需求,结合实际的市场需求,对系统的功能、体系结构进行了全面的分析和模块化的需求分析。

第5、6、7章:音乐推荐系统的设计与实现。根据需求分析的内容完成本系统的概要设计、详细设计与数据库设计模块,完成后台部分的代码设计,实现推荐功能。最后是完成系统的前端界面,包括系统的基本功能和推荐功能。

第8章:推荐系统的测试。包括系统功能测试、数据预处理测试、数据存储测试、相似性计算测试、推荐测试、登录注册、功能测试、搜索功能测试以及系统并发性测试等。


第2章 系统概述与技术简介

2.1系统开发环境

操作系统:Windows10

数据库:MySQL

开发工具:Py Charm,Eclipse、VM ware Workstation Pro

开发语言及框架:Python、Java、Map Reduce计算框架、Django前端框架

应用算法:协同过滤算法

2.2系统运行环境

运行操作系统:Windows10及其以上版本

运行数据库:MySQLCommunityServer5.5及以上版本

文件存储:HDFS分布式文件存储系统

浏览器:谷歌浏览器

2.3技术简介

2.4.1selenium简介

它能够模拟用户对站点的访问行为,从而对站点进行测试和获取相关信息。除了主动测试之外,selenium还能作为网站信息爬取工具。不同于requests库,selenium能够从js中提取网页数据,实现网页登录、网页交互等复杂操作。selenium有以下特点:开源、免费、简单、灵活;它支持多种浏览器(IE、Safari、Chrome、Firefox等);对于web页面有良好的支持;可以支持Linux、windows、Mac等多种操作系统;同时支持Java、Python、C#等多种语言。

2.4.2Hadoop简介

Hadoop是Apache Foundation开发的一种分布式系统的基本结构。在不知道分布式基础结构的基础上,用户可以自行开发分布式软件。充分发挥了集群的优势,实现了快速的计算和存储。Hadoop是一种分布式的文件系统,它包括HDFS和Map Reduce。HDFS具有高的容错能力,它被设计用于低成本的硬件;它为应用程序的数据提供了很高的吞吐能力,这对于拥有大量数据集的应用来说是非常合适的。HDFS对POSIX的需求进行了宽松,允许在文件系统中作为流存取。Hadoop的主要设计是:HDFS和Map Reduce。HDFS可以储存大量的数据,Map Reduce可以处理大量的数据。

2.4.3MySQL简介

MySQL数据库可以说是目前运行的速度最快的SQL数据库之一。它开放源码,具有成本低、速度快、安装方便、完全免费、扩展性强、安全性高、支持多种语言的特点。现在MySQL数据库被广泛应用于很多公司,可以通过网络直接下载。

2.4.4Django简介

它是一款针对Python WEB开发的免费的响应式前端框架。有了这个架构,程序设计师们就能迅速建立互动的网页。它可以很容易地满足大多数正式网站所需的东西,并且还可以为Web站点提供更多的功能。这个框架是以MVT模型为基础的,M即Model,V即View,T即Template,该框架将三者结合起来,遵循了低耦合、高内聚的原则,易于改写和扩展,易于实现了站点的更新。

2.4 本章小结

本章节主要介绍了软件开发的环境、所使用的技术,以及系统的运行环境。开发环境包括开发工具,操作系统,语言,系统,数据库系统等。在技术方面,重点阐述了基于Hadoop的HDFS分布式文件存储技术,Map Reduce计算框架,MySQL数据库,前端Django框架。

第3章 可行性研究

3.1技术可行性

本系统的设计实现包括三个方面:首先是数据的获取,是通过python语言实现的,用到了selenium爬虫来实现,解析网页,获取到我们所需要的数据信息,然后进行数据存储;接下来是对于数据信息的处理,使用了Map Reduce的计算框架,使用了协同过滤推荐算法,由于获取到的信息数据量很大,Map Reduce的计算框架也会对于我们系统的实现起到很大的帮助;最后的部分是对于数据信息的展示,使用Django框架进行前端页面的设计,将我们后台处理好的推荐结果在前端页面中进行展示,且实现管理员和不同用户登录,以及对于不同用户给出适合的推荐功能。最后形成一个前后端结合的大数据音乐推荐系统。

3.2经济可行性

本项目所用的开发工具和框架模板都是开源的,所以开发整个项目并没有花费太大的成本。项目开发使用的软件是PyCharm和Eclipse都是开源的,存储用到的数据库MySQL也是免费的,计算框架Map Reduce也是开源免费的,没有任何版权费用,所以在经济上来说是完全具有可行性的。

3.3社会可行性

当今社会中,音乐已经成为了人们生活中必不可少的东西,而音乐推荐系统可以帮助广大用户发现其可能感兴趣的音乐,帮助管理员进行用户管理、音乐管理,而且本系统在使用过程中也是不收取任何费用的,于社会而言也是有很多益处的。人们在物质生活极大丰富的同时,也在不断提升对于精神生活的需求,听音乐作为人们精神生活的主要方式之一,所以人们对于音乐的需求会越来越大,而人们本身都具有猎奇的心理,从浩如烟海的音乐中直接挑选音乐自然是不太可能做到,那么音乐推荐无非是最为便捷的途径了。音乐推荐系统也就越来越受到重视。

3.4本章小结

在可行性研究这一模块中,主要从技术、经济以及社会三个方面的可行性进行分析阐述,对于大数据音乐推荐系统的可行性进行了度量,证实了本系统拥有相对低廉的开发成本和可行的技术支持,能够满足社会的需求,具有较高的研究意义。


第4章 需求分析

在前几章种主要介绍了推荐系统的发展历史、研究背景、相关技术和框架以及推荐算法等内容,并对系统的可行性进行研究。这一章将依据前几章的内容,对于音乐推荐系统的需求进行分析。

4.1功能性需求

伴随着我国音乐行业的发展,歌曲的种类日益丰富,在数量上也越来越多。当用户面对海量的音乐资源时,想要从中筛选得到符合自己心意的音乐是相当之困难的。当下大多数的传统音乐推荐系统,是把音乐进行分类、分榜单,让用户根据类别或者榜单自己去寻找该类下的音乐,并不能提供相应的个性化服务,这样的话用户很难找到自己喜欢的音乐,那么用户的体验感就会变差。

目前,网易云音乐平台在音乐推荐这方面做出的成果十分突出,系统可以根据用户多方面的数据,为用户推荐相应的音乐,而且准确度也是相当高的,本系统的很多地方也都借鉴了网易云音乐平台的音乐推荐功能。

基于Hadoop大数据音乐推荐系统在用户权限上可以分为游客、正常用户以及管理员三种权限:

(1)游客登录:支持音乐搜索与热门音乐推荐功能,使游客也可以听取当前热度相对较高的乐曲。

(2)用户登录:包括注册、登录以及个人信息管理等功能。除了具有游客登录所拥有的功能之外,还可以根据用户的历史行为进行个性化的推荐,使用户具有更好的体验感。

(3)管理员权限:可添加、删除、修改用户信息、歌曲信息、歌手信息等。

4.2非功能性需求

为了确保系统的正常工作,在保证系统功能性需求的前提下,必须确保系统的非功能化要求如下:

(1)易用性:各个年龄段的人都会听音乐,所以从用户的角度来看,要满足适用于大多数甚至绝大多数的使用者的要求,本系统的使用过程要相对简单、容易理解,不需要花多少时间就可以熟练使用本系统。

(2)高效性:在音乐系统中,尤其是音乐播放等模块,是需要和用户进行互动的,所以系统的反应时间不能过长,并尽可能与使用者的操作保持同步。太长的响应时间将会影响用户的使用体验,有可能造成用户的损失。

(3)并发性:在设备环境符合系统需求的前提下,推荐系统必须能满足更多的并发需求,以确保系统的稳定。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐