蔡國(guó)永,李安慶
1.桂林電子科技大學(xué)計(jì)算機(jī)與信息安全學(xué)院,廣西 桂林 541004
2.廣西可信軟件重點(diǎn)實(shí)驗(yàn)室,廣西 桂林 541004
文本樣式遷移(text style transfer,TST)[1]旨在將原始句子改寫為新的樣式,同時(shí)保留其語(yǔ)義內(nèi)容和流暢性。文本樣式遷移應(yīng)用廣泛,如不同人物的對(duì)話風(fēng)格與類屬特性[2-3]、文本的書面語(yǔ)體與詩(shī)歌體式[4-5]、文本情感極性與友善性[6]等。早期的TST工作主要依賴平行語(yǔ)料庫(kù)來(lái)監(jiān)督訓(xùn)練序列到序列模型,然而許多現(xiàn)實(shí)領(lǐng)域TST缺乏監(jiān)督訓(xùn)練所需的平行數(shù)據(jù)。因此無(wú)監(jiān)督式的TST方法得到重視,其框架主要有兩類:(1)生成類框架方法,即通過(guò)訓(xùn)練基于編碼器-解碼器的生成模型,直接生成新樣式句子[7-14];(2)編輯類框架方法,即將樣式理解為句子中特定詞語(yǔ),通過(guò)檢測(cè)、刪除、插入、替換等操作來(lái)修改源句子以實(shí)現(xiàn)句子樣式變化[6,15-18]。
生成類框架方法的一種主要做法是將隱藏空間中的內(nèi)容與樣式的潛在表示分離,利用分離后的潛在表示來(lái)實(shí)現(xiàn)樣式遷移[8,10],該類框架方法遷移的準(zhǔn)確率較高,但Rao等人[4]的研究表明該類方法在非風(fēng)格的語(yǔ)義內(nèi)容保留方面效果通常不好。此外,該類方法還有其他短板,如由于內(nèi)容和樣式的潛在解糾纏表示具有稀疏性,容易生成人類難以理解的句子、無(wú)法實(shí)現(xiàn)細(xì)粒度的控制等。
對(duì)比生成類方法,編輯類方法無(wú)需從頭訓(xùn)練,且支持詞級(jí)別的細(xì)粒度控制。Li 等人[15]提出了“刪除-檢索-生成”框架,但仍存在三個(gè)問題:(1)刪除錯(cuò)誤;(2)生成錯(cuò)誤;(3)流暢度低。隨后,Sudhakar等人[18]繼續(xù)改進(jìn)該工作,使用注意力權(quán)重來(lái)識(shí)別樣式詞,通過(guò)TF-ⅠDF加權(quán)詞重疊來(lái)完成目標(biāo)詞的檢索,最后將樣式無(wú)關(guān)的內(nèi)容部分和目標(biāo)詞交由解碼器來(lái)生成新句子,減少了刪除錯(cuò)誤。
受Sudhakar 等人[19]工作和近來(lái)被高度關(guān)注的提示學(xué)習(xí)的啟發(fā),在文本的情感遷移任務(wù)上,本文針對(duì)刪除錯(cuò)誤和流暢度低等問題做了進(jìn)一步的研究,并提出了兩種新的算法來(lái)改進(jìn)情感樣式遷移:(1)提出新的過(guò)濾策略改進(jìn)基于Transformer識(shí)別樣式詞的方法以減少刪除錯(cuò)誤;(2)借助在無(wú)標(biāo)注語(yǔ)料庫(kù)上訓(xùn)練的掩碼語(yǔ)言模型進(jìn)行提示學(xué)習(xí),利用預(yù)訓(xùn)練語(yǔ)言模型自身豐富的知識(shí)進(jìn)行目標(biāo)樣式詞推薦以提升流暢度。
下面主要針對(duì)非平行語(yǔ)料情況,文本樣式遷移研究的生成類和編輯類方法工作進(jìn)行介紹。
在該類方法中,一部分工作主張?jiān)陔[藏空間對(duì)內(nèi)容和樣式進(jìn)行解糾纏,獲得內(nèi)容和樣式各自的潛在表示,然后基于內(nèi)容的潛在表示配合目標(biāo)樣式的表示來(lái)完成樣式遷移。如文獻(xiàn)[7]提出多解碼器和樣式嵌入兩種模型。前者利用編碼器和樣式分類器來(lái)計(jì)算內(nèi)容的潛在表示,然后由指定樣式的解碼器以實(shí)現(xiàn)樣式遷移。樣式嵌入是將內(nèi)容表示與目標(biāo)樣式的潛在表示一起送入解碼器來(lái)生成目標(biāo)句子。文獻(xiàn)[8]利用情感詞典獲得內(nèi)容表示,再通過(guò)自編碼器生成遷移句子。文獻(xiàn)[10]假設(shè)跨不同文本語(yǔ)料庫(kù)共享潛在內(nèi)容分布,提出一種利用潛在表示的交叉對(duì)齊來(lái)執(zhí)行樣式轉(zhuǎn)換的方法。
有部分研究認(rèn)為無(wú)需顯式地分離內(nèi)容和樣式,通過(guò)某些技術(shù)在隱藏空間中調(diào)整句子的潛在表示,最終獲得與樣式無(wú)關(guān)的語(yǔ)義內(nèi)容表示以實(shí)現(xiàn)樣式遷移。如文獻(xiàn)[11]提出了一種雙重強(qiáng)化學(xué)習(xí)框架(DualRL),通過(guò)一步映射模型直接遷移文本的樣式,而不需要任何內(nèi)容和樣式的分離。文獻(xiàn)[12]提出了Style-Trans 模型,它不對(duì)源語(yǔ)句的潛在表示進(jìn)行假設(shè),而在Transformer 中改進(jìn)注意力機(jī)制,實(shí)現(xiàn)了更好的內(nèi)容保持。
還有部分工作不涉及隱藏空間內(nèi)容與樣式解糾纏,而是借助某些技術(shù)生成質(zhì)量不高的偽平行數(shù)據(jù)集,并用偽平行數(shù)據(jù)對(duì)遷移模型做半監(jiān)督訓(xùn)練。如文獻(xiàn)[13]首先利用風(fēng)格偏好信息和詞嵌入相似性來(lái)使用統(tǒng)計(jì)機(jī)器翻譯(SMT)框架生成偽平行數(shù)據(jù),然后采用迭代反向翻譯方法聯(lián)合訓(xùn)練兩個(gè)基于神經(jīng)機(jī)器翻譯(NMT)的傳輸系統(tǒng)。文獻(xiàn)[9]提出了一個(gè)深度生成模型(DeepLatentSeq),設(shè)計(jì)了一種概率方法將來(lái)自兩個(gè)域的非平行數(shù)據(jù)建模為部分觀察到的平行語(yǔ)料庫(kù)。通過(guò)在其變分目標(biāo)與其他無(wú)監(jiān)督風(fēng)格遷移和機(jī)器翻譯技術(shù)之間建立聯(lián)系,實(shí)現(xiàn)了文本樣式遷移。
上述這些方法中無(wú)論是否將潛在空間中的內(nèi)容和樣式解糾纏,或從頭生成目標(biāo)句子,均存在稀疏性和收斂性問題[4],因此會(huì)生成低質(zhì)量的句子。
編輯類方法的典型是文獻(xiàn)[15]使用的“刪除-檢索-生成”框架。通過(guò)刪除樣式詞后得到內(nèi)容部分,接著檢索目標(biāo)樣式詞,最后將內(nèi)容部分和目標(biāo)樣式詞交由LSTM生成目標(biāo)句子。文獻(xiàn)[16]提出了一種兩步方法:遮擋并填充。在遮擋時(shí)通過(guò)將樣式詞的位置遮擋來(lái)將樣式與內(nèi)容分開;在填充時(shí)將掩碼語(yǔ)言模型(masked language model,MLM)改進(jìn)為屬性條件MLM,通過(guò)預(yù)測(cè)以上下文和目標(biāo)情緒為條件的單詞或短語(yǔ)來(lái)填充遮擋位置。有一些研究側(cè)重對(duì)樣式詞識(shí)別方法的改進(jìn)。如文獻(xiàn)[6]使用標(biāo)記器在源文本中標(biāo)記樣式短語(yǔ),然后根據(jù)標(biāo)記的源文本生成目標(biāo)文本。文獻(xiàn)[17]為源域和目標(biāo)域訓(xùn)練MLM,兩個(gè)模型將可能性方面最不一致的文本跨度識(shí)別為源樣式詞。文獻(xiàn)[18]提出新模型GST(generativestyle-Transformer)。首先對(duì)語(yǔ)料訓(xùn)練Transformer模型,通過(guò)選出最合適的層和注意力頭來(lái)計(jì)算每個(gè)詞的注意力分?jǐn)?shù),將前k個(gè)詞當(dāng)作樣式詞。然后,刪去樣式詞后得到內(nèi)容部分,聯(lián)合目標(biāo)情感標(biāo)簽交由GPT來(lái)生成目標(biāo)句子。
上述這些編輯類方法仍存在一些不足,如(1)檢索樣式詞的準(zhǔn)確度有待提高;(2)簡(jiǎn)單的刪除樣式詞,也可能丟失內(nèi)容;(3)生成目標(biāo)句子或?qū)φ趽跆羁罩灰蕾嚇邮椒诸惼?,難以保證句子的流暢性。
為彌補(bǔ)這些不足,本文提出了新的過(guò)濾策略來(lái)提升對(duì)樣式詞的識(shí)別精度。與本文工作最接近的是文獻(xiàn)[16]和文獻(xiàn)[18],但與文獻(xiàn)[16]在語(yǔ)料上訓(xùn)練模型不同,本文方法無(wú)需重新訓(xùn)練填空模型,而是基于通用的預(yù)訓(xùn)練模型。此外,在對(duì)遮擋填空時(shí),與文獻(xiàn)[16]單純依賴目標(biāo)樣式標(biāo)簽和樣式分類器不同,本文設(shè)計(jì)了不同的提示模板來(lái)挖掘大模型的知識(shí)以提升樣式無(wú)關(guān)內(nèi)容的保留。對(duì)比文獻(xiàn)[18]利用Transformer 來(lái)計(jì)算句子中每個(gè)詞的重要性分?jǐn)?shù)以識(shí)別樣式詞,但該方法未能考慮部分與樣式無(wú)關(guān)的名詞的重要性分?jǐn)?shù)同樣很大,只依賴此分?jǐn)?shù)可能導(dǎo)致樣式無(wú)關(guān)的名詞被錯(cuò)認(rèn)為樣式詞并遮擋,從而產(chǎn)生樣式無(wú)關(guān)的語(yǔ)義內(nèi)容丟失和遷移失敗等錯(cuò)誤。本文改進(jìn)了基于Transformer的注意力來(lái)篩選源樣式詞的方法,同時(shí)創(chuàng)新地用提示方法來(lái)完成對(duì)目標(biāo)樣式詞的檢索,無(wú)需訓(xùn)練序列生成模型,也避免了相關(guān)弊端。
設(shè)在給定數(shù)據(jù)集D={(x1,s1),(x2,s2),…,(xn,sn)}中xi對(duì)應(yīng)第i個(gè)句子,si∈S是xi的樣式標(biāo)記。其中樣式由可以準(zhǔn)確識(shí)別給定句子樣式的分類器確定,在情感類遷移任務(wù)中樣式集S={‘Positive’,‘Negative’} 。定義xs表示樣式為s的句子,句子xs隨樣式s變化而變化。樣式s的對(duì)立樣式為sˉ,則遷移后的目標(biāo)句子為xsˉ。元標(biāo)記ms表示遮擋(mask)前句子的樣式為s,xms表示句子xs遮擋樣式詞后的內(nèi)容部分,隨樣式s變化而變化。符號(hào)p表示與提示(prompt)相關(guān),xp表示句子x對(duì)應(yīng)的提示句子,整體是一個(gè)符號(hào)。本文提出的針對(duì)情感遷移的提示方法如圖1所示,它分為三個(gè)步驟:(1)樣式詞識(shí)別與遮擋,即識(shí)別源句子xs中的樣式詞并遮擋得到內(nèi)容部分xms;(2)提示構(gòu)造,利用語(yǔ)言生成模型獲得與源句子語(yǔ)義相近的生成句以構(gòu)造提示句子xp;(3)目標(biāo)語(yǔ)句構(gòu)造,即借助提示信息xp指導(dǎo)掩碼語(yǔ)言模型獲得與xs樣式對(duì)立的目標(biāo)句子xsˉ。以下2.1~2.3 節(jié)對(duì)以上步驟分別作詳細(xì)說(shuō)明。
圖1 基于提示學(xué)習(xí)的情感遷移整體框架圖Fig.1 Overall framework diagram of emotional transfer based on prompt learning
該步驟分為兩個(gè)階段:(1)識(shí)別樣式詞。設(shè)源句子xs由詞集W={w1,w2,…,wm}構(gòu)成,通過(guò)計(jì)算每個(gè)詞的注意力分?jǐn)?shù)再降序排列得到Wsorted,即PBert(Wsorted|W)。然后取Wsorted的前k個(gè)作為句子xs對(duì)應(yīng)的樣式詞集合as。(2)遮擋。將as中的樣式詞遮擋得到內(nèi)容部分xms,如式(1)所示:
第一步識(shí)別樣式詞的這種方法[18]還存在較多誤判,本文主要從兩個(gè)角度改進(jìn)該方法:(1)過(guò)濾情感無(wú)關(guān)的名詞并保留在源句子中;(2)識(shí)別情感相關(guān)的形容詞作為對(duì)注意力方法的補(bǔ)充。
具體來(lái)說(shuō),利用語(yǔ)言處理庫(kù)coreNLP[20]實(shí)現(xiàn)對(duì)樣式相關(guān)的形容詞Js和樣式無(wú)關(guān)的名詞Nc的識(shí)別,即接著先將樣式無(wú)關(guān)的名詞過(guò)濾,避免注意力分?jǐn)?shù)較高的內(nèi)容詞被遮擋。再?gòu)闹羞x取前k個(gè)詞(topK) ,最后把可能遺漏的形容詞補(bǔ)充到topK()方法所得的詞集中,其過(guò)程如式(2)所示:
算法1 詳細(xì)描述了改進(jìn)后的源情感詞識(shí)別算法。算法中輸入Wsorted是情感詞的候選列表,它是利用Transformer的注意力結(jié)構(gòu)計(jì)算句子W中每個(gè)詞的重要性分?jǐn)?shù),然后對(duì)所有詞按此分?jǐn)?shù)降序排列。詞表C和S用于對(duì)情感詞候選列表Wsorted快速過(guò)濾以減少對(duì)源情感詞誤判。詞表構(gòu)造基于語(yǔ)言模型coreNLP(https://stanfordnlp.github.io/CoreNLP/)的詞性識(shí)別結(jié)果,即將源語(yǔ)料中的指示代詞、人稱代詞、系動(dòng)詞、部分介詞篩選去重,并記為情感無(wú)關(guān)的常見詞表C,而把數(shù)字、特殊符號(hào)放入無(wú)關(guān)符號(hào)詞表S;k為預(yù)設(shè)的情感詞個(gè)數(shù)。
算法1執(zhí)行時(shí)前,先備份重要性分?jǐn)?shù)最大的首選詞word1,以應(yīng)對(duì)候選情感詞列表Wsorted被篩選為空的情形(第1行);然后,調(diào)用算法2從源句子中獲取與情感無(wú)關(guān)的名詞集合N,對(duì)算法2稍作調(diào)整即可獲取情感相關(guān)的形容詞、副詞集合J(第2~4 行);然后將候選列表Wsorted中和無(wú)關(guān)情感詞集合C、S和N重復(fù)的部分過(guò)濾(第5~9 行);若候選集合Wsorted變?yōu)榭占瑒t將word1作為默認(rèn)的情感詞(第10~12行);否則將從過(guò)濾后的候選序列中選出前k個(gè)放入情感詞集Wstyle,k的大小和候選詞的總個(gè)數(shù)λ相關(guān)(第13~17行);接著再使用情感無(wú)關(guān)的詞表C對(duì)情感相關(guān)的形容詞集J過(guò)濾,這是因?yàn)閏oreNLP 在識(shí)別形容詞時(shí)可能會(huì)將某些系動(dòng)詞誤判為形容詞(第18~22 行);最后,將與情感相關(guān)的形容詞和部分表示情感否定的詞(如not,no)不加重復(fù)地添加到情感詞集Wstyle中,即得到過(guò)濾后的情感詞集合Wstyle。
對(duì)于k的設(shè)定(第13~17行),由于實(shí)際情感詞個(gè)數(shù)可能不止k個(gè),且考慮過(guò)濾后的候選詞越多,真實(shí)的情感詞個(gè)數(shù)也應(yīng)該越多。因此算法1 采用了兩種策略來(lái)盡量接近情感詞的準(zhǔn)確個(gè)數(shù):(1)根據(jù)候選的情感詞數(shù)量λ與情感詞個(gè)數(shù)k的統(tǒng)計(jì)規(guī)律,對(duì)不同的候選詞數(shù)量分段指定情感詞數(shù)k的大??;(2)在選取k個(gè)情感詞的操作完成后,再將與情感相關(guān)的形容詞集合J不重復(fù)地并入詞序列Wstyle中,以彌補(bǔ)當(dāng)k遠(yuǎn)小于真實(shí)情感詞個(gè)數(shù)時(shí)可能導(dǎo)致的遷移失敗。
算法1(源情感詞識(shí)別算法)
輸入:源句子的詞序列W按注意力分?jǐn)?shù)降序排列為Wsorted={w1,w2,…,wn},即源情感詞候選列表;預(yù)定義與情感無(wú)關(guān)的常見詞集合C,預(yù)定義與情感無(wú)關(guān)的符號(hào)詞集合S;預(yù)設(shè)的情感詞個(gè)數(shù)k
輸出:源句子中的情感詞集合Wstyle
算法2 描述了從源句子中識(shí)別情感無(wú)關(guān)名詞的過(guò)程。在輸入部分除了必要的詞性識(shí)別模型coreNLP 和情感分類器Classifier(https://huggingface.co/cardiffnlp/twitter-xlm-roberta-base-sentiment)外,還預(yù)設(shè)了方便識(shí)別名詞詞性的標(biāo)簽集合POSnoun,其中包含有名詞單數(shù)(NN)、復(fù)數(shù)(NNS)、專有名詞單數(shù)(NNP)和專有名詞復(fù)數(shù)(NNPS)。
算法2中,首先將無(wú)情感的名詞集合Nno-style初始化為空,利用coreNLP 調(diào)用詞性標(biāo)注函數(shù)pos_tag()獲得標(biāo)注結(jié)果(第1、2行);對(duì)于每個(gè)標(biāo)注取出被標(biāo)注詞和對(duì)應(yīng)的詞性標(biāo)簽,如果當(dāng)前是名詞,根據(jù)模板“it is [名詞].”和“we get [名詞].”構(gòu)建兩個(gè)句子,再利用情感分類器Classifier 分別給出情感標(biāo)簽,當(dāng)兩個(gè)標(biāo)簽均為中性(0)時(shí),即認(rèn)為該名詞對(duì)人與物都是情感無(wú)關(guān)的,則加入到情感無(wú)關(guān)的名詞集合Nno-style中(第3~18行);最后算法返回集合Nno-style。
識(shí)別情感相關(guān)的形容詞的過(guò)程與算法2結(jié)構(gòu)相同,只需作兩處改動(dòng):一是把詞性標(biāo)簽設(shè)為形容詞(JJ)、比較級(jí)(JJR)、最高級(jí)(JJS),以及副詞(RB)和具有情感屬性的感嘆詞(UH);二是將中性分?jǐn)?shù)判斷的語(yǔ)句(第7、8行)改為使用情感標(biāo)簽(積極、消極、中性)來(lái)判定,即當(dāng)構(gòu)造的句子所得分類標(biāo)簽不是中性,就將當(dāng)前形容詞添加到與情感相關(guān)的集合中去。
算法2(識(shí)別情感無(wú)關(guān)的名詞算法)
輸入:源句子的詞序列W={w1,w2,…,wn},情感分類器Classifier,用于計(jì)算句子的情感標(biāo)簽,包括中性、積極、消極(0,1,-1);語(yǔ)言處理庫(kù)coreNLP,以及預(yù)設(shè)用于識(shí)別名詞詞性的標(biāo)注集合POSnoun={NN,NNS,NNP,NNPS}
輸出:源句子中與情感無(wú)關(guān)的名詞集合Nno-style
算法1識(shí)別源句子“The restaurant is a good place and have fun !”情感詞并遮擋的結(jié)果如表1 所示。從表1 可看出,若簡(jiǎn)單取Wsorted的前兩個(gè)詞作為情感詞,即“good”“restaurant”。此時(shí)去遮擋一方面會(huì)損失關(guān)于餐館的內(nèi)容信息,另一方面遺漏了其他情感詞,如“fun”。改進(jìn)后的算法1減少了這些錯(cuò)誤。
表1 識(shí)別源樣式詞的一個(gè)實(shí)例Table 1 Example of identifying source style words
研究中發(fā)現(xiàn)使用轉(zhuǎn)折詞“but”和源句子作為提示可有效實(shí)現(xiàn)對(duì)立特性的文本樣式遷移。如句子“the food is expensive .”先遮擋其源情感詞“expensive”,再用“but”連接原句子作為提示并與遮擋后的句子拼接,即“the food is
構(gòu)造提示句的過(guò)程可分為兩個(gè)階段:(1)獲得與源情感一致語(yǔ)句。通過(guò)借助GPT2(https://huggingface.co/gpt2/)模型,在已知源句子xs的前提下生成下一句與源情感一致的句子xnext。(2)構(gòu)造提示句。即按模板組合提示信息來(lái)得到提示句子xp。以下具體展開。
在第一步中,為確保xnext情感與原句子一致,需在生成下一句前對(duì)源句子進(jìn)行樣式增強(qiáng):先在句首加入一組情感標(biāo)簽同為s的詞組as,作為對(duì)源句子情感的強(qiáng)化。接著在xs的末尾加入遞進(jìn)詞wpro(如“furthermore”),顯式地限定下一句情感和xs情感一致,如式(3)所示:
在第二步中,為充分利用不同提示信息,本文針對(duì)情感遷移任務(wù)設(shè)計(jì)了構(gòu)造提示句xp的四種模板,如式(4)~(7)所示,其中winflect代指轉(zhuǎn)折連詞。
它們對(duì)不同長(zhǎng)度句子的遷移效果各有優(yōu)劣,在一組提示中可包含多個(gè)模板構(gòu)建的句子。對(duì)于指定的目標(biāo)情感短語(yǔ)as可人工給出,如采用只表達(dá)情感而無(wú)內(nèi)容的句子“terrible experience !”。直覺上將遞進(jìn)詞wpro與目標(biāo)情感短語(yǔ)asˉ拼接作為提示同樣可行,但實(shí)際效果不如轉(zhuǎn)折連詞構(gòu)建的提示模板。
該步驟分為兩個(gè)階段:(1)篩選預(yù)測(cè)詞。先將內(nèi)容部分xms與提示句xp交由填空掩碼模型檢索預(yù)測(cè)詞,對(duì)樣式詞篩選后用于構(gòu)造新句子xsˉ,即(2)檢測(cè)目標(biāo)樣式。需對(duì)新句子做樣式檢測(cè)以確認(rèn)其樣式為目標(biāo)樣式,即。此外,依據(jù)樣式誤判情況可適當(dāng)調(diào)整提示策略。以下在2.3.1和2.3.2小節(jié)中對(duì)這兩步作詳細(xì)說(shuō)明。
2.3.1 篩選樣式詞
提示方法無(wú)需微調(diào)預(yù)訓(xùn)練填空掩碼模型,但訓(xùn)練語(yǔ)料自身的偏差(bias)可能導(dǎo)致對(duì)積極情感的預(yù)測(cè)高于對(duì)消極的預(yù)測(cè),且模型往往更傾向于訓(xùn)練語(yǔ)料里的高頻詞(如“good”)而不完全依賴提示信息。為應(yīng)對(duì)這些問題,需要對(duì)預(yù)測(cè)詞進(jìn)一步篩選,本文從兩個(gè)方面改善遷移句子的質(zhì)量:(1)限制高頻詞的使用以改善語(yǔ)義內(nèi)容保留;(2)在目標(biāo)情感分?jǐn)?shù)的基礎(chǔ)上同時(shí)考慮了與內(nèi)容相關(guān)的次序權(quán)重。算法3描述了篩選目標(biāo)情感詞的具體過(guò)程。
算法3(篩選目標(biāo)情感詞算法)
輸入:預(yù)定義高頻詞表WHF={good,great,…},預(yù)定義無(wú)效預(yù)測(cè)詞集合Winvalid={-,_,‘,…};情感分類器Classifier,可計(jì)算句子在中性(0)、積極(1)、消極(-1)三個(gè)標(biāo)簽上的可能性分?jǐn)?shù);預(yù)訓(xùn)練掩碼填空模型FillMask(https://huggingface.co/roberta-large),源句子情感詞遮擋后的句子xms,與之對(duì)應(yīng)的提示句子xp,目標(biāo)情感標(biāo)簽tgtStyle
輸出:目標(biāo)情感最佳預(yù)測(cè)詞集合Wtgt-style,其長(zhǎng)度為k,對(duì)應(yīng)待填空的個(gè)數(shù)
在算法3的輸入部分,本文預(yù)定義了內(nèi)容無(wú)關(guān)的高頻情感詞集合WHF和無(wú)效的預(yù)測(cè)詞集合Winvalid,預(yù)訓(xùn)練的填空模型Fill-Mask 以及情感分類器Classifier。預(yù)定義詞集構(gòu)造是利用Fill-Mask對(duì)抽樣遮擋句子提供預(yù)測(cè)詞,將不是由小寫英文字符構(gòu)成的加入無(wú)效詞集Winvalid,并把前兩個(gè)預(yù)測(cè)詞加入高頻詞WHF中。
算法3先初始化目標(biāo)集合Wtgt-style為空,并以Wtpos=[0.35,0.35,0.55,0.75,0.95]作為與內(nèi)容相關(guān)的候選次序權(quán)重列表,這是由于預(yù)測(cè)詞初始越靠前涉及的內(nèi)容信息越少(如good,great)而越靠后則含有的語(yǔ)義信息越多(如expensive,cheap),因此構(gòu)造Wtpos時(shí)整體采用了等差序列,但假設(shè)前兩個(gè)詞語(yǔ)義信息相差不大故取值相同(第1、2 列)。然后利用Fill-Mask 模型獲得預(yù)測(cè)詞集合Wcandidate,它由k個(gè)長(zhǎng)度為五的單詞列表構(gòu)成,其中k為遮擋的個(gè)數(shù)(第3~4行)。接著依次考察每個(gè)遮擋的5個(gè)預(yù)測(cè)詞,Scores列表用于記錄5個(gè)候選詞在目標(biāo)情感和語(yǔ)義內(nèi)容上的最終分值,初始化為空(第7行)。若單詞w無(wú)效則用空串覆蓋且分?jǐn)?shù)置0(第10~13行)。接著再使用情感分類器Classifier獲得單詞w的情感標(biāo)簽和在該標(biāo)簽上的得分score。若情感標(biāo)簽與目標(biāo)情感相反,再借助Fill-Mask模型計(jì)算w的情感對(duì)立詞w-,當(dāng)w-符合目標(biāo)情感時(shí)就代替原來(lái)的預(yù)測(cè)詞,否則用空串覆蓋原詞且分?jǐn)?shù)置0。然后將分?jǐn)?shù)score 加入Scores 列表(第15~27 行)。接著將分?jǐn)?shù)Scores 和對(duì)應(yīng)的內(nèi)容權(quán)重Wtpos相乘,并把內(nèi)容無(wú)關(guān)的高頻詞分?jǐn)?shù)降低為非高頻詞中的最小得分,來(lái)凸顯內(nèi)容相關(guān)的非高頻詞(第30~36行)。再將得分最大的詞加入目標(biāo)集合Wtgt-style(第38行)。當(dāng)每個(gè)遮擋都獲得最佳預(yù)測(cè)詞后,將集合Wtgt-style中重復(fù)的詞只保留一個(gè)以提高語(yǔ)義內(nèi)容的豐富性(第41行)。最后算法返回目標(biāo)集合Wtgt-style。
在表2中展示了利用算法3對(duì)“The food is
表2 篩選目標(biāo)樣式詞的一個(gè)實(shí)例Table 2 Example of filtering target style words
2.3.2 檢測(cè)目標(biāo)樣式
從算法3獲得符合目標(biāo)情感的最佳預(yù)測(cè)詞集Wtgt-style后,分兩種情況:(1)沒有缺詞(即不含空串)時(shí),在對(duì)應(yīng)遮擋位置填入預(yù)測(cè)詞,即得到新句子,借助情感分類器檢查句子的情感樣式,若不是目標(biāo)情感,則換下一條提示繼續(xù)檢索,否則遷移完成;(2)預(yù)測(cè)詞部分缺少時(shí),將部分有效的預(yù)測(cè)詞填入,再利用遮擋減少后的新句子繼續(xù)檢索。這樣相比因?yàn)閭€(gè)別缺少就完全舍棄的做法,提升了遷移成功率。若全部缺失則更換下一條提示。
情感分類器本身也可能誤把有情感的陳述句判為中性。分析發(fā)現(xiàn)有兩個(gè)原因:一是對(duì)消極情感的反諷句進(jìn)行情感判定涉及外部知識(shí),如評(píng)價(jià)“某餐廳適合睡覺”暗示了對(duì)服務(wù)的不滿;二是表達(dá)積極情感的陳述句由于句子過(guò)長(zhǎng)但情感詞少,故被錯(cuò)誤判定為中性。針對(duì)第二種情況,本文經(jīng)統(tǒng)計(jì)分析發(fā)現(xiàn),積極的陳述句被情感分類器判定為中性時(shí),在中性標(biāo)簽上的得分遠(yuǎn)高于其他標(biāo)簽。為此,本文使用有標(biāo)注的句子來(lái)確定閾值α。即從七萬(wàn)條已標(biāo)注積極情感的句子中抽樣500 條被誤判為中性的句子,取其中性分?jǐn)?shù)的均值作為初始的閾值α。然后,將標(biāo)注為中性的100 條句子加入其中。之后,先借助情感分類器計(jì)算所有句子的中性分?jǐn)?shù)gneu,采用公式(8)判定情感標(biāo)簽,接著與實(shí)際的情感標(biāo)注比照,即可計(jì)算當(dāng)前α下對(duì)積極情感標(biāo)簽的識(shí)別準(zhǔn)確率。
接著增大初始閾值α直到識(shí)別精度達(dá)到98%,即接受閾值α從誤判為中性句子中篩選真實(shí)的積極情感標(biāo)簽的能力。利用閾值α對(duì)遷移后句子的情感做判斷,針對(duì)從消極遷移為積極情況,若遷移后句子的中性分?jǐn)?shù)大于閾值α,即認(rèn)為該句子表達(dá)了積極情感。
為方便對(duì)比已有工作,本文使用Sudhakar等人[18]提供的數(shù)據(jù)集,包括兩個(gè)情感遷移的基準(zhǔn)數(shù)據(jù)集,Yelp 評(píng)論數(shù)據(jù)集和AMAZON 亞馬遜產(chǎn)品評(píng)論集,數(shù)據(jù)集統(tǒng)計(jì)信息如表3所示。
表3 數(shù)據(jù)集統(tǒng)計(jì)信息Table 3 Statistics for dataset
YELP數(shù)據(jù)集是帶有情緒標(biāo)簽(負(fù)面或正面)的餐館和商業(yè)評(píng)論。AMAZON 數(shù)據(jù)集是亞馬遜上的產(chǎn)品評(píng)論,每條評(píng)論都標(biāo)記為正面或負(fù)面情緒。
本文將提示方法與三類情感遷移方法進(jìn)行了對(duì)比實(shí)驗(yàn):(1)與經(jīng)典模型的比較;(2)與領(lǐng)先的編輯模型的比較;(3)與領(lǐng)先的生成模型的比較,以下對(duì)模型或方法具體說(shuō)明。
經(jīng)典模型包括從隱藏向量角度完成遷移的生成模型,如MultiDecoder[7]和CrossAligned[10]。還有首次在“刪除-檢索-生成”框架上執(zhí)行文本遷移任務(wù)的編輯模型DeleteOnly 和DeleteRetrieve[19]。其次,領(lǐng)先的編輯模型選擇GST[18]作對(duì)比,該模型引入transformer注意力來(lái)識(shí)別樣式詞。在YELP 和AMAZON 數(shù)據(jù)集上,本文與以上方法進(jìn)行了比較。
最后選取領(lǐng)先的生成類模型作對(duì)比。DeepLatentSeq[9]利用新的概率生成公式,它結(jié)合了過(guò)去在無(wú)監(jiān)督文本樣式遷移方面的工作。DualRL[11]采用雙強(qiáng)化學(xué)習(xí)方法。Dai 等人[12]提出Style-Trans 轉(zhuǎn)換器,并在Transformer 中為樣式匹配了注意力機(jī)制。unsuperMT[13]采用無(wú)監(jiān)督機(jī)器翻譯,即借助偽平行數(shù)據(jù)和反向迭代翻譯方法來(lái)完成自動(dòng)風(fēng)格轉(zhuǎn)換的任務(wù),GTAE[14]將內(nèi)在語(yǔ)言約束施加到自然語(yǔ)言的模型空間中,提出了一種基于圖變換器的自動(dòng)編碼器。本文在YELP 數(shù)據(jù)集上與這些方法進(jìn)行了比較。
與已有工作一樣,對(duì)生成樣本在三個(gè)不同維度上進(jìn)行比較:目標(biāo)風(fēng)格強(qiáng)度,樣式無(wú)關(guān)的語(yǔ)義內(nèi)容保持和流暢性。
為了估計(jì)目標(biāo)風(fēng)格強(qiáng)度,本文使用針對(duì)情感分類的預(yù)訓(xùn)練模型RoBERTa-base(https://huggingface.co/cardiffnlp/twitter-xlm-roberta-base-sentiment)作為風(fēng)格分類器。該分類器在Yelp、Amazon的測(cè)試集上分別達(dá)到了98%、89%的準(zhǔn)確率(accuracy,Acc)。
為了比較樣式無(wú)關(guān)的語(yǔ)義內(nèi)容保存,利用sacreBleu[21]計(jì)算遷移句子與源句子之間的BLEU 分?jǐn)?shù)[19]。較高的BLEU 分?jǐn)?shù)表明遷移的句子可以通過(guò)保留更多來(lái)自源句子的單詞來(lái)實(shí)現(xiàn)更好的內(nèi)容保存,此外還將計(jì)算遷移句子和相應(yīng)參考之間的BLEU分?jǐn)?shù)。兩個(gè)BLEU分?jǐn)?shù)指標(biāo)分別稱為self-BLEU(s-BLEU)和ref-BLEU(r-BLEU)。
流暢度是通過(guò)遷移句子的困惑度(Perplexity,PPL)來(lái)衡量的,本文使用KenLM[22]在兩個(gè)數(shù)據(jù)集的訓(xùn)練集上訓(xùn)練了一個(gè)5-gram語(yǔ)言模型。利用這個(gè)語(yǔ)言模型來(lái)測(cè)量生成句子的困惑度。該模型在Yelp、Amazon的驗(yàn)證集句子上分別實(shí)現(xiàn)了平均18、16的困惑度。
此外,Sudhakar等人[18]發(fā)現(xiàn)基于學(xué)習(xí)模型的指標(biāo)如困惑度和準(zhǔn)確性,與人類評(píng)估并不完全相關(guān),考察模型的性能不能依賴單個(gè)指標(biāo)。因此,本文對(duì)ACC,s-BLEU,r-BLEU和log(PPL)的倒數(shù)提供了幾何平均數(shù)用于衡量整體的表現(xiàn),即綜合指標(biāo)(global metrics,GM)。
在識(shí)別情感詞的實(shí)驗(yàn)中,在計(jì)算注意力之前需先將系動(dòng)詞的縮寫還原。利用Sudhakar 等人[18]公開的訓(xùn)練代碼,用于計(jì)算獲得最合適的layer和head,其結(jié)果分別是9、0。構(gòu)造提示所需的下一句xnext時(shí)取其長(zhǎng)度為15個(gè)單詞。關(guān)于提示的四種模板的比例是1∶2∶4∶3。鑒別中性分?jǐn)?shù)的閾值α=0.85 。在篩選情感詞的個(gè)數(shù)時(shí)λ=5,k=3。在篩選目標(biāo)預(yù)測(cè)詞時(shí),對(duì)于最后一個(gè)遮擋重復(fù)多次給出固定答案,仍未達(dá)到閾值的,實(shí)驗(yàn)中為避免死循環(huán)在三次重復(fù)后接受。
實(shí)驗(yàn)數(shù)據(jù)對(duì)比分為四部分:(1)與經(jīng)典模型的比較結(jié)果見表4、表6;(2)與領(lǐng)先的編輯模型的比較結(jié)果如表5、表6所示;(3)與領(lǐng)先的生成模型的比較結(jié)果如表7所示。(4)消融實(shí)驗(yàn)的結(jié)果如表8 所示。以下對(duì)結(jié)果進(jìn)行具體分析。
表4 在AMAZON上與經(jīng)典模型的性能比較Table 4 Performance comparison with classical models on Amazon dataset
表5 在AMAZON上與領(lǐng)先的編輯模型的比較Table 5 Performance comparison with advanced editing models on Amazon dataset
表6 在YELP上與經(jīng)典模型的性能比較Table 6 Performance comparison with classical models on YELP dataset
表7 在YELP上與領(lǐng)先的生成模型的比較Table 7 Performance comparison with advanced generative models on YELP dataset
表8 在YELP數(shù)據(jù)集上的消融實(shí)驗(yàn)Table 8 Ablation experiments on YELP dataset
表4展示了在Amazon數(shù)據(jù)集上提示方法與經(jīng)典模型對(duì)比結(jié)果。首行和末行數(shù)據(jù)分別代表遷移前的源句子(source corpus,SC)和人工遷移的參考結(jié)果(human reference,HR)。從表4 倒數(shù)第二行和倒數(shù)第三行的數(shù)據(jù)分析可知,對(duì)比經(jīng)典的編輯模型DR,本文提出的提示方法在情感遷移的準(zhǔn)確度上提升了6.8 個(gè)百分點(diǎn),綜合評(píng)分相對(duì)提升4%。如表4 第二行和第三行所示,對(duì)比經(jīng)典的生成模型MD 和CA,提示方法的遷移準(zhǔn)確率只略低于CA,而在BLEU分?jǐn)?shù)上有壓倒性的優(yōu)勢(shì),這是因?yàn)橥ㄟ^(guò)提升情感詞識(shí)別的準(zhǔn)確率,實(shí)現(xiàn)了詞級(jí)別的細(xì)粒度編輯,與情感無(wú)關(guān)的語(yǔ)義內(nèi)容被盡可能保留了。
表5給出了在Amazon數(shù)據(jù)集上提示方法與領(lǐng)先的編輯模型GST 的對(duì)比結(jié)果。除了在情感遷移準(zhǔn)確率上略低外,其他指標(biāo)則遠(yuǎn)優(yōu)于GST 模型,尤其s-BLEU 分?jǐn)?shù)相對(duì)提升了32%,這說(shuō)明本文針對(duì)GST只依賴注意力識(shí)別情感詞的改進(jìn)是有效的,尤其在對(duì)內(nèi)容保持方面提升明顯。對(duì)比GST 困惑度指標(biāo),提示方法相對(duì)降低了67%,這說(shuō)明和GST 利用GPT 重新生成一組目標(biāo)詞不同,本文利用掩碼語(yǔ)言模型檢索的方法在流暢度上略有改善。
表6展示了在YELP數(shù)據(jù)集上提示方法與經(jīng)典模型的比較。將倒數(shù)第二行數(shù)據(jù)對(duì)比表中第二行到第四行可知,提示方法整體優(yōu)于經(jīng)典模型,總體指標(biāo)位列第一。此外,對(duì)比倒數(shù)第二行和第三行的數(shù)據(jù)可知,本文的方法在YELP 數(shù)據(jù)集上的全部指標(biāo)上均優(yōu)于編輯模型GST,總體指標(biāo)提升了14.5%,說(shuō)明本文提出的過(guò)濾策略與提示方法是有效的,提高了準(zhǔn)確率的同時(shí),并盡量保留了源句子與情感無(wú)關(guān)的內(nèi)容。
在對(duì)比表5、表7的PPL指標(biāo)的數(shù)據(jù)結(jié)果,可以發(fā)現(xiàn)困惑度分?jǐn)?shù)在同一組數(shù)據(jù)中保持了相對(duì)一致性,但在不同數(shù)據(jù)集上波動(dòng)明顯,進(jìn)一步說(shuō)明使用整體評(píng)分是必要的。觀察表7的前兩列數(shù)據(jù),可以發(fā)現(xiàn)隨著遷移準(zhǔn)確率的下降,s-BLEU分?jǐn)?shù)逐漸升高,即當(dāng)對(duì)源句子詞匯保留增多時(shí),生成方法也存在將源樣式詞錯(cuò)誤保留的情況。
觀察表7中不同模型兩兩比較時(shí),在單個(gè)指標(biāo)上表現(xiàn)好的模型,在另一個(gè)指標(biāo)上卻可能低于對(duì)方。如表7中本文的提示方法與近來(lái)最領(lǐng)先的生成模型DualRL比較,提示方法的遷移準(zhǔn)確率相對(duì)提高了3 個(gè)百分點(diǎn),s-BLEU 相對(duì)降低了17%。但通過(guò)觀察表7 的s-BLEU 指標(biāo)和GM 指標(biāo),可以發(fā)現(xiàn)s-BLEU 分?jǐn)?shù)與綜合評(píng)分并不一致。s-BLEU分?jǐn)?shù)更多體現(xiàn)了遷移句子對(duì)源句子中相同詞的保存程度,而并不能直接作為與情感無(wú)關(guān)的內(nèi)容保留指標(biāo)。如進(jìn)一步觀察表6的最后一行,在給出的參考中s-BLEU 分?jǐn)?shù)不到三分之一,卻實(shí)現(xiàn)了98.2%的遷移準(zhǔn)確率,這說(shuō)明只有保證了較高的遷移準(zhǔn)確率時(shí),s-BLEU 分?jǐn)?shù)才能正確反映對(duì)情感無(wú)關(guān)內(nèi)容的保留程度。即當(dāng)s-BLEU 指標(biāo)高而遷移準(zhǔn)確率低時(shí),說(shuō)明模型錯(cuò)誤保留了源情感詞。此外,提示方法無(wú)需訓(xùn)練模型,在實(shí)際應(yīng)用上也有一定潛力。
表8第二、三行數(shù)據(jù)分別展示了去除識(shí)別源情感詞策略(即算法1),以及不使用提示方法的消融實(shí)驗(yàn)結(jié)果。本文對(duì)情感詞的識(shí)別基于對(duì)GST中Transformer注意力機(jī)制的改進(jìn),通過(guò)比較前兩行數(shù)據(jù)可知,在不做源情感詞過(guò)濾而只進(jìn)行提示學(xué)習(xí)時(shí),對(duì)比GST方法情感遷移的準(zhǔn)確率下降了4 個(gè)百分點(diǎn),而s-BLEU 分?jǐn)?shù)上提高了26.8%,這說(shuō)明提示學(xué)習(xí)在保存與情感無(wú)關(guān)的內(nèi)容方面要優(yōu)于依賴GPT2的生成方法。比較第二行和第四行的數(shù)據(jù),當(dāng)對(duì)源情感詞不加過(guò)濾時(shí),遷移的準(zhǔn)確率下降了11.4個(gè)百分點(diǎn),這說(shuō)明過(guò)濾策略有效地提高了情感詞識(shí)別準(zhǔn)度,而BLEU 分?jǐn)?shù)提高了7.5%,這可能是因?yàn)槿鄙龠^(guò)濾策略導(dǎo)致了更多的源情感詞被錯(cuò)誤保留。比較第三行和第四行的數(shù)據(jù),在沒有提示的條件下,遷移的準(zhǔn)確率下降了22.8個(gè)百分點(diǎn),說(shuō)明提示方法可以有效指導(dǎo)掩碼語(yǔ)言模型實(shí)現(xiàn)情感遷移,而BLEU 分?jǐn)?shù)提高了10.7%,可能是因?yàn)闆]有提示信息下,候選詞多和源句子部分重復(fù),這也導(dǎo)致了未能正確遷移。
總體來(lái)看,本文的提示方法整體優(yōu)于經(jīng)典的方法。和現(xiàn)有領(lǐng)先的編輯方法,提示方法實(shí)現(xiàn)了更好的遷移準(zhǔn)確率和情感無(wú)關(guān)的內(nèi)容保留。即使與最領(lǐng)先的生成模型相比,提示方法也在整體性能上具有競(jìng)爭(zhēng)力。
此外考慮到不同轉(zhuǎn)折詞對(duì)預(yù)測(cè)的影響,實(shí)驗(yàn)選取了18個(gè)帶有轉(zhuǎn)折含義的詞,并在相同提示信息的條件下對(duì)同一組句子做情感遷移。主要考慮了候選詞中正確預(yù)測(cè)樣式所占的比例、首選命中的比例,以及與內(nèi)容相關(guān)詞在正確詞中所占的比例。圖2 中展示了排在前五的結(jié)果。實(shí)驗(yàn)表明,不同轉(zhuǎn)折詞對(duì)內(nèi)容和樣式轉(zhuǎn)移方向的影響差異較大,如“by contrast”在內(nèi)容相關(guān)詞比重上相對(duì)于“but”提高了16個(gè)百分點(diǎn)以上。說(shuō)明提示學(xué)習(xí)對(duì)個(gè)別詞的改變波動(dòng)比較明顯。此外,實(shí)驗(yàn)中發(fā)現(xiàn)當(dāng)句子中本身存在轉(zhuǎn)折邏輯時(shí)提示的效果差,這可能是因?yàn)楫?dāng)前轉(zhuǎn)折詞和句子本身的邏輯發(fā)生沖突造成的。
圖2 不同轉(zhuǎn)折詞對(duì)預(yù)測(cè)效果的影響Fig.2 Effect of inflection words on predictive performance
如圖3所示,平均樣式詞個(gè)數(shù)隨著句子變長(zhǎng)而緩慢增長(zhǎng),普遍以兩個(gè)樣式詞為主。注意到,經(jīng)過(guò)對(duì)樣式無(wú)關(guān)詞的過(guò)濾,實(shí)際候選詞個(gè)數(shù)一方面在句子長(zhǎng)度增大時(shí)仍保持較小的漲幅,另一方面和平均樣式詞個(gè)數(shù)的增長(zhǎng)速度保持一致。說(shuō)明該策略有效減少了樣式無(wú)關(guān)詞對(duì)識(shí)別的干擾。從圖中可推斷topK策略的參數(shù)設(shè)定,當(dāng)候選詞個(gè)數(shù)超過(guò)5 時(shí),平均樣式詞個(gè)數(shù)明顯上升,故λ=5 作為閾值比較合理。即候選詞少于5 個(gè)時(shí)默認(rèn)k取前兩個(gè),否則應(yīng)取k=3。
圖3 句子長(zhǎng)度對(duì)篩選目標(biāo)詞的影響Fig.3 Effect of sentence length on filtering target words
本文提出了針對(duì)文本情感遷移的提示方法,對(duì)比已有的編輯方法,無(wú)需針對(duì)特定領(lǐng)域訓(xùn)練生成模型,而是直接采用預(yù)訓(xùn)練的填空模型。除改進(jìn)對(duì)源樣式詞的識(shí)別精度外,為了充分挖掘大模型對(duì)于樣式遷移的相關(guān)知識(shí),本文引入了有效的提示方法,并設(shè)計(jì)了對(duì)目標(biāo)候選詞的篩選策略。
實(shí)驗(yàn)表明,提示方法在情感遷移方面優(yōu)于現(xiàn)有編輯方法,并對(duì)最新的生成模型方法有相當(dāng)?shù)母?jìng)爭(zhēng)力。此外,提示的數(shù)據(jù)由GPT2生成,可輕易獲得大量與內(nèi)容相關(guān)的提示。在未來(lái)的工作中,將研究提示方法在生成偽平行數(shù)據(jù)方向的應(yīng)用。