Download as pdf or txt
Download as pdf or txt
You are on page 1of 69

阜阳师范大学

硕 士 学 位 论 文

基于协同过滤的音乐推荐系统的设计与实现

Design and Implementation of Music Recommendation


System Based on Collaborative Filtering

作者姓名: 钱贝贝
指导教师: 王亚 (教授)
学科专业: 电子信息
研究方向: 计算机技术
完成时间: 2022.06.01
阜阳师范大学学位论文原创性声明

本人声明所呈交的学位论文,是本人在导师指导下进行研究并独立完成取
得的研究成果。除了文中特别加以标注和致谢的地方外,论文中不包含其他人已
经发表或撰写过的研究成果,也不包含为获得 阜阳师范大学 或其他教育机
构的学位或证书而使用过的材料。与我一同学习的同志对本研究所做的任何贡献
均已在论文中作了明确的说明,并表示谢意。

学位论文作者签名: 签字日期:2022 年 6 月 9 日

阜阳师范大学学位论文版权使用授权书

本人完全了解 阜阳师范大学 有关保留、使用学位论文的规定,即:有


权保留并向国家有关部门或机构送交本论文的复印件和电子文件,允许论文被查
阅和借阅。本人授权阜阳师范大学可以将学位论文的全部或部分内容编入有关
数据库进行检索和传播,可以采用影印、缩印或扫描等复制手段保存、汇编学位
论文。
(保密的学位论文在解密后适用本授权书)

学位论文作者签名: 指导教师签名:

签字日期:2022 年 6 月 9 日 签字日期:2022 年 6 月 9 日
摘 要

随着互联网的发展,大数据的到来,传统的音乐行业受到了很大的冲击,原
有的音乐数字化给人们生活带来了极大的便利。随着数字音乐的兴起,各大音乐
平台层出不穷,人们在音乐平台上收听音乐的时,常常因为歌曲信息繁杂,而不
能找到自己想听的音乐。为了解决这个问题,音乐领域引入了推荐系统。本文在
基于协同过滤的基础上,融合了基于内容的音乐推荐算法,并且设计了一个音乐
推荐系统,主要内容如下:
(1)基于协同过滤的相似度改进。传统的基于协同过滤算法给用户推荐时,
一些热门的歌曲,会影响用户与用户之间、歌曲与歌曲之间的相似度计算,导致
推荐效果不佳,本文采用惩罚热门歌曲来降低热门歌曲对相似度的计算带来的影
响,通过对相似度计算的改进,提高推荐的精度。
(2)基于协同过滤与内容的混合。在基于协同过滤的音乐推荐系统中,由
于新用户在系统中没有用户的行为数据,那么系统很难为新用户推荐,即存在冷
启动问题。针对该问题,本文提出了结合内容的推荐方法来解决。利用用户历史
行为、用户标签信息,得到不同标签下的热门歌曲,将这些热门歌曲推荐给新用
户,解决冷启动问题。并且在爬取的网易云音乐数据进行实验验证,证明了混合
推荐算法的准确率和召回率优于基于协同过滤和内容的推荐算法。
(3)音乐推荐系统的设计与实现。在 Pycharm 平台上进行开发,系统前后
端分离,前端采用 Vue.js 框架进行开发,后端采用 Python 的 Django 框架进行开
发。设计实现了基于协同过滤的音乐推荐系统,满足用户个性化需求,最后以更
友好的系统页面推荐歌曲给用户。

关键词:协同过滤;推荐系统;网络爬虫;冷启动

I
Abstract

With the development of the Internet and the arrival of big data, the traditional
music industry has been greatly impacted by the digitization of the original music,
which has brought great convenience to people's lives. With the rise of digital music,
major music platforms have emerged, and when people listen to music on music
platforms, they often cannot find the music they want to listen to because of the
complicated song information. In order to solve this problem, recommendation
systems have been introduced in the music field. This thesis incorporates a
content-based music recommendation algorithm based on collaborative filtering, and
designs a music recommendation system with the following main elements.
(1) Similarity improvement based on collaborative filtering. When the traditional
collaborative filtering-based algorithm recommends to users, some popular songs,
which will affect the similarity calculation between users and users and between
songs and songs, lead to poor recommendation effect. In this thesis, we use penalized
popular songs to reduce the calculation of similarity of popular songs, and improve
the accuracy of recommendation by improving the similarity.
(2) Collaborative filtering and content based hybrid. In the collaborative filtering
based music recommendation system, since new users do not have user's behavior
data in the system, then it is difficult for the system to recommend for new users, i.e.
there is a cold start problem. To address this problem, this thesis proposes a
recommendation method combined with content to solve it. Using user's historical
behavior and user tag information, we get the popular songs under different tags and
recommend these popular songs to new users to solve the cold start problem. And the
experimental validation on the crawled NetEase cloud music data proves that the
accuracy and recall of the hybrid recommendation algorithm is better than the
recommendation algorithm based on collaborative filtering and content.
(3) Design and implementation of music recommendation system. The system
was developed on Pycharm platform, with the front and back ends separated, and the

II
front end was developed with Vue.js framework, and the back end was developed
with Django framework in Python. We designed and implemented a collaborative
filtering-based music recommendation system to meet users' personalized needs, and
finally recommended songs to users with a more friendly system page.
Key Words : Collaborative filtering; Recommendation system; Web crawler; Cold
start

III
目 录
摘 要 .......................................................................................................................... I
Abstract .................................................................................................................... II
第 1 章 绪 论 ......................................................................................................... 1
1.1 研究背景与意义 ............................................................................................ 1

1.2 国内外研究现状 ............................................................................................ 3

1.2.1 音乐推荐系统研究现状 ..................................................................... 4

1.2.2 音乐推荐方法研究现状 ..................................................................... 5

1.3 本文的组织结构 ............................................................................................ 6

1.4 本章小结 ........................................................................................................ 6

第 2 章 相关理论及技术介绍 ............................................................................. 8
2.1 网络爬虫技术 ................................................................................................ 8

2.1.1 爬虫工作原理 ..................................................................................... 8

2.1.2 爬虫的分类 ......................................................................................... 8

2.2 常见的音乐推荐算法 .................................................................................... 8

2.2.1 基于协同过滤的推荐算法 ................................................................. 9

2.2.2 基于内容的推荐算法 ....................................................................... 12

2.2.3 混合推荐算法 ................................................................................... 12

2.3 相似度的计算方法 ...................................................................................... 14

2.3.1 皮尔逊相关系数 ............................................................................... 14

2.3.2 杰卡德相似度 ................................................................................... 14

2.3.3 余弦相似度 ....................................................................................... 15

2.4 系统开发技术 .............................................................................................. 15

2.4.1 前端相关技术 ................................................................................... 15

I
2.4.2 后端相关技术 ................................................................................... 15

2.5 本章小结 ...................................................................................................... 16

第 3 章 基于协同过滤和内容的音乐推荐算法 .......................................... 18
3.1 基于用户协同的音乐推荐算法 .................................................................. 18

3.1.1 构建用户-歌曲偏好矩阵 ................................................................. 19

3.1.2 改进用户相似度的计算 ................................................................... 19

3.1.3 预测歌曲评分并推荐 ....................................................................... 21

3.2 基于物品协同的音乐推荐算法 .................................................................. 21

3.2.1 构建用户-歌手偏好矩阵 ................................................................. 21

3.2.2 改进歌手相似度的计算 ................................................................... 22

3.2.3 预测歌手评分并推荐 ....................................................................... 23

3.3 基于内容的音乐推荐算法 .......................................................................... 24

3.3.1 音乐内容属性分析 ........................................................................... 24

3.3.2 对歌曲、歌单分别建模 ................................................................... 25

3.3.3 预测歌曲、歌单评分并推荐 ........................................................... 25

3.4 基于内容和协同过滤的混合推荐算法 ...................................................... 27

3.4.1 混合推荐策略与流程 ....................................................................... 27

3.4.2 冷启动的解决 ................................................................................... 28

3.5 实验与分析 .................................................................................................. 28

3.5.1 实验数据 ........................................................................................... 28

3.5.2 实验评价指标 ................................................................................... 28

3.5.3 结果与分析 ....................................................................................... 29

3.6 本章小结 ...................................................................................................... 30

第 4 章 音乐推荐系统的设计与实现 ............................................................. 31
4.1 系统分析 ...................................................................................................... 31

4.1.1 可行性分析 ....................................................................................... 31

II
4.1.2 功能性需求分析 ............................................................................... 32

4.1.3 非功能性需求分析 ............................................................................ 33

4.2 系统总体设计 .............................................................................................. 33

4.2.1 功能模块设计 ................................................................................... 33

4.2.2 数据库设计 ....................................................................................... 34

4.3 系统的关键功能模块实现 .......................................................................... 39

4.3.1 登录注册 ........................................................................................... 39

4.3.2 为你推荐 ........................................................................................... 41

4.3.3 歌单推荐 ........................................................................................... 41

4.3.4 歌曲推荐 ........................................................................................... 42

4.3.5 歌手推荐 ........................................................................................... 43

4.3.6 推荐排行榜 ....................................................................................... 43

4.3.7 其他模块 ........................................................................................... 44

4.4 系统测试 ...................................................................................................... 45

4.5 本章小结 ...................................................................................................... 46

结 语 ....................................................................................................................... 47
参考文献 ...................................................................................................................48
致 谢 ....................................................................................................................... 52
攻读硕士学位期间所取得的科研成果 ...........................................................53

III
第1章 绪 论

第1章 绪 论
1.1 研究背景与意义

如今,互联网、信息技术的兴起,大数据、人工智能、5G 等相关技术的普
及和应用,正在改变着人们的日常生活方式。由中国互联网信息中心发布的第
49 次《中国互联网络发展状况统计报告》[1],此报告指出,据 2021 年 12 月统计
的数据,中国网民已经达到 10.33 亿,与 2020 年统计的数据比,增长了 4296 万,
互联网的在线人数达到 73.0%。可以说,互联网已经无处不在,融进了人们生活
的各个方面,人们利用互联网便捷自己的生活,比如日常的移动支付、网络购物、
网上订餐等等[2]。然而事物都是利弊的形式存在的,以网络购物为例,互联网的
发展,带动了电商的兴起,增加了就业方式和就业机会。目前,国内也有很多著
名的电商平台,例如:淘宝、京东、拼多多等,这些平台每天都会产生大量的用
户数据,而这些数据会呈现爆炸式的增长,这样一来必然会产生信息过载的情况
[3]
,而且大量的数据给其安全性也带来挑战。
科学家和工程师一直在研究信息过载的问题,并致力于解决的一个难题。许
许多多的研究信息过载问题的人员,提出了很多具有建设性的建议,其中分类目
录、搜索引擎最具代表性[4]。比如分类目录,而雅虎、DMOZ 就是应用了此种解
决方案成为著名的互联网公司,分类目录是将一些网站分类,用户需要查找资料
时,根据自己查找的类别去对应的网站查找,国内的 Hao123 也是一个分类目录
网站[5]。互联网技术的发展,用户的需求也在也在逐渐地变高,网站类别更是层
出不穷,分类目录不能覆盖到全部类别的网站,对于一些新颖的或者冷门一点的
网站就不会覆盖到,这样可能会导致用户不能全面的得到其想要的信息[6]。同时,
对于不同类型的信息要去相对应的不同类型网站上寻找,会严重降低整个工作的
效率、浪费用户的时间,因此这种网站越来越不能满足用户的需求。
于是,科研人员提出了另一种解决方案,即搜索引擎[7]。谷歌靠着搜索引擎
在互联网领域站稳脚跟,搜索引擎可以让用户通过输入关键词,查找到自己想要
的信息[8]。利用搜索引擎查找信息时,但是在现实生活中,用户无法准确描述出
信息时,搜索引擎就无法根据关键字查找用户需要的信息,此时,搜索引擎无法

