苦等四个月,周杰伦最新单曲《不爱我就拉倒》终于发布!英伦摇滚曲风诠释忧郁情歌,一贯的周氏风格旋律十分抓耳,但看到歌词,处座就坐不住了…… 离开之前不要爱的抱抱 反正我又不是没有人要 哥练的胸肌 如果你还想靠.... ——《不爱我就拉倒》 这是什么土味情歌?处座一秒出戏,不仅忧郁不起来,甚至有点想笑,十级伦吹也不能夸这首歌歌词写得好。处座不禁陷入了沉思:周董是参加了最近流行的土味情话训练班么? 还是说狂吸奶茶的幸福中年人只能写出这样的水平? 其实周杰伦对自己的作词水平是很有自信的,还曾经在歌里cue方文山: 文山啊等你写完词我都出下张专辑喽没关系慢慢来这首歌我自己来——《梯田》真的想说,周董,爱惜下自己的羽毛吧,写词这种事还是交给方文山比较好啊!你看看求生欲强烈的歌迷是如何踊跃地在方文山微博评论里留言,甚至愿意众筹给杰伦写词。 其中有一条评论脱颖而出,吸引了处座的目光—— WHAT?方文山已经这么久没写词了么? 带着疑问,处座查了下方文山最近的行程。最近一两年,方文山不仅参加了各类综艺,还在在网络平台开课讲《方文山的音乐诗词课》,从去年到现在,更是在台湾、香港、深圳、以及美国波士顿等多地做了“填词创作”的线下演讲。 但在行程满满的情况下,方文山还是联手吴梦奇给王俊凯写了《我在诛仙逍遥涧》,而去年年底,他联手张亚东给张艺兴写了《梦想起飞》。 这样看来,方文山不是天没有写词,而是天没有给周杰伦写词啊,怪不得周·小公举·杰伦要写出《不爱我就拉倒》了。 两人的下次合作不知要等到什么时候,众筹也不知是否会开启,如果周董下首歌还是这种风格,处座真的要苦涩地昏过去了。但是请不来方文山,就写不出方文山风格的歌词了么?凭借专业的敏锐觉察,处座不由得想到,如果开发一个“填词机器人”,能不能成为“方文山第二”,说不定就可以把歌词卖给周杰伦呢! 模仿方文山的重点在于,能否让机器人通过阅读方文山写的歌词,学习他歌词的结构和表达形式,最终实现歌词创作。 这里,处座打算利用TensorFlow创建LSTMRNN模型来训练写作机器人。 LSTMRNN原理介绍 RNN(循环神经网络)和传统神经网络相比,优势在于允许信息的持久化,这意味着RNN可以利用学习到的知识来推断后续的事件,也使得通过学习歌词,积累歌词经验来创作歌词成为可能。 (上图中,A是神经网络的模块,通过读取x_i和上一步循环中A的信息,输出h_i,并将A传递给下一步循环) LSTM(LongShortTerm)则是一种特殊的RNN类型,通过刻意的设计来避免RNN中存在的长期依赖问题。 简单解释一下两者的区别:如果把RNN理解为大脑,原生RNN就是金鱼的大脑,只能保留短期的记忆,对越久远的知识记忆力越弱,如果用来训练写歌词,很可能造成训练了大量的样本,但仍然写不出通顺短语的尴尬情况。而LSTM则像是给了金鱼一个小日记本,将学习到的每个知识都记录在日记本里,这样就算很久远的信息,金鱼也能通过快速翻阅日记本来记住之前的知识,并运用到下一句歌词的写作中。 数据准备 想要再现方文山和周杰伦的经典合作,首先处座打算要过滤掉周杰伦自己写的词(并没有diss周董的意思)。获取周杰伦所有的歌曲后,并从中挑出方文山作词的82首,并人工删除了live、remix等歌词相同的歌曲版本。 由于时间轴和创作者等额外的信息大多有统一的格式,比如时间轴都是用[]括起来,编曲作词作曲等信息也都会在姓名前标注人员类型,可以直接用正则表达式去掉。 清洗前: 清洗后: 模型训练开始 “填词机器人”模型的构建,参考了“Python深度学习库”tensorflow_poems(中科白癜风微博白殿风治疗费用
|