統計機器學習——讓計算機學會吟詩作賦

宿建德江
唐 孟浩然
移舟泊煙渚, 日暮客愁新。
野曠天低樹, 江清月近人。
?圖片來自互聯網
格律詩是中國古典詩詞的一種,也叫近體詩,特指唐代之后的古詩體。其根據篇章長度不同可分為四句的絕句和八句的律詩,按照每句字數的不同又可分為五言詩和七言詩。格律詩的創作需在規定字數內完成給定主題內容的描述,且包涵特定意境。不僅如此,格律詩還講究文字優美、押韻,對平仄、輕重音和用韻的使用也有一定的限制,比如有時候奇 - 偶句子要講究平仄對應。李白、杜甫、李商隱、陸游等我們耳熟能詳的著名詩人在中國詩歌史上占據重要地位。如今依然有很多文學愛好者希望和他們一樣用詩歌傳達自己的情感和抱負。但對于未經訓練的人們來說,遣詞造句以及韻律等約束是創作格律詩過程中的一大障礙。
新年到,作為格律詩研究的第一步探索,微軟亞洲研究院推出了全新的絕句生成系統,為熱愛詩詞的人們帶來了樂趣。自然語言計算組的研究員們基于統計機器翻譯的方法,利用計算機對格律詩進行輔助創作。首先,創作者選擇幾個表達創作意圖的關鍵詞,然后系統會對每一個關鍵詞增加若干語義相關的擴展詞,并通過句子韻律模板生成候選的第一句,供創作者確認或者修改。然后,系統使用一個基于短語的機器翻譯模型,以前一句為輸入,來生成下一句的候選。與“微軟對聯”系統不同的是,在生成下一句候選時,中文格律詩自動生成系統要考慮與前面一句,以及前面所有句子的語義連貫性,以及平仄、韻律和對仗的約束。如此往復,直至四句全部完成。
帶你寫出“原汁原味”的古體格律詩
先來看看網友用“微軟絕句”寫下的心情:
郊興
撥槕茶川去,入杯花海歸。
隨曲柳風至,逐人桃雨垂。
秋館雨夜
飛鳴一燕帶秋回,落語千花隨夜微。
手拓欞窗望蕭瑟,閑宵靜話喜還悲。
是不是有點意境,仿佛古代的文人穿越至此留下的感悟?
目前中文格律詩自動生成系統已可以成功實現絕句的創作。網友們在體驗后紛紛表示,前沿科技原來也可以如此“文藝”。
那么中文格律詩自動生成系統是如何讓詩歌的字詞句如此富有古典氣息的呢?
一般的格律詩創作過程可大致分為如下幾步:
1) 有清晰的描述主題,這些主題可以通過具體的主題詞來表述。如:寫一首想念故鄉的詩,可由“思鄉”或“故鄉”等確切的詞匯來表述。
2) 根據主題詞聯想出更多與其語義相關的詞匯,如:由“思鄉”聯想到“慈母”和“家書”等。
3) 在符合格律詩約束下,通過對這些詞的合理組織,反復推敲創作詩句。
4) 參考上文與主題,一句一句創作下句,循環往復直至完成全詩。
為了讓創作者寫出符合格律詩約束的詩篇,中文格律詩自動生成系統依照傳統創作過程將具體架構設計如下:

