赞
踩
1.技术栈:springboot+mybatis-plus+mysql+redis
2.推荐算法设计
本文选用基于用户的协同过滤算法,首先寻找与先被推荐的用户兴趣相似的用户群,将用户喜欢或没有行动的音乐推荐给被推荐的用户。其实,这种方法也是对用户进行群集的过程,根据用户的兴趣和兴趣,将用户变成不同的群体。用户推荐是根据组的平均值生成的。使用者兴趣相似度的测定是官方系统的测定,两个使用者在收藏目录中收藏相同音乐的次数越多,两个使用者的兴趣就越相似。
算法流程:
行表示用户,列表示音乐,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 |
共现矩阵表示同时喜欢两个音乐的用户数,是一个对称矩阵,通过用户-音乐的倒排表计算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 | - |
设|N(i)| 表示用户i喜欢的音乐,|N(i)∩N(j)| 表示用户i与j同时喜欢的音乐,则用户i与用户j的相似度计算公式如式1所示:
wij=|N(i)∩Nj|Nⅈ.|N(j)#1
拿到相似度大于0.8的用户收藏,加入推荐清单,再过滤掉该用户收藏的歌曲,推荐给该用户。如果该推荐少于5首歌曲,则将相似度减少到0.6再次进行推荐。
2.系统实现
点击需要播放的歌曲,通过事件绑定,将歌曲在服务器中的路径传输到<audio>标签的src属性中,并更改属性autoplay="autoplay",当用户点击歌曲时实现音乐播放效果,当用户再次点击该歌曲,通过事件绑定,调用audio的pause()方法对音乐实现暂停。点击“循环播放”按钮,更改audio的loop属性为true,实现循环播放效果。音乐播放流程图如图8所示:
用户登录成功后,进入音乐列表,点击歌曲通过Ajax异步获取歌词,歌手信息,是否收藏等信息,返回给前端,实现收藏,获取歌词等功能。实现效果如图9所示:
图9音乐播放页面
本系统评论模块设计了评论表与回复表,评论挂在音乐下面,回复挂在评论下面,点击歌曲评论按钮,后台根据歌曲id查询到该歌曲作者,歌词,歌曲图片,歌曲路径,通过关联查询查询该歌曲下所有评论,将查询到的数据存放在集合中返回给前端。业务流程图如图10所示:
输入评论的内容,点击发送按钮提交表单,将评论内容存入到数据库中,并对前端页面进行重新渲染,达到评论效果。可以对歌曲的评论进行回复,点击“回复”,通过事件绑定弹出回复文本框,输入回复内容,提交表单,将回复内容,回复用户,被回复用户等信息存入到数据库中,再次渲染页面,达到回复评论效果。如图11所示:
图11音乐评论页面
管理员可对用户基本信息进行查看、删除、修改操作,并通过用户可查看该用户收藏歌单、评论等单个用户数据。
实现效果如图16所示:
图16用户管理页面
管理员有权限对音乐进行管理,利用bootstrap FileInput多文件上传插件实现音乐上传,可修改音乐信息,查看音乐信息。
实现效果如图18所示:
图18音乐管理页面
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。