基于springboot的音乐推荐系统设计与实现

1.技术栈:springboot+mybatis-plus+mysql+redis

2.推荐算法设计

推荐算法设计

本文选用基于用户的协同过滤算法,首先寻找与先被推荐的用户兴趣相似的用户群,将用户喜欢或没有行动的音乐推荐给被推荐的用户。其实,这种方法也是对用户进行群集的过程,根据用户的兴趣和兴趣,将用户变成不同的群体。用户推荐是根据组的平均值生成的。使用者兴趣相似度的测定是官方系统的测定,两个使用者在收藏目录中收藏相同音乐的次数越多,两个使用者的兴趣就越相似。

算法流程:

  1. 根据用户与音乐的喜好矩阵,构建用户音乐的倒排(即倒查表)。

行表示用户,列表示音乐,1 表示用户喜欢该音乐,?表示用户是否喜欢该音乐未知。如表8所示:

表8 用户-音乐表

用户\音乐

音乐a

音乐b

音乐c

音乐d

音乐e

用户1

1

1

1

1

用户2

1

1

1

用户3

1

1

用户4

1

1

1

用户5

1

1

构建用户音乐的倒排(即倒查表),如表9所示:

表9 用户-音乐倒排表

用户

音乐

用户1

a,b,d

用户2

b,c,e

用户3

c,d

用户4

b,c,d

用户5

a,d

  1. 构建音乐与音乐的共现矩阵。

共现矩阵表示同时喜欢两个音乐的用户数,是一个对称矩阵,通过用户-音乐的倒排表计算a与“b,c,d,e”同时出现的次数,从样本数据可以看出a一共出现2次,a与b同时出现1次a与c同时出现0次,a与d同时出现2次,a与e同时出现0次,再计算b与“a,c,d,e”同时出现次数,以此类推,运算结果如表10所示:

表10共现矩阵表

音乐

a

b

c

d

e

a

-

1

0

2

0

b

1

-

2

2

1

c

0

-

2

2

1

d

2

2

2

-

0

e

0

1

1

0

-

  1. 计算用户之间的相似度,即计算相似矩阵。

设|N(i)| 表示用户i喜欢的音乐,|N(i)∩N(j)| 表示用户i与j同时喜欢的音乐,则用户i与用户j的相似度计算公式如式1所示:

wij=|N(i)Nj|N.|N(j)#1

  1. 根据用户的收藏记录,给用户推荐音乐。

拿到相似度大于0.8的用户收藏,加入推荐清单,再过滤掉该用户收藏的歌曲,推荐给该用户。如果该推荐少于5首歌曲,则将相似度减少到0.6再次进行推荐。

 2.系统实现

音乐播放页面

 点击需要播放的歌曲,通过事件绑定,将歌曲在服务器中的路径传输到<audio>标签的src属性中,并更改属性autoplay="autoplay",当用户点击歌曲时实现音乐播放效果,当用户再次点击该歌曲,通过事件绑定,调用audio的pause()方法对音乐实现暂停。点击“循环播放”按钮,更改audio的loop属性为true,实现循环播放效果。音乐播放流程图如图8所示:

用户登录成功后,进入音乐列表,点击歌曲通过Ajax异步获取歌词,歌手信息,是否收藏等信息,返回给前端,实现收藏,获取歌词等功能。实现效果如图9所示:

9音乐播放页面

5.3.音乐评论页面

本系统评论模块设计了评论表与回复表,评论挂在音乐下面,回复挂在评论下面,点击歌曲评论按钮,后台根据歌曲id查询到该歌曲作者,歌词,歌曲图片,歌曲路径,通过关联查询查询该歌曲下所有评论,将查询到的数据存放在集合中返回给前端。业务流程图如图10所示:

输入评论的内容,点击发送按钮提交表单,将评论内容存入到数据库中,并对前端页面进行重新渲染,达到评论效果。可以对歌曲的评论进行回复,点击“回复”,通过事件绑定弹出回复文本框,输入回复内容,提交表单,将回复内容,回复用户,被回复用户等信息存入到数据库中,再次渲染页面,达到回复评论效果。如图11所示:

11音乐评论页面

5.6用户管理页面

管理员可对用户基本信息进行查看、删除、修改操作,并通过用户可查看该用户收藏歌单、评论等单个用户数据。

实现效果如图16所示:

16用户管理页面

5.7音乐管理页面

管理员有权限对音乐进行管理,利用bootstrap FileInput多文件上传插件实现音乐上传,可修改音乐信息,查看音乐信息。

实现效果如图18所示:

18音乐管理页面

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值