高永兵,黎預(yù)璇,高軍甜,馬占飛
(1.內(nèi)蒙古科技大學(xué)信息工程學(xué)院,內(nèi)蒙古包頭 014010;2.包頭師范學(xué)院信息工程系,內(nèi)蒙古包頭 014010)
微博文本自動(dòng)生成屬于文本生成領(lǐng)域的一個(gè)研究熱點(diǎn)。文本生成是機(jī)器根據(jù)輸入信息,經(jīng)過(guò)組織規(guī)劃過(guò)程自動(dòng)生成一段高質(zhì)量的自然語(yǔ)言文本,其為自然語(yǔ)言處理研究中一項(xiàng)具有挑戰(zhàn)性的任務(wù)。文本生成可以形式化為順序決策過(guò)程,即在每個(gè)時(shí)間步t中,將先前生成的單詞序列作為當(dāng)前狀態(tài),表示為st(x1,x2,…,xi,…,xn),其中,xi為詞匯表中所給的單詞,用當(dāng)前的單詞序列狀態(tài)st預(yù)測(cè)下一時(shí)間步單詞序列的生成。
近年來(lái),文本生成技術(shù)取得了較大進(jìn)展。2014年,GOODFELLOW 等[1]針對(duì)圖像生成等任務(wù),提出生成對(duì)抗網(wǎng)絡(luò)(Generation Adversarial Networks,GAN),GAN 由生成器和鑒別器組成,生成器的作用是模擬真實(shí)數(shù)據(jù)的分布,鑒別器的作用是判斷一個(gè)樣本是真實(shí)樣本還是模型模擬生成的樣本,GAN 的目標(biāo)就是訓(xùn)練一個(gè)生成器以完美地?cái)M合真實(shí)數(shù)據(jù)分布使得判別器無(wú)法區(qū)分。自GAN 被提出以來(lái),基于GAN的文本生成引起研究人員的廣泛關(guān)注,學(xué)者們提出多種基于GAN 的文本生成方法。GOU 等[2]提 出LeakGAN,其允許鑒別器將自己的高層特征泄漏到生成器中,指導(dǎo)生成器的預(yù)測(cè)生成,從而解決長(zhǎng)文本的生成不連貫問(wèn)題。ZHU 等[3]提出Texygen,其為一種開放域文本生成的標(biāo)桿平臺(tái),囊括大多數(shù)文本生成模型,如SeqGAN[4]、MaliGAN[5]等。
除GAN 之外,Sequence2Sequence[6]技術(shù)和編解碼框架也在自然語(yǔ)言生成任務(wù)中得到廣泛應(yīng)用。編碼器將輸入的序列編碼為隱藏狀態(tài),經(jīng)過(guò)特征提取作為解碼器的輸入,解碼器預(yù)測(cè)生成與編碼器輸入相應(yīng)的自然語(yǔ)言。
基于上述方法,許多文本生成研究取得了顯著成果。LI 等[7]實(shí)現(xiàn)了基于對(duì)抗條件變分自編碼器的中文詩(shī)歌生成,其使用LSTM 訓(xùn)練的微軟小冰參加詩(shī)詞創(chuàng)作比賽,并通過(guò)了圖靈測(cè)試。YAO 等[8]根據(jù)主題、靜態(tài)和動(dòng)態(tài)情節(jié)線實(shí)現(xiàn)故事的自動(dòng)生成,生成的故事連貫、多樣且符合主題。ZENG 等[9]根據(jù)微博用戶的配置文件、個(gè)人描述、歷史微博評(píng)論,自動(dòng)生成個(gè)性化的微博評(píng)論。
文本生成技術(shù)在以上任務(wù)中取得較好效果,但是上述都是針對(duì)特定域的文本生成,在進(jìn)行其他域的文本生成時(shí)需要重新訓(xùn)練模型,相當(dāng)耗費(fèi)資源。微博文本復(fù)雜多樣,所訓(xùn)練模型的健壯性低,難以學(xué)習(xí)微博文本的語(yǔ)言風(fēng)格,但是,經(jīng)過(guò)大量規(guī)范文本訓(xùn)練的預(yù)訓(xùn)練語(yǔ)言模型能直接微調(diào)(fine-tuning)處理下游任務(wù),避免從零開始訓(xùn)練模型,從而降低了訓(xùn)練代價(jià)。因此,針對(duì)微博文本自動(dòng)生成問(wèn)題,本文采用預(yù)訓(xùn)練語(yǔ)言模型加微調(diào)的方法,在給定微博主題的條件下,將微博文本中蘊(yùn)含的用戶意圖和用戶對(duì)話功能作為其個(gè)性化特征,微調(diào)預(yù)訓(xùn)練語(yǔ)言模型生成符合用戶預(yù)期的微博文本,并整體生成“@用戶”,實(shí)現(xiàn)用戶對(duì)話交流功能。具體地,本文從語(yǔ)義和語(yǔ)言風(fēng)格2 個(gè)角度挖掘微博文本的個(gè)性化特征,提出一種基于主題和用戶意圖的微博文本控制生成技術(shù)。微調(diào)預(yù)訓(xùn)練模型GPT2-Chinese[10],實(shí)現(xiàn)聯(lián)合主題和用戶意圖的微博文本個(gè)性化生成。在此基礎(chǔ)上,對(duì)“@用戶”進(jìn)行特殊處理,自動(dòng)預(yù)測(cè)用戶交流的對(duì)象,在營(yíng)銷推薦意圖上實(shí)現(xiàn)“@用戶”的對(duì)話功能。
近年來(lái),預(yù)訓(xùn)練語(yǔ)言模型引起研究人員的廣泛關(guān)注,語(yǔ)言模型在高質(zhì)量、大規(guī)模的數(shù)據(jù)集上預(yù)先訓(xùn)練,學(xué)習(xí)理解自然語(yǔ)言的表示,研究人員可直接使用預(yù)訓(xùn)練語(yǔ)言模型微調(diào)處理下游任務(wù),省去了繁瑣的模型訓(xùn)練過(guò)程,從而促進(jìn)了各種自然語(yǔ)言處理技術(shù)的快速發(fā)展。
預(yù)訓(xùn)練語(yǔ)言模型主要學(xué)習(xí)詞的上下文表示,根據(jù)不同的序列預(yù)測(cè)方式可分為自編碼和自回歸2 種語(yǔ)言模型。谷歌提出的BERT[11]是典型的自編碼語(yǔ)言模型,其使用Transformer 抽取特征,引入MLM(Masked Language Model)和NSP(Next Sentence Prediction)預(yù)訓(xùn)練目標(biāo),能夠獲取上下文相關(guān)的雙向特征表示,從而處理句子或段落的匹配任務(wù),但是,該模型預(yù)訓(xùn)練過(guò)程和生成過(guò)程的不一致導(dǎo)致其在生成任務(wù)上效果不佳。自回歸語(yǔ)言模型的典型代表有ELMo[12]、GPT[13-15]、XLNet[16]。ELMo 是最早的預(yù)訓(xùn)練語(yǔ)言模型,其使用雙向長(zhǎng)短時(shí)記憶(BiLSTM)網(wǎng)絡(luò)串行提取特征,模型按照文本序列順序拆解的方式在從左至右和從右至左2 個(gè)方向?qū)W習(xí)詞的深度上下文表示,從而獲取上下文信息的雙向特征,但是,ELMo 本質(zhì)上是2 個(gè)單向語(yǔ)言模型的拼接,不能同時(shí)獲取上下文表示,且神經(jīng)網(wǎng)絡(luò)LSTM不能解決長(zhǎng)距離依賴問(wèn)題,特征提取能力弱。GPT 使用Transformer 進(jìn)行特征抽取,能快速捕捉更長(zhǎng)范圍的信息,目前已經(jīng)更新到第三代:GPT1 微調(diào)階段引入語(yǔ)言模型輔助目標(biāo),解決了微調(diào)過(guò)程中的災(zāi)難性遺忘問(wèn)題;GPT2 在GPT1 的基礎(chǔ)上進(jìn)行改進(jìn),使用覆蓋更廣、質(zhì)量更高的訓(xùn)練數(shù)據(jù),認(rèn)為預(yù)訓(xùn)練中已包含很多特定任務(wù)所需的信息,其沒(méi)有針對(duì)特定模型的精調(diào)流程,在生成任務(wù)上取得了很好的效果;GPT3 使用比GPT2 更多的訓(xùn)練數(shù)據(jù)和性能更高的計(jì)算資源以提高模型性能。XLNet 模型使用Transformer-XL 抽取特征,該模型針對(duì)BERT 預(yù)訓(xùn)練過(guò)程與微調(diào)不一致的缺點(diǎn),引入PLM(Permuted Language Modeling),能學(xué)到各種雙向上下文表示,分析結(jié)果表明,XLNet在20 個(gè)任務(wù)上的性能表現(xiàn)優(yōu)于BERT,且性能都有大幅提升。
綜上,雖然XLNet 語(yǔ)言模型學(xué)習(xí)上下文表示的能力強(qiáng)于其他預(yù)訓(xùn)練語(yǔ)言模型,但是單向的自回歸語(yǔ)言模型更適合生成任務(wù)。微博文本生成任務(wù)的訓(xùn)練數(shù)據(jù)是中文且在生成任務(wù)中預(yù)訓(xùn)練與微調(diào)應(yīng)具有一致性,因此,本文選擇在中文版的預(yù)訓(xùn)練模型GPT2-Chinese 下研究微博文本生成任務(wù)。雖然GPT3 已經(jīng)問(wèn)世,但是其模型要求更高的計(jì)算資源,實(shí)驗(yàn)布置難度較高,因此,本文選擇GPT2 進(jìn)行研究。
當(dāng)今社會(huì)快速發(fā)展,人們的生活節(jié)奏不斷加快,信息流動(dòng)的速度越來(lái)越快,碎片化的微博內(nèi)容比長(zhǎng)篇文章更適合閱讀。因此,自動(dòng)生成的微博文本能準(zhǔn)確表達(dá)用戶意圖至關(guān)重要。一方面,用戶意圖反映了用戶發(fā)表博文最直接的社交需求,比如,普通用戶發(fā)表心情感悟,分享日常生活,企業(yè)公司發(fā)表博文營(yíng)銷宣傳產(chǎn)品和活動(dòng),媒體工作者借助微博平臺(tái)傳播新聞事件,呼吁廣大群眾的關(guān)注,文藝工作者借助博文傳播知識(shí),實(shí)現(xiàn)與其他用戶的經(jīng)驗(yàn)共享、共同進(jìn)步;另一方面,社交意圖蘊(yùn)含于微博文本中,是更深層次的語(yǔ)義特征,能在一定程度上表現(xiàn)微博文本的個(gè)性化特征。因此,具有清晰明確的用戶意圖的微博文本能促進(jìn)用戶間信息的有效獲取和交流,幫助用戶在微博平臺(tái)上實(shí)現(xiàn)社交的目的。本文挖掘和提取微博文本中的用戶意圖類別,在給定微博主題的條件下按照用戶意圖自動(dòng)生成微博文本。
用戶意圖蘊(yùn)含于微博文本中,能從詞和句子中挖掘。華為終端官方微博用戶發(fā)的一條博文如下:
#華為Mate40#系列新品發(fā)布盛典將于10 月30 日14:30 正式開啟!鎖定@華為終端官方微博,帶你直通發(fā)布會(huì)現(xiàn)場(chǎng)。
結(jié)合“華為”“新品”“鎖定”“發(fā)布會(huì)”等詞和整個(gè)句子的語(yǔ)義,可以推斷出這是華為官博為推出“華為Mate40”發(fā)表的博文,旨在營(yíng)銷宣傳。用同樣的方法對(duì)大量的微博文本進(jìn)行統(tǒng)計(jì)分析,可將微博文本中的用戶意圖大致分為營(yíng)銷推薦、新聞評(píng)論、知識(shí)傳播、心情感悟、日常分享這5 個(gè)類別。從上述例子來(lái)看,基于用戶意圖的微博文本生成過(guò)程如表1 所示。
表1 微博文本生成過(guò)程示例Table 1 Example of the Weibo text generation process
在表1 中,給定主題“華為Mate40”和用戶意圖“營(yíng)銷推薦”,經(jīng)過(guò)訓(xùn)練的語(yǔ)言模型自動(dòng)預(yù)測(cè)與主題、用戶意圖類別相符合的詞,最終構(gòu)成一個(gè)完整的文本段落。
為了便于數(shù)據(jù)處理和輔助GPT2-Chinese 生成更加符合用戶預(yù)期意圖的微博文本,本文額外訓(xùn)練一個(gè)用戶意圖識(shí)別與分類模型。
目前,研究人員已經(jīng)在消費(fèi)意圖、查詢意圖、人機(jī)對(duì)話意圖識(shí)別中取得了較多成果,但多數(shù)是基于傳統(tǒng)機(jī)器學(xué)習(xí)的方法[17-19]。傳統(tǒng)機(jī)器學(xué)習(xí)模型在特征工程中需要人為對(duì)數(shù)據(jù)進(jìn)行提煉清洗,與深度學(xué)習(xí)模型相比有很大不足。為此,研究人員更加專注在神經(jīng)網(wǎng)絡(luò)上進(jìn)行意圖識(shí)別[20-22]并取得了較好的效果。
本文為了學(xué)習(xí)句子、段落以及關(guān)鍵詞的語(yǔ)義編碼,從而準(zhǔn)確識(shí)別微博文本中的用戶意圖,訓(xùn)練一個(gè)用戶意圖識(shí)別與分類模型,該模型采用編解碼器框架,融合BiLSTM、自注意和詞句聯(lián)合訓(xùn)練等要素進(jìn)行用戶意圖的識(shí)別與分類,模型框架[23]如圖1 所示。
圖1 用戶意圖識(shí)別與分類模型框架Fig.1 User intention recognition and classification model framework
本文方法的主要目的是使自動(dòng)生成的樣本在內(nèi)容上與微博主題保持一致且從用戶意圖的角度展示出微博文本的個(gè)性化特征。針對(duì)微博文本生成問(wèn)題,本文作出如下定義:將用戶意圖定義為特征向量Ui,微博主題定義為T,模型預(yù)測(cè)生成的微博文本定義為X,生成模型可視作條件概率模型P(X|Ui,T),最后將微博文本作為訓(xùn)練數(shù)據(jù),結(jié)合微博主題和用戶意圖微調(diào)GPT2-Chinese語(yǔ)言模型,預(yù)測(cè)生成微博文本。
由于存在多個(gè)控制文本生成的用戶意圖,統(tǒng)一訓(xùn)練可能導(dǎo)致模型學(xué)習(xí)能力降低,為此,本文使用MAO等[24]提出的兩階段微調(diào)方式:第一階段,微調(diào)預(yù)訓(xùn)練語(yǔ)言模型GPT2-Chinese 學(xué)習(xí)微博文本的語(yǔ)言風(fēng)格;第二階段聯(lián)合主題和用戶意圖進(jìn)行微調(diào),使生成的微博文本流暢且符合用戶發(fā)博的目的。圖2 所示為微博文本生成任務(wù)的GPT2 兩階段微調(diào)流程。
圖2 GPT2 兩階段微調(diào)流程Fig.2 GPT2 two-stage fine-tuning procedure
在實(shí)際應(yīng)用中,自然語(yǔ)言模型是學(xué)習(xí)序列單詞的概率分布p(x1,x2,…,xn),文本生成可以形式化為在給定單詞序列的情況下預(yù)測(cè)下一個(gè)單詞的條件概率p(xn|x1,x2,…,xn-1),其中,xi為單詞序列。自回歸語(yǔ)言模型按照序列預(yù)測(cè)的條件概率形式可進(jìn)行單向或雙向訓(xùn)練。單向語(yǔ)言模型按照前向序列預(yù)測(cè)的訓(xùn)練定義為:
預(yù)訓(xùn)練語(yǔ)言模型GPT2 采用與上述相同的訓(xùn)練方法,其過(guò)程是給定提示(Prompt)序列(x1,x2,…,xk-1)與生成文本序列(xk,xk+1,…,xn),共同構(gòu)成一段連貫的文本,具體形式如下:
本文在GPT2 下完成微調(diào)微博文本生成任務(wù),可將微博主題T作為提示條件,式(2)可更新為:
為了在生成的微博文本中表現(xiàn)用戶意圖(Ui),可將用戶意圖與GPT2 預(yù)訓(xùn)練語(yǔ)言模型進(jìn)行簡(jiǎn)單地模型融合,融合方式如下:
GPT1 使用半監(jiān)督的方式學(xué)習(xí)理解自然語(yǔ)言,利用大量的無(wú)監(jiān)督語(yǔ)料庫(kù)訓(xùn)練語(yǔ)言模型,然后模型以很小的微調(diào)遷移到眾多特定的有監(jiān)督學(xué)習(xí)任務(wù)上[13],其訓(xùn)練的最大似然目標(biāo)函數(shù)如下:
GPT1語(yǔ)言模型不采用RNN 或LSTM,而是采用深層的transformer decoder(Masked),其計(jì)算公式如下:
無(wú)監(jiān)督的語(yǔ)言模型經(jīng)過(guò)式(6)的預(yù)訓(xùn)練后,將該模型參數(shù)作為初始參數(shù)應(yīng)用到一些特定的有監(jiān)督任務(wù)上。例如,對(duì)于有標(biāo)簽的數(shù)據(jù)集C,利用網(wǎng)絡(luò)中最后一個(gè)transformer_block 的輸出進(jìn)行如下處理:
此時(shí)最大化目標(biāo)函數(shù)如下:
將語(yǔ)言建模作為微調(diào)的輔助目標(biāo),改進(jìn)監(jiān)督模型的泛化能力,加速收斂。優(yōu)化后的目標(biāo)訓(xùn)練函數(shù)如下:
GPT2 是在GPT1 基礎(chǔ)上做的改進(jìn),是完全無(wú)監(jiān)督學(xué)習(xí),其在模型結(jié)構(gòu)上移動(dòng)了Layer normalization的位置,修改了殘差層的初始化方式,增加了模型的部分參數(shù),從而提高了生成文本的質(zhì)量。
GPT2 預(yù)訓(xùn)練語(yǔ)言模型允許對(duì)下游微博生成任務(wù)采取微調(diào)的方法,即不需要從零開始訓(xùn)練模型,只需針對(duì)特定的任務(wù)調(diào)整訓(xùn)練參數(shù)。目前已開源了許多版本的GPT2 模型,本文選擇中文的GPT2-Chinese 作為預(yù)訓(xùn)練語(yǔ)言模型。GPT2-Chinese 采用的訓(xùn)練集是15 GB的Large Scale Chinese Corpus for NLP 和THUCNews,能夠自動(dòng)生成詩(shī)歌、小說(shuō)、新聞等內(nèi)容,且生成的內(nèi)容連貫。因此,在微博文本生成任務(wù)中,本文選擇用GPT2-Chinese 模型來(lái)實(shí)現(xiàn)兩階段微調(diào)任務(wù):第一階段,用一個(gè)高質(zhì)量微博訓(xùn)練集進(jìn)行域適應(yīng)訓(xùn)練,即微調(diào)GPT2-Chinese 讓模型學(xué)會(huì)從通用自然語(yǔ)言預(yù)測(cè)轉(zhuǎn)向符合微博文本語(yǔ)言風(fēng)格的預(yù)測(cè)生成,得到中間微調(diào)的模型;第二階段,用微調(diào)好的GPT2-Chinese 模型在帶有主題標(biāo)簽和用戶意圖標(biāo)簽的微博數(shù)據(jù)集上進(jìn)行二次微調(diào),最終實(shí)現(xiàn)微博文本的個(gè)性化生成。
自動(dòng)生成微博比自動(dòng)生成詩(shī)歌、自動(dòng)講故事等生成任務(wù)更具挑戰(zhàn)性。詩(shī)歌有具體形式,且每種形式都有各自的規(guī)律,故事有明確的主題和便于規(guī)劃的故事線,機(jī)器更容易學(xué)習(xí)這種有明確特征的文本。然而微博文本長(zhǎng)短不一、書寫風(fēng)格參差不齊,既不似詩(shī)歌字?jǐn)?shù)工整、體裁清晰,也不似故事主題明確、上下文連貫。官方公布的GPT2 模型更適用于連續(xù)的長(zhǎng)文本訓(xùn)練,而GPT2-Chinese 在訓(xùn)練時(shí)設(shè)置文本最低長(zhǎng)度為128,模型在自動(dòng)預(yù)測(cè)微博文本時(shí)表現(xiàn)不佳,上下文的相關(guān)性低,無(wú)法降低訓(xùn)練的損失率,簡(jiǎn)單地修改訓(xùn)練文本長(zhǎng)度也無(wú)法提高生成效果。因此,在訓(xùn)練時(shí)本文用微博鏈接來(lái)增加文本長(zhǎng)度從而降低損失,生成結(jié)果表明,該方法能夠提高模型的文本生成性能。
微調(diào)GPT2-Chinese 語(yǔ)言模型能生成與所給主題相符的樣本,且隨著實(shí)驗(yàn)數(shù)據(jù)的增多,語(yǔ)言模型學(xué)習(xí)微博文本特征的能力增強(qiáng),但是沒(méi)有明確的控制條件,生成的博文個(gè)性化特征不明確。因此,本文從語(yǔ)義特征和語(yǔ)言風(fēng)格2 個(gè)角度提取微博文本的個(gè)性化特征,用其指導(dǎo)博文的預(yù)測(cè)生成。
通過(guò)對(duì)微博文本深層次的語(yǔ)義特征進(jìn)行分析,發(fā)現(xiàn)博文中蘊(yùn)含了微博用戶的各種社交意圖,且社交意圖大致分為新聞評(píng)論、營(yíng)銷推薦、知識(shí)傳播、心情感悟、日常分享這5 個(gè)類別,本文將其作為微博文本語(yǔ)義層次上的個(gè)性化特征,指導(dǎo)博文生成,且在該過(guò)程中采用2 個(gè)方案進(jìn)行微調(diào):
1)在第二階段微調(diào)時(shí),用GPT2-Chinese 聯(lián)合主題和用戶意圖進(jìn)行多任務(wù)微調(diào),實(shí)驗(yàn)中發(fā)現(xiàn)預(yù)先訓(xùn)練的GPT2-Chinese 有很強(qiáng)的基礎(chǔ)性知識(shí),再次按照用戶意圖訓(xùn)練能夠產(chǎn)生高質(zhì)量的個(gè)性化微博文本,且多個(gè)用戶意圖微調(diào)能幫助實(shí)現(xiàn)微博文本的個(gè)性化預(yù)測(cè)生成。
2)將本文提出的用戶意圖識(shí)別與分類模型和GPT2 相結(jié)合,輔助GPT2 生成博文。該方法能提高預(yù)測(cè)文本中預(yù)期的用戶意圖的準(zhǔn)確度。
從語(yǔ)言風(fēng)格角度可以發(fā)現(xiàn)微博文本中會(huì)出現(xiàn)大量用戶對(duì)話的情況,即用戶在發(fā)表博文時(shí)會(huì)@另一個(gè)用戶,從而實(shí)現(xiàn)用戶之間的交流。本文將用戶對(duì)話功能看作微博文本的另一個(gè)個(gè)性化特征,在微調(diào)時(shí)自動(dòng)預(yù)測(cè)用戶對(duì)話的對(duì)象,從而幫助用戶實(shí)現(xiàn)自動(dòng)信息交流的目的。
3.4.1 多意圖控制生成
為實(shí)現(xiàn)個(gè)性化微博生成,本文實(shí)驗(yàn)中引入5 個(gè)類別的用戶意圖以控制微博文本的生成。雖然大型預(yù)訓(xùn)練語(yǔ)言模型的誕生提高了處理自然語(yǔ)言任務(wù)的能力,但直接在特定條件的數(shù)據(jù)上微調(diào)往往很困難。在CRTL[25]模型中,將控制條件作為標(biāo)簽加在文本前面,這樣在模型訓(xùn)練過(guò)程中attention[26]會(huì)計(jì)算控制條件與序列之間的聯(lián)系,從而實(shí)現(xiàn)控制生成。ZACHARY 等[27]觀察到預(yù)先訓(xùn)練的transformer 模型在微調(diào)過(guò)程中對(duì)模型參數(shù)的變化很敏感,因此,提出一種直接向selfattention注入任意條件的適應(yīng)方法pseudo self attention,使用該方法的預(yù)訓(xùn)練語(yǔ)言模型適應(yīng)于任意條件的輸入。為了不改變預(yù)訓(xùn)練語(yǔ)言模型的結(jié)構(gòu),DATHATHRI等[28]提出用于可控語(yǔ)言生成的即插即用語(yǔ)言模型(PPLM),其將預(yù)先訓(xùn)練的LM 與一個(gè)或多個(gè)簡(jiǎn)單的屬性分類器相結(jié)合以指導(dǎo)文本生成,而不需要對(duì)LM 進(jìn)行額外的訓(xùn)練。本文在意圖控制生成時(shí)學(xué)習(xí)PPLM 的思想,將用戶意圖識(shí)別與分類模型作為意圖分類器,意圖分類器判別生成的文本類別并用梯度回傳的方式傳遞給語(yǔ)言模型,預(yù)訓(xùn)練語(yǔ)言模型根據(jù)意圖判別回傳的梯度更新模型的內(nèi)部參數(shù),重新采樣生成下一個(gè)token,使生成的樣本接近用戶輸入的意圖。上述過(guò)程可以形式化表示為:
此時(shí)用戶意圖分類模型可看作P(Ui|X),語(yǔ)言模型GPT2 中具有歷史信息的矩陣Ht,再給定xt,GPT2利用Ht預(yù)測(cè)xt+1和更新Ht:
其中:xt+1是經(jīng)過(guò)softmax 在詞匯表中采樣生成的文本。PPLM 的思想是從2 個(gè)方向計(jì)算分類模型和語(yǔ)言模型的梯度之和,然后通過(guò)ΔHt更新歷史矩陣Ht,實(shí)現(xiàn)xt+1的重新預(yù)測(cè)。在用戶意圖的控制上,本文將意圖分類模型P(Ui|X)改寫為P(Ui|Ht+ΔHt),ΔHt的更新方式如下:
其中:α 是步長(zhǎng);γ為歸一化縮放系數(shù)。式(11)就可以更新為:
3.4.2 “@用戶”的對(duì)話實(shí)現(xiàn)
通過(guò)對(duì)微博文本進(jìn)行分析可知,“@用戶”的功能也是微博文本的特征,因此,本文還研究自動(dòng)@正確用戶名的方法。在生成過(guò)程中,本文發(fā)現(xiàn)模型能自動(dòng)生成“@用戶名”,但在訓(xùn)練時(shí)用戶名被當(dāng)作文本進(jìn)行了分詞處理,因此,模型生成的用戶名往往不存在,且由于用戶名是一個(gè)實(shí)體,經(jīng)過(guò)分詞后影響了文本的上下文相關(guān)性,降低了生成文本的質(zhì)量。為此,本文將“@用戶名”作為一個(gè)詞并用UNi替換,然后為其建立詞表,當(dāng)生成時(shí)出現(xiàn)UNi模型會(huì)自動(dòng)將其轉(zhuǎn)換為“@用戶”,其中,i表示詞表中的第i個(gè)詞。最后,本文在數(shù)據(jù)中發(fā)現(xiàn),在營(yíng)銷推薦意圖上使用“@用戶”的對(duì)話概率更大,因此,將營(yíng)銷推薦數(shù)據(jù)中的“@用戶”經(jīng)過(guò)特殊處理,從而實(shí)現(xiàn)能準(zhǔn)確“@用戶”的對(duì)話功能。
本次實(shí)驗(yàn)數(shù)據(jù)集是通過(guò)新浪微博接口獲取的27 萬(wàn)條微博文本,本文將數(shù)據(jù)集根據(jù)用戶意圖和微博主題預(yù)處理為適合微調(diào)的格式。首先標(biāo)注7 000 條用戶意圖數(shù)據(jù),進(jìn)行用戶意圖識(shí)別與分類模型訓(xùn)練;然后使該語(yǔ)言模型自動(dòng)進(jìn)行用戶意圖標(biāo)注,人工標(biāo)注和自動(dòng)標(biāo)注的標(biāo)簽數(shù)據(jù)集如表2 所示;最后在數(shù)據(jù)集上批量進(jìn)行微調(diào)微博生成實(shí)驗(yàn),觀察不同訓(xùn)練樣本數(shù)量時(shí)的微博文本生成效果。
表2 標(biāo)簽數(shù)據(jù)集信息Table 2 Label datasets information
實(shí)驗(yàn)環(huán)境是使用谷歌Colab 免費(fèi)的GPU,雖然谷歌能提供免費(fèi)的計(jì)算環(huán)境,但是一天掛載時(shí)間只有12 h,因此,在模型訓(xùn)練過(guò)程中本文加入checkpoint,如果訓(xùn)練中斷,還可以接著上次中斷位置繼續(xù)訓(xùn)練。
用戶意圖識(shí)別與分類實(shí)驗(yàn)使用表2 中的人工標(biāo)注數(shù)據(jù)集,用詞和句子的意圖對(duì)文本意圖進(jìn)行打分訓(xùn)練,實(shí)驗(yàn)過(guò)程中分別用準(zhǔn)確率和F1 值進(jìn)行評(píng)價(jià),實(shí)驗(yàn)結(jié)果如表3 所示。其中,詞句+BiLSTM 是本文提出的用戶意圖識(shí)別與分類模型,即從詞、句2 個(gè)方面關(guān)注用戶意圖,并將BiLSTM 融入編解碼框架中訓(xùn)練用戶意圖識(shí)別與分類模型。從表3 可以看出,本文模型能獲得93.109%的F1 值,優(yōu)于BERT 模型。
表3 用戶意圖識(shí)別與分類實(shí)驗(yàn)結(jié)果Table 3 Experimental results of user intention recognition and classification %
在模型訓(xùn)練開始前,本文從GitHub 上下載了中文的GPT2 訓(xùn)練模型GPT2-Chinese,用于微博文本生成任務(wù)。首先用無(wú)標(biāo)簽的數(shù)據(jù)訓(xùn)練模型將其轉(zhuǎn)換為微博文本語(yǔ)言的預(yù)測(cè)生成,得到中間微調(diào)的語(yǔ)言模型;然后用表2 中的自動(dòng)標(biāo)簽數(shù)據(jù)微調(diào)生成符合微博主題和用戶意圖的博文,在訓(xùn)練時(shí),GPT2-Chinese模型參數(shù)量為81 894 144,為提高GPU 的利用率,設(shè)置batchsize 為4,epoch 為5,每個(gè)epoch 有10 212 步,設(shè)置微博文本的生成溫度為0.8,對(duì)下一個(gè)單詞的預(yù)測(cè)采用ANGELA 等[29]提出的Top-k隨機(jī)抽樣方法,其中,下一個(gè)單詞從k個(gè)候選詞中抽取,設(shè)定k=10;接著聯(lián)合主題標(biāo)簽和用戶意圖標(biāo)簽,利用中間微調(diào)的模型進(jìn)行二階段微調(diào)學(xué)習(xí),從用戶意圖角度控制微博文本的個(gè)性化特征,且在該過(guò)程中加入用戶意圖分類模型,以提高生成樣本中指定用戶意圖的準(zhǔn)確性。在此基礎(chǔ)上,將“@用戶名”進(jìn)行整體替換,實(shí)現(xiàn)用戶對(duì)話的生成預(yù)測(cè)。實(shí)驗(yàn)結(jié)果表明,本文方法生成的微博文本可讀性高,且能從用戶意圖的角度表現(xiàn)微博文本的個(gè)性化特征。
本文列出基于主題、基于主題和用戶意圖2 種方式預(yù)測(cè)生成的微博文本樣例,分別如圖3、圖4 所示,在此僅展示營(yíng)銷推薦和新聞評(píng)論2 個(gè)用戶意圖生成樣例。在營(yíng)銷推薦意圖上實(shí)現(xiàn)“@用戶”的對(duì)話功能,生成樣例如圖5 所示。
圖3 基于主題的生成樣例Fig.3 Generation sample based on topic
與傳統(tǒng)文本不同,微博文本生成屬于特型文本生成任務(wù),傳統(tǒng)的文本評(píng)價(jià)指標(biāo)BLEU 和ROUGE 不適用于對(duì)微博文本生成進(jìn)行評(píng)價(jià)。本文通過(guò)人工方式評(píng)價(jià)生成樣本的質(zhì)量。人類評(píng)審者需要考慮樣本與微博主題、用戶意圖的匹配度,然后對(duì)需要評(píng)價(jià)的樣本進(jìn)行打分,實(shí)驗(yàn)過(guò)程中共有5 位評(píng)審,隨機(jī)采樣600 條生成樣本,其中,100 條是只根據(jù)主題生成的,500 條是根據(jù)主題和用戶意圖生成的,每類用戶意圖各100 條。將每種類型的樣本平均分配給5 個(gè)評(píng)審,讓其對(duì)生成的樣本進(jìn)行打分,分?jǐn)?shù)為0~10 分,最后計(jì)算每類樣本得分的平均值,結(jié)果如表4 所示,可以看出,基于主題與用戶意圖生成的微博文本更符合人類預(yù)期。
表4 人工評(píng)價(jià)得分對(duì)比Table 4 Manual evaluation scores comparison
本文提出一種基于用戶意圖的微博文本生成技術(shù),采用預(yù)訓(xùn)練語(yǔ)言模型與微調(diào)相結(jié)合的方法,在給定微博主題的條件下,將微博文本中蘊(yùn)含的用戶意圖和用戶對(duì)話功能作為其個(gè)性化特征,微調(diào)預(yù)訓(xùn)練語(yǔ)言模型生成符合用戶預(yù)期的微博文本。實(shí)驗(yàn)結(jié)果驗(yàn)證了該技術(shù)的有效性。微博文本生成技術(shù)能夠?yàn)椴┪木帉懻咛峁﹨⒖迹部梢詾楹罄m(xù)的文本生成研究提供思路,但是,本文模型僅從統(tǒng)計(jì)的角度并利用靜態(tài)的方式挖掘微博文本的個(gè)性化特證,下一步將挖掘興趣品味、行文風(fēng)格等更多的用戶個(gè)性化特征,此外,探索一種性能更好、聯(lián)合多個(gè)控制條件微調(diào)預(yù)訓(xùn)練語(yǔ)言模型的方法,以提高訓(xùn)練技術(shù)同時(shí)節(jié)省時(shí)間和資源成本,也是今后的研究方向。