1
阜阳师范大学 硕士学位论文

满足用户的需求,从而导致用户的体验感降低。
针对搜索引擎解决的问题,推荐系统由此诞生,之前的方法都是人主动寻找
信息,而推荐系统出现之后却是信息主动找人[9],这不仅给用户提供了便利,提
高的用户体验感,推荐系统和搜索引擎都是一种辅助工具,辅助用户在短时间找
到有效信息[10]。推荐系统与搜索引擎不一样的地方,在于用户可以不知道明确的
信息时,根据用户的过去的行为数据,仍能给用户反馈需要的信息,它将用户的
兴趣爱好建模,推荐满足用户兴趣爱好的信息[11]。在用户知道明确的信息的情况,
一般都是搜索引擎辅助用户去查找信息,当在用户没有明确目的的情况下,搜索
引擎不能反馈有效的信息,而推荐系统能够推荐给用户感兴趣的东西。推荐系统
的出现,不仅节约了用户搜索的时间成本、帮助用户在大量的信息资源中迅速寻
找出真正需要的信息,而且还解决了搜索引擎只能关键字搜索,不能准确定位用
户的真实意图的问题[12]。
推荐系统能够挖掘长尾物品。Chris Anderson 发表的 “The Long Tail”(长
尾)就有对此的研究[13]。并于 2006 年出版了有关长尾的书,书中指出,传统的
商品销售受到了互联网的冲击,热门商品只占总物品的 20%,而这 20%的物品
提供了总销售额的 80%[14]。互联网的发展,在此条件下,电商由于没有货架成
本,与传统零售店相比,电商更能销售更多的商品。传统的零售店货架上都是热
门商品,因为考虑到货架以及人工成本,而有些不热门商品也提供了比较可观的
销售额的。大多数用户的需求是一些热门商品,但是这些商品不能代表全体用户
的需求[15]。对于一些用户来说,很难快速从海量信息中得到需要的信息,对于商
家来说,自己生产的产品很难得到广大用户的关注。推荐系统就是辅助用户,帮
助用户在大量的信息中迅速找到有效信息,另一方面给商家带来利润,实现用户
和商家的共赢[16]。
本文以登顶音乐类 App 用户的榜首的网易云音乐为例,网易云音乐最初的
目标是建立一个音乐社交网络,网易云音乐侧重于小众圈子,提高了对小众人群
的关注,而小众人群有比较大的概率形成社群,经过这种网络关系来提升品牌价
值。根据易观分析发布的《2021 中国在线用户洞察报告》中的数据显示,如图 1
所示,相比酷我音乐、酷狗音乐和 QQ 音乐等,网易云音乐是年轻用户占比最大
的平台,35 岁以下的用户约占 80%。根据《2020 年网易云音乐销售手册》显示:
2
第1章 绪 论

在网易云的用户中,以学生及白领、15-35 岁、高学历、一二线城市、可支配收
入高的等群体为主,听歌的人群更加年轻化。

图 1. 2020 年网易云音乐销售手册

Figure 1. 2020 NetEase Cloud Music Sales Manual.

因此可以看出,网易云音乐很受大众欢迎的,因为它能够准确给用户推荐喜
欢音乐,推荐系统在网易云的应用使得网易云在音乐领域占据比较重要的地位,
有利于提高网易云音乐的核心竞争力,因此推荐系统的应用能够提高行业竞争的
竞争力,有利于提高用户的音乐体验,也有利于更加直观地剖析音乐数据,辅助
音乐公司做出决策。

1.2 国内外研究现状

上世纪 90 年代初,就有很多学者提出推荐系统这一概念并进行研究,如今
推荐系统已成为一门独立的学科,取得了不错的成果,在社交、娱乐、电子商务
等领域都得到了应用[17]。比如社交软件 Facebook、Twitter 都应用了推荐系统,
电影和视频领域,Netflix 和 YouTube 也引入了推荐系统,当然电子商务领域也
有着非常成功的应用,比较著名的电商平台亚马逊,音乐电台 Pandora 和 Last.fm
等等都是推荐系统应用非常成功的例子[18]。
20 世纪 90 年代初,推荐系统概念就提出,一个公司为了解决其研究中心的
信息过载问题设计了邮件系统,后来,知名团队明尼苏达大学研究组,开发了
第一个自动化推荐系统,后来研究组推出来学术界研究推荐算法的常用数据集
MovieLen。随着推荐系统的不断研究,著名的互联网公司 Yahoo 发现个性化推
荐具有潜在商机,因此推出了 MyYahoo。美国的两位学者 Paul Resnick 和 Varian,

3
阜阳师范大学 硕士学位论文

在学术界首次提出了推荐系统,标志这推荐系统开始成为一个重要的研究领域[19]。
1998 年协同过滤算法应用在亚马逊电商平台,让亚马逊获取了巨大的利润,据
统计,20%~30%销售额都是推荐系统带来的,Adomavicius 团队发表论文,将推
荐系统分类,并指出未来研究方向[20]。后来,Netflix 举办一场目的为提高电影
推荐准确度的竞赛,很大程度上促进了推荐系统的发展,学术界对此次竞赛也表
示了极大的关注。后来,美国举行了首届 ACM 推荐系统大会,在大会上,不同
领域学者们分享了自己的研究成果,2018 年阿里巴巴的一篇论文被美国人工智
能协会录用。
近些年来,国内的很多方面也应用到了推荐系统,国内几大电商平台,京东
淘宝等,近几年来短视频的兴起,各大短视频平台也都应用了推荐系统,比如抖
音、快手,新闻领域也有推荐系统的身影,比如今日头条,音乐产品如网易云、
豆瓣电台极具代表性,关于推荐系统的应用有很多,例如邮件、广告等。

1.2.1 音乐推荐系统研究现状

推荐系统广泛应用于在音乐类的产品中,国际上著名的音乐产品有 Pandora
(潘多拉),Last.fm 等,国内的音乐产品也很好,比较有代表性的有豆瓣电台、
网易云音乐等,这些著名的音乐平台,都有着自己独特的技术支持。
Pandora 支持的后面技术是基于内容的音乐推荐算法,由专业人员亲自为不
同歌手的歌进行标注,主要是对歌曲的特性细化,比如歌曲的编曲、乐器搭配、
乐器演奏特征、旋律等维度。然后,Pandora 电台根据专业人员的标注,计算歌
曲的之间的相似度,并把用户之前喜欢的音乐相似的音乐推荐给用户[21]。
Last.fm 与 Pandora 的推荐算法不同,它没有使用专家标注,而是记录了用户
的行为数据,比如用户听歌次数、用户对歌曲的评分,然后计算出不同用户在歌
曲上的喜好相似度,把和相似听歌爱好的用户建立了一个社交网络[22],这样电台
能向用户推荐自己相似爱好的用户听过的歌曲,加强了用户与用户之间的联系[23]。
在推荐系统领域中,音乐推荐是一个比较独特的存在,研究 Pandora 的研究
人员,在一次大会上对音乐特点做出了总结[24]:音乐的数量规模很大,种类丰富;
用户喜欢听歌曲可能很多、对于喜欢的音乐用户会重复听很多次,用户反复收听
这个行为远远高于电影和书,基本上用户读书或者看电影只看一遍,因为用户已

4
第1章 绪 论

经知道书和电影里面的情节和内容,而且用户收听音乐时会受一些外在或者内在
因素影响,例如,新年的时候,用户会收听比较喜庆的歌曲,来衬托节日的气氛,
会在伤心难过的时候收听伤感的歌曲,而且用户还可以分享音乐给自己的好友,
具有一定的社交性质。

1.2.2 音乐推荐方法研究现状

推荐系统在音乐领域有着非常多的应用,促进了音乐网站的发展,为音乐公
司带来可观的利润,但是仍然存在一些比较难以解决的问题[25],当一个新用户刚
刚加入系统的时候,系统没有用户兴趣爱好的任何信息,而用户也不能准确地描
述自己喜欢的音乐,此时音乐推荐系统就很难为用户推荐符合用户兴趣爱好的音
乐,这时候会因为推荐的不准确性,降低了用户的体验感,给音乐公司带来一定
的用户损失[26]。所以音乐推荐算法研究的是如何个性化推荐的问题。用户产生的
各种行为数据信息,如何有效利用信息算法进行改进,是音乐推荐系统的重中之
重[27]。随着听音乐的用户的增加,音乐市场的需求越来越高,音乐推荐的问题也
逐渐出现,包括推荐的响应时间、准确性都需要去解决[28]。音乐推荐系统大多数
使用基于协同过滤、基于内容的推荐方法,主要分为以下两类:
(1)基于协同过滤的推荐
协同过滤就是一个利用集体智慧的方法。集体智慧(Collective Intelligence,CI)
是一种共享或者群体的智能[29]。在网络还没有出现之前,它就广泛存在于生物学、
计算机等领域,随着 web2.0 的迅速崛起,集体智慧在社交网络、推荐等领域也
发挥了极大的作用。
在基于协同过滤推荐算法研究中,用户对音乐所做的行为,比如用户搜索歌
曲行为,收听歌曲的行为,对音乐打标签和对音乐评论等行为,系统都不仅将这
些行为收集,还收集一些比如分享、收藏等重要的隐式反馈[30-31],该推荐算法会
根据用户的行为数据进行推荐。文献[32]提出了一种方法新的相似性度量标准,
给更具影响力的用户赋予一定权重进行推荐。Andreu Vall 等提出引入的特征组合
混合推荐系统能够更准确地预测拟合的播放列表继续,改善了播放列表中的少数
歌曲的长尾[33]。基于协同过滤的音乐推荐系统依旧存在挑战,例如,如何利用现
有可用数据向用户推荐、冷启动等,这些仍然是协同过滤需要解决的问题。

5
阜阳师范大学 硕士学位论文

(2)基于内容的推荐
基于内容的推荐。用户对物品的行为数据对该算法不产生影响,只需要提取
物品本身内容信息[34]。如何从物物品本身信息得到用户的兴趣数据是一个问题,
这时需要利用一些用机器学习的方法。该算法也有很多学者深入研究,提出不少
代表的建议,而且推荐效果不错。文献[35]分析标签与音乐特征属性,提出了一
套针对多标签类型分类任务的集成技术。通过组合多个分类器来提高音乐标签注
释系统的性能; Zheng E 等人实现了基于知识标签个性化动态推荐系统的优化
。Cyrillic Laurier 等人提出通过分析人们情绪来标记音乐,根据这些数据创建
[36]

特征,结合聚类的方式,体现出音乐与情感属性的映射关系[37]。

1.3 本文的组织结构