系統在統計機器翻譯的基礎上,引入主題模型作為用戶所輸入的表征題目詞匯的擴展,從而輔助首句的生成,并在交互方式下生成每一個單句。在統計機器翻譯模型中融入主題模型是為了加強所生成詩句與創作者擬定題目的相關性。在基于統計機器翻譯的格律詩生成過程中,把格律詩中的上下句分別看作源語言句與目標語言句,可自然地通過統計機器翻譯模型實現下句的自動生成。
不僅如此,系統還引入了清代學者劉文蔚在《詩學含英》中所總結歸納的古詩特性及約束,加入了《聲韻啟蒙》、《訓蒙駢句》、《笠翁對韻》三本訓練對偶技巧和聲韻格律的工具書中的主題類型,如天文、時令、節序、地輿、樓館、人倫、文學、游眺、飲食、器用、花草、竹木、飛禽、走獸等。同時,系統還包含了主題詞的二級分類,對常見的古詩主題有了比較全面的覆蓋。創作者可以在這些類中選擇主題,“寫出”符合遣詞造句、格律押韻并充滿意境的古詩來。
“計算機詩人”的創作過程
飲中八仙歌
唐 杜甫
李白斗酒詩百篇,長安市上酒家眠。
天子呼來不上船,自稱臣是酒中仙。
?圖片來自互聯網
在使用系統時,用戶首先選擇一些關鍵詞,系統會根據這些確定的關鍵詞生成第一句(用戶可以手動選擇第一句,也可以自行輸入);隨后點擊第二句的輸入框,系統則會根據第一句自動生成第二句;同理,第三句和第四句的生成也會考慮已生成前文的信息。當四句詩生成結束后,用戶則可以點擊“寫詩題”輸入詩題和姓名,然后,系統還會根據詩歌內容量身定制詩配畫。最后完成保存,就可以和小伙伴們一起分享你的大作。你也可以像“詩仙”李白一樣“斗酒詩百篇”!
實現這樣看似輕松的格律詩創作,其背后的技術卻沒有那么“輕松”。
首先,在格律詩創作中,主題可由多種多樣的詞匯來描述。為了滿足表達多樣性的需求,系統根據創作者提交主題詞,利用主題模型進行擴展得到更多的主題相關詞。主題模型除了有助于詞匯擴展,還可幫助強化主題意境。
語義相關:詞A和詞B同屬某個主題的常用詞,在撰寫某類主題文章時經常被一起使用,且在訓練文檔庫中存在很強的共現關系
除此之外,我們進一步使用深度學習技術詞向量模型對于主題詞進行擴展,例如當用戶選擇“懷古”主題時,深度學習模型可以給出更多相關的主題詞如“吊古”、“覽古”、“憑吊”,“懷昔”等,對于傳統的主題模型是很好地增強。在借助上述主題模型得到基于主題詞的語義相關詞集后,首句的自動生成便呼之欲出了。以該詞集中的詞匯作為造句的基本元素,結合語言模型作為評價函數,搜索較優的候選句。候選句的篩選機制在寬度優先搜索上加上了擴展寬度限制,每次只從擴展節點中選擇評分最優的若干個節點進行擴展。例如,對于詞集 { 清溪、石橋、潺潺、繞、過 } ,首先設置擴展寬度為 1 ,生成候選詞的個數也為 1 ,假定詩句長度為 5 (五言絕句)。第一次篩選時每個詞均作為一個候選,假定首輪最優擴展節點為“清溪”,則第二輪篩選時,枚舉詞集可得到“清溪 - 石橋”、“清溪 - 潺潺”、“清溪 - 繞”、“清溪 - 過”四個擴展節點。再假定最優擴展節點為“清溪 - 潺潺”,后進入第三輪篩選,根據詩句長度 5 的約束可得到兩個擴展節點“清溪 - 潺潺 - 繞”和“清溪 - 潺潺 - 過”。假定最優擴展節點為“清溪 - 潺潺 - 過”,在判斷其滿足三個約束后,即可生成對應語句“清溪潺潺過”。
當首句生成之后,繼而采用基于統計機器翻譯的方法進行二、三、四句的生成。統計機器翻譯將翻譯過程看作一個最優目標語句的搜索過程,對于一個給定的上句,根據以往的翻譯經驗,生成多種可能的譯文。基于短語的統計機器翻譯技術( Phrase-based Statistical Machine Translation, PBSMT )是目前一種主流的機器翻譯技術,它的優勢在于短語翻譯結果的選詞準確。由于詩詞的生成講求對仗,不涉及遠距離語序調整問題,且上下句之間的對應關系往往建立于短語級別上,因此詩詞的生成非常適合采用基于短語的機器翻譯算法來解決。而將格律詩中的上下兩句分別看作源語言與目標語言,便可以利用已生成的上句自動生成下一句。
在統計機器翻譯中,特征函數的選擇也不能忽略,因為這直接決定了模型能否生成正確的翻譯結果。一般來講,基于短語的統計機器翻譯系統采用了如下的特征函數:正向短語翻譯概率、反向短語翻譯概率、正向短語詞匯化翻譯概率、反向短語詞匯化翻譯概率、使用短語個數和目標語言模型。
除此之外,中文格律詩自動生成系統還加入了概括上下文詞匯使用意境一致性的的特征:互信息特征。
互信息特征的加入,可用于度量詩句間的意境關聯。用 Set-A 表示即將生成的詩句中包含的詞集合,用 Set-B 表示之前所有詩句包含的詞集合,互信息計算方式如下:

其中, S i 和 S j 分別代表 Set-A 和 Set-B 中的詞匯, p(S i , S j ) 表示 S i 和 S j 共同出現在詩歌中的概率, p(S i ) 表示 S i 出現在詩歌中的概率。這樣一來,互信息可較好地估計上下文使用詞匯意境的一致性。
未來新突破
登鸛雀樓
唐 王之渙
白日依山盡,黃河入海流。
欲窮千里目,更上一層樓。
?圖片來自互聯網
經過不斷的改進,微軟亞洲研究院自然語言計算組的研究員們提出的這一結合統計機器翻譯模型與格律詩創作知識的獨創性方法,通過對大規模詩詞數據進行自動學習,將格律詩中上下句變換為統計機器翻譯中的雙語映射關系,實現了絕句的自動生成。
“微軟絕句為廣大古典文化愛好者提供了幫助,對中國傳統文化的傳承及宣揚也具有積極意義。而機器學習技術和中國格律詩創作的結合,則是我們在人工智能領域嶄新的嘗試。雖然目前的系統尚為稚嫩,但是我們仍然很高興邁出了這歷史性的第一步,并為未來的長期研究奠定了基礎。微軟亞洲研究院自然語言計算組首席研究員周明博士介紹道,“但是,我們也清楚地認識到還有很多問題。其中最重要的是全詩的意境的連貫性。這里我相信深度學習大有用武之地。同時我們將繼續改善用戶體驗。在此基礎上,我們也準備逐步擴展到律詩甚至詞的生成”中文格律詩自動生成系統充滿著挑戰和收獲,我們前進的腳步從未停止,未來還會有更廣闊的空間等待著我們“更上一層樓”。
微軟 絕句傳送門: http://couplet.msra.cn/jueju/
推薦閱讀

歡迎關注
微軟亞洲研究院官方網站:http://www.msra.cn
微軟亞洲研究院微博:http://t.sina.com.cn/msra
微軟亞洲研究院微信:搜索“微軟研究院“或掃描下方二維碼:
