基于协同过滤算法和深度学习的音乐推荐
协同过滤 音乐推荐 深度学习 音乐检索
文章目录
Github 地址
微信小程序版实现
本项目的微信小程序版: LE7ELS/music_recommendation_miniapp
介绍
项目主要工作在 Million Song Dataset
数据集下基于 Python
的 scikit-surprise
库实现了基于协同过滤的音乐推荐,还有用 CNN (卷积神经网络) 实现相似音乐推荐。
其中,协同过滤主要基于 Python scikit-surprise
库的 文档(Documents) 写的协同过滤算法, 所采用的数据集的原因,协同过滤出来的指标比较低,系统中协同过滤的结果采用三个算法输出的结果投票。
另外就是参照下面的参考项目做了基于深度学习的音乐推荐,该项目主要实现相似相似旋律的音乐推荐。其主要通过 CNN 对音乐音频信息进行特征提取,然后对提取后的特征向量与实现保存好的一些音乐特征向量进行相似度匹配,将相似度最高的几首音乐作为推荐结果。该方法可以用于音乐检索,音乐防抄袭等领域。
本项目特有的部分是,将上述两种方法融合,并写了个 web 展示效果。由于 Million Song Dataset
数据集没有歌曲内容信息,本人找了某易云的爬虫代码,建立 Million Song Dataset
数据集中的音乐 id 与 某易云的音乐 id 的映射(期间被封过 IP)。然后将音乐的内容进行时频转换后,送入卷积神经网络,得到歌曲特征向量,通过特征向量的相似度匹配,找出相似的音乐信息。
参考项目
技术栈
- Python-Flask
- Python-keras
- Pyhton-surprise
- PHP/MySQL
- HTML/CSS/JQuery
Docker 部署 (如用此方式部署,后面的手动安装步骤请忽略)
已支持 Docker 部署,方便复现及修改代码。Docker 部署版见 docker-config
分支,github readme 中有详细步骤。
安装
以下的步骤都针对手动部署方式,代码应该为 master 分支的,此方式与 docker 部署二选一
Pyhton 版本
Python 3.6.5
Python 环境安装:
切换到 recommend_service
目录,pip install -r requirements.txt
Web 环境:
需要安装 LAMP
or WAMP
环境,即 Appache ,MySQL,PHP 服务器
音频处理软件 —— SOX
安装 sox
软件(sox 是开源的音频处理软件)
SOX 安装教程
SOX 下载链接
加入系统环境
可能会出现的报错
windows
下 Unable to load MAD decoder library (libmad) function
解决方法可参考 参考教程
此报错只需下载相应的两个库文件,放到 sox
安装目录下
数据库— MySQL
数据库名: music_recommender
用户名: music_system
密码: music_system
然后,导入 music_recommender.sql
文件中的数据
运行
- 先运行
recommend_service
目录下的recommend_service.py
文件,python recommend_service.py
,Linux 下也可以运行命令nohup python recommend_service.py 2>&1 >dataOut.txt &
,让其后台执行 - 将项目文件部署到
Apache
www 目录下 - 在浏览器中访问该网站
默认用户
- 用户名:
admin
, 密码:admin123
- 用户名:
root
, 密码:root1234
运行界面
- Python 程序启动
- 用户登录
- 协同过滤推荐
- 搜索歌曲
- 播放歌曲
- CNN推荐结果