楊豐瑞,霍 娜,張許紅,韋 巍
(1.重慶郵電大學通信與信息工程學院,重慶 400065;2.重慶郵電大學通信新技術應用研究中心,重慶 400065;3.重慶重郵信科(集團)股份有限公司,重慶 401121)
在人工智能領域中,讓機器可以與人情感交互是一項極具挑戰(zhàn)而有意義的任務。近年來,隨著深度學習技術在各種應用中的普及,推動了對話系統(tǒng)的快速發(fā)展,有關對話生成的研究成果不斷涌現(xiàn)。人們交換的言語信息不僅包含句法信息,而且還傳達著人們的心理和情感狀態(tài)。在真實的對話中兩個人往往會給予對方情感上的撫慰,稱之為情感智力,它是人類智力的重要組成部分。實驗結果表明,具有情感智力的對話系統(tǒng)能夠減少對話中的故障[1],提高用戶滿意度[2],因此人們開始聚焦于發(fā)展具有情感智力的對話系統(tǒng)。
關于對話系統(tǒng)的研究可以分為三種:基于規(guī)則的、基于檢索的和基于生成的方法。第一種方法主要依賴于手工制定的規(guī)則,只能適應于非常有限的領域中。隨著網(wǎng)絡上社交數(shù)據(jù)的快速增長,很多現(xiàn)有研究使用數(shù)據(jù)驅動的方法來實現(xiàn)對話系統(tǒng),即基于檢索式的方法,從對話語料庫中檢索與查詢匹配的答復,但很大程度上受限于數(shù)據(jù)庫的規(guī)模。近年來深度學習技術的興起推動了生成式聊天機器人的發(fā)展,相比之下,基于生成的方法能夠產(chǎn)生更靈活的響應,通常是通過訓練序列到序列模型,將帖子視為輸入,響應視為輸出。
然而,生成式聊天機器人生成的回復也存在一些問題,比如經(jīng)常會生成一些安全卻無意義的通用回復,如“我不知道”“我也是”等語句。所以很多研究[3-5]以數(shù)據(jù)驅動為基礎來提升生成式對話系統(tǒng)的效果。最近一些研究致力于實現(xiàn)人機之間的情感交互[6-7],與檢索式方法相比,生成式方法更靈活、更方便融入情感。研究者嘗試在大規(guī)模語料庫的背景下使用序列到序列模型生成情感響應。Zhou等[6]首先將情感因素引入到生成式對話系統(tǒng),提出基于記憶網(wǎng)絡的情感對話系統(tǒng)ECM(Emotional Chatting Machine)。他們在傳統(tǒng)的序列到序列模型的基礎上,使用了靜態(tài)的情感向量表示、動態(tài)的情感狀態(tài)記憶網(wǎng)絡和情感詞外部記憶的機制,使得ECM 可以根據(jù)指定的情感分類輸出對應情感的回復。但是以往在該任務上的研究側重于關注情感因素,忽視了生成話題內容的相關性和多樣性。為了提高情感響應的質量和多樣性,本文提出了主題擴展的情感對話生成模型,可以生成內容相關且多樣的情緒化響應。與本文相似的工作是文獻[7]提出的基于注意力機制的主題增強情感對話生成模型TE-ECG(Topic-Enhanced Emotional Conversation Generation),該模型利用主題詞保證生成內容的相關性,并利用動態(tài)情感注意力機制來生成蘊含指定情感類別信息的回答。但是該任務忽略了對話過程中一直談論同一個話題是很無趣的,通常會讓人很快結束與機器的對話,可能會導致生成句子內容質量的下降。研究表明,在一個會話中,人們往往傾向于加深或擴大他們聊天的主題,使得對話更有吸引力和更有意義[8],如表1所示。
表1 主題擴展的情感對話示例Tab.1 Emotional conversation examples with topic expansion
本文提出的模型是基于帶有注意力機制的編解碼器框架,該模型通過融合模塊將情感因素和主題信息整合到對話系統(tǒng)中,融合模塊利用語義相似度擴展主題詞,提升回復內容的多樣性;利用依存句法分析提取與主題相關的情感詞,加入情感智力。為了驗證提出模型的有效性,在大型微博帖子和回復對上進行了實驗,并通過自動評估和人工評估將提出的模型與多個模型進行了比較。實驗結果表明,本文模型可以生成內容豐富的情感響應,并在評估指標上取得良好的性能,優(yōu)于實驗對比模型。
本文提出的模型同時將主題信息和情感因素整合到對話系統(tǒng)中,主要工作如下:
1)提出了主題擴展的情感對話生成模型。利用語義相似度擴展主題詞,這是提升回復內容多樣性的關鍵步驟。同時,利用依存句法分析提取與主題相關的情感詞,融入情感因素。
2)提出的對話系統(tǒng)可以生成話題豐富的情緒響應,效果優(yōu)于傳統(tǒng)的序列到序列對話生成模型。
對于人機情感對話,目前的工作大致分為兩類。
由于可用數(shù)據(jù)集的增加和深度神經(jīng)網(wǎng)絡技術的快速發(fā)展,對話系統(tǒng)已經(jīng)取得了很大進展。傳統(tǒng)的對話系統(tǒng)通常依賴于手工構建的模板和規(guī)則,阻礙了對其他領域的泛化能力。近年來,已經(jīng)提出了更多數(shù)據(jù)驅動的對話系統(tǒng)。在開放領域,它們大致分為兩大類:基于檢索和基于生成的方法?;谛畔z索的系統(tǒng)[9-11]根據(jù)輸入的句子在候選應答中匹配最相似的句子作為應答,這涉及到特征的選擇和排序算法。但它們必須滿足這一前提條件:選定的響應應該預先存在,因此,性能受到存儲庫的規(guī)模和質量的限制。后面基于生成的系統(tǒng)受統(tǒng)計機器翻譯[3,12]的啟發(fā),利用數(shù)據(jù)驅動的方法對帖子及其響應之間的映射進行建模。對話系統(tǒng)往往會產(chǎn)生一些普遍且毫無意義的回應,例如“我也是”。因此,已經(jīng)進行了大量的研究來改善對話的內容質量。一些研究者提出用主動內容引入的方式來生成對話[4,13]。Tao 等[14]應用多頭注意力機制來捕獲查詢話語中不同方面的語義,并通過正則化目標函數(shù)使得回復更多樣化且仍與給定查詢相關。Liu 等[15]通過將用戶配置文件整合到會話模型中來完成個性化響應排序任務。盡管這些研究可以產(chǎn)生有意義且高質量的響應,但是由于缺乏情商,聊天機器人仍然無法自然地與用戶進行交流。
情感智力是成功的、智能的對話系統(tǒng)不可或缺的重要組成部分[16]。研究人員嘗試賦予對話系統(tǒng)以情感。Ghosh 等[17]提出一個定制情感文本生成的神經(jīng)語言模型Affect-LM(neural Language Model for customizable Affective text generation),可根據(jù)輸入情感類別、情感強度β和上下文單詞生成句子。Zhou 等[6]提出了ECM 模型,結合了情感類別的向量,并加入內部情感機制,最后引入外部情感機制來選擇回復的詞為一般詞還是情感詞,從而得到附有不同情感類別且文本質量也很好的回復內容。Zhang 等[18]提出了兩種情緒感知條件變分自編碼器EsCVAE(Emotion sensitive Conditional Variational AutoEncoder)結構,用于確定響應生成的合理情緒類別。彭葉紅[7]提出了TE-ECG 模型,利用主題詞保證生成內容的相關性,并利用動態(tài)情感注意力機制來生成蘊含指定情感類別信息的回答;但是沒有考慮到人機對話時聊天主題的多樣性,以及人們對不同主題有著不同的情感傾向,可能會導致聊天很快結束。為了解決這個問題,本文提出了一個新穎的模型,通過融合模塊將主題信息和主題相關的情緒整合到對話系統(tǒng)中,可生成內容豐富并且情緒相符的響應。本文所提模型受到相關的研究[7-8]啟發(fā),考慮了聊天時話題的深入和情感的共鳴,本文的工作與相關研究[7-8]有所不同,具體而言,融合模塊利用語義相似度擴展主題詞,提升了回復內容的多樣性,利用依存句法分析提取與主題相關的情感詞,加入了情感智力。
給定源序列(查詢)X=(x1,x2,…,xT)和用戶給定的情感類別e,對話任務是生成與情感類別e相一致的目標序列(響應)Y=(y1,y2,…,yT′)。情感類別包括{喜歡,悲傷,厭惡,憤怒,高興,其他}[6]。為了在對話任務中生成內容豐富且情緒相符的響應,本文提出的情感對話系統(tǒng)總體方案如圖1所示。
該方案首先對上下文的完整歷史信息進行全局編碼,引入主題模型獲得全局主題詞,使用外部情感詞典獲得全局情感詞;其次,融合模塊利用語義相似度擴展主題詞,利用依存句法分析提取與主題相關的情感詞;最后該模型采用注意力機制來對上下文、全局主題詞和擴展的主題詞、全局情感詞和提取的與主題相關的情感詞進行加權,然后將它們饋送到用于生成響應的循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Network,RNN)解碼器中。
圖1 基于注意力機制的主題擴展情感對話生成系統(tǒng)框架Fig.1 Framework of topic-expanded emotional conversation generation system based on attention mechanism
在序列到序列(Sequence to Sequence,Seq2Seq)模型中,給定源序列(查詢)X=(x1,x2,…,xT)和目標序列(響應)Y=(y1,y2,…,yT'),該模型會最大化以X為條件的Y的生成概率:p(y1,y2,…,yT'|x1,x2,…,xT)。Seq2Seq 由編碼器和解碼器組成,編碼器通過循環(huán)神經(jīng)網(wǎng)絡(RNN)將輸入序列壓縮成指定長度的向量,這個向量可以看成這個序列的語義,表示為上下文向量c,然后解碼器RNN 以c為輸入來估計Y的生成概率。Seq2Seq模型的目標函數(shù)如式(1)所示:
給定由幾個詞語組成的上下文,將其視為單詞序列。RNN編碼器計算上下文向量如式(2)所示:
其中:上下文W表示數(shù)目為T的單詞序列;ewt是第t個詞語的嵌入向量;ht是RNN 在時間t的隱藏狀態(tài);f是非線性變換函數(shù)。通常把編碼器最后時刻輸出的隱藏狀態(tài)hT表示為上下文向量c。
因為傳統(tǒng)的RNN 在處理序列數(shù)據(jù)時會受到短時記憶的制約,可能會遺漏重要的主題和情感信息。本文使用的是基于RNN 改進的門控循環(huán)單元(Gated Recurrent Unit,GRU)[19]來實現(xiàn)f函數(shù),GRU網(wǎng)絡的參數(shù)化為式(3)所示:
其中:xt是輸入向量;ht是輸出向量;u是更新門向量;r是重置門向量;Wu、Wr、Ws、Uu、Ur、Us是參數(shù)矩陣;°表示逐元素相乘;σg和σh分別是sigmoid和tanh激活函數(shù)。
為了使人們參與對話,聊天機器人應該生成信息豐富且有趣的響應,所以應該在生成響應時引入關鍵的信息,例如主題和情感。這個想法的靈感來自于對人類之間對話的觀察。在人與人的對話中,人們經(jīng)常圍繞某些主題來展開對話,并且?guī)в袑χ黝}的特定情感交互?;谏舷挛牡南热荩紫韧ㄟ^訓練基于Twitter 的隱式狄利克雷(Latent Dirichlet Allocation based on Twitter,Twitter LDA)主題模型[20]來生成主題詞典。Twitter LDA 模型的主要思想是將每個文本對應于一個主題,并且文本中的每個單詞都是該主題下的背景詞或主題詞。Twitter LDA模型的結構如圖2所示。
采用Gibbs 采樣算法估計Twitter LDA 模型的參數(shù)。使用模型將主題z分配給源序列X,選擇主題z下概率最高的前k個主題詞(實驗中設置k=20)。在學習中,需要獲得每個主題詞的向量表示。首先通過式(4)計算主題詞w的分布:
其中:qwz是主題詞w在訓練中分配給主題z的次數(shù);p(z|w)為主題詞w的向量表示。并且使用外部情感詞典獲得情感關鍵詞,本文使用的情感詞典源于文獻[21]所做的工作,其中涵蓋了七種情感類別的共計27 466個關鍵詞。首先對輸入的序列X進行分析,得出情感類別,為了高度抽象表示情感類別,引入不同的情感類別向量v={ve},再進一步選擇情感關鍵詞。本文不是直接使用輸入序列的編碼向量hi,而是采用注意力機制來突出情感特征,具體的計算步驟如下:
根據(jù)式(8)生成的概率分布,可以從情感詞典中選出最合適的情感關鍵詞。
圖2 Twitter LDA模型的結構Fig.2 Structure of Twitter LDA model
針對隱式狄利克雷(Latent Dirichlet Allocation,LDA)模型只適用于提取全局特征詞的局限性,以及人工指定情感類別的弊端,本文在全局主題詞和全局情感詞的先驗知識下,基于真實的上下文信息,對LDA 主題模型進行改造,進一步提出了融合模塊,擴展主題詞以提高局部主題詞的發(fā)現(xiàn)率,以主題詞為目標盡量發(fā)現(xiàn)更多的局部情感詞,實現(xiàn)細粒度主題詞和情感詞的提?。徊⒃诮獯a器階段學習輸入文本、主題和情感的融合表示。
2.3.1 主題詞擴展
在許多擴展主題詞的方法中,為了更好地考慮上下文信息,采用詞嵌入來計算與主題詞的語義相似度以擴展主題詞。詞嵌入,也稱為分布式表示,是將單詞表示為數(shù)學向量。該模型使用連續(xù)的詞袋(Continuous Bag Of Words,CBOW)來基于上下文信息預測當前詞,并使用跳字模型(skip-gram)架構來預測所給當前詞的周圍詞,以學習詞的分布式表示形式,將詞表示成一個定長的連續(xù)的稠密向量。語言模型是通過三層神經(jīng)網(wǎng)絡構建的,如圖3所示,詞向量是在構建過程中產(chǎn)生的。
在神經(jīng)網(wǎng)絡中,所有單詞的集合是一個詞典,映射矩陣C將每個單詞映射為一個向量,C(wt)表示為wt的詞向量。選擇已知的前n-1 個單詞{wt-n+1…wt-2wt-1}作為第一層的輸入,而普通的雙曲正切隱藏層是第二層。然后,在第三層中,使用激活函數(shù)softmax 將輸出值歸一化為概率。最后,執(zhí)行隨機梯度下降算法以優(yōu)化模型,從而從輸出值中獲得下一個單詞wt即對應于詞典中的第i個單詞的詞向量。通過詞向量間的余弦相似度可計算詞之間的相似性。
當輸入一個源序列X時,首先給其分配主題并選取概率最高的前k個主題詞,輸入序列文本中除主題詞之外的背景詞可能也含有重要語義信息,計算一個主題下的主題詞和背景詞的余弦相似性,并選取相似度最高的k′個詞加入主題詞中,實現(xiàn)主題詞的擴展(k+k′)。余弦相似性計算如下:
其中:θ為兩個向量之間夾角角度。cos(θ)的值越接近1,那么詞向量間的相似度越高。
圖3 三層神經(jīng)網(wǎng)絡模型Fig.3 Three-layer neural network model
2.3.2 主題詞相關的情感詞
人們通常會表達對特定主題或對象的情感,而情感詞在句法分析中通常與主題或對象存在依存關系。因此,本文主要考慮以下三個依存關系:
VOB(verb-object):“VOB”代表動詞和賓語之間的關系。情感詞是動詞,主題詞是動詞的賓語。例如,“我喜歡大海?!敝校凇跋矚g”和“大海”之間存在“VOB”關系。
SBV(subject-verb):“SBV”代表主語和謂語之間的關系。情感詞是謂語,主題詞是情感詞的主體。例如,“星星很漂亮?!敝校凇靶切恰焙汀捌痢敝g存在“SBV”關系。
ATT(attribute):“ATT”代表屬性之間的關系。情感詞是屬性,主題詞是情感詞的修飾中心。例如,“精彩絕倫的表演!”中,在“精彩絕倫”和“表演”之間存在“ATT”關系。
采用哈爾濱工業(yè)大學的語言技術平臺(Language Technology Platform,LTP)進行簡單的句法分析,本文提取了上述三種與主題詞相關的情感詞。設計的主題相關的情感詞提取算法如下所示。
本節(jié)在解碼器階段加入了注意力機制。在模型的解碼階段,解碼器每一個時刻的隱藏狀態(tài)的計算都需要上下文語義編碼向量c。傳統(tǒng)的Seq2Seq 模型中,只用編碼器最后一個時刻的輸出作為語義編碼向量c,且保持固定不變,但加入注意力機制之后,每一時刻的c都將各不相同,從而能保證在解碼的不同時刻,輸入序列中的每一個詞語對當前時刻解碼的詞語的貢獻不同。在t時刻,上下文、主題和情感信息最終被綜合在權重向量ct中,計算如下所示:
αti是權重系數(shù);hi為上面已知編碼器的輸出向量;T是上下文詞語的數(shù)量;M是主題詞的數(shù)量;N是主題相關情感詞的數(shù)量。與隱編碼向量hi性質一樣,訓練中間參數(shù)矩陣Wt進行運算得到主題詞隱向量mi和情感詞隱向量ni,計算如式(11)所示:
其中:eTi是第i個主題詞的向量表示;eEi為第i個情感詞的向量表示。
由于每一時刻的權重向量ct都各不相同,解碼器在t時刻的隱藏狀態(tài)st計算如式(12)所示:
其中:yt-1是t-1 時刻的輸出詞。最后,解碼器RNN 逐個詞地解碼出目標語言序列,計算如式(13)所示:
其中:Wy和by是投影層的參數(shù),該層將隱藏狀態(tài)投影到詞匯表中所有單詞的概率分布;Ti是第i個主題詞;Ei是第i個情感詞;yt是目標響應的第t個詞;σs是softmax激活函數(shù)是yt的一位有效編碼。
本文使用了中文對話語料數(shù)據(jù)作為實驗數(shù)據(jù),該數(shù)據(jù)來自NLPCC(Natural Language Processing and Chinese Computing)于2017 年發(fā)布的情感對話數(shù)據(jù)集,其中包括了1 119 207 個問句-回答對,其中在每個問句和回答都帶有一個相應的情感類別的標記,數(shù)據(jù)具體的構建方法見文獻[3]。隨機劃分出5 000 個問答對作為驗證集,5 000 個問答對作為測試集,剩余數(shù)據(jù)作為訓練集。
本文模型是在Tensorflow 平臺上實現(xiàn)的。編碼器和解碼器具有兩層GRU 結構,每個GRU 層隱藏節(jié)點數(shù)設置為256,將詞嵌入大小設置為100。詞匯量限制在40 000個以內,詞匯表之外的所有單詞都映射到特殊標記UNK(unknown)。情感類別的嵌入大小設置為100。最后,本文將主題數(shù)量設置為100 個,選擇每個主題對應的前20 個主題詞。從輸入序列文本中擴展了至少5 個主題詞。本文使用Adam[22]優(yōu)化目標函數(shù),批次大小和學習率分別設置為128和0.001。
選用了兩個基準模型作為本文的對比方案:一個是基于注意力機制的Seq2Seq 模型(Sequence to Sequence model with Attention,Seq2SeqA)[23];另一個是TE-ECG 模型[7],該模型在對話中融入了主題信息,并指定回復情感類別。
本文遵循現(xiàn)有的研究采用了人工和自動評價兩種方式。正如前面所說,對話任務是生成與給定源序列(查詢)和用戶給定的情感類別e相一致的目標序列(響應)。本文對話中不僅分析上下文信息,充分考慮主題和情感因素,生成有意義的、信息豐富的且情感交互的回答。因此為了相對準確地衡量生成響應的質量,本次實驗參考ECM 模型和TE-ECG 模型的人工評價方法。
本文還考慮了自動評價標準將生成響應與真實響應進行比較。BLEU(Bi-Lingual Evaluation Understudy)不適合評價會話生成,因為它與人工評價的相關性較低[24]。為了驗證響應的信息量和多樣性,本文采用了Li 等[25]設計的distinct-1 和distinct-2 度量標準。distinct-1 和distinct-2 分別是不同的單字和雙字在生成的總的字符中的所占比例,較高的distinct-1 和distinct-2意味著響應更加多樣化。
3.2.1 人工評價
對同一輸入序列語句,將Seq2SeqA、TE-ECG 和本文模型所分別生成的輸出響應進行人工評價,來判斷哪種模型的生成響應質量更好,表2 中的數(shù)值代表模型對比時三種不同評價所占的比例。從表2 所示的三種模型的人工評價結果可以看出:突出了主題和情感信息的本文模型生成響應的效果較傳統(tǒng)Seq2SeqA 模型有了很大的提升,與沒有擴展主題詞的TE-ECG 模型相比,效果也有一定的提高,說明傳入到注意力機制中的主題和情感信息增大了上下文中有意義的信息量,豐富了生成回復內容,提升了情感交互體驗,更加符合人類的對話習慣;但是本文方法與TE-ECG 方法的對比效果沒有很大的提升,可能是本文使用主題下的背景詞來作為主題詞的擴展,在同一個主題下,背景詞的信息量占比較小,本文以后的工作也會繼續(xù)探究如何使用其他方法來增大主題特征詞的信息量。
表2 三種模型的人工評價結果比較Tab.2 Comparison of manual evaluation results of three models
對于同一個輸入序列語句,解碼器可以輸出很多個不同的生成結果,所以考慮多個生成結果的有效占比更能反映出模型的效果。遵循已有的文獻[23],在模型中使用beam search 解碼器返回前10 個最優(yōu)的輸出結果。如表3 所示,如果輸出生成結果被人工評價為內容有意義時,輸出結果有效,表3 中的數(shù)值代表有意義的輸出響應結果相對于總體的占比。從表3 的比較結果可看出,本文模型的效果明顯好于傳統(tǒng)的Seq2SeqA 模型,在考慮前10 個最優(yōu)輸出結果時(Top10)效果更為明顯,說明了本文基于LDA 主題模型進一步擴展主題詞,提高了生成語句的多樣性,從而驗證了本文模型的有效性。
表3 模型的Top1和Top10有效率比較Tab.3 Comparison of Top1和Top10 effective rates of models
3.2.2 自動評估
自動評估實驗是采用兩個客觀的指標,在內容上評估生成的響應。分別從unigram 多樣性(distinct-1)和bigram 多樣性(distinct-2)上比較各模型,如前所述,本文使用的基準模型是Seq2SeqA 和TE-ECG,在測試集上利用本文模型和基準模型分別生成響應。自動評估結果如表4 所示,本文模型總體效果最優(yōu),并且在每個不同的情感類別中都得到了改善。與TE-ECG 模型相比,本文模型在unigram 多樣性(distinct-1)和bigram 多樣性(distinct-2)上分別提高了16.3%和15.4%;與Seq2SeqA 模型相比,本文模型在distinct-1 和distinct-2 上分別提高了26.7%和28.7%。表4 的結果表明了將豐富的主題信息與主題相關的情感因素相融合,與基準模型生成的響應相比,本文模型優(yōu)先考慮了主題詞和情感詞信息,可以生成更高質量的響應。
表4 distinct-1和distinct-2在三種模型上的自動評估結果Tab.4 Automatic evaluation results for distinct-1 and distinct-2 of three models
3.2.3 結果分析
在表5 中展示了一些樣例,分別由基準模型和本文模型生成??梢钥闯?,與Seq2SeqA 相比,本文模型融合主題和情感信息后生成的響應內容豐富,情感明確;與TE-ECG 相比,本文模型因為擴展了主題可以生成多樣化的響應,并且融入了主題相關的情感信息使得情感表達更加貼切。實驗結果表明,本文模型能夠同時在內容和情感上生成合適的響應。
表5 不同模型生成的回復樣例Tab.5 Sample responses generated by different models
本文提出的模型由全局模塊和融合模塊組成。全局模塊對上下文進行全局編碼,并且獲得全局主題詞和全局情感詞。融合模塊將主題和情感信息相融合。人工評價和自動評價都表明,本文模型不僅在內容上,而且在情感上都能生成合適的響應。在未來的工作中,會繼續(xù)提升融合主題和情感的對話生成質量,進一步探索如何精準地提取關鍵詞,將關鍵詞自然地融入到對話生成中。