大数据文摘作品,转载要求见文末 作者 | 张皓添@稀牛学院数据科学实训营 Music是永不落伍的话题。 每个人一定都有自己心仪又不单一的音乐风格:rap、古典、流行,那么如何管理自己的歌单呢?难道真的要自己手动一个一个去给歌曲设置类别吗(耗时耗力,真的好累!)? 不如挽起袖子撸一波代码,让AI去替我们完成这些费力不讨好的任务。 人工智能似乎总是与众多或复杂或简单的算法及或深或浅相的数学知识相挂钩,但是好在勤劳的工程师们已经为我们铺好了通天大路,sklearn,tensorflow,caffe等一系列的机器学习框架已经相当的成熟并投入使用。我们也将使用这些开源的框架来完成一次AI流程。 目标:实现歌曲风格的分类,输入一段歌词,给出所属的分类标签。 工具:Python、Scrapy、Selenium、PhantomJS、Sklearn、WordCloud、Matplotlib 、jieba。 那么我们给出机器学习的流程图: 一套完整的机器学习模型构架加预测的都是基于这个流程图的。那么我们就根据步骤一步一步来处理我们的问题。 1.数据提取 我们的目标是对歌曲进行风格的识别,那么最最重要的一问题就是 数据从何而来? 没有数据就没有模型的地基。考虑了几个主流的音乐播放器的平台(网易、QQ、Kugou),选择了歌单分类比较清晰的网易云音乐歌单。使用爬虫去对歌单信息进行摘取。 可以看到风格分类还是蛮多的,那么我们现在要做到的就是在每个分类目录,拿到属于该风格的歌单,再从歌单中获得歌单中所包含的所有歌曲。现在就到了爬虫展现神威的时刻了,我们通过 scrapy 这个框架来实现,那么我们要怎么做恩? ① 首先先把需要的包都import进来。 ② 对爬虫添加请求头,其中的User-Agent使用faker去模拟。设置起始url。③ 现在呢,我们需要的就是获得到底有哪些 分类标签 啊(Tag:流行、爵士...)通过xpath拿到标签的列表,这里我们为了节省爬取的时间只选择了3个标签。分别为 [ 古风,英伦,乡村 ] ④ 我们浏览实际网页的时候发现 网易其实对歌单进行了分页操作,也就是说我们在爬取每个分类的时候还要知道在这个分类中的歌单共有多少页,所以接下来要去解析 每一类对应有多少页的歌单 (为了缩小爬取量只用了每个风格5页歌单,每一页包含35个歌单) ⑤ 拿到每一页的歌单之后 我们就需要去遍历这一页的每一个歌单,并且拿到 歌单相应信息。我们需要的信息有 【歌单风格,开奖,歌单名字,歌单收藏量】分别为 【style,name,counts】 获得歌单信息及包含的歌曲列表,并携带这些信息继续去解析歌曲列表中包含的歌曲 ⑥ 最复杂的一步来了 我们现在需要找到每首歌曲中所包含的信息,我们所需要的有【歌曲名字,歌曲歌手,歌词】其中前两个都好办,只有最后一个歌词,是没有办法直接获取到的,因为歌词是动态加载出来的,为了解决这个问题,我们引入[ selenium + phantomJS ] 来模拟浏览器行为,之所以选择phantom是因为他是无界面的浏览器无需渲染,直播,速度更快一些。 (责任编辑:本港台直播) |