第 1 章 绪论。本章首先介绍推荐系统的研究背景与意义。其次,介绍了国
内外研究现状,分析了音乐推荐系统现状。最后介绍了本文了组织结构。
第 2 章 相关理论及技术的介绍。本章介绍得到音乐数据集的爬虫的网络相
关技术,工作原理以及分类。然后从原理、以及优缺点对音乐推荐算法进行了详
述,因为不管是什么推荐算法,相似度的计算都是最为关键的,这里对其进行了
介绍。最后介绍了音乐系统开发技术,主要介绍了前端以及后端涉及到的框架。
第 3 章 基于协同过滤和内容的音乐推荐算法。在协同过滤的基础上改进相
似度的计算。针对协同过滤算法中的冷启动问题,提出利用用户的标签对歌曲的
热门度进行定义,解决冷启动问题。最后,针对上述两个推荐算法,在单独使用
时的不足,将协同过滤和基于内容算法两种算法进行混合。
第 4 章 音乐推荐系统的设计与实现。首先介绍了数据来源以及实验环境。
其次,介绍了系统分析,从需求分析以及可行性分析两个方面,对系统进行分析,
然后,介绍了系统功能模块的设计。而后,介绍了数据库设计,主要是一些主要
实体设计与数据表以及系统界面图的实现。
最后为总语,对本文进行总结与展望。本章对全文所做工作进行汇总分析得
出结论,为后续进一步研究音乐推荐系统,改善推荐效果奠定基础。

1.4 本章小结
6
第1章 绪 论

本章介绍了在互联网技术快速发展的背景下为解决信息过载的问题提出了
解决方案:分类目录、搜索引擎及推荐系统。对它们进行逐一分析,以网易云音
乐为例,指出音乐对于年轻人的不可或缺性并顺势提出建立音乐推荐系统的必要
性,然后对推荐系统、音乐推荐系统和音乐推荐方法的研究现状进行了详细介绍,
并简单地介绍了文章的组织结构。

7
第2章 相关理论及技术介绍

第 2 章 相关理论及技术介绍
2.1 网络爬虫技术

2.1.1 爬虫工作原理

网络爬虫也称为“蜘蛛”,它可以在海量的互联网信息爬取需要的信息。简
单地说它是模拟类请求网站的行为,即自动请求网页、抓取数据,然后从中提取
有价值的数据[38]。具体步骤如下,首先发送请求获取目标网页,通过分析页面获
得网页的源代码。其次,解析页面从网页源代码中提取出本研究所需的数据。该
操作为数据的处理以及分析提供便利,因此需要给予高度重视。最后,以适当的
格式保存抽取的部分数据。通常以 TXT 文本、CSV 或 JSON 等格式将数据保存
在文本中。

2.1.2 爬虫的分类

爬虫技术主要有通用爬虫(搜索引擎的爬虫)和聚焦爬虫(针对特定网站的
爬虫),主题式爬虫聚焦爬虫(又称主题式爬虫),是一种有特定主题的爬虫技术。
它与通用爬虫原理类似,不同的就是聚焦爬虫会进行过滤与主题无关的 URL,
能够帮助用户获取只和目标主题相关的网页内容,提高了爬虫的精确度这里采用
的是聚焦爬虫。
(1)通用爬虫
该种类型的爬虫技术没有特定要求,首先根据初始化的 URL,进行爬取此
URL 对应网页的内容和其他 URL,将此过程中得到的新的 URL 未经爬虫,就将
其放入未爬 URL 队列中,不断循环往复,直到达到满足的条件停止。
(2)主题式爬虫
主题式爬虫又称聚焦爬虫,是一种有特定主题的爬虫技术。它与通用爬虫原
理类似,不同的就是聚焦爬虫会进行过滤与主题无关的 URL,能够帮助用户获
取只和目标主题相关的网页内容,提高了爬虫的精确度[39]。

2.2 常见的音乐推荐算法

主要应用于音乐的推荐系统的推荐方法有:协同过滤算法、基于内容的推荐,
8
阜阳师范大学 硕士学位论文

以及混合推荐算法。

2.2.1 基于协同过滤的推荐算法

协同过滤算法是应用最广泛。该算法主要依据用户的反馈的一些行为信息,
计算用户、物品之间的相似度,找到类似的用户或物品,然后计算预测出目标用
户对物品的评分,按照评分的高低形成推荐列表,最后给用户进行推荐[40]。简单
地来说,是在海量的用户中发掘出自己的邻居用户,也就是品味类似的用户,然
后根据他们喜欢的东西组成一个推荐列表,然后根据推荐给你。
(1)基于用户的协同过滤算法的原理

基于用户的协同过滤(User Based Collaborative Filtering,UserCF)算法参考


了“人以群分”的思想,行为喜欢相似的人比较容易成为一个群体,比如当那你
想去电影院看电影的时候,总是喜欢询问好友的意见,问最近有什么好看的电影,
这一行为本质是将相同特征的用户分成一类。
该算法的核心思想是把不同用户对项目的反馈的数据信息,模拟成向量,计
算两个向量之间的相似值,根据相似度,找出同目标用户的相似用户,将相似用
户买过的物品,而目标用户没有买过,推荐给目标用户。简单地来说,该算法就
是利用一类用户的兴趣信息,为目标用户进行推荐。该推荐算法的过程如图 2
所示。

图 2. 基于用户的协同过滤推荐图

Figure 2. User-based collaborative filtering recommendation graph.

用户 A 喜欢音乐 A 和音乐 C,用户 C 喜欢音乐 A、音乐 C 和音乐 D,因此


将用户 A 没有表达喜好的音乐 D 推荐 A,这里主要总结为两步:首先计算用户 C

9
第2章 相关理论及技术介绍

的相似用户,然后找到这些相似用户喜欢的但 C 没有进行过评分的物品并推荐
给 C。
(2)基于用户的协同过滤算法的优缺点
随着学者们不断深入研究,也发现了此算法的优点及缺点,总结了推荐算法
一些优点及缺点如下:
基于用户的协同过滤算法的优点有:①相似用户给出的评分数据信息能够被
此算法有效利用,推荐的效率大大提高。②此算法利用了用户的反馈信息,所以
能够发现用户自己也不知道的兴趣的爱好,算法实现起来也比较简单,而且推荐
个性化程度高。③对于用户比较少的时候能发挥很好的作用[41]。
缺点也很明显如下:①历史数据的稀疏,数据稀疏问题是此算法至今为止最
难的挑战之一,在数据稀疏的情况下,很难计算用户之间相似度,导致在使用协
同过滤算法在推荐结果时出现偏差,推荐质量收到影响,降低用户体验感。②冷
启动问题:在实际生活中,更极端的境况是,新用户刚刚加入一个系统时,没有
历史行为数据,这就是冷启动问题。冷启动研究的时在没有大量数据的情况下,
推荐系统给用户推荐所能接受的内容,用户冷启动、物品冷启动以及系统冷启动
是冷启动的三个基本类别。
(3)基于物品的协同过滤的原理
基于物品的协同过滤参考了物以类聚的思想,例如用户喜欢的物品具有某一
类特征,于是具有某些特征的物品就被分在一类,最为广泛应用在电子商务的领
域的,比如去超市买饼干,会发现各种各样的饼干放在一起放在货架上售卖,有
曲奇饼干、威化饼干等等。
此算法的基本思路,是根据目标用户感兴趣的物品,计算物品之间的相似度
然后为用户做出推荐。首要用一些代表性的特征表示被推荐的产品,其次根据目
标用户之前的行为数据,即对物品特征的喜好,喜欢或者不喜欢,分析出这个用
户的兴趣偏好,然后将待选物品的特征符合这个目标用户的偏好的物品,形成一
个产品集,按照符合程度高低排序。如图 3 所示。

10
阜阳师范大学 硕士学位论文

图 3. 基于物品的协同过滤推荐图

Figure 3. Item based collaborative filtering recommendation graph.

用户 A 喜欢音乐 A 和音乐 C,用户 C 喜欢音乐 A,音乐 A 和音乐 C 相似,


因此将用户 C 没有表达喜好的音乐 C 推荐给用户 C,这里主要总结为给用户推
荐之前喜欢音乐的相似音乐。
(4)基于物品的协同过滤推荐算法的优缺点
基于物品的协同过滤推荐算法的优点描述如下:
①当用户数量远远超过物品数量时,计算相似度时计算量小不需要频繁更新。
②用户与用户独立:使用该算法时,用户的行为数据信息是有用的,与其他用户
之间的关系此算法不需要考虑,而且用户的评价对使用此算法推荐时不产生的影
响,在现实生活中可能商家恶意竞争,故意给物品恶意评价,在这个问题上,该
算法比上述基于用户的协同有优势,并解决了它不能解决的用户行为数据稀疏的
问题。③避免新物品的冷启动问题,此算法是利用物品的特征,然后进行分析推
荐,所以避免了新的被推荐物品的冷启动问题。
此算法的缺点描述如下:
①不能挖掘其他潜在兴趣爱好,该算法没有考虑用户的兴趣信息,只利用了
喜欢的物品信息,所以推荐给目标用户的物品都具有某一特征,不能发现目标用
户可能存在其他的喜好。②推荐的物品多样性低:因为该算法推荐的物品,都是
从之前喜欢的物品中提取出的特征,物品覆盖面比较小,并不能完全代表目标用
户喜欢的所有物品,所有丰富度比较低[42]。

11
第2章 相关理论及技术介绍

2.2.2 基于内容的推荐算法

该算法是最早出现的推荐算法,主要是用于信息检索,算法思想也比较简单,

它是根据用户之前喜欢什么样的物品,推算出来用户可能还喜欢什么物品,并且
把这些物品推荐给用户。基于内容的推荐是向用户推荐,之前所喜欢物品的相似
物品,分为三步:第一步是构造物品的特性;第二步是构建用户偏好矩阵;第三
步是计算推荐。这里的“内容”指的是用户之前喜欢的物品,并由此推算出来的
用户偏好,如图 1 所示,基于内容推荐的一个简单的例子,用户 A 对治愈放松
类型的音乐非常感兴趣,用户 C 也对此类音乐感兴趣,用户 B 对摇滚、说唱类
型音乐很感兴趣,用户 A 没有收听音乐 C,就把用户 C 听过的音乐 C 推荐给用
户 A。如图 4 所示。

图 4. 基于内容推荐图

Figure 4. Content-based recommendation graph.

基于内容推荐的优缺点如下:
该算法的优点:①能够解决冷启动问题。这点协同过滤是不能解决的;②能
够解决数据稀疏问题。协同过滤遇到数据稀疏时,不具有优势。缺点有就是不能
发现用户潜在兴趣,推荐的也只是和之前相似的物品,不具多样性。

2.2.3 混合推荐算法

由于之前常用的推荐算法在单一使用的时候,他们各有优缺点,不能完美结
局各种场景,基于内容的推荐算法侧重物品本身的属性,这就导致了在个性化程
度不够,协同过滤算法侧重用户的历史行为数据,但是它在多样性上不足,一些

12
阜阳师范大学 硕士学位论文

学者就提出了结合多种推荐算法产生了混合推荐算法[43],结合他们的优点解决问
题。Netflix Prize 竞赛就是一个不同推荐算法混合在一起的例子,这次竞赛目的

是为了改进一个电影领域的推荐系统,提高整体的准确率[44]。混合推荐为分以下
三种基本设计思想:
(1)整体式
整体式混合设计,是指很多的推荐算法整合到一个算法中,在事实上是多个
推荐算法起作用,而实现的混合设计,如图 5 所示。

图 5. 整体式混合设计

Figure 5. Integrated hybrid design.

(2)并行式
并行式混合设计,指的是根据输入的不同,使用的推荐算法不同,他们之间
相互之间独立,各自产生自己的推荐列表,如图 6 所示,之后产生的结果被组合

到最终的推荐集合中。

图 6. 并行式混合设计

Figure 6. Parallel hybrid design.

13
第2章 相关理论及技术介绍

(3)流水线
流水线混合,指的是前一个推荐系统的输出,是后面一个推荐系统的输入部
分。如图 7 所示

图 7. 流水式混合设计

Figure 7. Flowing hybrid design.

2.3 相似度的计算方法

上一节介绍了几种推荐算法,无论是什么推荐算法,相似度的计算都是最基
本的问题。相似度用来衡量物品与物品之间、用户与用户之前是否相似,而它有
许多计算方法有很多,接下来介绍相似度计算的几种传统的方法 [45] ,皮尔逊
(Pearson)相关系数,杰卡德(Jaccard)相似度以及余弦相似度。

2.3.1 皮尔逊相关系数

皮尔逊相关系数(Pearson)用来衡量物品、用户之间的线性相关程度,取
值范围在 1 和-1 之间。皮尔逊相关系数的计算如式(2-1)所示。
n

 X i  X Yi  Y 
Sim( X , Y )  i 1
(2-1)
n n

 X  X    Yi  Y 
2 2
i
i 1 i 1

其中,用户 X 对项目 i 的评分用 X i 表示,用户 Y 对项目 i 的评分用 Yi 表示,


用户 X 打分的平均值用 X 表示, 用户 Y 打分的平均值用 Y 表示。

2.3.2 杰卡德相似度

Jaccard 相似度是用来衡量的两个项目之间的相似度。Jaccard 相似度的计算


方法,两组集合的交叉元素数除以两组集合的并集元素数,由此得到相似度计算

14
阜阳师范大学 硕士学位论文

结果,其中集合元素指的是用户喜欢的项目集合,或这是喜欢该项目的用户集合,
计算如式(2-2)所示。
S a  Sb
Sim( a , b )  (2-2)
S a  Sb

公式中,Sa 代表的含义是用户 a 喜欢的项目集合,Sb 代表的含义数用户 b 喜


欢的项目集合,相似度的取值范围在 0 到 1 之间。当两个项目之间没有共同的特
征,相似度的值接近 0,表示它们是两个不同样式的项目。相似度的值接近 1,
表示两个项目间的相似性很高。

2.3.3 余弦相似度

余弦相似度它表示两个样本数据间的相似度。余弦相似度常在协同过滤推荐
算法中,用于计算项目之间的相似度,余弦相似度计算式(2-3)所示。

| N ( A)  N ( B) |
WAB  (2-3)
| N ( A) | *| N ( B) |

其中, N ( A) 表示用户 A 曾经有过评分物品集合, N ( B) 为用户 B 曾经有过


评分的物品集合。 WAB 表示用户 A 和用户 B 的余弦相似度。 WAB 的最大值为 1,
此时两个项目之间的相似度很高, WAB 的值为 0,就表示两个项目之间不相似。

2.4 系统开发技术

2.4.1 前端相关技术

前端采用了 Vue.js 框架设计,JavaScript 框架基础上一个用于构建用户界面


的框架,Vue 的核心库只关注视图层,可以通过简单的 API 实现响应的数据绑
定,在开发环境下,Vue 会给开发人员一些警告,来辅助开发人员避开常见的错
误与陷阱。

2.4.2 后端相关技术

(1)MVC 框架
为了满足大量用户的使用需求,系统采用了 MVC(Model View Controller)

15
第2章 相关理论及技术介绍

系统架构模式,即模型-视图-控制器的模式,这种模式是软件设计的典范,使
用 MVC 的目的是实现代码分离,从而使同一个程序可以使用不同的表现形式,
完成对音乐推荐系统的搭建。MVC 架构模式如图 8 所示。

图 8. MVC 体系框架图

Figure 8. MVC architecture diagram.

它把软件系统分为三个模块:①视图,视图代表用户相互界面,MVC 设计
模式对视图处理不包括在视图上的业务处理,仅仅是数据采集和处理。视图是提
供用户操作页面,可以说是程序的外壳。②模型,模型是业务规则的制定,处理
业务流程以及状态,模型接受视图请求,并返回处理结果,此过程对其他层相当
于黑箱操作。它负责存储系统核心数据,即程序需要操作的数据以及信息。③控
制,控制接受用户请求,将模型与视图匹配在一起,共同完成用户的请求,即根
据用户输入的指令,向模型发送数据,负责管理与用户交互控制。
(2)Django 框架
音乐推荐系统后端采用 Django 框架进行开发,Django 是一个开源的 Web 框
架,是很多 Web 开发人员最喜欢的框架之一,它是由 Python 写成,是 Python 下
一个具有代表性的框架,应用比较广泛,该框架功能强大,集成了 ORM 等多个
模块,给开发人员开发项目的时候提供了极大的便利。

2.5 本章小结

本章主要介绍网络爬虫技术,爬虫的工作原理、爬虫的分类,然后几首了几

16
阜阳师范大学 硕士学位论文

种常用的推荐方法,基于内容的推荐算法、协同过滤推荐算法以及混合推荐算法。
主要介绍的是协同过滤推荐算法,包括基于用户协同过滤、基于物品的协同过滤

算法的原理、以及优缺点。最后介绍了推荐系统常用的几种相似度计算方法,以
及系统开发的一些相关技术。

17
第3章 基于协同过滤和内容的音乐推荐算法

第 3 章 基于协同过滤和内容的音乐推荐算法
在传统的协同的过滤算法,存在了一些问题,比如在相似度计算上。热门商
品会给计算用户之间、物品之间的相似度时带来影响,降低了推荐系统的推荐质
量。实际的情况下,很多用户之间、物品之间并没有交集,这情况下利用余弦计
算相似度时,分子为 0,得到的相似度结果为 0,这样的数据没有计算的意义,
针对上述相似计算的问题,提出了采用惩罚热门商品和优化算法复杂度来就改进
算法,算法流程图如图 9 所示。

图 9. 协同过滤算法流程图

Figure 9. Flow chart of collaborative filtering algorithm.

3.1 基于用户协同的音乐推荐算法

该算法主要利用用户的之前评分等数据信息,挖掘出用户感兴趣的物品,并
且对这些物品进行评分,然后通过同一件物品,不同用户所给的评分,评测用户
与用户之间的相似性,给相似用户推荐物品,简单的来说,该算法就是把“和他
兴趣相投的其他用户”喜欢的物品推荐给用户。
18
阜阳师范大学 硕士学位论文

3.1.1 构建用户-歌曲偏好矩阵

本文把用户对歌曲收听次数等比例转换为到[0,5]区间值作为用户对歌曲的
评分,构建用户歌曲表。如表 1 所示,得到用户和歌曲的对应关系。
表 1. 用户对歌曲的评分表

Table 1. Users rating sheet for music.

用户 歌曲 a 歌曲 b 歌曲 c 歌曲 d 歌曲 e

用户 A 3.0 4.0 0 3.5 0

用户 B 4.0 0 4.5 0 3.5

用户 C 0 3.5 0 0 3

用户 D 0 4 0 3.5 3

3.1.2 改进用户相似度的计算

在实际的情况下,很多用户之间并没有交集,也就是并没有对同一首歌曲产
生过行为,所以很多情况下分子为 0,使用余弦相似度计算是结果为 0,这样的
数据没有计算的必要,传统的协同过滤算法实现将时间浪费在计算这种用户的相
似度上,所以只需计算有交集的用户之间的相似度,针对以上优化思路,首先用
歌曲到用户的倒排表来该歌曲有哪些用户表达了自己的喜好,得到用户评分过的
歌曲,并构建歌曲-用户的倒排表,如图 10 所示。其次根据建立的倒查表,建立用
户相似度矩阵 W。

图 10. 歌曲用户倒排表图

Figure 10. Singer user inversion list diagram.

建立用户相似度矩阵 W,计算用户之间的相似度,如图 11 所示

19
第3章 基于协同过滤和内容的音乐推荐算法

图 11. 用户相似度矩阵图

Figure 11. User similarity matrix diagram.

根据上述相似度矩阵 W,矩阵里的元素,就是计算相似度时的分子部分,
然后除以余弦相似度分母部分(根据公式 2-3 得到余弦相似度分母部分)得到用
户之间的相似度,以 C 用户为例,从相似度矩阵可知用户 C 与用户 A 相似度计
算的分子为 1,与用户 B 相似度计算的分子也为 1,与用户 D 用户相似度计算分
子部分为 2,则 C 用户与其他用户相似度计算如下:WCA=1/ 6 ,WCA=1/ 6 ,
WCA=2/ 6 。
在使用该推荐算法给用户推荐喜欢的歌曲的时,如果某一首歌曲非常热门,
很多用户都听了这首歌曲,并且对歌曲进行了评分,那么在计算用户之间的相似
度的时候,会出现偏差,导致任何两个用户之间的相似度都偏大,从而推荐质量
下降,所以本文采用了惩戒热门歌曲的方法,来降低热门歌曲对用户相似度的影
响。
采用惩罚热门商品是指,给热度很高的商品会给计算相似度带来一定的影响。
如果两个用户都买过字典,这并不能证明两个用户相似,因为字典是工具书,每
个人在学习汉字的时候都能用得上,是属于很热门的商品,但是如果两个用户都
买个《Python 从门到精通》这本书,那可以大致认为这两个人的兴趣爱好是相似
的,因为只有学习编程语言的人才会买着本书。
本文利用公式(3-1),降低热门歌曲的相似度

1

iN ( A) N ( B ) lg(1 | N (i ) |)
wAB  (3-1)
| N ( A) || N ( B) |

公式中,用 lg(1 | N (i) |) 代表的含义是对用户 A 和用户 B 共同歌曲列表的中

的热度比较高的歌曲进行惩罚,降低了热度比较高的歌曲对计算用户相似度时产
20
阜阳师范大学 硕士学位论文

生的影响, N (i) 表示是对物品有过行为的用户合集,歌曲 i 越热门, N (i) 越大。

3.1.3 预测歌曲评分并推荐

根据上述步骤算得用户的相似度,然后可以计算出用户对其他未评分的歌曲

的评分,采用公式(3-2)计算,公式中, Pucf ( A, i) 代表的含义是用户 A 对歌曲 i

感兴趣程度,S ( A, K ) 代表的含义是和用户 A 兴趣相似的 K 个用户,N(i) 代表的

含义是收听过歌曲 i 的所有用户,wAB 表示代表的含义用户 A 和用户 B 的兴趣相

似度, rBi 代表的含义是用户 B 对歌曲 i 的兴趣,也就是用户对歌曲的评分。

Pucf ( A, i)  
BS ( A, K ) N ( i )
wAB rBi (3-2)

由此可以计算用户 C 对歌曲 a、c、d 的偏好程度,如下:


表 2. 计算推荐结果

Table 2. Calculate the recommended results.

歌曲 a 歌曲 c 歌曲 d

未改进的评分 2.858 1.837 4.287


改进后的评分 2.061 1.325 3.092

观察上表,不同相似度计算方法的结果有区别,由惩罚了热门歌曲的相似度
计算出的用户 C 对为评分的物品的偏好程度比较低,在实际的计算中两者的结
果还是有明显的差距的。

