胡智喻,楊婉霞,楊泰康,王巧珍,徐明杰
(甘肅農(nóng)業(yè)大學(xué)機(jī)電工程學(xué)院,甘肅蘭州 730070)
古詩(shī)詞作為滋養(yǎng)中華文脈的酣醇“養(yǎng)分”,在中華民族的“根”和“魂”中源遠(yuǎn)流長(zhǎng),其重要地位更是不言而喻。古詩(shī)詞中,詩(shī)是中國(guó)古老而又獨(dú)具文化特色的文學(xué)形式,興盛于唐代;詞是中國(guó)數(shù)千年歷史文化寶庫(kù)中重要的文學(xué)精髓,起源于隋唐時(shí)期,宋代達(dá)到鼎盛,著名的“唐詩(shī)宋詞”由此而來(lái)。與句式整齊、結(jié)構(gòu)嚴(yán)謹(jǐn)、韻律和諧的唐詩(shī)相比,宋詞行文風(fēng)格更加靈活多變,用字用韻也各不相同。
宋詞雖已有千年歷史,然其對(duì)當(dāng)今文化依然大有裨益。學(xué)習(xí)、研究、創(chuàng)作詩(shī)詞不僅能深入了解中華優(yōu)秀傳統(tǒng)文化,還能提高漢字的審美內(nèi)蘊(yùn)、提升語(yǔ)言的優(yōu)雅水平。中國(guó)是詩(shī)詞國(guó)度,無(wú)論在娛樂(lè)和教育領(lǐng)域,亦或是文化和信息方面,詩(shī)詞都能發(fā)揮其獨(dú)特作用。把古詩(shī)詞與現(xiàn)代信息技術(shù)相結(jié)合,將其融入當(dāng)下最為熱門(mén)的人工智能,既能引發(fā)國(guó)內(nèi)外研究者對(duì)中國(guó)古詩(shī)詞的討論與關(guān)注,也能讓更多的人領(lǐng)略到中華優(yōu)秀傳統(tǒng)文化的獨(dú)特魅力。本文選擇宋詞作為研究對(duì)象,不僅在于宋詞擁有巨大的開(kāi)發(fā)潛力,還在于宋詞與唐詩(shī)等生成任務(wù)相比更具挑戰(zhàn)性:①宋詞句式多樣,對(duì)其結(jié)構(gòu)、用韻、平仄要求更為復(fù)雜;②詞體更長(zhǎng),在生成時(shí)對(duì)主題、語(yǔ)義的約束更為困難;③總體數(shù)量較少,模型訓(xùn)練的語(yǔ)料不夠充分。正因如此,宋詞自動(dòng)生成領(lǐng)域的專(zhuān)業(yè)研究可謂鳳毛麟角。
隨著深度學(xué)習(xí)的迅猛發(fā)展,自動(dòng)生成領(lǐng)域獲得了長(zhǎng)足進(jìn)步,從神經(jīng)元模型[1]的首次提出,到有記憶功能的循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[2]雛形;從解決梯度消失梯度爆炸等問(wèn)題的長(zhǎng)短期記憶網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)[3]出現(xiàn),到有更長(zhǎng)記憶能力的雙向網(wǎng)絡(luò)(Bi-directional LSTM,BiLSTM)[4]應(yīng)用;從廣泛使用的序列(Sequence-to-Sequence,Seq2Seq)模型[5-6],到加入能增強(qiáng)語(yǔ)義關(guān)聯(lián)性的Attention 機(jī)制[7],都為其提供了強(qiáng)大的技術(shù)支持。以上深度學(xué)習(xí)方法的出現(xiàn),使自動(dòng)生成的宋詞在主題一致性和語(yǔ)義連貫性等方面有了一定提升。
本文在上述研究基礎(chǔ)上,創(chuàng)新地提出一種基于BERT(Bidirectional Encoder Representations from Transformers,BERT)詞嵌入結(jié)合注意力機(jī)制的編解碼(Encoder-Decod?er)模型以自動(dòng)生成宋詞,其特點(diǎn)如下:①利用主題詞索引解決僅使用首句索引生成宋詞主題偏移問(wèn)題;②應(yīng)用最新BERT 詞嵌入技術(shù)來(lái)提升語(yǔ)義表達(dá)的多樣性;③運(yùn)用BiL?STM 最大程度緩解快速遺忘問(wèn)題,讓模型學(xué)習(xí)到更長(zhǎng)的句子間語(yǔ)義信息;④通過(guò)Attention 機(jī)制為生成宋詞過(guò)程提供細(xì)粒度監(jiān)管以及句式結(jié)構(gòu)控制。實(shí)驗(yàn)結(jié)果表明:該方式生成的宋詞在句子相關(guān)性和主題一致性方面效果顯著。
文本自動(dòng)生成是自然語(yǔ)言處理的重要組成部分,而宋詞自動(dòng)生成是文本自動(dòng)生成的主要形式之一。目前對(duì)于宋詞自動(dòng)生成的研究較少,但從詩(shī)詞生成的角度則該領(lǐng)域已經(jīng)有數(shù)十年的發(fā)展歷程,相關(guān)研究可分為以下幾個(gè)階段:
(1)初代研究者主要使用基于規(guī)則和模板的方法生成詩(shī)詞,文獻(xiàn)[8]首次建立詩(shī)生成體系,但該體系只能根據(jù)語(yǔ)法規(guī)則隨機(jī)顯示單詞;通過(guò)構(gòu)建詞匯、句子、韻律等語(yǔ)料庫(kù)的方式極大豐富了此方法自動(dòng)生成詩(shī)的內(nèi)容,如文獻(xiàn)[9]建立散文到詩(shī)的半自動(dòng)生成系統(tǒng)(ASPERA),通過(guò)從大量已定義的結(jié)構(gòu)、詩(shī)集、詞表模板中預(yù)選組合生成詩(shī);文獻(xiàn)[10]建立了基于規(guī)則的日文俳句詩(shī)生成系統(tǒng)(Haiku sys?tem),即從6 種不同詞庫(kù)中隨機(jī)選取關(guān)聯(lián)詞生成詩(shī)?;谝?guī)則和模板方式生成的結(jié)果能滿(mǎn)足詩(shī)詞結(jié)構(gòu)形式要求,但生成過(guò)程需要定義大量詩(shī)體結(jié)構(gòu)、分類(lèi)詩(shī)集、標(biāo)注詞庫(kù)以實(shí)現(xiàn)約束,且生成的詩(shī)可讀性不足。
20 世紀(jì)末,統(tǒng)計(jì)機(jī)器學(xué)習(xí)的方法開(kāi)始應(yīng)用于詩(shī)詞生成。文獻(xiàn)[11]通過(guò)定義宋詞句法、語(yǔ)義、平仄的適應(yīng)度函數(shù)、選擇策略、交叉因子和變異算子來(lái)生成宋詞;使用自動(dòng)文本摘要的方式,文獻(xiàn)[12]將詩(shī)的生成轉(zhuǎn)換為從所有古詩(shī)詞語(yǔ)料庫(kù)中進(jìn)行摘要的過(guò)程。這類(lèi)方法優(yōu)化了選詞,在保證結(jié)構(gòu)形式要求的同時(shí)提高了生成詩(shī)詞的可讀性,但沒(méi)有兼顧句子之間的主題和語(yǔ)義相關(guān)性。而后,研究者探索出統(tǒng)計(jì)機(jī)器翻譯(Statistical Machine Translation,SMT)方法[13],即使用3 個(gè)不同的SMT 模型,從主題分類(lèi)詩(shī)庫(kù)中選擇詞語(yǔ)生成詩(shī)的后三句,效果良好。相比統(tǒng)計(jì)機(jī)器學(xué)習(xí)方法,此方法在語(yǔ)義相關(guān)性方面有了顯著提升,但其首句仍然需要通過(guò)模板方式生成。
隨著深度學(xué)習(xí)的再次崛起,該領(lǐng)域邁入了神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)階段。文獻(xiàn)[14-15]首次將優(yōu)化的RNN 和卷積網(wǎng)絡(luò)結(jié)合生成能滿(mǎn)足形式要求的詩(shī),但句子的主題和語(yǔ)義仍有待提升;利用Seq2Seq 模型,文獻(xiàn)[16-18]設(shè)計(jì)了主題規(guī)劃方式,通過(guò)在生成的每個(gè)句子中加入相近關(guān)鍵詞約束,巧妙解決了主題偏移問(wèn)題,但其生成的詩(shī)語(yǔ)義多樣性不足;結(jié)合At?tention 機(jī)制,有研究者利用Seq2Seq 模型生成了較好的集句詩(shī)[19-21];文獻(xiàn)[22-25]對(duì)已有詩(shī)生成模型進(jìn)行改進(jìn),提升了生成質(zhì)量,但模型針對(duì)性強(qiáng),移植能力較差;文獻(xiàn)[26]首次采用GPT 預(yù)訓(xùn)練語(yǔ)言模型,提升了詩(shī)的生成效果,驗(yàn)證了預(yù)訓(xùn)練語(yǔ)言模型應(yīng)用于自動(dòng)生成的可行性。綜上所述,基于神經(jīng)網(wǎng)絡(luò)的詩(shī)詞生成方法已成為主流,該方式在生成詩(shī)詞的形式多樣性、主題一致性和語(yǔ)義相關(guān)性方面均有明顯改善,但從實(shí)際效果來(lái)看在語(yǔ)義相關(guān)性等方面仍有待提升。
本文在前人探索的基礎(chǔ)上,采用主流且效果更好的深度學(xué)習(xí)方式,進(jìn)行了如下重要改進(jìn):①將主題索引方法運(yùn)用于宋詞生成,解決生成更長(zhǎng)句式的主題偏移問(wèn)題;②將最新的BERT 詞嵌入技術(shù)用于宋詞生成,以提升詞句的語(yǔ)義多樣性和上下句子間的相關(guān)性;③使用BiLSTM+Atten?tion 機(jī)制為生成宋詞過(guò)程提供細(xì)粒度監(jiān)管并對(duì)句式結(jié)構(gòu)進(jìn)行控制,以保證生成宋詞聲調(diào)的和諧性。
本文使用主題約束+BERT 詞嵌入+BiLSTM+Attention方法生成宋詞。首先從創(chuàng)作思想出發(fā),使用用戶(hù)喜歡的句子或詞語(yǔ)作為輸入,并根據(jù)用戶(hù)輸入的信息提取或擴(kuò)展相應(yīng)主題詞;然后通過(guò)BERT 詞嵌入,將主題詞及已有句子轉(zhuǎn)換為具有動(dòng)態(tài)語(yǔ)義的詞向量表示;最后利用主題詞約束方式生成宋詞的第一句,使用主題詞+已生成句子共同生成詞的下一句。其中句子的生成模型引入BiLSTM 和Atten?tion 機(jī)制提升宋詞的格式、韻律和語(yǔ)義效果。生成流程如圖1 所示。
Fig.1 Generating process of Song Ci圖1 詞生成過(guò)程
2.1.1 主題詞提取
古人作詞講究“意境”二字,即意象和境界,在后來(lái)的宋詞鑒賞中又被稱(chēng)之為“主題”。意象是作者將內(nèi)在思想通過(guò)外在的事物表達(dá),境界則能將詞表達(dá)的思想上升為讀者的普遍感情。近代在宋詞的鑒賞中,讀者漸漸引用“主題”一詞來(lái)概括意境。在詞的創(chuàng)作過(guò)程中,主題和意境一樣,是作詞人在記事表意、言情述志、發(fā)表主張或反應(yīng)生活現(xiàn)象時(shí),通過(guò)作品內(nèi)容所表達(dá)出來(lái)的基本觀點(diǎn)和中心思想,是詞的“靈魂”和“統(tǒng)帥”,一首詞只能有一個(gè)主題。為了將作者的創(chuàng)作意圖在宋詞中準(zhǔn)確展現(xiàn),本文從作者的輸入信息中提取最符合中心思想的一個(gè)主題詞,將其用于統(tǒng)領(lǐng)整首宋詞的生成。
主題詞提取分為以下兩個(gè)步驟:①將作者輸入的詩(shī)詞、句子、短語(yǔ)等進(jìn)行分詞處理;②對(duì)分詞后的詞語(yǔ)進(jìn)行重要性排序,以得到最符合中心思想的詞。本文分詞處理采用基于統(tǒng)計(jì)的隱馬爾可夫模型(Hidden Markov Model,HMM),其原理是:對(duì)于需分詞的句子,通過(guò)查詢(xún)?cè)~典生成所有可能的切分,并采用動(dòng)態(tài)規(guī)劃查得最大概率進(jìn)而獲得基于統(tǒng)計(jì)詞頻的切分,而后使用HMM 模型和維特比(Viter?bi)算法,對(duì)標(biāo)記詞(BEMS 狀態(tài)序列)切分。該方法相比單純基于詞典的各種分詞方法,其分詞結(jié)果更為高效精確。對(duì)于詞語(yǔ)重要性排序(即主題詞的查找),本文采用基于無(wú)監(jiān)督的TextRank 算法篩選出候選詞,主要思想是構(gòu)建詞圖和詞間的共現(xiàn)信息(Co-occurrence),根據(jù)詞間的共現(xiàn)信息設(shè)置權(quán)重,并使用公式(1)迭代各節(jié)點(diǎn)的權(quán)重直至收斂,最后對(duì)節(jié)點(diǎn)權(quán)重進(jìn)行排序,從而得到主題詞。
其中,WS(Vi)表示句子i的權(quán)重,求和表示每個(gè)相鄰句子的貢獻(xiàn)程度,Wji表示兩個(gè)句子的相似度,Wjk表示上次迭代句子j的權(quán)重,d是阻尼系數(shù)。該公式中增加了權(quán)重項(xiàng)Wji用來(lái)獲取兩詞間的重要程度。相比基于有監(jiān)督的方法,它不需要大量的標(biāo)注詞庫(kù),使用效果更準(zhǔn)確、快速。
2.1.2 主題詞拓展
由于深度學(xué)習(xí)方法自動(dòng)生成宋詞采用以字符為單位的預(yù)測(cè)方式,加之宋詞屬于長(zhǎng)句式(一般為八句及以上),僅由單個(gè)主題控制生成后續(xù)所有詞句的方法會(huì)使遠(yuǎn)離主題的句子更偏離主題,加劇生成詞的主題發(fā)散問(wèn)題。為了使生成宋詞的每一句遵循相同主題,本文引入主題詞約束方法,以上一步提取的主題詞為基準(zhǔn),拓展與之相似的主題詞,用于控制后續(xù)每個(gè)句子的生成。
主題詞拓展思路為:首先訓(xùn)練一個(gè)全宋詞語(yǔ)料向量表征模型,用以準(zhǔn)確計(jì)算詞之間的相似度關(guān)系,然后依據(jù)詞的相似度,拓展與中心思想相近的主題詞。訓(xùn)練向量表征模型原理是:利用給定詞,預(yù)測(cè)其前后出現(xiàn)的N 個(gè)詞,訓(xùn)練并建立向量表征模型,代價(jià)函數(shù)如下:
其中,J(θ) 為最小化的代價(jià)函數(shù),Wt表示t時(shí)刻主題,θ是待優(yōu)化變量。
使用余弦相似度(Cosine)公式(3)計(jì)算兩個(gè)詞向量間夾角的余弦值衡量其相似性,最后得到需要拓展的N 個(gè)主題詞,為后續(xù)生成句子打下基礎(chǔ)。
在自然語(yǔ)言處理(NLP)相關(guān)任務(wù)中,原始語(yǔ)料是一系列符號(hào)的集合,無(wú)法使用計(jì)算機(jī)處理,因此需要將集合的粗粒度符號(hào)映射到新的多維空間,并用向量形式表征其中的字或詞,即詞嵌入(Word Embedding)。詞嵌入方法包括人工神經(jīng)網(wǎng)絡(luò)、矩陣降維、概率模型以及上下文的顯式表示等,他們遵從一個(gè)基本原理,都是將相似的詞表征為相似的向量形式。這些傳統(tǒng)的向量表征方式雖然簡(jiǎn)單高效,但表達(dá)單一固定,對(duì)于同字不同意的詞不能完全區(qū)分,即存在無(wú)法表征字或詞的多義性。最新的BERT 詞嵌入預(yù)訓(xùn)練語(yǔ)言模型通過(guò)添加字的上下文位置信息,很好解決了難以表達(dá)一詞多義的語(yǔ)義關(guān)系問(wèn)題。因此,本文采用BERT預(yù)訓(xùn)練作為生成詞模型的語(yǔ)義向量轉(zhuǎn)換輸入部分,其結(jié)構(gòu)由輸入、編碼、輸出3 個(gè)部分組成。
(1)輸入部分。結(jié)構(gòu)如圖2 所示。通過(guò)使用分詞器(Tokenizer)與宋詞詞表(Vocabulary)查詢(xún),得到對(duì)應(yīng)輸入序列(Input ids)的一維字嵌入(Token Embeddings),并根據(jù)每個(gè)id 在句子中的不同位置對(duì)應(yīng)加入一維的段嵌入(Seg?ment Embeddings)和位置嵌入(Position Embeddings)。
BERT 輸入部分生成過(guò)程如下:
Fig.2 BERT input part圖2 BERT 輸入部分
(2)編碼部分。使用深度雙向Transformer 對(duì)宋詞進(jìn)行特征抽取,如圖3 所示,其原理是由h 個(gè)自注意力機(jī)制(Self-Attention)堆疊的多頭注意力機(jī)制(Multi-Head Atten?tion),將輸入的上下文信息轉(zhuǎn)化為相應(yīng)的向量表示,然后整合成為前饋神經(jīng)網(wǎng)絡(luò)(Feed Forward)輸入。
Fig.3 BERT encoder part圖3 BERT 編碼部分
結(jié)合縮放點(diǎn)積(Scaled Dot-Product)算法進(jìn)行多維深層特征抽取,原理是:將轉(zhuǎn)換后的空間向量Q 和K 相乘,得到輸入的相似度信息,利用縮放因子dk將其控制在合理范圍內(nèi),最后經(jīng)過(guò)softmax() 函數(shù)歸一化,得到概率分布,從而獲取嵌入信息的全部權(quán)重矩陣表示,其計(jì)算公式如下:
(3)輸出部分。結(jié)合整個(gè)Multi-Head Attention 的每個(gè)Attention 權(quán)重信息,使最終輸出的Word Embedding 融入全文語(yǔ)義信息。該方式不僅使生成的詞嵌入獲取更多的上下文語(yǔ)義信息,還能極大程度地增強(qiáng)語(yǔ)言模型的特征抽取能力,使之盡可能準(zhǔn)確地表示出詞的原義,以用于后續(xù)的宋詞生成階段。
根據(jù)宋詞的結(jié)構(gòu)靈活性、詞義多樣性等特點(diǎn),本文構(gòu)建了基于Attention 機(jī)制的Seq2Seq 模型用于宋詞生成。該模型生成的文本在語(yǔ)義性、連貫性、可讀性等方面普遍優(yōu)于其它模型。因此,將Seq2Seq 模型應(yīng)用于生成詞以得到更好的效果。
2.3.1 ncoder-Decoder
Seq2Seq 模型主要由編碼器(Encoder)和解碼器(De?coder)兩部分組成,本文結(jié)合宋詞的結(jié)構(gòu)、語(yǔ)義和詞意等特點(diǎn),在Seq2Seq 基礎(chǔ)上融合Attention 機(jī)制構(gòu)建了宋詞生成模型,具體結(jié)構(gòu)如圖4 所示。其中,詞嵌入采用BERT 預(yù)訓(xùn)練模型,以獲得詞的動(dòng)態(tài)信息以及句子級(jí)別的語(yǔ)義信息。Encoder 部分采用BiLSTM 模型對(duì)來(lái)自BERT 詞嵌入的輸出向量進(jìn)行雙向編碼,以使模型獲取并保存更多的上下文信息。在生成目標(biāo)序列的Decoder 部分使用LSTM 網(wǎng)絡(luò)將En?coder 部分的編碼結(jié)果解碼為對(duì)應(yīng)的宋詞信息。
Fig.4 Encoder and decoder framework圖4 編碼—解碼器框架
2.3.2 Attention-based Seq2Seq Model
原始Seq2Seq 模型會(huì)將編碼的輸入序列壓縮為一個(gè)固定維度的語(yǔ)義向量C,由于C 的容量有限,很難保存全部的輸入序列信息,在用于長(zhǎng)序列時(shí)易造成上下文信息丟失。為此,本文引入Attention 機(jī)制解決這一問(wèn)題。對(duì)Encoder 每一時(shí)刻的輸入序列,通過(guò)Attention 機(jī)制從中選取與輸出更匹配的信息遞送Decoder,在保證輸入序列完整的同時(shí)獲取相關(guān)性更強(qiáng)的上下文信息。具體步驟如下:
(1)Attention 機(jī)制將解碼器隱藏層狀態(tài)(Decoder hid?den state)與編碼器隱藏層狀態(tài)(Encoder hidden state)state進(jìn)行對(duì)比,根據(jù)兩者的相關(guān)性程度計(jì)算出一個(gè)值(score),然后采用softmax() 對(duì)得出的score 進(jìn)行歸一化,獲得基于Decoder hidden state 的條件概率分布,即注意力權(quán)重(Atten?tion weights,Aw),公式如下:
建議:①外科醫(yī)生可根據(jù)術(shù)中情況選擇是否留置盆腔引流管,②可以不常規(guī)留置盆腔引流管,以利于減少疼痛及利于術(shù)后早期下床活動(dòng)。
(2)利用Aw對(duì)所有的Encoder hidden state 進(jìn)行加權(quán)求和,得到上下文信息(Context vector,Cv),輸出給Decoder 進(jìn)行解碼,公式如下:
(3)將Context vector 與Decoder hidden state 融合作為注意力信息(Attention vector,Av),輸出給Decoder 進(jìn)行解碼,公式如下:
本實(shí)驗(yàn)的訓(xùn)練和預(yù)測(cè)都是在帶有GPU 的服務(wù)器上進(jìn)行,系統(tǒng)配置為Ubuntu,程序編寫(xiě)語(yǔ)言為Python 并結(jié)合了Tensorflow 深度學(xué)習(xí)框架,具體配置如表1 所示。
Table 1 Experimental environment表1 實(shí)驗(yàn)環(huán)境
實(shí)驗(yàn)采用的數(shù)據(jù)集是從互聯(lián)網(wǎng)上收集而來(lái)的宋詞集合,共包含約兩萬(wàn)首詞作,與唐圭璋所編《全宋詞》相當(dāng),該數(shù)據(jù)集涵蓋了大部分的宋詞語(yǔ)料。以此數(shù)據(jù)集按8∶2 比例隨機(jī)抽取得到訓(xùn)練集、測(cè)試集,如表2 所示。
Table 2 Data set表2 數(shù)據(jù)集
采用困惑度(Perplexity)和交叉熵?fù)p失函數(shù)(Cross-En?tropy Loss Function)對(duì)訓(xùn)練模型進(jìn)行客觀評(píng)測(cè),前者用來(lái)衡量模型分布與樣本經(jīng)驗(yàn)分布之間的契合程度,即模型預(yù)測(cè)語(yǔ)言樣本能力,后者用來(lái)量化模型預(yù)測(cè)和真實(shí)結(jié)果之間的差異。對(duì)于使用相同語(yǔ)料訓(xùn)練的BERT 和Word2vec 詞嵌入模型,根據(jù)上述評(píng)價(jià)標(biāo)準(zhǔn)擇優(yōu)用于后續(xù)詞生成,并采用BLEU、余弦相似度和BERT-Score 對(duì)其評(píng)測(cè)。
雙語(yǔ)評(píng)估工具(Bilingual Evaluation Understudy,BLEU)是基于N-gram 重疊的評(píng)估準(zhǔn)則,以詞匯級(jí)別計(jì)算自動(dòng)生成文本和人工參考文本之間的相似度。此方法簡(jiǎn)單,計(jì)算量小,與人工對(duì)主題的測(cè)評(píng)有一定的相關(guān)度。
BERT-Score 是基于語(yǔ)言模型的評(píng)估準(zhǔn)則,與只對(duì)詞匯變化敏感的BLEU 相比,它不僅能識(shí)別句子間的語(yǔ)義變化,而且更接近人工評(píng)估,評(píng)價(jià)指標(biāo)的魯棒性也更好。具體過(guò)程為:首先對(duì)生成句和參考句分別使用BERT 提取特征;然后使用歸一化向量計(jì)算內(nèi)積,得到其相似度矩陣?;谠摼仃嚨贸? 個(gè)評(píng)測(cè)結(jié)果,分別為精確率(Precision,P)、召回率(Recall,R)以及綜合Precision 和Recall 的F1 度量(F1 measure,F(xiàn))。
本文采用預(yù)處理的宋詞語(yǔ)料對(duì)BERT 預(yù)訓(xùn)練模型進(jìn)行Fune-tuning,獲取富有宋詞結(jié)構(gòu)及語(yǔ)義的詞嵌入向量。將BERT 詞嵌入和Word2vec 詞嵌入分別用于后續(xù)宋詞生成模型,并使用生成模型在不同輸入數(shù)據(jù)類(lèi)型、超參數(shù)設(shè)置、優(yōu)化算法等方面進(jìn)行大量對(duì)比驗(yàn)證,以得到最優(yōu)的宋詞生成模型,并用BERT-Score 等不同測(cè)評(píng)方式驗(yàn)證模型生成宋詞的質(zhì)量,為后續(xù)選擇宋詞生成模型提供理論依據(jù)。
3.4.1 語(yǔ)料預(yù)處理
首先對(duì)收集的數(shù)據(jù)集進(jìn)行詞體抽取,得到只包含宋詞的詞句,對(duì)其去除停用詞并按照字頻排序,選擇前8 000 個(gè)用于生成宋詞字典;其次對(duì)語(yǔ)料庫(kù)中的宋詞按字頻、格式、結(jié)構(gòu)進(jìn)行篩選并拆分成句;最后使用主題詞提取方法選出每個(gè)句子對(duì)應(yīng)的主題詞,形成主題詞+句子的訓(xùn)練語(yǔ)料,結(jié)果如表3 所示。
Table 3 Training set data表3 訓(xùn)練集數(shù)據(jù)
3.4.2 BERT 詞嵌入訓(xùn)練
BERT 詞嵌入訓(xùn)練是利用無(wú)監(jiān)督的宋詞語(yǔ)料,利用BERT 預(yù)訓(xùn)練的掩蔽語(yǔ)言(Masked LM)和下句預(yù)測(cè)(Next Sentence Prediction)兩個(gè)任務(wù)進(jìn)行Fune-tuning,調(diào)整其參數(shù)和語(yǔ)料,使模型生成的Embedding 具有面向宋詞語(yǔ)義結(jié)構(gòu)的表示,讓生成的詞向量空間豐富多樣,以解決宋詞語(yǔ)料不夠充分的問(wèn)題,如表4 所示。
為驗(yàn)證輸入數(shù)據(jù)對(duì)模型訓(xùn)練結(jié)果的影響,本文設(shè)計(jì)兩種不同的方式處理輸入BERT 模型語(yǔ)料,分別為對(duì)齊訓(xùn)練數(shù)據(jù)(Align data)和非對(duì)齊訓(xùn)練數(shù)據(jù)(UnAlign data)。其中對(duì)齊訓(xùn)練數(shù)據(jù)是在語(yǔ)料預(yù)處理過(guò)程中引入最大句子長(zhǎng)度(Max sequence length),用于與輸入訓(xùn)練數(shù)據(jù)對(duì)比,并對(duì)其按照Max sequence length 進(jìn)行補(bǔ)齊或截取。該處理方法的目的是使模型更好地記憶和學(xué)習(xí)到宋詞的結(jié)構(gòu)特點(diǎn),而非對(duì)齊訓(xùn)練數(shù)據(jù)就沒(méi)有如此進(jìn)行處理。
Table 4 Main parameters of BERT training表4 BERT 訓(xùn)練主要參數(shù)
為了驗(yàn)證BERT 詞嵌入向量作為詞生成模型輸入層的優(yōu)越性,在語(yǔ)料相同的情況下,本文還訓(xùn)練了基于Word2vec 詞嵌入的詞生成模型用以與之對(duì)比。Word2vec詞向量是目前文本生成領(lǐng)域應(yīng)用最多的預(yù)訓(xùn)練模型,但它的單項(xiàng)學(xué)習(xí)方式和靜態(tài)的向量表達(dá)使生成的文本語(yǔ)義不夠豐富和靈活。最后通過(guò)訓(xùn)練模型的Loss 和生成詞的測(cè)評(píng)對(duì)最終的對(duì)比結(jié)果進(jìn)行展示。
3.4.3 宋詞生成模型訓(xùn)練
宋詞生成模型簡(jiǎn)單來(lái)說(shuō)就是輸入主題空間和輸出詞句空間的真實(shí)映射函數(shù),模型的訓(xùn)練就是使用語(yǔ)料的輸入空間預(yù)測(cè)輸出空間,通過(guò)學(xué)習(xí)準(zhǔn)則和優(yōu)化算法使映射函數(shù)能夠表達(dá)出最優(yōu)效果。本文使用“回顧”的方式處理訓(xùn)練模型的輸入數(shù)據(jù),使模型能夠?qū)W習(xí)和表征上下文的語(yǔ)義關(guān)系,如表5 所示。同時(shí),為了使訓(xùn)練模型的結(jié)構(gòu)經(jīng)驗(yàn)風(fēng)險(xiǎn)最小,Embedding size 等參數(shù)的合理設(shè)置非常關(guān)鍵,本實(shí)驗(yàn)?zāi)P椭匾獏?shù)設(shè)置如表6 所示。
Table 5 Training data表5 訓(xùn)練數(shù)據(jù)
Table 6 Parameter of Song Ci generation model表6 宋詞生成模型參數(shù)
為驗(yàn)證不同模型參數(shù)對(duì)實(shí)驗(yàn)結(jié)果的影響,本文首先根據(jù)經(jīng)驗(yàn)設(shè)置4 組相差較大的參數(shù)訓(xùn)練模型,分別為Model1、Model2、Model3、Model4,如表7 所示,并對(duì)模型訓(xùn)練結(jié)果進(jìn)行比較驗(yàn)證。
然后選出上述訓(xùn)練結(jié)果的最優(yōu)模型,對(duì)其中參數(shù)再進(jìn)行細(xì)化,即固定其中兩個(gè)參數(shù),只改變一個(gè),分別訓(xùn)練得到優(yōu)化結(jié)果。例如:Mn-1(n 表示上述4 組Model 中的一個(gè))的4 個(gè)模型分別使用不同的Batch size,Mn-2 分別使用不同的Learning rate,Mn-3 使用不同的Dropout rate。通過(guò)將多個(gè)不同參數(shù)下的模型訓(xùn)練結(jié)果進(jìn)行對(duì)比,可以較全面、準(zhǔn)確地得到最優(yōu)模型用于最終的宋詞生成。
Table 7 Parameters set by empirical method表7 經(jīng)驗(yàn)方法設(shè)置的參數(shù)
為了驗(yàn)證不同優(yōu)化器對(duì)實(shí)驗(yàn)結(jié)果的影響,本文還訓(xùn)練對(duì)比了多種不同優(yōu)化器,分別為自適動(dòng)量估計(jì)(Adaptive Moment Estimation,AdaM)、AdaDelta、RMSProp、梯度下降(GradientDescent)等。
3.4.4 宋詞生成模型預(yù)測(cè)
模型預(yù)測(cè)是用訓(xùn)練好的模型生成一個(gè)完整的序列樣本。宋詞生成模型預(yù)測(cè)是將測(cè)試集數(shù)據(jù)輸入訓(xùn)練好的模型,以生成完整的宋詞序列。生成模型解碼過(guò)程是從左到右的搜索(Search)過(guò)程,對(duì)于宋詞生成而言,即為每個(gè)字符的選取過(guò)程。為了驗(yàn)證搜索算法對(duì)生成宋詞質(zhì)量的影響,本文模型設(shè)計(jì)兩種不同的搜索方式,即貪婪搜索(Greedy Search,GS)和束搜索(Beam Search,BS)。GS 是在每個(gè)字符生成時(shí)選擇概率最大的作為輸出值;BS 則是一種啟發(fā)式的搜索方式,其在每一步的生成中都會(huì)選擇多個(gè)最可能的字符,依次組合為輸出序列,用于后續(xù)選擇。
3.5.1 詞嵌入模型的Loss 優(yōu)化對(duì)比
本文在詞Embedding 層訓(xùn)練中對(duì)比不同的輸入數(shù)據(jù)(Align data 和 UnAlign data)和不同模型(BERT 和Word2vec)的Loss 值隨Epoch 變化情況,如圖5 所示。實(shí)驗(yàn)結(jié)果表明:BERT 和Word2vec 模型都能在600 個(gè)Epoch 左右達(dá)到最優(yōu)。達(dá)到最優(yōu)時(shí),輸入數(shù)據(jù)為Align data 的BERT 模型Loss 值最低,其值穩(wěn)定在約0.68;其次是Align data 的Word2vec 模型,其值穩(wěn)定在約0.87;UnAlign data 的BERT模型效果不佳,其值達(dá)到3.22。
3.5.2 模型的困惑度(Perplexity)對(duì)比
在訓(xùn)練宋詞生成模型時(shí),為得到最優(yōu)模型,本文對(duì)比分析了同為BERT 作為模型輸入的16 組參數(shù)訓(xùn)練模型的Perplexity 值隨Epoch 的變化情況,結(jié)果如圖6 所示。其中圖6(a)為Model1-4 四組參數(shù)訓(xùn)練結(jié)果,圖6(b)、(c)、(d)為如表8 參數(shù)所示訓(xùn)練結(jié)果。圖6(a)顯示,Model2 經(jīng)驗(yàn)參數(shù)訓(xùn)練模型收斂最快且值最優(yōu);圖6(b)、(c)、(d)分別對(duì)比了Model2 經(jīng)驗(yàn)參數(shù)下不同Batch size、Learning rate 和Dropout rate 對(duì)模型的影響,數(shù)據(jù)顯示:Learning rate 值對(duì)模型的訓(xùn)練影響最大,Batch size 次之,但其與訓(xùn)練所需時(shí)間成反比,Dropout rate 最低。
Fig.5 Loss rate圖5 損失率
Fig.6 Training results of different parameters圖6 不同參數(shù)訓(xùn)練結(jié)果
選擇優(yōu)化器過(guò)程如下:從上一步實(shí)驗(yàn)中選取綜合最優(yōu)模型Model2,固定其中所有參數(shù),再通過(guò)AdaM、AdaDelta、RMSProp、GradientDescent(GD)四種不同優(yōu)化器分別進(jìn)行訓(xùn)練,結(jié)果如圖7 所示。
實(shí)驗(yàn)數(shù)據(jù)顯示,模型訓(xùn)練參數(shù)為Batch size=64,Drop?out rate=0.3,Learning rate=0.000 2,Max Epochs=1 000,Opti?mizer=Adam 時(shí),Perplexity 值收斂最快,且最優(yōu)時(shí)值為2.78,明顯優(yōu)于其他參數(shù)訓(xùn)練下的模型,這表明使用上述模型參數(shù)訓(xùn)練的宋詞生成模型預(yù)測(cè)語(yǔ)言的能力最強(qiáng),最適合用于后續(xù)的宋詞生成。
Table 8 Different parameter settings表8 不同參數(shù)設(shè)置
Fig.7 Different optimizer training results圖7 不同優(yōu)化器訓(xùn)練結(jié)果
3.5.3 生成宋詞測(cè)評(píng)
本文選擇3 種方法從不同側(cè)面對(duì)模型生成宋詞的質(zhì)量測(cè)評(píng)實(shí)驗(yàn)進(jìn)行評(píng)估,指標(biāo)分別為BLEU、余弦相似度(Cosine Similarity)值和BERT-Score,見(jiàn)圖8。首先選擇思鄉(xiāng)(SX)、邊塞(BX)、抒情(SQ)、敘事(XS)和山水(SS)5 類(lèi)主題生成詞,采用人工從這5 類(lèi)不同主題的宋詞中選取主題詞,獲取25 組不同的主題詞用于已訓(xùn)練好的模型輸入來(lái)生成宋詞。分別選取5 組不同主題用于模型輸入使用。然后選擇每組主題生成的10 首共計(jì)250 首宋詞用BLEU 和余弦相似度(Cosine Similarity)值對(duì)比,對(duì)比模型有:BERT 詞嵌入+Mod?el2 模型訓(xùn)練參數(shù)+貪婪搜索方式(B-M2-GS)生成宋詞模型、BERT 詞嵌入+Model2 模型訓(xùn)練參數(shù)+束搜索方式(BM2-BS)生成宋詞模型,Word2vec 詞嵌入+Model2 模型訓(xùn)練參數(shù)+貪婪搜索方式(W-M2-GS)生成宋詞模型,Word2vec詞嵌入+Model2 模型訓(xùn)練參數(shù)+束搜索方式(W-M2-BS)生成宋詞模型,測(cè)評(píng)結(jié)果如表9、表10 所示。
Fig.8 BLEU and similarity evaluation results圖8 BLEU 和相似度測(cè)評(píng)結(jié)果
Table 9 BLEU score表9 BLEU 值
Table 10 Cosine similarity score表10 余弦相似度值
另外,為了進(jìn)一步體現(xiàn)BERT 詞嵌入模型對(duì)句子級(jí)語(yǔ)義的深層表示,對(duì)上述不同模型生成的5 組不同主題宋詞分別與原詞進(jìn)行BERT-Score 測(cè)評(píng)對(duì)比,其結(jié)果如表11 所示。
Tab.11 BERT-score values of different models表11 不同模型BERT-Score 值
以上測(cè)評(píng)結(jié)果顯示,使用BERT 詞嵌入+Model2 模型訓(xùn)練參數(shù)+貪婪搜索方式(B-M2-GS)模型生成的宋詞在BLEU、Similarity、BERT-Score 測(cè)評(píng)中都優(yōu)于其他3 種模型的生成效果,其中BLEU Score 平均值為0.389,Similarity Score 平均值為0.275,BERT-Score 見(jiàn)表11。下面展示以相同主題詞,如山河、荒涼、西風(fēng)、幽怨、金戈、黃昏、秋雨,使用不同模型(B-M2-GS,W-M2-GS)生成的詞。
(1)B-M2-GS。
涼生平秋雨,山河依舊,西風(fēng)落日江城雨,黃昏院落梅花色。金井金戈,點(diǎn)指荒涼落色,幾面微風(fēng),幽怨何妨。
(2)W-M2-GS。
不知秋雨,如此山河,冷亂殘?jiān)疲豢贮S昏。耳涌金戈,不知幽怨,幾度西風(fēng),已自荒涼一度。
本文使用不同輸入數(shù)據(jù)類(lèi)型(Align data 和UnAlign da?ta),多組不同模型參數(shù)(Batch size、Learning rate 和Dropout rate)以及多種優(yōu)化器(AdaM、AdaDelta、RMSProp、Gradient?Descent)訓(xùn)練得到兩個(gè)最優(yōu)宋詞生成模型,并通過(guò)兩種不同的預(yù)測(cè)方式(Greedy Search 和Beam Search)對(duì)生成效果進(jìn)行不同角度(BLEU、Similarity、BERT-Score)評(píng)測(cè),實(shí)驗(yàn)結(jié)果表明:在生成模型都較優(yōu)的情況下,對(duì)比BLEU 和BERTScore 測(cè)評(píng)數(shù)據(jù)綜合分析可以發(fā)現(xiàn),使用BERT Attention-Seq2Seq-Greedy 模型生成的宋詞在主題一致性方面更有優(yōu)勢(shì),而Similarity 和BERT-Score 的測(cè)評(píng)數(shù)據(jù)則說(shuō)明其句子間的相關(guān)性?xún)?yōu)于Word2vec 模型。
本文以深度學(xué)習(xí)為導(dǎo)向,構(gòu)建了BERT Attention-Seq2Seq 的宋詞生成模型。
為解決自動(dòng)生成宋詞中的句子間語(yǔ)義的差異性問(wèn)題,本文引入BERT 詞嵌入的預(yù)訓(xùn)練語(yǔ)言模型,以提升詞句的語(yǔ)義多樣性和上下句子間的相關(guān)性。為解決自動(dòng)生成詞的主題偏移問(wèn)題,設(shè)計(jì)了主題詞引導(dǎo)的Attention 機(jī)制生成詞句模型。為了體現(xiàn)本文設(shè)計(jì)模型生成宋詞的優(yōu)勢(shì),設(shè)置了兩種輸入數(shù)據(jù)類(lèi)型、多組模型參數(shù)、4 個(gè)優(yōu)化器分別訓(xùn)練并得出最優(yōu)模型,并與Word2vec 詞嵌入的詞生成模型進(jìn)行對(duì)比。實(shí)驗(yàn)結(jié)果顯示:本文構(gòu)建的BERT-Attention-Seq2Seq 宋詞生成模型較Word2vec-Attention-Seq2Seq 模型,生成詞的上下句一致性和相關(guān)性都均有顯著提升。兩者生成詞的測(cè)評(píng)結(jié)果表明:前者的BLEU 較后者提高9%,BERT-Score 和余弦相關(guān)度較后者提高2%,充分說(shuō)明BERT詞嵌入預(yù)訓(xùn)練語(yǔ)言模型比Word2vec 詞嵌入更能深層次表征語(yǔ)句特征,將其運(yùn)用于宋詞生成,可以提升生成詞的主題一致性和句子間的相關(guān)性。但自動(dòng)生成宋詞仍有不足之處,如深度學(xué)習(xí)方法生成的宋詞仍存在詞意性不明確等問(wèn)題。下一步的研究方向是設(shè)計(jì)算法對(duì)宋詞生成過(guò)程加以控制,使其在不同詞牌名下都能生成具有固定格律效果、更好語(yǔ)義相關(guān)的宋詞。