最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

【玩转数据系列十五】机器学习为你自动写歌词,妈妈再也不用担心我的freestyle了(...

[复制链接]
跳转到指定楼层
楼主
发表于 2017-7-24 11:14:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
作者:数加大数据
由作者投稿授权发布,未经允许禁止转载。

背景
最近互联网上出现一个热词就是“freestyle”,源于一个比拼rap的综艺节目。在节目中需要大量考验选手的freestyle能力,freestyle指的是rapper即兴的根据一段主题讲一串rap。freestyle除了考验一个人rap的技巧,其实我觉得最难的是如何在短时间内在脑海中浮现出有韵律的歌词。

有韵律的歌词脱口而出需要的不仅仅是海量的词库,更需要文字功底,对于常人来说可谓难上加难。本文会介绍如何利用机器学习自动生成歌词。
所以我们本次实验是利用阿里云机器学习PAI。
PAI平台是阿里云人工智能平台,在上面可以通过最简单的拖拉拽的方式,完成对各种结构化以及非结构化数据的处理。因为有了PAI,这种自动生成歌词的事情都不再成为难题。
利用PAI现在不光可以瞬间生成万首歌词,还可以同时融合周杰伦、王力宏、林俊杰、汪峰的歌词风格在里面,因为PAI利用深度学习能力可以快速的学习这些歌手的所有歌曲并且实现自己创作歌词。不信?我们接下来试一试!
实操环节
·         1.首先进入PAI:https://data.aliyun.com/product/learn
开通机器学习以及机器学习内的GPU服务。
·         2.训练数据说明
这里我们的数据是一份txt文件,文件中包含了周杰伦、王力宏、林俊杰、汪峰的歌词,一共有接近300首歌,歌词都是去掉标题等干扰因素的(小海花了好几个小时整理)。数据截图:

·         3.实验代码说明
本实验使用的是PAI内置的深度学习框架Tensorflow,使用的了seq2seq以及RNN网络进行歌词语义的学习以及建模。使用train.py文件生成模型,使用predict.py文件进行预测。
以下是部分网络结构搭建的截图,大家可以在下方找到源代码下载地址进行使用。(PS:实例代码虽然可以运行,但是数据IO采用的是低效方式,高效方式可以参考此文https://tianchi.aliyun.com/competition/new_articleDetail.html?spm=5176.8366600.0.0.5ca91ac5BF97pW&raceId=&postsId=2059)
[AppleScript] 纯文本查看 复制代码
        with tf.name_scope('model'):             self.cell = rnn_cell.BasicLSTMCell(args.state_size)             self.cell = rnn_cell.MultiRNNCell([self.cell] * args.num_layers)             self.initial_state = self.cell.zero_state(                 args.batch_size, tf.float32)             with tf.variable_scope('rnnlm'):                 w = tf.get_variable(                     'softmax_w', [args.state_size, data.vocab_size])                 b = tf.get_variable('softmax_b', [data.vocab_size])                 with tf.device("/gpu:0"):                     embedding = tf.get_variable(                         'embedding', [data.vocab_size, args.state_size])                     inputs = tf.nn.embedding_lookup(embedding, self.input_data)             outputs, last_state = tf.nn.dynamic_rnn(                 self.cell, inputs, initial_state=self.initial_state)   


·         4.数据上传
将实验数据和代码文件打包上传到OSS(之所以打包是本文案例使用的是原生PYTHON的数据IO方式,需要代码和训练数据组成同一个tar.gz文件)。OSS是PAI可读的对象存储工具,具体方式可以参考此视频链接https://help.aliyun.com/video_detail/54945.html
·         5.搭建实验
在PAI的画布拖动OSS以及Tensorflow组件搭建如下实验,两个Tensorflow节点分别对应着训练和预测节点,先训练生成写歌模型,然后预测节点获取模型自动生成歌词。

配置对应的执行代码路径和输出路径,跟上面的OSS路径对应。下图是负责预测的Tensorflow节点配置。

点击运行,PAI就开始学习歌词并且尝试自己写作啦。
学习总结
经过差不多20分钟的学习,PAI已经掌握了几位歌坛大神的歌词技巧,下面就看看PAI写出来的歌词是怎样的。(歌词需要在log中查看,可以参考https://tianchi.aliyun.com/competition/new_articleDetail.html?spm=5176.8366600.0.0.6d680422bayDI8&raceId=&postsId=2064
歌词来了,当~当~~当~~~

看上去写的歌还算通畅,没有出现特别多语病。
当然,想写出更好的词,需要对训练模型的迭代次数、词长等参数进行不断调试,也可以多为PAI输送更多的歌词供训练,因为300多的样本还是略显单薄。
以上就是通过PAI自动写歌词的教程,不知道有没有哪位有才的小伙伴可以对这份歌词编个曲?通过本次的机器学习,也希望对各位喜欢音乐和尝试做文本自动生成的同学有帮助。
让我们一起freestyle起来!!!
下载地址
1.数据以及代码已经打包,直接上传PAI配置路径即可使用:下载地址
2.PAI用户钉钉群:11768691


楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-4-26 19:40

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表