阿里90后工程师,如何用AI程序写出双11打call歌?
蘆陽加入菜鳥也才僅僅四個月,這是他第一次參加雙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歌?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自己写了一个多行文本溢出文字补全的小库,
- 下一篇: OnSen UI结合AngularJs打