协同过滤 音乐推荐 深度学习 音乐检索 Docker
@[toc]
项目主要工作在 Million Song Dataset
数据集下基于 Python
的 scikit-surprise
库实现了基于协同过滤的音乐推荐,还有用 CNN (卷积神经网络) 实现相似音乐推荐。
其中,协同过滤主要基于 Python scikit-surprise
库的 文档(Documents) 写的协同过滤算法, 所采用的数据集的原因,协同过滤出来的指标比较低,系统中协同过滤的结果采用三个算法输出的结果投票。
另外就是参照下面的参考项目做了基于深度学习的音乐推荐,该项目主要实现相似相似旋律的音乐推荐。其主要通过 CNN 对音乐音频信息进行特征提取,然后对提取后的特征向量与实现保存好的一些音乐特征向量进行相似度匹配,将相似度最高的几首音乐作为推荐结果。该方法可以用于音乐检索,音乐防抄袭等领域。
本项目特有的部分是,将上述两种方法融合,并写了个 web 展示效果。由于 Million Song Dataset
数据集没有歌曲内容信息,本人找了某易云的爬虫代码,建立 Million Song Dataset
数据集中的音乐 id 与 某易云的音乐 id 的映射(期间被封过 IP)。然后将音乐的内容进行时频转换后,送入卷积神经网络,得到歌曲特征向量,通过特征向量的相似度匹配,找出相似的音乐信息。
本项目的微信小程序版实现: Github LE7ELS/music_recommendation_miniapp
- Python Flask + Tensorflow + scikit-surprise
- PHP/MySQL/HTML/CSS/JQuery
- Docker
- Docker-compose
-
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 导入
- 浏览器访问 PHPMyAdmin:
http://localhost:8080/
(此处的地址localhost
应根据实际情况而定) root
用户密码:tiger
- 新建数据库, 注意编码为
utf8mb4
- 数据库名:
music_recommender
- 用户名:
music_system
(注意给权限) - 密码:
music_system
- 数据库名:
- 导入数据
vender/DataBase/music_recommender.sql
到该数据库
- 浏览器访问 PHPMyAdmin:
-
在浏览器中访问网站
http://localhost/
,预置的登录用户:- 用户名:
admin
, 密码:admin123
- 用户名:
root
, 密码:root1234
- 用户名:
- 用户登录
- 协同过滤推荐
- 搜索歌曲
- 播放歌曲
- CNN推荐结果