基于协同过滤算法和深度学习的音乐推荐

2023-11-12

基于协同过滤算法和深度学习的音乐推荐

协同过滤 音乐推荐 深度学习 音乐检索


Github 地址

项目 Github 地址

微信小程序版实现

本项目的微信小程序版: LE7ELS/music_recommendation_miniapp

介绍

项目主要工作在 Million Song Dataset 数据集下基于 Pythonscikit-surprise 库实现了基于协同过滤的音乐推荐,还有用 CNN (卷积神经网络) 实现相似音乐推荐。

其中,协同过滤主要基于 Python scikit-surprise 库的 文档(Documents) 写的协同过滤算法, 所采用的数据集的原因,协同过滤出来的指标比较低,系统中协同过滤的结果采用三个算法输出的结果投票。

另外就是参照下面的参考项目做了基于深度学习的音乐推荐,该项目主要实现相似相似旋律的音乐推荐。其主要通过 CNN 对音乐音频信息进行特征提取,然后对提取后的特征向量与实现保存好的一些音乐特征向量进行相似度匹配,将相似度最高的几首音乐作为推荐结果。该方法可以用于音乐检索音乐防抄袭等领域。

本项目特有的部分是,将上述两种方法融合,并写了个 web 展示效果。由于 Million Song Dataset 数据集没有歌曲内容信息,本人找了某易云的爬虫代码,建立 Million Song Dataset 数据集中的音乐 id 与 某易云的音乐 id 的映射(期间被封过 IP)。然后将音乐的内容进行时频转换后,送入卷积神经网络,得到歌曲特征向量,通过特征向量的相似度匹配,找出相似的音乐信息。

参考项目

  1. 中文地址

    私人定制——使用深度学习Keras和TensorFlow打造一款音乐推荐系统

  2. 英文地址

    building a music recommender with deep learning

技术栈

  • 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 下载链接
加入系统环境

可能会出现的报错

windowsUnable to load MAD decoder library (libmad) function

解决方法可参考 参考教程

此报错只需下载相应的两个库文件,放到 sox 安装目录下

数据库— MySQL

数据库名: music_recommender
用户名: music_system
密码: music_system
然后,导入 music_recommender.sql 文件中的数据

运行

  1. 先运行 recommend_service 目录下的 recommend_service.py 文件,python recommend_service.py,Linux 下也可以运行命令 nohup python recommend_service.py 2>&1 >dataOut.txt &,让其后台执行
  2. 将项目文件部署到 Apache www 目录下
  3. 在浏览器中访问该网站

默认用户

  1. 用户名: admin, 密码: admin123
  2. 用户名: root, 密码: root1234

运行界面

  • Python 程序启动

Python 程序启动

  • 用户登录

用户登录

  • 协同过滤推荐

协同过滤推荐
协同过滤推荐2

  • 搜索歌曲

搜索歌曲

  • 播放歌曲

播放歌曲

  • CNN推荐结果

CNN推荐结果

相关资源推荐

  1. 提供免费音乐的音乐库网站

  2. 推荐系统研究中的九大数据集

  3. 推荐系统基础知识 — Github

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于协同过滤算法和深度学习的音乐推荐 的相关文章

  • Tomcat 自带的 JDBC 连接池官方文档中文版

    转载链接 https blog csdn net white ice article details 52610136https blog csdn net white ice article details 52610136 简介 JDB
  • 更:最近还在搞毕设

    最近两天有点颓 但是没有闲着 自己的毕设系统做了个五五六六了 是基于springboot和vue的 后续还得加个以太坊 进行上链 应该是可以应付中期答辩的程度 但是还是得完善 话说昨天因为写文件上传下载调不通 就哭了 泪流满面 太菜了 会继

