?作者 | 羅應峰 談修澤
學校 | 東北大學
研究方向 | 自然語言處理
古詩和對聯是中國的兩種文體裁,他們共同的特點是文辭優美、對仗工整、格律嚴謹、內涵豐富,深受文人墨客的喜愛,相應地寫出一首好詩或者對出一個好的上下聯并不容易。當今人工智能發展迅速,機器寫詩,續寫對聯不再是難題,本文將對古詩和對聯生成的基礎技術進行介紹,同時介紹一些在線寫詩、對對聯系統。
早期的詩歌生成主要基于規則、統計的方法實現,這種方法需要人工設計規則,生成詩句流于形式,表達含義淺顯、流暢性和可讀性較差。近年來,隨著深度學習取得的長足進步,基于神經網絡的詩歌生成已經取得了很好的效果,語言模型和序列到序列框架這兩種技術被廣泛應用于當今的詩歌和對聯的生成系統中,下面進行簡單介紹。
語言模型(Language Model,LM)描述了一個單詞串的生成過程,是一種被廣泛用于建模文本序列生成任務的方法。語言模型可以被定義為計算一個句子 的概率問題,即求 ,根據鏈式法則進行分解,有:
在上式中 可以看成句子中的每個字,語言模型在生成每個字時都需要依賴于上文,即第二個字在預測時需要參考第一個字,第三個字參考前兩個字,以此類推,這樣實現了文本生成的過程。傳統實現上述公式的方法是基于統計的方法,即在語料庫中通過概率統計的方法來學習模型參數,這種方法面臨參數量大,數據稀疏性等問題。目前主流的基于神經網絡的語言模型通過人工設計的復雜神經網絡來擬合數據的分布,可以很好的解決上述問題。具體在模型結構層面,可以使用如RNN、LSTM、Transformer等神經網絡模型。
將語言模型應用于對聯生成的一種簡單做法如圖1所示[1],首先將上下聯拼接后看作一段文本,讓模型在所有對聯數據中訓練,這樣可以使模型學習到概率信息,如“天”字后常出現“高、地、下”等字。在推斷時給出上聯作為上文,由模型對下聯進行預測生成。由于對聯上下聯一般字數相等,在圖1中在上下聯中添加分隔符(如逗號)有助于模型學習上下聯間的字數關系,不至于使模型無限制的生成下去。
圖1 利用語言模型生成對聯
詩歌生成與對聯類似,比如可以把四句古詩(絕句詩)拼接成一個長句子后訓練一個語言模型,在推斷時給定第一句作為上文,讓模型續寫后三句?;蛘呖梢詫⒃姼璧捏w裁類型、關鍵詞/標題、詩句幾部分內容進行拼接,如圖2所示,之后訓練一個語言模型,最后推斷時提供代表詩歌體裁、主旨的關鍵詞或詩歌標題作為上文,模型就可以逐字生成詩句內容。
圖2利用語言模型訓練古詩的一個例子
自然語言處理中的許多問題都可以看作序列到序列的轉化問題,比如機器翻譯、文本摘要、對話等,對于這類問題我們通常會用條件語言模型來進行刻畫,過程與上述的無條件語言模型類似,不同之處在于條件語言模型的求解目標是求 ,其中 為源語, 為目標語。對于這類問題,通常使用序列到序列(sequence-to-sequence,Seq2Seq)框架來實現。序列到序列框架主要由一個編碼器和一個解碼器組成,編碼器負責將輸入序列編碼成語義向量Context,之后解碼器負責根據語義向量逐字詞生成目標序列。
對聯由上聯和下聯組成,可以將上聯看作源語,下聯看作目標語,因此可以把對聯生成看作序列到序列的轉化問題,利用序列到序列框架進行對聯生成的過程如圖3所示。圖3描述了一個對聯的生成過程,首先由用戶給出上聯“海闊憑魚躍”作為編碼器的輸入,編碼器將上聯信息編碼成語義向量,該向量包含了上聯的全部信息,解碼器首先根據語義向量以及起始符推測出第一個字“天”,然后利用信息“天”和語義向量繼續推測出第二個字“高”,再根據“天高”和語義向量推測出第三個字“任”,依次類推,直到預測出終止符,從而完成下聯的預測過程。
圖3序列到序列框架對聯生成過程
詩歌生成也可以通過序列到序列技術實現,只是相對于對聯的生成過程略復雜一些,以絕句詩為例,它包含了四句話,而對聯只有兩句,對聯的序列到序列轉化的特征體現的更加明顯。對于詩歌文學體裁,生成詩句關系可以看成如圖4所示(以絕句詩為例)。利用序列到序列框架的一種簡單生成古詩的方法是,首先得到詩歌的第一句,第一句可以根據用戶輸入的關鍵詞利用語言模型、模板或檢索等方式來得到;生成詩歌的第二句可以視為與對聯生成過程一樣的序列到序列生成過程,借助第一句的文字信息,逐字生成第二句話;之后利用第一句和第二句的信息,進行序列到序列的生成,得到詩歌的第三句話;最后根據前三句話,進行序列到序列的生成,生成出第四句話,這樣就得到了一首完整的古詩。
圖4 詩句生成關系
上面介紹了詩歌和對聯生成的基礎技術,但是想要獲得質量較好的結果還遠遠不夠,還需要針對詩歌的文學特性進行優化。以詩歌舉例,句間主題的一致性是影響一首詩的主要因素,光生成辭藻華麗的詩歌是不夠的,如果詩句之間描述著不相關的內容,會讓讀者產生不知所云的感覺,因此也有一些針對詩歌內容的一致性和連貫性的解決方法[2,3]。此外詩歌也是一種具有高度多樣性的文學形式,比如同樣是對梅的描寫,有的詩人就能寫出豪放贊美之情,有的詩人就會借此抒發自己遭遇不順后的悲慘心情,因此也有許多向模型中添加風格化因素以使得模型可以生成更具多樣性的詩歌的工作[4,5]。除了內容方面的考慮外,模型生成的詩歌也需要滿足詩歌文學獨特具有的格律,詩歌中格律的存在共同構成詩歌整體的節奏美、和諧美,同時也加強了詩歌的感染力和表達效果,也有許多針對詩歌的格律問題的解決工作[6,7],更加具體的做法可以參考相關論文。
1.小牛對聯:
小牛對聯是由小牛翻譯推出的對聯生成平臺,填寫一個四字橫批即可自動生成一副內容相關的對聯,本平臺還為生成的對聯搭配了畫面優美的背景圖片,方便用戶保存和分享。
2.小牛寫詩:
小牛寫詩是由小牛翻譯推出的自動寫詩平臺,該平臺側重于藏頭詩的生成,用戶可根據需要選擇五言與七言的體裁,輸入藏頭關鍵詞即可生成一首藏頭詩,搭配了優美的圖片,方便用戶進行分享與保存。
3.詩三百平臺:
該系統由個人完成開發,實現了生成古詩、對聯,還有藏頭詩的功能,詩的體裁包括五言絕句、五言律詩、七言絕句、七言律詩。對聯中用戶的輸入表示上聯,由系統給出下聯。
4.九歌系統[8]:
九歌是由清華大學自然語言處理與社會人文計算實驗室團隊研發的中文詩歌自動生成系統,該系統實現了生成詩、詞,還有藏頭詩和集句詩的功能,詩的體裁包括五言絕句、五言律詩、七言絕句、七言律詩。
5.小冰系統[9]:
小冰是由微軟(亞洲)的小冰團隊開發,實現了現代詩生成,要求用戶提供圖片,然后該系統從圖片中提取出意境,同時用戶可以輸入描述文字作為補充,從而創作出相關的現代詩,且可根據需要生成不同長度的現代詩。
6.王斌對聯系統:
該系統由個人完成開發,實現了對對聯功能,用戶給定上聯,系統可生成下聯。
7.樂府小程序[10]:微信小程序搜索“EI體驗空間”
樂府是由華為諾亞方舟實驗室開發的古詩對聯生成系統,支持的體裁包括五言絕句、五言律詩、七言絕句、七言律詩,其中用戶的輸入表示詩的主旨,該寫詩系統支持藏頭詩、看圖寫詩功能。樂府對聯的輸入是用戶給定的對聯主旨,由系統生成上聯與下聯。
8.AINLP公眾號·自動作詩機&藏頭詩生成器
該系統由個人開發,通過對訓練數據進行定制來使得單個模型可以同時支持絕句、律詩、藏頭詩和對聯生成,比較方便。
9. AI智能對聯系統:
該系統由個人開發,實現了自動對對聯功能,用戶輸入上聯,由系統給出下聯
10.智能創作平臺:
該平臺由百度自然語言處理團隊開發,提供自動創作和輔助創作的能力,自動創作中包括智能春聯、智能寫詩等功能,通過API調用的方式進行使用。
參考文獻
[1]Sutskever I, Vinyals O, Le Q V. Sequence to sequence learning with neural networks[C]//Advances in neural information processing systems. 2014: 3104-3112.
[2]Wang Z , He W , Wu H , et al. Chinese Poetry Generation with Planning based Neural Network[J]. 2016.
[3]Li J , Song Y , Zhang H , et al. Generating Classical Chinese Poems via Conditional Variational Autoencoder and Adversarial Training[C]// Proceedings of the 2018 Conference on Empirical Methods in Natural Language Processing. 2018.
[4]Chen H , Yi X , Sun M , et al. Sentiment-Controllable Chinese Poetry Generation[C]// Twenty-Eighth International Joint Conference on Artificial Intelligence{IJCAI-19. 2019.
[5]Yi X , Li R , Yang C , et al. MixPoet: Diverse Poetry Generation via Learning Controllable Mixed Latent Space[J]. Proceedings of the AAAI Conference on Artificial Intelligence, 2020, 34(5):9450-9457.
[6]Li P , Zhang H , Liu X , et al. Rigid Formats Controlled Text Generation[J]. 2020.
[7]Luo Y F, Li C L, Huang C A, et al. Chinese Poetry Generation with Metrical Constraints. NLPCC (1)?2021: 377-388
[8]Guo Z , Yi X , Sun M , et al. Jiuge: A Human-Machine Collaborative Chinese Classical Poetry Generation System[C]// Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics: System Demonstrations. 2019.
[9]Cheng W F , Wu C C , Song R , et al. Image Inspired Poetry Generation in XiaoIce[J]. 2018.
[10]Liao Y , Wang Y , Liu Q , et al. GPT-based Generation for Classical Chinese Poetry[J]. 2019.