3.2 基于物品协同的音乐推荐算法

3.2.1 构建用户-歌手偏好矩阵

构建用户-歌手偏好矩阵。把用户听过的歌曲列表中属于某个歌手的曲目数
进行统计,作为用户对于歌手的评分。例如:用户 u1 的歌曲列表中属于歌手 A
的歌有 5 首,则用户对于歌曲的评分即为 5。经过数据预处理,把数据转化到[0,
5],如表 3 所示:

21
第3章 基于协同过滤和内容的音乐推荐算法

表 3. 用户-歌手评分表

Table 3. User - singer rating sheet.

歌手 用户 A 用户 B 用户 C 用户 D

歌手 a 3.0 4.0 0 0
歌手 b 4.0 0 3.5 4
歌手 c 0 4.5 0 0
歌手 d 3.5 0 0 3.5

歌手 e 0 3.5 3 3

3.2.2 改进歌手相似度的计算

(1)根据上表构建用户-歌手的倒排表,如图 12 所示。

图 12. 歌手用户倒排表图

Figure 12. Song user inversion list diagram.

(2)计算歌手与歌手之间的相似度。
这里采用公式(3-3)计算歌手间的相似度,公式(3-3)如下:
| N ( A)  N ( B) |
wAB  (3-3)
| N ( A) |

其中分母 �(�) 是在这里喜欢歌手�的用户数,分子 �(�) �(�) 表示的是

同时喜欢歌手�和歌手�的用户数,公式(3-3)的意思是在喜欢歌手�的用户中
有多少比例的用户也喜欢歌手�每个物品有行为的用户数如表 4 所示:

表 4. 每个物品有行为的用户数

22
阜阳师范大学 硕士学位论文

Table 4. The number of users per item that has behavior.

歌手 歌手 a 歌手 b 歌手 c 歌手 d 歌手 e

有行为用户数 2 3 1 2 3

计算歌手之间的相似度,歌手相似度矩阵如表 5 所示:
表 5. 歌手相似度矩阵

Table 5. singer similarity matrix.

歌手 歌手 a 歌手 b 歌手 c 歌手 d 歌手 e

歌手 a 0 0.5 0.5 0.5 0.5


歌手 b 0.33 0 0 0.67 0.67
歌手 c 1.0 0 0 0 1.0
歌手 d 0.5 1.0 0 0 0.5
歌手 e 0.33 0.67 0.33 0.33 0

从上述计算歌手相似度的过程中,发现了一个问题,如果歌手 B 比较火,
人气比较大,很多用户都对歌手 B 进行了评分,那么��� 就会很大,那么就会造
成任何一个歌手都和歌手 B 的相似度都很大,这样会导致推荐效果的不准确性,
可以通过如公式(3-4)进行相似度的计算,可降低热门歌手的影响。
| N ( A) N ( B ) |
W AB  (3-4)
| N ( A) || N ( B ) |

公式中的分母由 �(�) 变成了 �(�) 与 �(�) 的乘积开方,降低了歌手 B 的


权重,减小了其他歌手和热门歌手的相似。

3.2.3 预测歌手评分并推荐

得到歌手的相似度矩阵后,计算用户�对物品�的兴趣,可有通过公式(3-5)
得到。
Picf (u , A )  
BS (A,K ) N ( u )
wAB ruB (3-5)

公式中�(�)代表的含义是用户喜欢的物品集合,�(�, �)代表的含义是与歌
手�最相近的�个歌手的集合,��� 代表的含义是歌手�和歌手�之间的相似度,
��� 代表的是用户�对歌手�的兴趣。

23
第3章 基于协同过滤和内容的音乐推荐算法

表 6. 用户 C 的评分矩阵

Table 6. User C's score matrix.

歌手 歌手 a 歌手 b 歌手 c 歌手 d 歌手 e

评分 0 3.5 0 0 3

推荐结果如表 7 所示:
表 7. 计算推荐结果

Table 7. Calculate the recommended results.

歌手 歌手 a 歌手 c 歌手 d

未改进的评分 3.25 3.0 5.0

改进后的评分 2.65 1.73 4.08

由表中可以看出 C 对歌手 d 的兴趣度最高,系统会把歌手 d 推荐给用户 C。


最后我们根据用户对于歌手的评分集合选取评分较高的 Top-N 个歌手进行
音乐推荐。

3.3 基于内容的音乐推荐算法

3.3.1 音乐内容属性分析

音乐的名字、标签类型等属性是音乐所直接表达的信息,在本文所使用的算
法中,基于协同过滤的算法在新用户、新的音乐加入系统时,由于缺少历史数据,
很难为用户推荐用户满意的音乐,这就是冷启动问题,因此在这里,可以利用基
于音乐的内容属性解决冷启动问题,常用的两种方法有:
(1)根据音乐内容属性
将其加入相应的召回类型中,并将音乐加入召回池,进而解决冷启动问题(2)
构造音乐的内容属性特征,根据音乐的属性特征计算音乐之间的相似度,从而解
决冷启动问题。
音乐的内容属性有很多,以歌曲为例,每个歌曲都有着不同的属性,歌曲的
内容属性基本上为三大类:第一类是歌曲本身属性,比如歌曲的编号、名称、歌
曲的创建时间等,第二类为其归纳属性,比如歌曲的类别、音乐的风格、标签等,
第三类就是歌曲的被动属性,包括歌曲的收听次数、评论等等。本文以歌曲的归
纳属性中的标签属性构建音乐内容特征进行基于内容的音乐推荐。

24
阜阳师范大学 硕士学位论文

3.3.2 对歌曲、歌单分别建模

对于算法模型来说,音乐的标签名字是不能直接使用的,需要将其转为数字
化才能使用。将每条数据的音乐用一维矩阵来表示,例如:A 歌曲的标签为:治
愈、轻松、小清新,B 歌曲的标签为:温馨、轻松、浪漫,这里歌曲类型为[治
愈,温馨,轻松,小清新,浪漫]的一种或几种,则 A 为[1,0,1,1,0],B 为[0,1,1,0,1]。
下面我们将构建歌曲-标签、歌单-标签两种特征矩阵。
(1)构建歌曲-标签信息矩阵
一个歌曲可能会被用户打上多个标签,我们把歌曲打上标签的记为 1 未打上
标签的记为 0。如表 8 所示。
表 8. 歌曲-标签信息矩阵

Table 8. Song-tag information matrix.

歌曲 标签 a 标签 b 标签 c 标签 d 标签 e

歌曲 A 1 0 0 1 0

歌曲 B 0 0 1 0 1

歌曲 C 1 1 0 0 1

歌曲 D 0 1 0 1 0

(2)构建歌单-标签信息矩阵
一个歌单会包含多个标签信息,我们统计每个歌单下对应的标签。如表 9

所示。
表 9. 歌单-标签信息矩阵

Table 9. Playlist-tag information matrix.

歌单 标签 a 标签 b 标签 c 标签 d 标签 e

歌单 A 1 0 0 1 0

歌单 B 0 1 1 0 0

歌单 C 0 0 1 0 1

歌单 D 1 1 0 0 0

3.3.3 预测歌曲、歌单评分并推荐

25
第3章 基于协同过滤和内容的音乐推荐算法

用户-歌曲评分表如表 10 所示。
表 10. 用户-歌曲评分表

Table 10. User-playlist rating sheet.

姓名 歌曲 a 歌曲 b 歌曲 c

Alice 3 4 5

Bob 3 4

可以看出 Alice 更喜欢歌曲 b 和歌曲 c,因为这两个歌曲都是属于治愈类型,


由此可以推断出 Alice 很喜欢治愈系歌曲,这样就可以为 Alice 构建偏好信息;
第一步:计算 Alice 的歌曲评分:(3+4+5)/3=4
第二步:根据公式(3-6)计算 Alice 对治愈类型音乐的偏好程度。
Xi 表示所有 Alice 打过分的治愈类型的音乐,avg 表示 Alice 对其评分歌曲的
平均分,n 表示所有涉及治愈系类型的个数,那么根据个数可得到 Alice 对治愈
类型的偏好程度为:
1 n (4  4)  (5  4)

n i 1
 xi  avg  
2
 0.5 (3-6)

第三步:建立用户偏好矩阵,其中每个元素与用户对每种音乐类型的偏好程
度一一对应,例如 Alice 的偏好矩阵为[0.5, ……]。
计算用户与歌曲之间的距离作为用户对于歌曲的评分,公式如(3-7)所示。

PCB (U , I ) 
U  I a a
(3-7)
U   I
2
a
2
a

其中, U a 表示用户对音乐标签 a 的偏好程度, I a 表示音乐标签是否属于 a,

即构建音乐的特征信息矩阵中对应的标签 a 的特征信息矩阵。
得到歌单信息矩阵后,歌单评分预测与歌曲评分预测类似,公式(3-8)如
下:

PCB (U , X ) 
U  Xt t
(3-8)
U   X
t
2
t
2

��� (�, �)表示用户 U 对于歌单 X 的评分,其中, U t 表示用户对歌单标签�

偏好程度, X t 表示该歌单 X 是否属于标签 t。

26
阜阳师范大学 硕士学位论文

3.4 基于内容和协同过滤的混合推荐算法

3.4.1 混合推荐策略与流程

本文使用了协同过滤、基于内容的推荐算法,这是最核心的算法,他们各有
优劣,当两种算法混合,他们能够互补劣势,发挥他们各自算法的优势,能够有
效地提升推荐质量。混合的方式有很多种,本文构建一个既包含协同过滤又包含
基于内容两种推荐算法特点的新的整合模型。如图 13 所示。

图 13. 混合算法流程图

Figure 13. Flow chart of hybrid algorithm.

获取并整理数据集,构建歌曲的标签信息矩阵,构建用户标签信息矩阵,获
得用户偏好矩阵,使用基于内容和用户协同两种推荐算法,计算得出用户对各渠
道预测评分,通过加权融合,得到 TOP-N 的歌曲推荐。根据本文对音乐推荐的
实际需求,对系统数据集以及用户行为数据进行分析,决定采用加权型的混合方
式,公式(3-9)如下:
P   Pucf  (1   ) PCB (3-9)
�表示基于用户协同的歌曲评分预测权重,(1 − �)表示基于内容的歌曲评分

27
第3章 基于协同过滤和内容的音乐推荐算法

预测权重。根据实验的的推荐效果适当的调整各权重大小,通过实验得到�的值
在 0.7 时,混合的效果达到最好。

3.4.2 冷启动的解决

当新用户加入系统的时候,由于没有用户的数据,所以此时存在一个冷启动
的问题,当新用户进入系统的时候,要求用户选择至少三个兴趣标签,系统为用
户推荐与用户选择标签接近的热门歌曲。该方法是利用用户的标签对歌曲的热门
度进行定义的,如公式(3-10)所示。
| N (i )  U ( f ) |
p( f , i)  (3-10)
| N (i ) |

公式中, N (i) 代表的含义是喜欢歌曲 i 的用户集合, U( f ) 代表的是标记了


标签 f 的所有用户集合,根据上述公式,计算出不同标签下的热门歌曲,当新用
户进入系统时,系统为用户推荐这些热门歌曲,有效地解决了冷启动的问题。

3.5 实验与分析

3.5.1 实验数据

