协同过滤音乐推荐
文件列表(压缩包大小 16.45M)
免费
概述
协同过滤音乐推荐 协同过滤 音乐推荐 深度学习 音乐检索
介绍
项目主要工作在Million Song Dataset
数据集下基于Python
的 scikit-surprise
库实现了基于协同过滤的音乐推荐,还有用 CNN (卷积神经网络) 实现相似音乐推荐。
其中,协同过滤主要基于 Python scikit-surprise
库的 文档(Documents) 写的协同过滤算法, 所采用的数据集的原因,协同过滤出来的指标比较低是系统中协同过滤的结果,采用三个算法输出的结果投票。
另外就是参照下面的参考项目做了基于深度学习的音乐推荐,该项目主要实现相似相似旋律的音乐推荐。其主要通过CNN
对音乐音频信息进行特征提取,然后对提取后的特征向量与实现保存好的一些音乐特征向量进行相似度匹配,将相似度最高的几首音乐作为推荐结果。该方法可以用于音乐检索,音乐防抄袭等领域。
本项目特有的部分是,将上述两种方法融合,并写了个web
展示效果。由于Million Song Dataset
数据集没有歌曲内容信息,本人找了某易云的爬虫代码,建立Million Song Dataset
数据集中的音乐id
与某易云的音乐 id的映射(期间被封过 IP)。然后将音乐的内容进行时频转换后,送入卷积神经网络,得到歌曲特征向量,通过特征向量的相似度匹配,找出相似的音乐信息。
参考项目
微信小程序版实现
环境说明
推荐使用Anaconda
作为Python基础环境,推荐前往 清华大学镜像下载 最新版安装包。为避免多个Python环境造成的相互冲突等问题,建议使用Python虚拟环境进行管理。步骤如下:
打开Anconda终端
或者cmd
,使用命令conda create -n MRC python=3.6.5
创建一个名为MRC
的Python虚拟环境(MRC即Music Recommendation的缩写);
输入conda activate MRC
激活MRC
虚拟环境,在此虚拟环境下安装需要的Python第三方库;
使用命令conda install --yes --file requirements.txt
批量所需的Python组件依赖(requirements.txt
文件在back-end\recommend_service
目录下,建议上述步骤可在该目录下进行),对于有些安装失败的可单独使用conda
命令或pip
命令安装;
至此项目所需的Python环境安装完成。
SoX
是开源的音频处理软件,本项目使用该工具处理音频文件。本项目tools
目录下已提供Windows安装包,安装教程参考这篇文章,并注意 将SoX
添加到环境变量。
WAMP环境
即 Windows操作系统
、Apache服务器
、MySQL数据库
以及PHP语言
,可直接使用phpStudy
或者appserv
等集成环境一键安装。Linux操作系统请自行安装相应的 LAMP
环境。
MySQL数据库环境
需要进行如下设置,新建名为 music_recommender
的数据库,数据库用户名为 music_system
,密码为 music_system
,并注意给予相应的数据库访问权限,然后导入 back-end\DataBase
目录下的 music_recommender.sql
文件中的数据。推荐使用开源的数据库管理客户端 HeidiSQL
管理数据库。
前端开发环境所需依赖,前往官网下载最新稳定版安装包进行安装。安装Node环境后打开终端命令行并且切换到 front-end
目录下,使用命令 npm install
安装前端依赖,出现安装失败问题可尝试 设置淘宝镜像源 或者使用 yarn/cnpm
等方式。
前端开发工具
由于小程序使用uni-app
框架开发,故配合使用 HBuilderX 进行开发能够更加便捷的开发和操作,具体开发步骤、调试技巧等参考uni-app文档。
运行说明
将 back-end
整个目录移动到 WAMP
环境安装目录的 www
目录下,并将目录重命名为 MRC 以保证和前端的请求 url
相同。
使用 Anconda终端
或者 命令行
切换到 back-end\recommend_service
或者 MRC\recommend_service
目录下,运行命令 conda activate MRC 激活 MRC 虚拟环境,激活环境后输入 python recommend_service.py
运行推荐脚本。
使用HBuilderX
打开front-end
目录,(可选、推荐:将小程序的appID更换为自己的appID),点击工具栏的 运行 → 运行到小程序模拟器 → 微信开发者工具,uni-app
框架将自动打包项目在dist\dev
目录下生成为原生微信小程序项目mp-weixin
,并自动运行 微信开发者工具
打开项目,即可在 微信开发者工具
中查看运行结果。
常见问题
对于Windows
系统下可能会出现的Unable to load MAD decoder library (libmad) function
错误,解决方法可参考 这个问题的答案。此报错只需将 tools 目录下提供的两个库文件,放到 SoX 安装目录下即可。
recommend_service.py
已正常运行;front-end
项目代码下的 src\config\index.js
文件中对应的 url 地址与实际环境的url
地址一致,包括端口等;若出现无法自动运行微信开发者工具
的情况可提前手动运行工具或者参考这个 解决方案。
想要在真机环境下运行小程序,可将back-end
目录部署到远程服务器或者将本地计算机与手机处在同一局域网内,并在 front-end
项目代码下的 src\config\index.js
文件中对应的 url
地址替换成相应的地址。
技术栈
Docker 部署 依赖
运行步骤
clone此项目 git clone
git@github.com:MakingL/music_recommendation.git, cd music_recommendation
先 git fetch --all
, 切换到分支 git checkout docker-config
启动 docker 容器: docker-compose up -d
导入数据库,PHPMyAdmin 导入 SQL 文件不能超过2M
,建议用Navicat
导入
在浏览器中访问网站 http://localhost/,预置的登录用户:
运行界面
播放歌曲
CNN推荐结果
相关资源推荐
提供免费音乐的音乐库网站
推荐系统研究中的九大数据集
推荐系统基础知识 --- Github
如果遇到文件不能下载或其他产品问题,请添加管理员微信:ligongku001,并备注:产品反馈