来自阿里巴巴的90后工程师芦阳,用业余时间开发了一套人工智能作词程序——名字叫做MusicGo,这个程序经过芦阳的“喂养”和设定,可以自己写饶舌歌曲。

芦阳加入菜鸟也才仅仅四个月,这是他第一次参加双11备战。作为一名新员工,用原创嘻哈歌曲庆祝双11的形式可谓独一无二。人工智能和双11也成为MusicGo的第一个主打的主题曲。

今年的双11非常有科技感,芦阳就给MusicGo喂食了不少体现双11科技的文章,比如菜鸟智慧物流、阿里云、天巡机器人、智能客服等关键词,加上修饰韵脚,20分钟后,一首《天猫双11有嘻哈》就出炉了。

大家来感受下:

其实,今年双11里人工智能已经悄然成为了狂欢节的新兴“职业”。不仅50%的后台故障修复由智能机器人负责,超级机器人仓群和一天内350万的客户量都是由智能机器人和“店小蜜”来完成的,可以说今年阿里双11开启了人际协同时代的新篇章。

这款芦阳利用业余时间编写的人工智能程序MusicGo,可以分析Hip-hop的歌词,将歌词进行分词以及拼音解析,从而进一步获取每个词的韵脚,形成庞大的分词词库,扔进去一个词就能出来很多押韵的相关词汇。

今天,阿里妹也邀请到了作者芦阳,请他来聊聊MusicGo的实现原理。其实没有你想象的那么难哦~

芦阳:把AI写歌儿这个事儿抽象起来看,其实是有一个模型,或者更通俗一点讲,是有一个函数。就像Y=WX B,给一个X,就可以产出一个Y。所以,问题的关键是我如何抽象出这个函数,并使其尽可能的精准。

深度学习可以做到的是抽象模型。举例,我给出一段序列A作为X,给出一段序列B作为Y,它会通过不断的有监督学习从而获得函数Y=WX B。接着,我又给出一段序列C作为X,给出一段序列D作为Y,它通过调整函数的参数尽力去满足A->B && C->D。当学习的量达到一定阶段的时候,模型也就基本可用了。

因此,我最终想要的效果是,一个比较合理的模型。这个模型可以做到,我给一个序列X,它可以去生成序列Y1,同时生成隐状态H1。接着,用Y1以及H1作为输入,继续生成Y2和H2,以此类推。最终达到所定义序列长度标准。

步骤为:

1. 收集歌词

2. 对歌词进行预处理,去除标点符号、特殊字符

3. 不断训练seq2seq模型

4. 使用模型产出歌词

收集歌词

我用Python爬取了XX音乐上的Hip-hop歌单,分析rapper如何押韵,收集到了几万首嘻哈歌词。

数据预处理

原始的歌词因为都是网友们上传上去的,所以格式并不完全统一,而且还会有一些非主流符号。因此,需要把所有歌词都进行同样的预处理,过滤了标点符号、特殊字符,写入到文件中,目的是使剩下的文本足够的整洁。

训练模型

首先是建立LSTM模型。

根据传入的引状态initial_state与序列inputs_split,执行rnn的decoder获得输出outputs_split。

把输出用softmax层处理,得到logits,与原本要学习的文本训练targets,计算总损失函数值total_loss。

循环去学习feed的文本,不断调整模型,降低损失函数值。

生成模型过程:

将足够满足目标的结果模型保存下来,后续就可以用该模型去生成序列了。

产出歌词

用上述产生的模型生成嘻哈歌曲,结果不太理想,给人的感觉是有点儿乱。因为嘻哈歌曲本身写的东西都比较杂,并且由于时间原因,我也没训练模型太久,损失函数值不足够低,导致最后生成的歌曲,更杂了。

调整思路

同时,还有个问题:嘻哈有了,“双11”和“智能”呢?我就是让模型学一辈子嘻哈,它也写不出双11和人工智能的东西,因为市面上并没有同类型歌曲。因此,我决定回到原点,改变想法,目标导向。

用“人工智能”、“双11”、“阿里云”、“阿里小蜜”、“菜鸟机器人”等关键词去爬科技类文章来feed模型,模型学会产出双十一智能等相关的句子。同时,用嘻哈的句式长度去约束它,产出嘻哈歌曲。最后挑一些句子,加一点“韵脚”,就作为词了。

人工修正智能

当然,用程序跑出的词,和人工写成的作品仍有些偏差。因此,我对机器自动生成的歌曲句式进行调整,使其更通顺(手动捂脸)。

天猫双11有嘻哈

(歌词节选)

又来到一年 双11

让我买买买 花光所有力气

又来到这一年双11

让我把指挥权交给智能机器

黑科技改变生活

打破包围我们地域的封锁

智能的技术连接你我

点亮双11 夜里万家灯火

Yeah太多无法计算的价值

成千上万订单在指尖飞驰

Yeah太多无法计算的价值

阿里云让所有订单在云端飞驰

阿里小蜜 会语音文字图像识别

学习能力 全部一整年都在线

人海战术 全被科技改变

好用又百变 用户舍不得说再见

还有机器人总动员在菜鸟仓库上演

累计足够智能 它们开始掌握主动权

拣选打包 顺利通关

从杭州到东莞