数据集来源于网易云网站,点击排行榜进入各大榜单,进入开发者工具查看、
分析网页的源代码。Python 爬虫算法通过调用 Requests 模块向网页发起请求,
请求通过后即可抓取网页的数据,根据网页节点属性使用 BeautifulSoup 获取所
需要的数据(比如音乐介绍、名称、评论人数等相关信息)。
通过爬虫得到的数据需要进一步处理,因为有残缺一些关键信息的数据或者
重复的数据,所以此时要对这些残缺重复的数据进行处理工作。本文采取数据清
洗将爬取的数据进行处理,数据清洗主要有以下几个步骤,首先去掉重复值,其
次删除缺失重要信息的数据项,最后处理空值。比如在同一个歌单下,去掉重复
的爬取某几首歌曲;爬取到歌曲信息不全的数据进行删除。通过数据清洗可以使
数据保持一致性和完整性。

3.5.2 实验评价指标

对于本文使用的推荐算法,采用了比较常用的两个指标作为评价的标准,分

28
阜阳师范大学 硕士学位论文

别是准确率(Precision)、召回率(Recall),这两个指标比较能够反映用户的真实体
验。

准确率如公式(3-11)所示,在这里指的是推荐用户喜欢的合集占所有推荐
合集的比例,式中, R(u ) 代表的含义是用户喜欢的音乐推荐合集, T (u ) 代表的
是全部音乐推荐合集。

 |R(u )  T (u ) |
Precision  uU
(3-11)
 |R(u ) |
uU

召回率如公式(3-12)所示,在这里是指系统为用户推荐数据其中用户感兴
趣占用户所有感兴趣的合集比例,式中, R(u ) 代表的含义是系统推荐的音乐,
T (u) 代表的是应该正确推荐的所有音乐。

 |R(u )  T (u ) |
Recall  uU
(3-12)
 |T (u ) |
uU

3.5.3 结果与分析

在歌曲数据集上,利用准确率和召回率对推荐算法做出对比,如图 14、15
所示,分别展示了推荐给用户的歌曲数目为 5、10、15、20、25、30 时不同算法
下的准确率和召回率,从准确率和召回率上来看混合推荐要优于基于内容的推荐
以及用户的协同推荐,所以本文选择了混合推荐,实验结果也验证了之前的思想。

图 14. 不同算法之间准确率对比折线图

Figure 14. Line chart of comparison of accuracy between different algorithms.

29
第3章 基于协同过滤和内容的音乐推荐算法

图 15. 不同算法之间召回率对比折线图

Figure 15. Line chart of recall rate comparison between different algorithms.

3.6 本章小结

本章介绍基于用户协同利用用户偏好的数据,构建用户评分矩阵,通过采用
惩罚热门改进歌曲相似度计算,最后预测歌曲评分。基于物品的协同构建用户歌
手评分矩阵,通过采用惩罚热门改进歌手相似度计算,然后预测歌手评分。由于
协同过滤都存在一些问题,比如数据稀疏,冷启动问题,针对这些问题结合了音
乐的内容推荐算法,来实现个性化推荐。最后,在数据集上的实验结果验证了本
文算法的可行性。

30
第4章 音乐推荐系统的设计与实现

第 4 章 音乐推荐系统的设计与实现
4.1 系统分析

本系统是基于前后端分离的形式进行开发,后端采用 Python 的 Django 框架,


前端采用 Vue.js 框架,Django 是经典的 MVC 框架,在数据库的基础上封装了一
个 model 模型,通过类与数据表的映射,可以对数据库进行操作。系统环境如表
11 所示。
表 11. 系统环境要求表

Table 11. Table of system environment requirements.

名称 具体信息

开发软件 Pycharm

操作系统 Windows

开发语言 Python/HTML/CSS/JavaScript

数据库 MySQL

在系统设计之前,对本系统进行分析,首先是可行进行分析,分析预测用户
的需求,从技术、经济、操作进行可行性分析。然后对其进行功能性需求分析和
非功能性需求分析。

4.1.1 可行性分析

(1)技术可行性
音乐推荐系统采用前后端分离的形式进行实现,后端采用 Python 的 Django
框架进行开发,Django 是一个 MVC 框架,框架会把代码定义的 Model 类型映射
成数据库中的表,方便通过类的操作来进行数据库控制,前端采用 Vue.js 框架进
行开发,前端开发环境依赖于 node.js 环境,本系统在 Pycharm 平台上进行开发,
用 MySQL 数据库,综上所述,该系统在技术上是可行的。
(2)经济可行性
系统的开发所用的开发平台均为免费使用,系统所需要的其他软件资源也都
是免费的,不需要高昂的实验器材,减少了设备开支,学院给我们提供现有资源,

31
阜阳师范大学 硕士学位论文

足够系统开发的需要。系统开发成本低,对硬件要求不高,人力消耗比较低,所
以系统在经济上可行。
(3)操作可行性
本音乐推荐系统操作简单,容易理解,易于上手,只要求用户会上网即可,
不限地点时间,只要用户通过简单的注册登陆,之后就可以根据自己的喜好选择
自己喜欢的音乐。所以,本系统在操作上也是可行的。

4.1.2 功能性需求分析

(1)登录注册模块
用户注册登录模块,有账号的用户,输入正确的账号密码,就能够进入系统。
新用户根据页面提示,填写自己相关信息,注册账号设置密码,注册成功后,即
可登录。
(2)为你推荐模块
用户登录系统后,进入系统首页,为你推荐模块,推荐模块有歌单标签模块、歌
手标签模块、歌曲标签模块,本模块里,用户能够根据自己喜好,选择对应标签
的,能够跳转到相应模块。
(3)歌单模块
用户进入歌单模块,此模块有歌单的全部标签,点击一个标签,能够呈现与
此标签相关的歌单,并且点击任何一个歌单,都能跳转到歌单详情页,能够呈现
歌单的详细信息(歌单的包含歌曲数、播放次数等等),而且能够根据用户的选
择,推荐与此歌单相似的歌单。
(4)歌曲模块
用户进入歌曲模块,歌曲模块包含所有的标签,任意选择一个标签,能够展
示与此标签相关的歌曲内容,能够给用户推荐相似歌曲,点击任意一首歌曲,能
够进入歌曲详情页,里面有歌曲的信息,比如歌曲的演唱者等。
(5)歌手模块
用户点击进入歌手模块,此模块包含全部歌手标签,选择喜欢的歌手标签,
进入歌手详情页,能够看到歌手音乐作品数(包括专辑、MV 等),能够根据用
户选择的歌手,给用户推荐其他歌手。

32
第4章 音乐推荐系统的设计与实现

(6)排行榜模块
排行榜模块,总榜和歌单排行榜、歌曲排行榜、以及歌手三个子排行榜,在
总榜中能够同时看到歌单、歌手、歌曲三个子排行榜。
(7)管理员模块
管理员能够对上述的模块进行管理,管理用户信息,歌曲信息、歌单信息、
歌手信息等。

4.1.3 非功能性需求分析

在日常生活中,听音乐是人们必不可少的娱乐方式,奶茶店、快餐店等公共
场合时常会播放音乐,遇到符合自己爱好的歌曲时,而人们常常只记得歌的高潮
部分,或者只有一两句歌词,不知道歌曲的名称,这时候传统的搜索并不能满足
人们的需求,本系统的主要目的是为了满足用户更高的需求,方便他们短时间内
找到自己感兴趣音乐,提高用户体验感。
系统除了要满足以上用户需求外,还需要如下需求:①精准性需求,系统为
用户推荐的音乐要符合用户的爱好,这就要求系统要提高推荐的准确率,一个好
的推荐算法和推荐策对推荐的准确性尤为重要。②稳定性需求,当有大量用户是,
系统不能崩溃,在设计数据库要考虑到对用户数据,音乐数据,以及推荐数据进
行存储。③界面友好需求,操作页面简洁明了,易于操作。

4.2 系统总体设计

4.2.1 功能模块设计

音乐推荐系统的功能模块图如图 16 所示,新用户在刚刚加入系统时,要进
行登录注册操作,然后进入系统,这是由于数据库里面没有用户的行为数据,所
以系统给出导航,先选择歌手标签,最少选择三个,系统记录用户选择的歌手标
签,再选择喜好的歌曲标签,系统根据用户两次选择的标签,为用户推荐音乐,
若用户直接跳过标签选择,则系统为用户推荐热度比较高的标签数据。

33
阜阳师范大学 硕士学位论文

图 16. 音乐推荐系统功能模块图

Figure 16. Music recommendation system function module diagram.

登录系统之后,直接跳转到为你推荐模块,用户可以直击点击游览歌单标签、
歌曲标签、歌手标签等。点击进入歌单模块,在歌单模块里,用户可以点击自己
喜欢的歌单,系统还为用户推荐相似歌单,任意点击一个歌单,可以看到歌单详
情,有歌单的名称,歌单标签类型、歌单所含歌曲数,歌单的创建者、歌单播放
次数、评论次数等。点击进入歌曲模块,有歌曲详情(歌曲的名称、演唱者、播
放次数、评论次数、分享次数等),和相似歌曲推荐。点击进入歌手模块,有歌
手的详情(歌手的作品数等)与相似歌手推荐。点击个性排行榜模块,有四个榜
单,在总榜能看到根据用户的喜好,推荐用户歌单歌手歌曲排名前 20,其余三
个榜单是歌单前 20,歌手前 20,歌曲前 20。点击进入我的足迹模块,坐在这里
可以看到用户在系统内的行为,登录系统以及在系统内的点击游览行为。点击进
入后台,进入后台管理模块,分为四个板块,歌单管理、歌手管理、歌曲管理以
及用户管理,可以对四个模块的数据进行修改、添加等功能。

4.2.2 数据库设计

(1)主要实体设计
用户登录模块设计。当用户第一次进入系统时,弹出歌手标签的页面,选择
自己喜欢的歌手标签,最少三个标签,用户也可直接跳过这步,然后进入歌曲标
签页面,用户选择自己喜欢的歌曲标签,最少三个以上,也可以跳过,然后就计
入了音乐推荐系统。

34
第4章 音乐推荐系统的设计与实现

①用户
用户实体具有 id、姓名、电话、生日、性别、省份、城市、签名等属性,
如图 17 所示。

图 17. 用户实体图

Figure 17. User entity graph.


②歌单
歌单实体具有 id、创建者编号、名字、包含音乐数、播放次数、分享次数、
评论次数、收藏次数、标签等属性,如图 18 所示。

图 18. 歌单实体图

Figure 18. Playlist entity diagram.


③歌手
歌手实体具有 id、名字、音乐作品数、mv 作品数、专辑数等属性,如图 19
所示。

35
阜阳师范大学 硕士学位论文

图 19. 歌手实体图

Figure 19. Singer entity map.

④歌曲
歌曲实体具有 id、名字、创作歌手、评论数、歌词、歌曲链接等属性,如
图 20 所示。

图 20. 歌曲实体图

Figure 20. Song entity map.

(2)数据库表设计
根据信息需求,为音乐推荐系统设计了四张数据库表,分别为:用户信息表、
音乐歌单信息表、音乐歌曲表和歌手信息表。
①用户信息表
本表主要用来记录用户相关信息,除了用户一些基本信息以外,包括一些用
户喜好的信息(即用户喜欢的音乐类型),如表 12 所示。

36
第4章 音乐推荐系统的设计与实现

表 12. 用户信息表

Table 12. User information table.


