喬露
(西北大學(xué)現(xiàn)代學(xué)院,文學(xué)院, 陜西, 西安 710130)
楹聯(lián),是中華傳統(tǒng)文化的瑰寶。楹聯(lián)和楹聯(lián)文化出現(xiàn)在人們生活的方方面面。作為楹聯(lián)文化的活動形式之一,楹聯(lián)應(yīng)對是一種受到大眾喜愛的游戲。其形式為出題者給出上聯(lián),應(yīng)對者根據(jù)上聯(lián)給出適當(dāng)?shù)南侣?lián)。要求下聯(lián)與給定的上聯(lián)在文字上整齊對仗、意義上對照呼應(yīng)、音律上平仄有節(jié)奏。
楹聯(lián)應(yīng)對在文字、意義以及音律上的要求,使楹聯(lián)藝術(shù)具有形式美、意義美及聲律美的審美體驗的同時,也為楹聯(lián)藝術(shù)在年輕人中傳播以及初學(xué)者的學(xué)習(xí),帶來了一定阻礙。如果能開發(fā)一套楹聯(lián)應(yīng)對的算法系統(tǒng),輸入上聯(lián),機(jī)器自動給出符合要求的下聯(lián),則可以幫助楹聯(lián)文化的初學(xué)者、愛好者更好地學(xué)習(xí)、交流楹聯(lián)文化,從而對中國的傳統(tǒng)文化進(jìn)行有效傳承。因此,本文在已有工作的基礎(chǔ)上,對現(xiàn)有楹聯(lián)生成算法進(jìn)行了研究,并提出了基于序列到序列預(yù)訓(xùn)練神經(jīng)網(wǎng)絡(luò)語言模型的楹聯(lián)自動生成算法。
關(guān)于自動楹聯(lián)生成,研究者嘗試了多種方法來完成該任務(wù)。文獻(xiàn)[1]提出了一種統(tǒng)計與規(guī)則相結(jié)合的古文對聯(lián)應(yīng)對模型,該方法使用統(tǒng)計方法建立軟規(guī)則模型,同時在候選搜索階段通過硬規(guī)則排除不合理的解。文獻(xiàn)[2]提出了一種基于統(tǒng)計機(jī)器翻譯的對聯(lián)生成方法,這一方法為之后的研究者提供了新的思路。
近年來,隨著深度學(xué)習(xí)技術(shù)的發(fā)展,神經(jīng)網(wǎng)絡(luò)技術(shù)在自然語言處理領(lǐng)域的多種任務(wù)上都取得了成功。相關(guān)的研究者也開始嘗試將神經(jīng)網(wǎng)絡(luò)技術(shù)用于對聯(lián)生成任務(wù)。文獻(xiàn)[3-5]研究了基于循環(huán)神經(jīng)網(wǎng)絡(luò)和基于注意力機(jī)制的神經(jīng)網(wǎng)絡(luò)對聯(lián)生成系統(tǒng)。文獻(xiàn)[6]提出了一種基于多任務(wù)的古詩和對聯(lián)自動生成方法,該方法通過同時學(xué)習(xí)古詩和對聯(lián)生成任務(wù),使兩個任務(wù)的部分?jǐn)?shù)據(jù)和參數(shù)共享,從而提升最終的生成效果。
基于神經(jīng)網(wǎng)絡(luò)的對聯(lián)生成模型,相對傳統(tǒng)基于規(guī)則和統(tǒng)計的方法,效果上有了明顯提升。由于自然語言本身語法、語義上的復(fù)雜性,加上楹聯(lián)中上下聯(lián)需要滿足文字、音律以及意義上的要求,機(jī)器自動生成的楹聯(lián)效果仍難以達(dá)到高水平的楹聯(lián)愛好者的水平。尤其是當(dāng)楹聯(lián)中涉及歷史典故及世界知識時,利用少量的楹聯(lián)數(shù)據(jù)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型,通常難以生成出理想的下聯(lián)。
為了解決這一問題,本文提出了一種基于預(yù)訓(xùn)練神經(jīng)網(wǎng)絡(luò)語言模型的楹聯(lián)自動生成方法。核心思路:首先,利用預(yù)先在大規(guī)模語料上預(yù)訓(xùn)練語言模型學(xué)習(xí)到漢語言的語義、語法和世界知識;然后,通過在楹聯(lián)數(shù)據(jù)上對預(yù)訓(xùn)練的模型進(jìn)行微調(diào),讓模型在預(yù)訓(xùn)練學(xué)習(xí)到的知識基礎(chǔ)之上,進(jìn)一步學(xué)習(xí)生成符合楹聯(lián)標(biāo)準(zhǔn)的下聯(lián)。實驗分析表明,本文提出的方法在效果上優(yōu)于已有模型。
2.1.1 Transformer
Transformer 是一種完全基于自注意力機(jī)制的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),在文獻(xiàn)[7]中首次被提出,并首先在機(jī)器翻譯任務(wù)中被驗證有效。為了區(qū)分原始序列位置信息,在輸入層增加位置嵌入來建模詞在句子中的位置信息。相對于傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)存在的時序依賴問題,Transformer 能夠更好地并行計算,同時在多個任務(wù)上被證明具有更好的效果。
在自然語言中,語言模型用于建模詞序列概率分布。語言模型能夠刻畫詞語與其上下文的關(guān)系,在多種自然語言處理任務(wù),特別是將生成文本作為輸出的任務(wù)上,語言模型被廣泛應(yīng)用。例如:語音識別、光學(xué)字符識別、輸入法、信息檢索、機(jī)器翻譯等。常見的語言模型主要有基于統(tǒng)計的n元語法(n-gram)語言模型,以及基于神經(jīng)網(wǎng)絡(luò)的語言模型。
2.2.1 基于統(tǒng)計的n-gram語言模型
由于語言模型的目標(biāo)是計算詞序列出現(xiàn)的概率,在理想情況下,可以對所有出現(xiàn)過的詞序列進(jìn)行頻率統(tǒng)計,并據(jù)此估出任意詞序列出現(xiàn)的概率。但實踐上我們不可能得到所有真實出現(xiàn)過的詞序列機(jī)器頻率,大多數(shù)可能存在的詞序列都不能被觀察到。因此,這種方法實際不可行。
2.2.2 神經(jīng)網(wǎng)絡(luò)語言模型
與基于統(tǒng)計的n-gram語言模型不同,基于神經(jīng)網(wǎng)絡(luò)的語言模型使用分散式的連續(xù)詞向量來表示離散的詞匯。通過神經(jīng)網(wǎng)絡(luò)將這些詞向量進(jìn)行非線性組合來建模。由于詞向量的參數(shù)量大小與|V|呈線性關(guān)系,上層神經(jīng)網(wǎng)絡(luò)的參數(shù)量可以看做常數(shù),因此這種方法可以一定程度避免維度災(zāi)難。正是由于具有該優(yōu)勢,基于神經(jīng)網(wǎng)絡(luò)的語言模型大幅提升了傳統(tǒng)語言模型的性能,并取得了快速發(fā)展。
文獻(xiàn)[8]首次提出了一種基于前饋神經(jīng)網(wǎng)絡(luò)的語言模型。該方法利用n-gram的思想,通過神經(jīng)網(wǎng)絡(luò)來將詞語映射到低維連續(xù)向量空間中,從而提升基于統(tǒng)計的n-gram語言模型效果。此后循環(huán)神經(jīng)網(wǎng)絡(luò)語言模型、長短時記憶單元語言模型相繼被提出。
本章節(jié)介紹基于預(yù)訓(xùn)練神經(jīng)網(wǎng)絡(luò)語言模型的楹聯(lián)自動生成方法設(shè)計方案。在任務(wù)上,該方法將楹聯(lián)生成轉(zhuǎn)換成一個序列到序列的文本生成問題,輸入“上聯(lián)”自遞歸的生成出“下聯(lián)”。與已有的神經(jīng)網(wǎng)絡(luò)模型不同,本方法先在大規(guī)模無監(jiān)督中文文本上對模型進(jìn)行預(yù)訓(xùn)練,然后再在楹聯(lián)生成數(shù)據(jù)集上進(jìn)行微調(diào),并得到最終用于楹聯(lián)生成的模型結(jié)果。整體流程如圖1所示。
圖1 楹聯(lián)自動生成流程圖
我們采用序列到序列生成的模型范式,使用Transformer來作為編碼器與解碼器的基礎(chǔ)神經(jīng)網(wǎng)絡(luò)模塊,其中,編碼器和解碼器各由6層Transformer組成。整體的模型結(jié)構(gòu)如圖2所示。在編碼時通過Transformer的雙向自注意力機(jī)制對輸入序列進(jìn)行編碼,得到每個位置的向量表示:
圖2 楹聯(lián)模型結(jié)構(gòu)圖
Henc=Encoder(X)=[h1,h2,…,hn]
(1)
(2)
(3)
其中,MLP為多層感知機(jī)。訓(xùn)練階段,模型的損失函數(shù)為
(4)
文獻(xiàn)[9]提出的 ELMO將語言模型當(dāng)作預(yù)訓(xùn)練任務(wù),并證明經(jīng)過預(yù)訓(xùn)練的模型在下游任務(wù)微調(diào)后,能表現(xiàn)出更好的泛化性能。此后BERT、GPT等預(yù)訓(xùn)練模型不斷被提出。本文采用降噪序列到序列方法對楹聯(lián)模型進(jìn)行預(yù)訓(xùn)練。
在預(yù)訓(xùn)練階段,模型需要學(xué)習(xí)如何恢復(fù)被破壞的文本片段,即輸入經(jīng)過人為破壞的文本,輸入該文本破壞前的原始文本。具體的破壞方式有遮擋、刪除、填充、句子重排及文本旋轉(zhuǎn)等。在預(yù)訓(xùn)練階段,模型需要學(xué)習(xí)到一定的知識,才能使訓(xùn)練損失降低。
在大規(guī)模中文文本上預(yù)訓(xùn)練之后,模型還不具備進(jìn)行楹聯(lián)生成的能力,需要進(jìn)一步在楹聯(lián)數(shù)據(jù)集上進(jìn)行序列到序列任務(wù)微調(diào)。微調(diào)階段,模型學(xué)習(xí)的目標(biāo)只有序列到序列的生成任務(wù)目標(biāo),沒有破壞文檔重建的目標(biāo)。
具體來說,微調(diào)階段將上聯(lián)作為輸入序列X=[x1,x2,…,xn],將下聯(lián)作為Y=[y1,y2,…,ym]。由于楹聯(lián)要求上下聯(lián)字?jǐn)?shù)必須相等,實際結(jié)果中m=n。訓(xùn)練的損失函數(shù)形式為式(5):
(5)
實驗采用網(wǎng)絡(luò)公開可訪問的楹聯(lián)數(shù)據(jù)集,在此基礎(chǔ)上利用敏感詞詞庫對數(shù)據(jù)進(jìn)行了過濾,刪除了低俗或敏感的內(nèi)容。進(jìn)行實驗前,本文對該數(shù)據(jù)集的長度情況進(jìn)行了分析,主要統(tǒng)計信息如表1所示。
本文還對數(shù)據(jù)集中最常見的漢字進(jìn)行了分析,發(fā)現(xiàn)上聯(lián)與下聯(lián)的常見字頻率分布有一定差別,而訓(xùn)練集與測試集的整體分布趨勢較為一致。詳細(xì)結(jié)論如表2所示(括號內(nèi)數(shù)字為該字出現(xiàn)的次數(shù))。
表2 楹聯(lián)生成數(shù)據(jù)集常見漢字分析
① 基于BLEU值進(jìn)行量化分析。該方法優(yōu)點是能夠通過機(jī)器自動對大量模型生成的下聯(lián)與原始數(shù)據(jù)中人工撰寫的下聯(lián)進(jìn)行對比評估,缺點是不能體現(xiàn)生成結(jié)果是否合理;② 人工評估。對不同方法生成結(jié)果,尋找相關(guān)專業(yè)的志愿者進(jìn)行人工評估。其優(yōu)點是能夠?qū)ι山Y(jié)果進(jìn)行更準(zhǔn)確的評估,缺點是成本較高,難以進(jìn)行大規(guī)模的評估。本文從句法和語義兩個維度來判斷一副楹聯(lián)的好壞,每個維度打分范圍為1~5分,得分越高越好。
本文對現(xiàn)有基于長短時記憶元的自動楹聯(lián)生成方法與本文提出方法進(jìn)行了對比。從表3可以看到,在BLEU-1、BLEU-2及BLEU-3上,本文提出方法均優(yōu)于基線方法。
表3 BLEU值得分結(jié)果
另外,我們邀請了13位文學(xué)專業(yè)學(xué)者,按照句法和語義兩個維度,對基線方法和本文提出的方法生成的楹聯(lián)結(jié)果隨機(jī)抽取20對,進(jìn)行了進(jìn)一步人工評估。評估結(jié)果如表4所示。從表4可以看到,在句法和語義上,本文提出方法的效果顯著優(yōu)于基線方法。
表4 人工評估得分結(jié)果
為了進(jìn)一步研究基于預(yù)訓(xùn)練的方法是否能夠?qū)W習(xí)到一定歷史典故及相關(guān)知識,本文對測試數(shù)據(jù)中含有歷史典故的對聯(lián)進(jìn)行了分析。從表5可以看到,本文提出的方法相對已有方法,能夠更好地學(xué)習(xí)到歷史典故知識。
表5 人工評估得分結(jié)果
本文對現(xiàn)有的楹聯(lián)自動生成算法進(jìn)行了研究,提出了一種基于序列到序列預(yù)訓(xùn)練神經(jīng)網(wǎng)絡(luò)語言模型的楹聯(lián)自動生成算法。實驗結(jié)果與人工評測表明,基于預(yù)訓(xùn)練模型的楹聯(lián)生成算法在測試數(shù)據(jù)集上具有更好的效果。同時,進(jìn)一步分析發(fā)現(xiàn),該方法能夠一定程度上學(xué)習(xí)到歷史典故及世界知識,生成出更接近人類表達(dá)的楹聯(lián)下聯(lián)。
楹聯(lián)作為中國民間文學(xué)的一種重要形式,卻在當(dāng)今社會的發(fā)展中陷入了發(fā)展困境?;诖耍柚谒惴▋?yōu)勢致力于讓民間文學(xué)主體在當(dāng)下青年群體中“復(fù)活”,表現(xiàn)其國際化、本土化、審美化、現(xiàn)代化、人文化的多元化應(yīng)用形態(tài)。