随机推荐

  • 正则表达式简单小结

    d 匹配一个数字 w 匹配一个字母 数字或者下划线 s 匹配一个空格 tab 匹配任意字符 u 匹配指定unicode字符 D 匹配一个非数字 W 匹配一个非字母 非数字且非下划线 S 匹配一个非空格 匹配任意个字符 匹配至少一个 匹配0或
  • VScode使用gitlab

    本机安装Git客户端 配置git 首次使用git提交代码 需要先配置user name 和 user email 打开cmd 输入如下命令 Git 全局设置 git config global user name yourName 注意 和
  • vue el-dialog 弹窗实现拖拽效果

    文章目录 前言 一 如何在 elementUI el dialog 对话框添加拖拽操作 1 首先我们将新建一个js文件 dialog js 放在项目的对应位置 将下面代码复制到文件中 2 其次我们要在 main js 文件中引入该 js 文
  • openGauss学习笔记-14 openGauss 简单数据管理-查看对象

    文章目录 openGauss学习笔记 14 openGauss 简单数据管理 查看对象 14 1 查看命令帮助信息 14 2 切换数据库 14 3 查询所有数据库 14 4 查询当前数据库中的所有表 14 5 查看表结构 openGauss
  • SkyWalking中Trace落地实现方案

    转载一篇对漱skywalking中traceid的实现方案 SkyWalking 中 Trace 的相关概念以及实现类与 OpenTracing 中的概念基本类似 像 Trace Span Tags Logs 等核心概念 在 SkyWalk
  • oracle和mysql细微区别

    2 小的方面 语法等 mysql可以实现自增长主键 通过字段的auto increment属性 Oracle则需要通过序列 Sequence 来实现 mysql可以用双引号来引用字符串 当然单引号也行 Oracle只能用单引号 mysql在
  • eplan打开提示激活许可_EPLAN 2.8将采用最新的licensing许可技术

    EPLAN产品组合代表可靠且面向未来的软件解决方案 因此 我们将在版本2 8的许可管理中转向最先进的技术 作为客户 您将能够快速 轻松地获得无加密狗的许可认证 我们的新许可技术将支持到EPLAN 2 4版本 将EPLAN软件更新到2 8版本
  • QT入门Input Widgets之QLineEdit

    目录 一 界面布局功能 1 界面位置介绍 2 控件界面基本属性 二 属性功能介绍 1 获取输入的文本内容 2 设置密码样式效果 3 设置不可见性 4 清除文本内容 5 设置光标聚焦 三 Demo展示效果 本文为作者原创 转载请标明出处 一
  • 微信小程序连接蓝牙设备流程(一)

    微信小程序的特点是无需下载App 只要是安装有微信的一部智能手机 几乎就可以运行微信小程序 基于这个特点 我设计了一款小程序版的蓝牙串口助手 适用于简单的蓝牙串口调试工作 从事蓝牙相关产品研发的兄弟们知道 手机端的像LightBlue BL
  • java--基础--20.1--反射--基础

    java 基础 20 1 反射 基础 1 介绍 反射 就是通过class文件对象 去使用该文件中的成员变量 构造方法 成员方法 1 1 测试用的类 public class User private String name int id p
  • 5.Java编程基础

    个人简介 作者简介 大家好 我是W chuanqi 一个编程爱好者 个人主页 W chaunqi 支持我 点赞 收藏 留言 愿你我共勉 没有什么比勇气更温文尔雅 没有什么比怯懦更冷酷无情 文章目录 Java编程基础 1 Java基本语法 1
  • 平衡二叉树(AVL树)

    平衡二叉树树专题 存储 基本操作 插入 代码来源 晴神 算法笔记 平衡二叉树定义 左右子树高度之差的绝对值不超过1 存储 struct node int data height node lchild rchild 新建结点 node ne
  • 【Interpreter模式】C++设计模式——解析器

    解析器 一 设计流程探讨 二 模式介绍 三 代码实现 C 设计模式大全 23种设计模式合集详解 点我跳转 一 设计流程探讨 您的团队希望开发一款能解析特定语言的系统 如解析系统传入的字符串a b c d 此时abcd是不确定的 这个字符串只
  • 新型的刷脸支付方式给人们生活带来很多便利

    随着科技的飞速发展 人们的支付方式发生了巨大的改变 从传统的现金支付逐渐演变到移动支付 出门可以身无分文 仅仅揣上一台手机就能走天下 如今最流行的两大支付端是支付宝和微信支付 新型的支付方式给人们生活带来诸多的便利 就比如说 如果你不想在家
  • Unity 创建模型并让模型动态运动

    最近项目要实现一个做正弦运动的线条 我想到的方案是改变模型的顶点 利用函数y aSin bx C 让模型顶点的Y坐标 根据X坐标运动 这样就实现如下图的运动 废话不多说 是骡子是马拿出来遛一遛 来看一张效果图 好 开始说如何实现 首先新建一
  • opencv答题卡识别

    最近做了一个答题卡识别项目 主要是利用opencv图像处理方法识别答题卡 登录界面 主界面 图片 识别结果 代码部分 主程序main py import sys cv2 from PyQt5 QtGui import from PyQt5
  • 机器学习四 KNN算法

    KNN算法 前言 一 距离常量 二 KNN算法步骤 三 算法优点 四 算法缺点 五 代码示例 前言 KNN解决的是分类问题 k Nearest Neighbor算法 也叫K最近邻算法 K近邻算法KNN就是给定一个训练数据集 对新的输入实例
  • 三款程序员必备神器,爆炸!

    精致 简洁 极客范 想必是每个程序员的终生追求 从此篇文章中您将得到三款免费神器 良心到爆炸 第一 二款 哎 为啥是第一 二款呢 因为这两款神器配合使用的话效果增益 Android WIFI ADB Vysor 最近经常听同学们 即将毕业的
  • deep feature flow

    因为如果将图片识别的网络直接引入视频中的帧 就会发现计算量就会很大 作者提出的这个网络利用的是 1 fowl estimetion feature propagation 比一般的卷积计算速度快很多 2 在空间上找一个关键帧做图像识别 然后
  • 基于协同过滤算法和深度学习的音乐推荐

    基于协同过滤算法和深度学习的音乐推荐 协同过滤 音乐推荐 深度学习 音乐检索 文章目录 基于协同过滤算法和深度学习的音乐推荐 Github 地址 微信小程序版实现 介绍 参考项目 技术栈 Docker 部署 如用此方式部署 后面的手动安装步