012. (4.16)音乐推荐下载器Beta版(V0.1)说明

软件使用说明

  • 核心主程序以及相关函数在utils文件夹下的qqMusicDownloader.py。用编译器运行即可。(exe文件在src文件夹下,若运行应该要修改数据库相关信息,重新打包。)
  • 一开始为数据集中第一位用户生成推荐列表,可选择下载其中艺术家的歌曲或自行搜索,搜索数量可自定义(0-50)。搜索列表显示后,可以选择下载其中1首非VIP专属歌曲(单线程)并爬取相关资源。下载完成后,下载记录将被储存至MySQL数据库中。
  • utils文件夹下的get_test_and_train.py负责将数据集划分为测试集和训练集,并储存为pkl文件。(dict_test.pkl 和 dict_train.pkl)
  • recs文件夹下的userCF和itemCF各通过算不同算法,建立相似矩阵,并生成推荐列表。2个相似矩阵被储存为pkl文件,2个推荐列表(各包括前10位推荐艺术家)被储存为txt文件。

项目思路(包括功能实现说明)

  • 主体框架:
    爬虫下载为主要部分。为辅的推荐系统则划分数据集,再根据基于领域的算法,生成推荐艺术家列表,供用户选择下载。

  • 爬虫下载:
    request库可以实现对网页内容的请求,再用json、re对内容进行分析,得到需要的参数或内容,最后通过基本的文件处理实现下载。

    此外,获取下载资源的过程中,需要借助以上工具和网页源代码,确立一个个URL。比如若要获取音乐流URL,便需要其他两个中间URL其中的信息。

    由于下载器为用户服务,务必涉及交互功能。因此,如何实现更好的交互体验,也必须认真考虑查验。

    至于程序健壮性,还需在debug中一次次提升。

    最后,下载器程序分为类的定义和主程序部分。其中类包含以下函数:
    (init)、请求URL内容、生成推荐列表、选择如何搜索、搜索歌曲、检查搜索以及下载资源。主程序流程也基本遵循以上函数的顺序。

  • 数据集划分:
    将数据集dat文件中的数据按1:(M - 1)比例随机划分为测试集和训练集,用字典储存,并用pickle把两者保存为数据包,供推荐算法使用。

  • 推荐算法:
    在训练集上实验,在测试集上根据相关指标评测。由于跑一次算法耗时较长,只进行了一次实验。

    选用两种基于领域的协同过滤算法:基于用户和基于物品,并以此生成推荐列表(各为用户生成10位推荐的艺术家)。两种算法均要先建立相似矩阵再推荐。其中基于用户的相似矩阵建立过程较慢,而且先需建立倒排表,但最终评测显示的覆盖率较高。

    扫描二维码关注公众号,回复: 12557738 查看本文章

仍可改善之处

1.部分音乐流URL的请求失败(如欧阳娜娜的大部分音乐)
2.程序运行效率
3.VIP歌曲爬取,不知能不能爬取更高音质资源
4.多线程异步下载
5.MV、专辑的下载
6.GUI(最后1天才实操pyqt5,只做了一个小小的窗口……)
7.其他人性化的功能
8.代码在视觉上更整洁简洁点吧

第三方库

1.os
2.pickle
3.random
4.request(爬虫)
5.json(爬虫)
6.re(爬虫)
7.pymysql (数据库专用)
8.math(算法中的计算)
9.from operator import itemgetter(字典)

猜你喜欢

转载自blog.csdn.net/u013598957/article/details/105560480