从上海到中原

今年双11,作为工程师的你,在购物车里放了哪些必败单品?是心心念念的机械键盘、降噪耳机、无人机,还是为爱人买的暖心手套、明星同款口红?欢迎在留言区一起分享交流~

原文发布时间为:2017-11-9

本文作者:芦阳

本文来自云栖社区合作伙伴“阿里技术”

更多专业前端知识,请上 【猿2048】www.mk2048.com

阿里90后工程师,如何用AI程序写出双11打call歌?相关推荐

  1. 阿里90后工程师利用ARM硬件特性开启安卓8终端“上帝模式”

    文/图 阿里安全潘多拉实验室 团控 编者按:团控,阿里安全潘多拉实验室研究人员,该实验室主要聚焦于移动安全领域,包括对iOS和Android系统安全的攻击和防御技术研究.团控的主攻方向为安卓系统级漏洞 ...

  2. 阿里90后工程师利用ARM硬件特性开启安卓8终端“上帝模式” 1

    文/图 阿里安全潘多拉实验室 团控 编者按:团控,阿里安全潘多拉实验室研究人员,该实验室主要聚焦于移动安全领域,包括对iOS和Android系统安全的攻击和防御技术研究.团控的主攻方向为安卓系统级漏洞 ...

  3. java画五角星_如何用Java程序写出五角星?

    展开全部 第一种,用图形 import java.awt.*; import javax.swing.*; public class WuJiaoXing extends JPanel { priva ...

  4. 如何用PYTHON代码写出音乐

    如何用PYTHON代码写出音乐 什么是MIDI 博主本人虽然五音不全,而且唱歌还很难听,但是还是非常喜欢听歌的.我一直在做这样的尝试,就是通过人工智能算法实现机器自动的作词和编曲(在这里预告下,通过深 ...

  5. java 程序写出三个类,triangle,lader,circle(简单易懂)

    编写一个Java应用程序,该程序中有三个类:Triangle.Trapezoid和Circle,分别用来刻画"三角形"."梯形"和"圆形". ...

  6. python怎么实现音乐快进_如何用PYTHON代码写出音乐【】

    如何制作MIDI(用于vocaloid 3) 我也是因为V家才来找midi的 如何用PYTHON代码写出音乐 在python-midi,每个乐谱用Pattern对象表示,乐的每个音轨(通常音乐很多轨道 ...

  7. 阿里90后科学家研发,达摩院开源新一代AI算法模型

    整理 | 一一 出品 | AI科技大本营(ID:rgznai100) AI科技大本营7月5日消息,阿里达摩院宣布开源新一代人机对话模型ESIM.该算法模型提出两年多,已被200多篇论文引用,更曾在国际 ...

  8. 阿里 90 后科学家研发,达摩院开源新一代 AI 算法模型

    整理 | 一一 出品 | AI科技大本营(ID:rgznai100) 7月5日,阿里达摩院宣布开源新一代人机对话模型ESIM.该算法模型提出两年多,已被200多篇论文引用,更曾在国际顶级对话系统评测大 ...

  9. 不安分的程序员!阿里90后员工做了个随时FreeStyle的人工智能

    顶着鸭舌帽.戴着墨镜,挂着大金链子唱着自己写的rap,这对于从来没有玩过音乐,甚至五音不全的90后程序员芦阳来说,看上去是个非常遥远的梦. 不过最近,他真的在阿里电台和朋友录制了人生第一首rap,主题 ...

最新文章

  1. Windows 上连接本地 Linux虚拟机上的 mysql 数据库
  2. Xamarin.Forms单元控件Cell
  3. 微信开发教程(4)——高级群发接口
  4. Windows下MetaMap工具安装
  5. 小程序获取openid保存缓存吗_微信小程序把openid放到缓存里
  6. java课程设计进程管理_Java课设总结(个人版)
  7. Kubernetes在上汽集团云平台及AI方面的应用
  8. javascript 代码_如何使您JavaScript代码简单易读
  9. MySql实现sequence功能的代码
  10. 【王道计组笔记】数制、编码、校验
  11. Java静态代理、动态代理
  12. 2010上机二 中国象棋马走日
  13. 如何实现2019新年愿望:梦想还是要有的,但不能靠“万一实现了呢
  14. 记录我的LINUX学习之路
  15. k-Nearest Neighbors(k近邻算法)
  16. 法律对合伙企业债务承担方式的规定
  17. Nothing——for 情人节
  18. mysql uftb8mb4 储存 emoji 表情失败
  19. 51单片机实战教程之C语言基础(一 创建Keil Project)
  20. python中floor的用法_Python floor() 函数 - Python 教程 - 自强学堂

热门文章

  1. 用户管理实例 之 添加、查询
  2. javascript练习----复选框全选,全不选,反选
  3. ms2005 SQL Server设置改为SQL Server身份验证
  4. struts2-通配符和动态方法调用
  5. TDD:MS自带的单元测试 之 线程模型和执行顺序
  6. c++中在堆和栈中申请空间的差别
  7. ON_COMMAND_RANGE用法
  8. 复旦大学长跑协会财务制度(初稿)
  9. mysql 数据迁移_MySQL海量数据迁移
  10. 编译错误syntax error : missing ';' before 'type'原因探寻