徐 洋,蔣玉茹,2,張禹堯
(1. 北京信息科技大學 智能信息處理研究所,北京 100101;2. 國家經(jīng)濟安全預警工程北京實驗室,北京 100044)
幽默是人際交往中一種重要的交流形式,在生活中隨處可見。幽默一詞是由“humor”音譯而來[1]。Cruthirds[2]將幽默定義為“在個人、群體或組織中產(chǎn)生積極情緒和認知的有趣交流?!彪S著人工智能的發(fā)展,幽默計算[3]近些年來已成為自然語言處理領域的新興熱點之一,主要研究如何基于自然語言處理技術理解和識別包含幽默的文本表達,挖掘幽默表達中潛在的語義內(nèi)涵,構建面向幽默表達的計算模型,這有助于賦予計算機更深層次的人類認知。采用深度學習的方法對幽默進行識別的研究成果在智能問答、情感陪護等領域也有廣闊的應用前景。
根據(jù)幽默所處場景的不同,幽默一般表現(xiàn)為兩種形式[4],一種是注重語言模態(tài)和語言淺層屬性的單句幽默,另一種是依賴于語言所處上下文環(huán)境的語境幽默。單句幽默識別中所采用的特征往往比較簡單,例如,表達中是否存在諧音、疊字、歧義等現(xiàn)象;而有關語境的幽默識別通常需要一定的上下文推理,與語義、語用、邏輯和常識有關。相較于單句幽默,有關語境幽默的識別具有更大的難度和挑戰(zhàn)性。
幽默有多種類型[4],主要可分為為笑話(joke),俏皮話(one-liner)和對話幽默。對話幽默與簡短的笑話和俏皮話形式的幽默不同,在對話中的幽默包含更多的上下文信息,單句幽默和語境幽默交替出現(xiàn),而且語境幽默中的上下文跨度范圍更廣,這使得在對話中進行幽默識別更加困難。因此本文提出了強化語境與語義信息的對話幽默識別模型,對情景喜劇中的幽默進行識別,并在CCL2020評測任務中提供的中文語料《我愛我家》上進行實驗,綜合評分相較于僅使用中文BERT[5]的對比模型提升了2.4%。
本文組織結構如下: 第1節(jié)闡述幽默識別的相關工作;第2節(jié)介紹本文所構建的基于BERT的強化語境與語義信息的對話幽默識別模型;第3節(jié)描述本文的實驗設置;第4節(jié)展示結果并對實驗結果進行分析;第5節(jié)對實驗中的典型案例進行分析;第6節(jié)對本文進行總結。
幽默計算的初衷是讓機器懂得幽默,2016年林鴻飛等[3]首次對幽默的可計算性進行了系統(tǒng)性的概述,提到幽默的識別與幽默的生成都屬于幽默計算的范疇。
Mihalcea等[6]首次將幽默識別定義為二分類任務,并構建了一個笑話語料庫,結合反語、特定俚語等幽默特征進行幽默識別。在此語料的基礎上,Yang等[7]融入歧義、不協(xié)調(diào)等幽默特征繼續(xù)進行幽默識別。Chen等[8]使用卷積神經(jīng)網(wǎng)絡CNN(Convolutional Neural Networks)進行幽默識別。Baziotis等[9]在SemEval-2017 Task6幽默評測任務中提出基于注意力機制[10]和長短期記憶網(wǎng)絡LSTM(Long Short-Term Memory)的幽默識別模型,在識別兩句話哪個更幽默的任務中取得當時最好成績。Fan等[11]提出了PACGA網(wǎng)絡學習幽默的語音結構和語義表示用于幽默的識別,并使用注意力機制來增強模型對幽默識別的能力。
楊勇等[12]在俏皮話形式的短文本幽默識別方向展開工作,他們獨辟蹊徑地從文本的語言學特征出發(fā),引入了語音特征、字形特征和詞的語義特征,結合雙向門控循環(huán)單元GRU(Gate Recurrent Unit)和層次注意力網(wǎng)絡,提出的PFSHAN模型在英文數(shù)據(jù)集中能夠?qū)η纹ぴ捫问降挠哪M行有效識別。Annamoradnejad等[13]創(chuàng)建了短文本幽默識別數(shù)據(jù)集ColBERT,并在Google提出的英文BERT[14]模型的基礎上提出了改進的模型對幽默進行識別,最終在該數(shù)據(jù)集上取得了很好的效果。
在對話幽默識別任務中,Bertero等[15]率先利用基于神經(jīng)網(wǎng)絡的深度學習方法進行嘗試,在《生活大爆炸》語料庫(1)https://en.wikipedia.org/wiki/The_Big_Bang中首先使用CNN對每句話語進行編碼,并捕捉低層級話語特征,其次將所有話語向量依次輸入LSTM網(wǎng)絡進一步捕捉對話文本中的高層級對話特征,結合這兩種特征的CNN-LSTM模型在對話幽默識別任務上取得了不錯的效果。這種層次化的對話文本編碼方式在低層級對單個話語中的字符序列進行編碼,在高層級對整個對話中的話語序列進行編碼。相較于直接使用整個對話的字符序列對對話進行編碼而言,層次化的對話編碼方式能夠有效的保留對話的結構信息。Majumder等[16]提出的DialogueRNN模型也是使用了類似的編碼方式對對話文本進行編碼,同樣也取得了不錯的效果。
由于幽默的表現(xiàn)形式不限于文本,近些年來使用聲覺和視覺信息的多模態(tài)方法也開始應用于幽默識別中。相較于單一模態(tài)特征,多模態(tài)特征的相互融合能夠讓模型學習到更好的特征表示[17]。Yang等[18]通過語音、文本和視覺特征進行幽默識別。Bertero等[19]也使用情景喜劇中的聲覺和文本特征來增強模型幽默識別的能力。
2018年以來,中文信息學會舉辦的中國計算語言學大會(CCL)中都會發(fā)布與幽默計算相關的評測任務,吸引了國內(nèi)眾多高校和企業(yè)參加。評測任務從識別幽默的類型到識別幽默的強度,再從單句幽默的識別到多輪對話中幽默的識別,極大程度上推動了幽默計算的發(fā)展。本團隊曾參與CCL2020發(fā)布的評測任務三(2)http://cips-cl.org/static/CCL2020/humorcomputation.html——情景喜劇笑點識別,并獲得了第四名的成績。團隊在比賽結束后對提交的最終模型做出了改進,形成了本文的模型。
本文結合對話結構特征提出基于BERT的強化語境與語義信息的對話幽默識別模型,參考文獻[15]采用的對話編碼方式,使用層次化表示的編碼方法對輸入的對話文本進行編碼,這樣既可以對完整的對話內(nèi)容進行編碼,同時也保留了原本的對話結構。此模型通過學習對話語料中更深層次的幽默特征,進而提升機器幽默識別的能力。模型的整體結構如圖1所示,自底向上由三部分構成,分別為BERT語義編碼層,對話層級信息提取層和分類器層。
圖1 基于BERT的強化語境與語義信息對話幽默識別模型圖
BERT語義編碼層是通過預訓練語言模型BERT對發(fā)言人及話語信息進行編碼,提取對話中的基本語義信息。
與傳統(tǒng)的單句幽默識別任務不同,在對話中,除了對話文本以外,發(fā)言人的信息也至關重要,因此本文將其也作為信息輸入的一部分,將一段對話表示為X={(S1,T1),(S2,T2),…,(SN,TN)},S表示發(fā)言人,T表示發(fā)言人所說話語,N為該對話所包含的話語個數(shù),其中,Xi=(Si,Ti),i∈(1,N)表示對話中第i句發(fā)言人信息及其話語信息。
經(jīng)過BERT語義編碼層后得到的編碼結果表示為一段對話中各個話語的獨立編碼,記為Hi∈RL×h,其中,L為每句話語的最大長度,h為預訓練模型隱藏層維度,所有輸出結果共同拼接構成一段對話的表示結果,記為Hseq∈RN×L×h。如式(1)、式(2)所示。
Hi=BERT(Xi)
(1)
Hseq=[H1;H2,…;HN]
(2)
BERT在預訓練的過程中[CLS] 標志放在句子的首位,使用[CLS]位置的表征向量表示當前話語的基本語義信息。因此本文將Hi中[CLS]位置的向量表示為Hi_cls∈Rh,所有輸出結果共同拼接構成一段對話的表示結果,記為Hcls∈RN×h。
2.2 對話層級信息提取層
對話層級信息提取層的設計是本文的工作重點。為了讓模型學習到更深層次的對話幽默特征,更充分地進行幽默識別,本文基于對話的結構特點,將此層級更細致地分為語義信息提取模塊和語境信息提取模塊。
語義信息提取模塊對單句話語進行編碼,提取話語深層次的語義信息,語境信息提取模塊對一段對話進行編碼,獲取更完整的語境信息。
2.2.1 語義信息提取模塊
語義信息提取模塊采用兩種方式對單獨的話語信息進行編碼,分別以Hi_cls和Hi作為輸入,提取并強化不同層次的語義信息。二者編碼過后的輸出分別為Ui_cls和Ui。
本文將Hi_cls輸入進全連接層(LINEAR),輸出結果表示為Ui_cls∈Rn,其中n表示分類標簽數(shù)。如式(3)所示。
Ui_cls=Wk×Hi_cls+bk
(3)
其中,Wk和bk為可學習的參數(shù)。
本文將Hi輸入進BiLSTM中進行編碼,能夠從整體上對單句話語進行語義特征提取,輸出結果記為Ui_b∈RL×h,如式(4)所示。
Ui_b=BiLSTM(Hi)
(4)
緊接著使用多頭自注意力機制對Ui_b進行再編碼,從每句話語中學習到不同字的重要程度后給每個字分配不同的注意力權重,再通過加權操作得到對話信息更全面的向量表示Ui_a∈RL×h,如式(5)所示。
Ui_a=Attention(Ui_b)
(5)
最后將Ui_a取[CLS]位置的向量表示Ui_acls∈Rh輸入進全連接層(LINEAR)中,得到Ui∈Rn,如式(6)所示。
Ui=WV×Ui_acls+bV
(6)
其中,WV和bV為可學習的參數(shù)。
2.2.2 語境信息提取模塊
語境信息提取模塊的輸入為Hcls。由于此時各個話語之間的信息仍是獨立的,因此采用BiLSTM將對話中的話語信息有效地結合起來,將Hcls通過BiLSTM進行編碼,獲取包含上下文信息的話語表示,結果記為Db∈RN×h,如式(7)所示。
Db=BiLSTM(Hcls)
(7)
然后利用CNN來學習對話中的局部語境信息。將Db與Hcls相加輸入進CNN,接著通過激活函數(shù)f(=ReLU)進行非線性變換,得到局部語境信息編碼結果Dl∈RN×h,如式(8)所示。
Dl=ReLU(CNN(Hcls+Db))
(8)
接下來為了更充分地獲取全局語境信息,可以通過注意力機制賦予不同話語權重來計算在一段對話中當前話語的重要程度。將Db與Hcls相加求和之后經(jīng)過注意力機制編碼,得到全局語境信息編碼結果Dg∈RN×h,如式(9)所示。
Dg=Attention(Hcls+Db)
(9)
最后將上述各編碼結果相加,送入全連接層(LINEAR),得到結果Do∈RN×n,如式(10)、式(11)所示。
其中,WQ和bQ為可學習的參數(shù)。
2.3 分類器層
在分類器層,將在對話層級信息提取層中語義信息提取模塊提取出的單句語義信息編碼結果進行拼接,獲得完整的對話語義信息編碼Ucls∈RN×n和Useq∈RN×n,再與語境信息的輸出結果Do相加求和得到F,并使用softmax函數(shù)進行概率化,得到最后的分類預測結果Predict。如式(12)~式(15)所示。
本文所采用的數(shù)據(jù)集來源于CCL2020評測任務三情景喜劇笑點識別(3)https://github.com/DUTIR-Emotion-Group/CCL2020-Humor-Computation,其公開的數(shù)據(jù)集涉及兩種語言,英文數(shù)據(jù)來自情景喜劇《老友記》,中文數(shù)據(jù)來自情景喜劇《我愛我家》。本文實驗基于中文語料進行,數(shù)據(jù)集規(guī)模如表1所示。任務根據(jù)場景變化將情景劇的對話結構分為對話和話語兩個層級,從表2可以看出,其中每一段對話包含若干個有序出現(xiàn)的話語。每個話語存在幽默標簽,標簽0表示非幽默,標簽1表示幽默。
表1 數(shù)據(jù)集規(guī)模
表2 數(shù)據(jù)集示例
3.2.1 話語級評價指標
話語級的幽默識別任務可視為二分類任務,模型需要預測出每個話語中的幽默標簽(幽默或非幽默),因此在該層級采用F1值進行評價,計算如式(16)所示,其中,P表示精確率(Precision),R表示召回率(Recall)。
(16)
3.2.2 對話級評價指標
在對話層級,每段對話的長短(包含的話語個數(shù))不同,而本文期望模型對于不同長度的對話中的幽默標簽都能進行有效的預測,因此在此層級使用準確率(Accuracy)進行評價。即首先計算每段對話的準確率,再對所有對話計算均值得到該級別評價指標。如式(17)、式(18)所示。
(17)
(18)
其中,Acci表示第i段對話上的平均準確率,Accavg表示所有對話上的準確率。
3.2.3 最終得分
模型的整體效果由F1和Accavg綜合決定,使用Score表示,如式(19)所示。
Score=F1+Accavg
(19)
本文使用BERT作為預訓練模型,版本為Chinese_wwm_ext(4)https://github.com/ymcui/Chinese-BERT-wwm,隱藏層維度為768,丟棄率設置為0.15。BiLSTM中的隱藏層維度設置為384,丟棄率設置為0.15。CNN中卷積核設置為3,丟棄率設置為0.3。注意力部分使用多頭自注意力機制,頭數(shù)設置為8,丟棄率設置為0.1。最大話語長度設置為64,批量大小為1,梯度累加步數(shù)為5,優(yōu)化器為Adam,學習率設置為3e-5,損失函數(shù)使用交叉熵,由于數(shù)據(jù)集中樣本不均衡,因此在損失函數(shù)中對正負樣本的損失設置了不同的權重,正例權重設為2.0,負例權重設為1.0,以減輕數(shù)據(jù)不均衡的影響。同時為了消除語料劃分對模型性能造成的影響,實驗采用k折交叉驗證的方法進行評估,k取值為5。在對話層級信息提取層選取的隱藏層為模型的最后2層輸出結果。
本文基于3.1節(jié)的數(shù)據(jù)集,采用五折交叉驗證的方式進行實驗,驗證本文所提方法的有效性。為了與前人相關工作進行對比,本文復現(xiàn)了文獻[12]與文獻[15]的工作,實驗結果如表3所示。
表3 不同模型的幽默識別實驗結果
(1) CNN-LSTM[15]
CNN-LSTM是關于對話幽默識別的先進研究成果。本文復現(xiàn)了文獻[15]中所提出的模型,但未加入Tirgram特征、發(fā)言人語速特征、反義詞特征及詞情感分數(shù)特征。
(2) PFSHAN[12]
PFSHAN是單句幽默識別先進研究成果。本文復現(xiàn)了文獻[12]中所提出的模型,但是在特征方面未使用語音特征以及歧義詞等級向量特征。
本文所提出的方法為:
(1) BERT
本文采用BERT模型進行對話幽默識別,將每句話語輸入進BERT進行編碼,得到每句話語的基本表示后取BERT輸出中[CLS]位置的編碼結果送入分類器進行分類。
(2) BSI(Ours)
本文所提出的模型BSI(BERT_based model with enhanced Semantic Information),包含BERT語義編碼層、對話層級信息提取層中的強化語義信息部分和分類器層。
(3) BCI(Ours)
本文所提出的模型BCI(BERT_based model with enhanced Contextual Information),包含BERT語義編碼層,對話層級信息提取層中的強化語境信息部分和分類器層。
(4) BCSI(Ours)
本文所提出的模型BCSI(BERT_based model with enhanced Contextual and Semantic Information),包含BERT語義編碼層、對話層級信息提取層和分類器層。
首先從表3可以看出,相較于PFSHAN模型和僅使用了預訓練詞向量的CNN-LSTM模型而言,不論在單句幽默識別中還是在對話幽默識別中使用了BERT的模型整體效果要優(yōu)于以上兩種模型,這說明預訓練語言模型提取對話中幽默特征能力更強。
其次相較于僅使用BERT的幽默識別模型而言,本文所提出的模型從語境與語義信息兩方面強化對話中的幽默特征,在對話層級信息提取層中語境信息提取模塊與語義信息提取模塊都做出了一定的貢獻。
BSI模型主要用于強化對話中的語義特征,相較于BERT模型準確率從69.4%提升至70%,F(xiàn)1值從47%提升至48%。這表明經(jīng)過語義信息提取層后,模型學到了更多對話語義級別的特征,這些特征幫助模型提高了對話幽默識別的能力。
BCI模型主要用于強化對話中的語境特征,相較于BERT模型F1值從47%提升至48.5%,準確率保持不變,這也可以表明經(jīng)過BCI模型后所提取的語境信息對于對話識別幽默能力也具有提升作用。
最后,從整體上來看,融合語境與語義信息的BCSI模型相較于BSI模型與BCI模型,在綜合評價指標上分數(shù)分別提高了0.8%和0.9%,F(xiàn)1值分別提升了1.5%和1%,這表明結合語境與語義信息的BCSI模型對于對話中的幽默識別能力更強,也可以證明本文提出方法的有效性。
為了進一步分析實驗結果,本文隨機選取了實驗數(shù)據(jù)中的4段對話,共118句話語,并標注了每條話語的幽默表現(xiàn)形式。
模型整體的分析結果如表4所示,表頭中第一列表示人工標注的話語幽默類型結果,“BERT”表示僅使用BERT模型所預測的結果,“BCSI”表示本文所提出模型的預測結果。經(jīng)統(tǒng)計共38句笑點句,幽默占比32.2%,其中單句幽默占比13.6%,語境幽默占比18.6%。相較于BERT模型在這兩類幽默的預測結果,本文所提出的BCSI模型準確率更高,這再次說明了本文所提出模型的有效性。
表4 不同模型幽默識別能力分析
具體案例如表4、表5所示。表4為單句幽默的具體案例,表5為語境幽默的具體案例。表頭中“真實標簽”表示語料庫中標注的幽默標簽,“BERT”表示僅使用BERT模型所預測的結果,“BCSI”表示本文所提出模型的預測結果。
在表5中,第1句由王總所說的話語引用了俗語,用自嘲的口吻說出來自己團隊的戰(zhàn)斗力不夠強,屬于單句幽默。第3句由大個兒所說的話語使用了“哎呀媽呀”這樣的口頭禪,并將話語內(nèi)容轉(zhuǎn)折起到了幽默的效果。
表5 單句幽默識別案例
在表6中,第3句由傅明所說的話語承接上文李大媽的話進而回復,略帶無奈的表達引起了笑點。
表6 語境幽默識別案例
從這兩個案例中進一步可以看出,本文所提出的強化語境和語義信息的幽默識別模型BCSI相較于BERT基線模型而言,在單句幽默和語境幽默的識別上的性能更好。
對于對話幽默識別任務,本文結合對話結構特征提取對話幽默特征,提出了基于BERT的強化語境與語義信息的對話幽默識別模型。模型首先使用BERT對發(fā)言人信息及話語信息進行編碼,其次分別使用句級別的BiLSTM、CNN和Attention機制強化語境信息,使用詞級別的BiLSTM和Attention機制強化語義信息。實驗結果表明,相較于對比模型,本文提出的模型在幽默識別方面有了一定的效果提升,但仍然存在一些不足。首先沒有利用上對話參與者的人際關系信息,當不同發(fā)言人進行溝通時由于角色關系的差異可能會導致幽默表達方式的不同,如何引入角色關系提升幽默識別的性能是本文下一步工作的重點。其次本文未充分利用相關工作中所提及的用于識別幽默的語言學特征,這些特征能否提升本文模型的性能也值得進一步嘗試。