字段名 类型 解释 是否为主键

userid int(10) 用户编号 是

name Varchar(255) 用户名 否

birthdy Varchar(255) 生日 否

gender Varchar(255) 性别 否

Province Varchar(255) 省份 否

City Varchar(255) 城市 否

Usertype Varchar(255) 喜欢的音乐类型 否

Tag Varchar(255) 喜欢的音乐标签 否

signature Varchar(255) 签名 否

由上表可以看出,表中存储了用户的偏好信息,用户喜欢的音乐类型、标签
等。当用户刚进入系统时,因为没有用户的行为信息,无法给用户个性化推荐,
因此当新用户进入系统时,系统会提供音乐歌曲、歌手的标签让用户选择,作为
音乐推荐系统的原始参考,系统会把用户喜欢的音乐类型形成一个推荐列表给用
户。
②歌单信息表

本表主要是用来存储音乐歌单相关信息,包括歌单编号、创建者编号、歌单
名字、创建时间、音乐数播放次数、分享次数、评论次数、收藏次数、标签等。
如表 13 所示。

37
阜阳师范大学 硕士学位论文

表 13. 歌单信息表

Table 13. Playlist information sheet.


字段名 类型 解释 是否为主键

ID Int(10) 歌单编号 是

userID Varchar(255) 创建者编号 否

Name Varchar(255) 名字 否

Trackcount Varchar(255) 包含音乐数 否

Playcount Varchar(255) 播放次数 否

Sharecount Varchar(255) 分享次数 否

Commentcount Varchar(255) 评论次数 否

Subscribedcount Varchar(255) 收藏次数 否

tag Varchar(255) 标签 否

Coverimg Varchar(255) 歌单封面 否

description Varchar(255) 描述 否

③歌手信息表
本表主要是用来存储歌手相关信息,包括歌手编号、名字、音乐作品数、
mv 作品数、专辑数、歌手头像链接等。如表 14 所示
表 14. 歌手信息表

Table 14. Singer information sheet.


字段名 类型 解释 是否为主键

Id Int(10) 编号 是

Name Varchar(255) 名字 否

Musicsnum Varchar(255) 音乐作品数 否

Mvnum Varchar(255) Mv 作品数 否

albumnum Varchar(255) 专辑数 否

picurl Varchar(255) 头像链接 否

④歌曲信息表
本表主要是用来存储歌曲相关信息,包括歌曲编号、歌曲名字、演唱歌手、

38
第4章 音乐推荐系统的设计与实现

评论数等。如表 15 所示
表 15. 歌曲信息表

Table 15. Song information sheet.


字段名 类型 解释 是否为主键

Id Int(10) 编号 是

name Varchar(255) 名字 否

Arist Varchar(255) 歌手 否

Commentnum Varchar(255) 评论数 否

lysic Varchar(255) 歌词 否

url Varchar(255) 歌曲链接 否

4.3 系统的关键功能模块实现

前端页面主要设计功能有:用户的登录注册,为你推荐界面的展示,兴趣标
签的选择,音乐推荐系统主页的展示,歌单、歌曲、歌手的页面实现以及后台管
理等内容。

4.3.1 登录注册

用户登录模块:新用户登录时没有账号,所以新用户可以在申请账号,有了
账号后输入账户密码,登录成功后跳转到为你推荐页面,否则登陆失败。老用户

直接登录,用户在登录时可以点击“记住密码”按钮,可方便下次登录。具体实现
效果如图 21 所示。

图 21. 用户登录界面

39
阜阳师范大学 硕士学位论文

Figure 21. User login interface.

用户注册模块:点击“注册”按钮跳转到注册界面,输入账号密码进行注册操
作。注册页面和登录页面设计类似,当用户输入完信息后,点击注册按钮,系统
把用户信息存储到数据库,完成注册过程。具体实现效果如图 22 所示。

图 22. 用户注册界面

Figure 22. User registration interface.

在用户进入系统后,系统会引导用户做一些爱好选择,系统引导用户选出感
兴趣的歌手,且选择兴趣标签时,标签个数不得小于 3 个,用户也可以跳过此操
作,直接点击下一步,如图 23 所示,点击下一步,选择用户感兴趣的歌曲,标
签数不得小于 3 个,如图 24 所示,点击进行系统,若新用户跳过兴趣标签的选
择,则系统为用户推荐的为热度标签数据。

图 23. 选择歌手标签图

Figure 23. Select the Singer TAB map.

40
第4章 音乐推荐系统的设计与实现

图 24. 选择歌曲标签图

Figure 24. Select the song label diagram.

4.3.2 为你推荐

为你推荐模块:用户成功登陆系统,进入为你推荐模块页面,如图 25 所示,
在这里用户可以浏览全部歌单、歌手、歌曲的标签,用户根据自己喜好选择自己
喜爱的标签,点击歌单标签,系统会跳转到对应标签的歌单页面。点击歌曲标签
跳转到对应的歌曲页面。同样,点击歌手标签跳转到标签对应的歌手页面。

图 25. 为你推荐页面图

Figure 25. Recommend page diagrams for you.

4.3.3 歌单推荐

歌单页面模块应用了基于内容的音乐推荐算法,如图 26 所示,此模块有歌
单的全部标签,点击不同的标签系统会推荐不同的歌单给用户。点击喜欢的标签,
系统会为用户展示对应标签的歌单,并且为用户推荐喜欢的歌单的相似歌单。

41
阜阳师范大学 硕士学位论文

图 26. 歌单页面图

Figure 26. Playlist page diagram.

歌单详情页模块:任意点击一个歌单查看歌单详情,如图 27 所示,可以看
到歌单详情信息,有歌单的名称、歌单简介,用户评论歌单的次数,收藏本歌单
的次数,用户分享歌单的次数,歌单内歌曲播放的次数,歌单的类型标签。并且
为用户推荐此歌单的类似歌单。

图 27. 歌单详情页面图

Figure 27. Playlist details page diagram.

4.3.4 歌曲推荐

歌曲页面模块,使用了基于协同过滤和内容的混合推荐算法。此模块有所有
歌曲的全部标签,如图 28 所示,不同的歌曲标签,推荐给用户的歌曲不同。用
户点击喜欢的歌曲类型标签,系统为用户推荐相应标签的全部歌曲。点击某一首
歌曲,可以看到喜欢歌曲的详细信息,比如歌曲的创建时间,并且为用户推荐相
似歌曲给用户。

42
第4章 音乐推荐系统的设计与实现

图 28. 歌曲页面图

Figure 28. Song page map.

4.3.5 歌手推荐

歌手页面模块,由于歌手的数目远远大于用户数目,此时使用基于物品的协
同过滤的推荐算法实用性比较高。此模块含有歌手的全部标签,如图 29 所示,
用户根据喜欢点击不同的标签,系统会推荐不同的歌手给用户。用户选择喜欢的
歌手类型标签,系统为用户推荐此类型的全部歌手。用户选择一个喜欢的歌手,
可以看到歌手的相关信息,所发的专辑数、演唱的歌曲数、以及 MV 数。系统
还会为用户推荐其他歌手给用户。

图 29. 歌手页面图

Figure 29. Singer page map.

4.3.6 推荐排行榜

排行榜页面模块:根据用户的喜好,本模块为用户推荐了喜欢的排名前 20
的歌单、排名前 20 的歌曲、排名前 20 的歌手,如图 30 所示,排行榜清晰的看

43
阜阳师范大学 硕士学位论文

出用户的偏好。

图 30. 排行榜页面图

Figure 30. Leaderboard page chart.

4.3.7 其他模块

我的足迹页面模块:在这个模块中,可以看到用户登陆系统的行为,也可以
查看到用户在系统内的点击游览行为,如图 31 所示。

图 31. 我的足迹页面图

Figure 31. My footprint page diagram.

进入后台页面,可以进行相应的后台操作,后台界面如图 32 所示。在后台,
可以对歌单、歌曲、歌手等信息进行增加和修改,修改有误的一些信息,对用户
信息的管理。

44
第4章 音乐推荐系统的设计与实现

图 32. 后台管理页面图

Figure 32. Background management page diagram.

4.4 系统测试

系统设计完成,要对其进行测试,目的是以最少的时间、人力成本将系统潜
在的缺陷找出来,在设计过程可能发生各种各样的错误,因此有必要进行系统测
试,最大程度地让用户使用系统时,有一个比较好的体验感。本文采用了黑盒测
试,黑盒测试是基于需求的测试,又叫做功能性测试。
(1)用户登录注册测试,如表 16 所示。
表 16. 用户登录注册测试

Table 16. Users log in to register tests.

测试用例 具体操作 预期结果 测试结果

1 用户注册信息不全 提示填写完整信息 通过

2 用户注册时确认密码与设置 提示密码输入不一 通过

不一致 致

3 用户登录账号输入错误 提示账号输入错误 通过

4 用户登录密码输入错误 提示密码输入错误 通过

(2)后台功能测试,如表 17 所示。

表 17. 后台功能测试

45
阜阳师范大学 硕士学位论文

Table 17. Background functional testing.

测试用例 具体操作 预期结果 测试结果

1 删除用户 用户不能登录 通过

2 用户修改密码 修改成功 通过

3 修改某个歌单所包含的歌曲 歌单里歌曲修改成 通过

数目 功

4 修改歌曲标签 歌曲标签修改成功 通过

(3)推荐功能测试,如表 18 所示。
表 18. 推荐功能测试

Table 18. Recommended functional testing.

测试用例 具体操作 预期结果 测试结果

1 切换不同的用户 推荐的内容不同 通过

2 点击不同的标签歌手 能够推荐对应标签 通过

的不同的歌手

3 点击不同的标签的歌曲 跳转相应的歌曲内 通过

4.5 本章小结

本章主要介绍了音乐推荐系统的设计与实现,首先对系统的进行需求分析,
从功能性、可行性、非功能性等进行需求分析,其次介绍了系统的设计,包括系
统的功能模块设计与数据库设计,然后是系统主要模块的实现,最后对系统进行
了黑盒测试,提高系统的质量。

46
结 语

结 语
在日常生活中,人们听音乐知道歌曲名字,或者某个歌手的名字,才能通过
互联网进行搜索,精准查询找到自己的爱好音乐,但是绝大数人并不能清楚地找
得到歌曲的名字,没有音乐的精准信息,而搜索引擎只能是用户知道歌曲、歌手
具体信息才能准确搜索到用户想要的音乐,在不知道精准信息时,搜索的不是一
个明确的答案,需要用户从中进行慢慢筛选,才能得到最终的答案,浪费了大量
的时间,降低了用户的体验感。而音乐推荐系统能个性化为用户推荐音乐,不受
时间和空间的限制,节约了用户宝贵的时间,提高用户的体验感。本文研究主要
内容如下:
(1)对改进协同过滤的相似度计算。 本文使用协同过滤算法来实现给用户
个性化推荐歌曲、歌手等,并采用惩罚热门商品来改进算法相似的的计算,避免
了热门歌曲、歌手的影响。
(2)在协同过滤的算法中,不能解决新用户问题,即冷启动问题,针对该
问题,本文在协同过滤的基础上融合基于内容的音乐推荐方法,解决了系统不能
为刚加入的新用户进行推荐的问题。
(3)音乐推荐系统的实现。本系统在 Pycharm 平台上进行开发,采用前后
端分离的形式进行实现,为用户提供了音乐推荐系统平台,用户能够根据自己的
喜好选择自己喜欢的音乐,并且通过前端页面展示出来,实现了人机交互。
本文实现了基于协同过滤的音乐推荐系统的设计,但是在推荐算法和系统方
面需要进一步的优化存在的问题以及对问题提出相应对策如下:
提高推荐的准确性,将我的足迹记录的用户行为数据,归并到数据集里面去,
为系统给用户推荐提供数据,提高推荐系统推荐的准确性,本文所采用的基于用
户的协同过滤算法、基于物品的协同过滤算法、基于内容的推荐算法都是比较传
统的方法,未来可以和深度学习结合,提高系统的准确率。

47
参考文献

参考文献
[1] 中国互联网络信息中心(CNNIC).第 49 次中国互联网络发展状况统计报告[R/OL].202

2-02, http://www.cnnic.net.cn/hlwfzyj/hlwxzbg/hlwtjbg/202109/t20210915_71543.htm.

[2] 潘蕊. 浅析"互联网+"思想在计算机教学中的渗透[J]. 课程教育研究, 2019(19):1.

[3] 蔺丰奇, 刘益. 信息过载问题研究述评[J]. 情报理论与实践, 2007, 30(5):5.

[4] 徐春艳. 网络搜索引擎分类目录检索功能研究[J]. 图书馆学研究, 2003(7):4

[5] 谢茹芃.中文网络分类目录分析与研究[J].科技情报开发与经济.2008,(32).88-89.

[6] 张红,甘利人,薛春香.基于标签聚类的电子商务网站分类目录改善研究[J].现代情报,2012,

32(01):3-7.

[7] 邢永康.谷歌搜索引擎的中文关键词优化研究[J].数字技术与应用,2019,37(06):68+70

[8] 周永红, 吴芳. 大数据时代搜索引擎用户的信息安全问题研究[J]. 图书馆, 2017(5):5.

[9] 黄勃,严非凡,张昊,李佩佩,王晨明,张佳豪,方志军.推荐系统研究进展与应用[J].武汉大学

学报(理学版),2021,67(06):503-516.

[10] 陈运文. 谈谈“推荐系统”和“搜索引擎”[J]. 计算机与网络, 2017, 43(24):2.

[11] 邵秀丽, 乜聚科, 侯乐彩,等. 基于综合用户信息的用户兴趣建模研究[J]. 南开大学学报:

自然科学版, 2009(3):8.

[12] 卫琳. 基于搜索结果的个性化推荐系统研究[J]. 计算机技术与发展, 2007, 17(9):4.、

[13] Girsang A S, Wibowo A J, Roslynlia. Neural Collaborative For Music Recommendatio

n System[J]. IOP Conference Series: Materials Science and Engineering, 2021, 1071

(1):334-339.

[14] Hjorth-Andersen C . Chris Anderson, The Long Tail: How Endless Choice is Creating

Unlimited Demand. The New Economics of Culture and Commerce[J]. Journal of Cul

tural Economics, 2007,107(1):439-457.

[15] 高长元,黄凯,王京, 等. 基于商品属性值和用户特征的协同过滤推荐算法[J]. 计算机

工程与科学, 2017, 39(12): 2334-2339.

[16] 王星. 个性化推荐系统在电子商务网站中的应用研究[J]. 商, 2013(07Z):1.

48
阜阳师范大学 硕士学位论文

[17] Lin Z, Sheng D. Analysis of personalized recommendation algorithm based on content

[J]. International Journal of Science, 2020, 7(5):586-597.

[18] 谭学清, 何珊. 音乐个性化推荐系统研究综述[J]. 现代图书情报技术, 2014(09): 22-32.

[19] Paul, Resnick, Hal, et al. Recommender systems[J]. Communications of the Acm, 199

7, 66(2):178-186

[20] Adomavicius G, Tuzhilin A. Toward the next generation of recommender systems : a

survey of the state-of-the-art and possible extensions[J]. IEEE Transactions on Knowl

edge and Data Engineering, 2005, 17(6):734-749142.

[21] Shelley A . Pandora (review)[J]. Notes, 2009, 78(4): 389-402.

[22] Carlin, Dan. Last.FM: Mashing to the Music.[J]. Businessweek Online, 2006, 95(1):38

-42.

[23] 何丽, 麻强. 一种改进的用户隐式反馈协同过滤推荐算法[J]. 北方工业大学学报, 2020,

32(05): 71-76.

[24] Latour B P . Pandora's Hope: Essays on the Reality of Science Studies[J]. 1999, 56

(6):238-242.

[25] 龚志, 邵曦. 基于多模态的音乐推荐系统[J]. 南京信息工程大学学报(自然科学版), 201

9, 11(01): 68-76.

[26] 刘建东, 戚利娜. 音乐推荐系统中的用户冷启动问题[J]. 吉首大学学报:自然科学版, 2

017, 38(4):4.

[27] 周云霞, 栗磊. 基于数据库用户行为分析的改进 FP-Growth 算法[J]. 科学技术与工程, 2

011, 11(18):4.

[28] 刘帅, 刘婵娟. 音乐推荐系统综述[J]. 广州大学学报(自然科学版), 2020, 19(05): 36-46.

[29] 蒲志强, 易建强, 刘振,等. 知识和数据协同驱动的群体智能决策方法研究综述[J]. 自动

化学报, 2022, 48(3):627-643.

[30] Wei S, Ye N, Zhang S, et al. Item-Based collaborative filtering recommendation algori

thm combining item category with interestingness measure[C]. International Conference

on Computer Science & Service System. IEEE, 2012.

49
参考文献

[31] Sanden C, Befus C, Zhang J Z. Clustering-based genre prediction on music data[C].

Proceedings of the 2008 C3S2E conference. 2008: 117-119.

[32] Diego S, Javier P-M, Ana B G G, et al. Social influence-based similarity measures fo

r user-user collaborative filtering applied to music recommendation[M]. Distributed Co

mputing and Artificial Intelligence, Special Sessions, 15th International Conference. 20

19: 61-66.

[33] Vall A, Dorfer M, Eghbal-Zadeh H, et al. Feature-combination hybrid recommender sy

stems for automated music playlist continuation[J]. User Modeling and User-Adapted I

nteraction, 2019, 29(2): 527-572.

[34] Theocharis A, Pierce M, Tzanetakis G. An empirical investigation of stacking for mus

icTag annotation[C]. International Conference on Machine Learning & Applications &

Workshops. IEEE, 2012.

[35] Liu J Y, Yang Y H. Inferring personal traits from music listening history[C]. Proceedi

ngs of the second international ACM workshop on Music information retrieval with u

ser-centered and multimodal strategies. 2012: 31-36.

[36] Zheng E, Kondo G Y, Zilora S, et al. Tag-Aware dynamic music recommendation[J].

Expert Systems with Applications, 2018, 12(4): 154-159.

[37] Laurier C, Sordo M, Serra J, et al. [C]. ISMIR. 2009: 381-386.

[38] 刘金红, 陆余良. 主题网络爬虫研究综述[J].计算机应用研究,2007, 13(10):26-29+47.

[39] 潘晓英, 陈柳, 余慧敏, 等.主题爬虫技术研究综述[J].计算机应用研究,2020,37(04):961-

965+972.

[40] 陈垲冰. 基于协同过滤的个性化推荐算法研究及应用[D]. 江门: 五邑大学,2019.

[41] 李昆仑, 戎静月, 苏华仃. 一种改进的协同过滤推荐算法[J]. 河北大学学报(自然科学

版), 2020, 40(01): 77-86.

[42] 高亚南. 基于协同过滤算法的推荐系统的研究[D]. 北京: 北京交通大学, 2019.

[43] Burke R . Hybrid Recommender Systems: Survey and Experiments[J]. User Modeling

and User-Adapted Interaction, 2002, 12(4):331-370.

50
阜阳师范大学 硕士学位论文

[44] McFee B, Bertin-Mahieux T, Ellis D P W, et al. The million song dataset challenge

[C]. Proceedings of the 21st International Conference on World Wide Web. 2012: 909

-916.

[45] 姚彦海. 协同过滤算法中相似度相关问题的研究[D]. 太原: 山西师范大学, 2019.

51
致 谢

致 谢
两年时光转瞬即逝,当我踏入阜阳师范大学的大门时,就感受到阜阳师范大
学的学习氛围,在图书馆附近,看到有拿小板凳坐在阳光下备战研究生的学子们,
在操场上看到站军姿流汗的新生们,这些仿佛就在昨天,这两年里由开始的憧憬,
困惑到如今拨云见日,我都将终身难忘,在这里有良好的学习环境,图书馆学习
资源丰富,实验室设备齐全,还给我们提供运动的羽毛球、篮球等体育器材,让
我们在学习之余劳逸结合。
首先,我要感谢我的导师王亚老师,感谢我的导师在各个方便给我提供的支
持与指导。在为人处事上,刚开始见老师,就觉得老师比较严厉,当时的我不善
言辞,显得有点唯唯诺诺,老师一直鼓励我,大胆去说,大胆去做,让我认识到
说错、做错并不可怕,在错误中吸取教训,以后不断将改进,虽然现在的不是很
优秀,但是我觉得比起两年前,已经有很大的进步,以至于我在找工作的过程中
也受益无穷,感谢我的导师,不厌其烦的教我为人处世的智慧。在学习上,老师
也教会我很多高效学习方法,例如我之前习惯于纸质版笔记,但这种记起来耗费
时间,而且在查找过程中也很不方便,老师就给我介绍一款 xmind 的软件,在看
论文的时候通过制作思维导图的方法,迅速理清整篇文章的行文脉络,还能突出
文章重点,在年底繁忙之际,仍然每天指导我写小论文,不厌其烦地为我指点迷
津,感谢我导师在学习上给我的指导。在生活上,老师也无微不至的关心着我,
还记得我一次感冒咳嗽,下午的时候老师把我叫进办公室,给我带了感冒咳嗽的
药,让我好好休息养好身体,那一刻我感受到了家的温暖。感谢我导师给我的一
切帮助。
在这里,我也要感谢我的父母,从小到大都是我身后的支柱,在我失败的时
候鼓励我,在我成功的时候告诫我,他们给了我生命,将我抚养成人,尽心尽力
给我提供良好的成长环境,以前总是觉得父母对我要求高,对我很严格,后来才
发现,他们只不过想让我以后被像他们那样辛苦,感谢我的父母!也要感谢我的
室友以及实验室的同窗,在我遇到困难的时候,鼓励我、帮助我。至此,愿所有
的人顺心每一天!

52
攻读硕士学位期间所取得的科研成果

攻读硕士学位期间所取得的科研成果
1. 已发表论文

[1] 钱贝贝, 陈志波.基于 Python 爬虫的音乐数据可视化分析[J].电脑知识与


技术,2022,18(08):6-8.
[2] Liu T., Qian B ., Wang Y., et al. U-Net medical image segmentation based on
attention mechanism combination[C]. International Conference on Cognitive
based Information Processing and Applications ( CIPA 2021), 2022: 805-813.

2. 获得的专利

[1] 黄 俊 , 刘 韬 , 陈 志 波 , 钱 贝 贝 , 王 亚 . 一 种 智 能 标 签 打 印 , ( 专 利 号 :
ZL202122798033.3) 申请日期: 2021. 11. 16, 授权日期: 2022. 03.22.

53
54

You might also like