任 璐,楊 亮,徐琳宏,樊小超,刁宇峰,林鴻飛
(1. 大連理工大學(xué) 信息檢索研究室,遼寧 大連116023;2. 大連外國語大學(xué) 軟件學(xué)院,遼寧 大連 116044)
笑話是我們?nèi)粘I钪胁豢苫蛉钡闹匾M成部分。古人云,“古今世界一大笑府”“不笑不話不成世界”[1]。從古至今,笑話無處不在,是最通俗易懂貼近人們?nèi)粘I畹奈膶W(xué)形式之一。笑話可以使人身心愉悅,也可以拉近人與人之間的距離。作為生活中必不可少的調(diào)味劑,笑話可以減輕我們的壓力,消除我們的緊張,有助于我們的工作、學(xué)習(xí)以及生活。
“笑話”,在現(xiàn)代漢語詞典里的解釋是“能引人發(fā)笑的談話或故事”。笑話是一種文體名,通常篇幅短小,情節(jié)簡單而巧妙,往往能夠出人意料,給人帶來歡樂,取得笑的藝術(shù)效果。笑話作為第二批國家級非物質(zhì)文化遺產(chǎn),通常通過口頭傳播,這種傳播方式造成了笑話的多樣性。中國笑話不同于西方的幽默,但中國笑話自古就包含幽默成分,本文所要研究的笑話是狹義的幽默。
笑話作為通俗易懂的文學(xué)形式,不少學(xué)者對其進(jìn)行分類。現(xiàn)在國內(nèi)則傾向于按不同標(biāo)準(zhǔn)進(jìn)行分類,如譚達(dá)人從幽默技法把幽默分為四個大類共51個小類;任紹偉從構(gòu)成原理把笑話分為74類,是迄今最為詳細(xì)、也最為明晰的一種分類方法。更多幽默笑話集和網(wǎng)絡(luò)笑話則基本沿用了中國傳統(tǒng)上按主題或內(nèi)容分類的方式,如海笑把幽默分為生活、機(jī)智、家庭、校園、愛情、軍事、動物、交通、醫(yī)療、國際、商業(yè)、職業(yè)、愚人、諷刺14個大類[2]。綜上所述,目前笑話并沒有明確的分類標(biāo)準(zhǔn),為了研究的需要,本文按照主題分類,將笑話分為校園笑話、職場笑話、家庭笑話、名人笑話以及古代笑話;根據(jù)笑話產(chǎn)生的原因分類,將笑話分為諧音笑話、諧義笑話、類比笑話、委婉笑話、反語笑話、諷刺笑話、夸張笑話以及反轉(zhuǎn)笑話。
西方幽默三大理論為優(yōu)越論、釋放論以及乖訛論,其中,目前影響最廣、最受認(rèn)可的是乖訛論。乖訛論是從人們的心理認(rèn)知角度來分析幽默,認(rèn)為幽默產(chǎn)生的原因是由于某種不和諧產(chǎn)生的?,F(xiàn)代學(xué)者很多都是在乖訛論的基礎(chǔ)上提出了新的幽默理論。
第一個語言學(xué)意義上的幽默理論,即幽默的語義腳本理論(semantic script theory of humor,SSTH),就是Raskin于1985年在乖訛論的基礎(chǔ)上提出的[3]。SSTH對人工智能中的幽默計(jì)算起到了指導(dǎo)作用。SSTH提出的最終目標(biāo)是成為確定和證明文本為幽默的充要條件。語義腳本理論提出將笑話的結(jié)構(gòu)定義分為主體(set-up)與妙語(punch line)兩部分。其中,主體由兩個或兩個以上的解釋(腳本)構(gòu)成,只有一個解釋被呈現(xiàn)出來,而第二個不明顯解釋的妙語以令人意外的方式觸發(fā)產(chǎn)生幽默效果。
基于幽默語義腳本理論,Attardo將笑話表示成五層模式: 表層、語言層、目標(biāo)+情景層、模板層以及基本層,這五層的順序是依據(jù)語言學(xué)中句子的形成從意義到聲音的理論依次排序的[2]。本文定義的笑話框架就是基于這五層定義的。所謂表層就是指最表層的信息,比如標(biāo)點(diǎn)、字詞句等。語言層在語料庫對應(yīng)的是笑話產(chǎn)生的原因,即對應(yīng)的修辭手法。目標(biāo)+情景層在語料庫中以人物以及場景的形式體現(xiàn)?;緦泳褪切υ挵恼Z義信息以及邏輯機(jī)制,跟外界知識相關(guān)聯(lián)的,也是最難攻克的難點(diǎn)之一。
1991年,Attardo和Raskin在SSTH的基礎(chǔ)上提出了語言幽默的一般理論(general theory of verbal humor,GTVH)[4]。相較于SSTH,GVTH包含更多的笑話語言學(xué)源素。GTVH包含了六個不同級的幽默源素,即語言(language, LA)、敘述策略(narrative strategy,NS)、目標(biāo)(target,TA)、場景(situation,SI)、邏輯機(jī)制(logical mechanism,LM)以及腳本對立(script oppostion,SO)。1994年,由Attardo撰寫的專著《幽默語言學(xué)理論》(LinguisticTheoriesofHumor)[5]提出了笑話的同位分離模型(isotopy-disjunction model of jokes,IDM)。IDM模型是對Attardo早期提出理論更為詳細(xì)的一種描述,并沒有在本質(zhì)上有所突破。近年來,幽默本體語義理論(OSTH)也是在乖訛論的基礎(chǔ)上提出、發(fā)展并完善的。本文的工作就是在幽默理論的基礎(chǔ)上開展的。
林語堂[6]最早將英文單詞“humor”音譯為“幽默”,他指出幽默具有“戲謔”性。而笑話作為幽默包含的文體之一,并且國內(nèi)外很多學(xué)者也是在標(biāo)簽為“#joke#”的推文做幽默的相關(guān)工作。所以,本文不對幽默與笑話做區(qū)分。
Attardo[5]指出幽默識別是自然語言處理中一個非常具有挑戰(zhàn)性的課題。笑話識別之所以能夠歸為較高級的人工智能范疇,是因?yàn)樗婕叭祟惖恼J(rèn)知以及相關(guān)的背景知識才能被理解,感到“有趣、好笑”。擁有不同背景知識的人對于同一個笑話的感覺都會不一樣。例如,
妻子: 每次我唱歌的時候,你為什么總要到陽臺上去?
丈夫: 我是想讓大家都知道,不是我在打你。(《避嫌》)
如果沒有一定的背景知識,可能就無法理解這個笑話的主旨是“丈夫”在利用委婉的手段表達(dá)“妻子”唱歌不好聽。計(jì)算機(jī)在處理這段話的時候,并不能理解文字背后的意義,所以幽默計(jì)算必須計(jì)算文本隱性的語義信息。
現(xiàn)在大多數(shù)的幽默識別為二元分類問題,試圖添加一些語言特征來識別幽默與否。最具代表性的是Mihalcea和Strapparava[7]結(jié)合幽默語言學(xué)特征定義了三個幽默特征,即頭韻、反義詞以及俚語,基于這些特征訓(xùn)練了分類器對幽默進(jìn)行識別。類似地,Zhang和Liu[8]設(shè)計(jì)了幾個類別的幽默相關(guān)的特征,這些特征是從目前具有影響力的幽默相關(guān)理論、語言規(guī)范和情感維度推斷出的,并添加了約50個特征到迭代決策樹模型(GBRT)中識別幽默。Taylor和Mazlack[9]基于N-gram統(tǒng)計(jì)語言識別技術(shù)識別雙關(guān)語笑話,為雙關(guān)語是否發(fā)生提供了一個啟發(fā)式的焦點(diǎn)。除了語言特征之外,一些其他研究者還利用語音或多維信號等作為特征。例如,Purandare和Litman[10]分析了聲韻律和語言特征,用來在口語對話期間對幽默進(jìn)行自動識別。目前,很多工作沒有系統(tǒng)地對幽默相關(guān)的特征進(jìn)行擴(kuò)展或解釋。
目前,幽默識別多使用的是傳統(tǒng)的機(jī)器學(xué)習(xí),深度學(xué)習(xí)使用得并不多。基于深度學(xué)習(xí)的幽默研究工作主要代表是Bertero等人[11]。Bertero和Fung從《生活大爆炸》中獲得了相關(guān)劇本,根據(jù)視頻的音頻中的笑聲自動對語料進(jìn)行標(biāo)注,他的主要工作是笑點(diǎn)識別,使用RNN和CNN來預(yù)測劇本中的笑點(diǎn)[11]。實(shí)驗(yàn)結(jié)果表明CNN比RNN的效果更好。Fung等人的另一篇文章[12]使用CNN對對話序列進(jìn)行編碼,然后將其作為LSTM的輸入來預(yù)測劇本中的笑點(diǎn)。
目前的幽默識別處于起步階段,現(xiàn)有的數(shù)據(jù)集也非常少。文獻(xiàn)[7]分別整理了路透社新聞內(nèi)容、諺語以及英國國家語料庫的文本作為負(fù)例構(gòu)建語料進(jìn)行幽默識別任務(wù)。Zhang和Liu[8]等人選取了Twitter中1 500條非幽默推文作為負(fù)例。現(xiàn)有相對標(biāo)準(zhǔn)的幽默數(shù)據(jù)集是基于Mihalcea和Strapparava[7]等人構(gòu)建的16 000條幽默文本。另外,Castro等人[13]選取了Twitter上帶有“jokes”的推文,共有16 488條,非幽默的語料包含新聞、反思、奇怪的事等主題,共22 875條。國外也有一些專門發(fā)布幽默文本的網(wǎng)站,如http: //www.punoftheday.com,該網(wǎng)站主要收集具有雙關(guān)語的幽默文本。
現(xiàn)在國內(nèi)還沒有標(biāo)準(zhǔn)的幽默數(shù)據(jù)集或是語料庫,因此整理并構(gòu)建語料庫迫在眉睫。幽默識別與生成技術(shù)還處于起步階段,尤其是中文幽默的識別與生成研究更是少之又少。本文構(gòu)建中文笑話語料庫的相關(guān)工作,將為中文笑話研究打下堅(jiān)實(shí)的基礎(chǔ)。
整個標(biāo)注過程包括語料收集和處理、自動識別部分標(biāo)注內(nèi)容、人工確認(rèn)自動識別結(jié)果、人工標(biāo)注其余元組部分、一致性檢測、迭代標(biāo)注等幾個過程,如圖1所示。
由圖1可以看出,語料庫的建立過程分為三個階段: 語料收集及準(zhǔn)備工作、標(biāo)注存儲過程和分析及應(yīng)用。第一階段是語料收集及準(zhǔn)備工作,包括收集語料、制定標(biāo)注體系和開發(fā)標(biāo)注工具三部分。第二階段是標(biāo)注存儲過程,分為自動識別標(biāo)題以及提取關(guān)鍵字等、兩人組確認(rèn)、兩人組標(biāo)注幽默機(jī)制和等級及一致性檢測、存儲五個步驟,其中如果一致性檢測不能通過,則由仲裁確認(rèn)。如果一致性檢測通過,存儲后進(jìn)入第三階段,語料庫的分析及應(yīng)用。
語料采集工作需要考慮語料庫的歷時性及共時性,這樣語料庫才能更加客觀、全面、覆蓋面大。所謂覆蓋是指語料和文本在各個不同領(lǐng)域的分布或散布。這些不同領(lǐng)域通常是指由時間軸(反映時代特征)、空間軸(反映地域特征)、學(xué)科軸(反映知識特征)、風(fēng)格軸(反映語體特征)構(gòu)成的四維模型[14]。
從時間軸上看,本文采集的語料包括十年前出版的書籍中的笑話,這滿足了語料庫歷時性;也包括近兩年的書籍、微博、文學(xué)期刊、笑話網(wǎng)站等刊登的笑話,這也符合語料庫的共時性;還包含從人們口口相傳的笑話集錦、微博以及笑話網(wǎng)站近一年更新的笑話作品。從空間軸上,語料中既包含了國內(nèi)的笑話,也包含了國外的笑話,以及帶有阿凡提等明顯民族特色的笑話。從學(xué)科軸上,笑話本身就因?yàn)樽x笑話人的不同,產(chǎn)生笑點(diǎn)的強(qiáng)度不同,這是由于不同人擁有不同的知識背景,對笑話的理解不同。從風(fēng)格軸上,來自書籍上的笑話體裁多樣而且相對比較規(guī)范,從民間收集的笑話并不規(guī)范。
語料庫標(biāo)注是對原始語料進(jìn)行預(yù)處理,使用便于計(jì)算機(jī)存儲以及讀取的標(biāo)注格式結(jié)合笑話本身特殊需求進(jìn)行標(biāo)注。TEI(text encoding initiative)是機(jī)讀語篇的國際信息編碼規(guī)范。TEI標(biāo)注模式是由計(jì)算語言學(xué)學(xué)會(Association for Computational Linguistics,ACL)、文學(xué)與語言學(xué)計(jì)算協(xié)會(Association for Literary and Linguistic Computing,ALLC)和計(jì)算機(jī)與人文科學(xué)學(xué)會(Association for Computers and Humanities,ACH)三家學(xué)術(shù)團(tuán)體共同參與制訂的[15]。目前許多大型語料庫都是基于TEI標(biāo)注準(zhǔn)測的,如“英國國家語料庫” (The British National Corpus)等。
結(jié)合笑話本身簡潔、便于標(biāo)注以及TEI便于計(jì)算機(jī)存儲及讀取等特點(diǎn),本文采用TEI標(biāo)注與自定義標(biāo)注相結(jié)合的方式進(jìn)行標(biāo)注。中文笑話語料庫體系基本框架如下:
JokeModel=([title], [scene],
person,keywords, level, reason, category)
標(biāo)注體系包括以下內(nèi)容: 笑話題目(title)、場景(scene)、人物(person)、關(guān)鍵詞(keywords)、幽默程度(level)、幽默方式(reason)以及笑話類別(category)。上述變量中方括號內(nèi)的title、scene是可選的,其他變量是必選不能為空的。幽默程度表示的是笑話的幽默程度: “1”表示幽默程度最低,“3”表示中等幽默,“5”表示幽默程度最高。變量中的person、keywords取值都是一個集合,即變量中不止包含一個變量。如person=(person1,person2,…,personi,…,relationship),keywords = (keyword1,keyword2,keyword3)。需要說明的是,person中的relationship指的是主要人物間的相互關(guān)系;相互關(guān)系包含師生關(guān)系、 醫(yī)患關(guān)系、情侶關(guān)系、親屬關(guān)系、上下級關(guān)系、朋友關(guān)系以及其他關(guān)系。關(guān)鍵詞序列使用Textrank算法,選取權(quán)重最高的三個詞作為該笑話的關(guān)鍵詞序列。本文使用的是由Mihalcea[16]等人提出的基于PageRank的Textrank算法, 用來提取關(guān)鍵詞。標(biāo)注說明如表1所示。
表1 中文笑話語料庫標(biāo)注說明
從上面標(biāo)注體系可以看出,七元組是對笑話的深度標(biāo)注,顆粒度較細(xì),所需人工成本也較大。所以本文采用半自動的方式完成標(biāo)注,即其中的標(biāo)題、主人公、類別、關(guān)鍵詞序列等利用命名實(shí)體識別等相關(guān)技術(shù)通過機(jī)器自動識別。標(biāo)注者只需要在機(jī)器識別的基礎(chǔ)上修正,能大幅度減少標(biāo)注者的工作量。產(chǎn)生機(jī)制和幽默程度則需要人主觀打分。標(biāo)注軟件如圖2所示。
圖2 標(biāo)注軟件
標(biāo)注工具能很好地提高標(biāo)注的效率,使得準(zhǔn)確率和速度都有一定幅度的提高。完成后的標(biāo)注文件經(jīng)標(biāo)注者確認(rèn)后以XML的形式統(tǒng)一存儲。
本文由九名實(shí)驗(yàn)室的博士研究生與碩士研究生共同完成笑話語料的標(biāo)注工作,分為三個三人組。三人組采取交叉驗(yàn)證的方式進(jìn)行標(biāo)注,其中一人為仲裁。由于每個人的認(rèn)知不同,對笑話的理解程度不同,所以對笑話的理解存在著不同程度的差異。當(dāng)三人組中的二人標(biāo)注相同時,則完成標(biāo)注;如出現(xiàn)分歧的時候,由仲裁者進(jìn)行仲裁。當(dāng)仲裁跟標(biāo)注的二人觀點(diǎn)都不一致時,如果幽默程度出現(xiàn)分歧,則取平均值,即標(biāo)注強(qiáng)度為中間值3。如果對產(chǎn)生機(jī)制產(chǎn)生分歧,則由全組九人討論,最后進(jìn)行投票選擇,票數(shù)多者為最后標(biāo)注,盡量最大程度地保證標(biāo)注的一致性和準(zhǔn)確性。統(tǒng)計(jì)后結(jié)果如圖3所示。
圖3 一致性檢測結(jié)果
由圖3可以看出來,對于人物的標(biāo)注一致性為98.5%,幽默等級為68.5%,幽默產(chǎn)生機(jī)制為81%。笑話等級產(chǎn)生的分歧多,這是由于笑話等級是由人的主觀決定的,是由人所掌握的背景知識所決定的。對于笑話產(chǎn)生機(jī)制,經(jīng)過統(tǒng)計(jì)分析,標(biāo)注者對諷刺/委婉以及反轉(zhuǎn)/諷刺這兩組概念最容易混淆。經(jīng)過進(jìn)一步的討論與確認(rèn),在仲裁最終確認(rèn)后,達(dá)成組內(nèi)一致。
目前收錄的語料包含33 025條笑話,通過統(tǒng)計(jì)共158 074句話,包含了3 083 295字?jǐn)?shù),5 018種字,平均一個笑話包含了4.79句話。與小學(xué)生常用字表*http: //www.chinadmd.com/file/6vas6xrvue3xseoz6zscw-erc_1.html(2 500字)做比較,語料中出現(xiàn)100次及以上的有2 004個字,其中有1 859個字在小學(xué)生常用字表中,占比92.76%;出現(xiàn)50次及以上的字有2 478個字,其中有2 181個字在小學(xué)生常用字表中,占比88.01%。這些數(shù)據(jù)充分地驗(yàn)證了笑話是源于生活、面向大眾的特點(diǎn),說明笑話的受眾很廣,傳播方式很多。
收集的語料中,古代笑話有3 585條,古代笑話是以古代為背景的笑話,并不是傳下來的笑話本身,有些笑話已經(jīng)被人們用白話文復(fù)述;還包括校園笑話、家庭笑話、名人笑話以及職場笑話。具體分布如圖4所示。
圖4 語料庫中各類笑話數(shù)量及其占比
由笑話分類的分布可以看出來,家庭笑話最多,占了語料庫的52%。這是因?yàn)?,笑話的?chuàng)作是無時無刻的,而在我們的日常生活中,家庭占了很大的一部分,所以家庭笑話最多也是可以預(yù)見的。由于每一類笑話的場景、主題等都不相同,所以表2給出了每類笑話出現(xiàn)頻率較大而且比較關(guān)鍵的詞匯。
表2 各類笑話高頻詞
由表2可以看出,每一類別的笑話的高頻詞都不相同。如名人笑話中的高頻詞,阿凡提在我國作為新疆有名的傳說人物,所以帶有新疆特色的名字“依麻目”“巴扎”也成為了高頻詞。阿凡提為傳說人物,人們會在講述其故事的時候帶有古代文化色彩。每個類別下的高頻詞基本都符合該領(lǐng)域的特征。
本文將現(xiàn)代笑話劃分為校園笑話、家庭笑話、笑話以及職場笑話。從高頻詞的分布也可以看出本文對笑話的分類是合理的。校園笑話的高頻詞為“老師、同學(xué)、學(xué)生……”,既符合校園的主題,也證明了本文分類的有效性。
根據(jù)笑話產(chǎn)生的原因,本文將笑話分為諧音、諧義、反語、類比、委婉、諷刺、夸張以及反轉(zhuǎn)八種類別?;谛υ挳a(chǎn)生原因的數(shù)量統(tǒng)計(jì)如圖5所示。
圖5 基于笑話產(chǎn)生原因的各分類笑話數(shù)量
由圖5可以看出,在33 025條笑話中,反轉(zhuǎn)類型的笑話有13 160條,占比39.85%;諷刺類型的笑話有5 493條,占比16.63%;委婉類型笑話有4 720條,占比14.30%;類比類型笑話有2 795條,占比8.46%;諧義類型笑話有2 691條,占比8.15%;夸張類型的笑話有2 277條,占比6.89%;諧音類型笑話有1 319條,占比3.99%;反語類型笑話有570條,占比1.73%。
笑話作為最貼近人們生活的文學(xué)體裁,它具有簡潔性,大多數(shù)能夠揭示生活中乖謬的現(xiàn)象,具有一定的諷刺性和娛樂性等特性。笑話作為幽默的一種體裁,所以幽默識別的一些特征可以借鑒到笑話識別中。本文將從相關(guān)的笑話理論以及語言規(guī)范等方面梳理本文用到的特征。
長度特征(length): 由于笑話體裁的限定,呈現(xiàn)一定的長度特性。笑話雖然具有簡潔的特點(diǎn),但是它會簡單扼要地?cái)⑹鲆患虑?,所以相較于歇后語、諺語又比較長。因此本文采用了文本長度作為特征之一。在長度相差較大的體裁中,特征可以較準(zhǔn)確地區(qū)分笑話與非笑話。
句法特征(syntactic): 由于笑話的不一致性,所以一般會使用句法特征。例如“為什么鳥兒在冬天飛往南方? 走著去太遠(yuǎn)了?!碑?dāng)目標(biāo)文本比較短的時候,句子級的句法分析是不能滿足需求的。本文需要使用詞語級的句法特征,利用詞性占比,使用jieba分詞的詞性標(biāo)注方法,分別計(jì)算了名詞占比、動詞占比、形容詞占比、副詞占比以及代詞占比作為特征。
情感特征(emotion): 除了現(xiàn)有的幽默理論和語言學(xué)特征,笑話本身是具有情感特征的。如“甲: 我救了不少人耶!乙: 哦?說來聽聽。甲: 我落榜了?!保?dāng)甲說到“我救了不少人耶”時候的隱含情感是正向的,當(dāng)故事講到最后甲說“我落榜了”——“落榜”隱含著負(fù)向的情感。這符合笑話的前后不一致性。本文采用徐琳宏[15]等人構(gòu)建的情感詞典為基礎(chǔ),作為計(jì)算笑話的情感特征的基礎(chǔ)。
轉(zhuǎn)折特征(transition): 根據(jù)對中文笑話語料庫的統(tǒng)計(jì)觀察,得到很多笑話都是在最后一句產(chǎn)生笑點(diǎn)的結(jié)論。根據(jù)笑話的這一特征,本文將最后一句默認(rèn)為笑點(diǎn),即產(chǎn)生轉(zhuǎn)折或者有一定的隱含意義的句子。除了最后一句,前面的所有文本作為一部分,最后一句作為另一部分,將二者包含的所有詞的Word2Vec相加求平均作為它們的語義向量,通過相似度差異作為特征。
詞義距離(vocabulary): 本文考慮到在笑話中往往會前后存在沖突,這些沖突一般是由一些詞語造成的,比如“報數(shù)”與“抱樹”語義距離相差很大,因此本文將名詞以及動詞作為產(chǎn)生沖突的候選詞,分別將笑話中的笑點(diǎn)包含的名詞/動詞通過Word2Vec計(jì)算平均詞向量與其他文本包含的動詞平均詞向量計(jì)算距離,作為詞義距離特征。
笑話數(shù)據(jù)集采用中文笑話語料庫中的笑話作為正例,共33 025條。從不同時間軸上包含了不同時代的人、事、物,包括古代笑話、校園笑話、家庭笑話、職場笑話和名人笑話,又在一定程度上包含了當(dāng)下最經(jīng)典、最日常的場景主題。在不同維度保證了正例的多樣性。
本文使用了故事、新聞體裁、諺語/歇后語以及微博四種不同體裁、不同來源的文本作為負(fù)例。從表3的示例可以看出: 四種體裁在長度、敘述手法等方面都不相同。下面將分別對四種體裁的負(fù)例進(jìn)行介紹。
表3 各類負(fù)例示例
故事是文學(xué)體裁的一種,側(cè)重于事件發(fā)展過程的描述。這一特點(diǎn)預(yù)示著大多數(shù)故事不會很短。本文的故事是使用網(wǎng)絡(luò)爬蟲程序從網(wǎng)址1*http: //www.xigushi.com/收集到的,該網(wǎng)址包含了很多類故事,共收集到了6 260篇故事,每篇平均長度為965字。除了該網(wǎng)址中的幽默故事,其他類型的故事都存在于語料中。
諺語是廣泛流傳于民間的言簡意賅的短語,多數(shù)反映了勞動人民的生活實(shí)踐經(jīng)驗(yàn),多是口語形式的通俗易懂的短句或韻語。歇后語是中國勞動人民自古以來在生活實(shí)踐中創(chuàng)造的一種特殊語言形式,是一種短小、風(fēng)趣、形象的語句。諺語以及歇后語也都是貼近人們生活、口口相傳的藝術(shù)瑰寶。本文收集了共1 671條文本,其中歇后語有904條,諺語有767條。
新聞是通過報紙、電臺、廣播等媒體途徑傳播消息的一種文體。本文選取了從網(wǎng)址2*http: //www.ssydt.com/sszz/總結(jié)的從2007年到2017年6月的時政新聞作為負(fù)例。共收集到6 071條新聞體裁類語料。
微博(Weibo),即微型博客(Microblog)的簡稱,也即是博客的一種,是一種通過關(guān)注機(jī)制分享簡短實(shí)時信息的廣播式的社交網(wǎng)絡(luò)平臺。微博作為當(dāng)代人分享心情、傳播消息最熱門的社交平臺之一,每天有超過1億條微博內(nèi)容產(chǎn)生。本文采用了SMP2016評測任務(wù)的微博語料,共237 801條語料,選取了前30 000條微博語料作為負(fù)例。
本節(jié)利用五類特征分別對笑話與故事、新聞、諺語歇后語以及微博這四類體裁進(jìn)行區(qū)分。實(shí)驗(yàn)采用Logistic Regression算法,用五倍交叉驗(yàn)證的方式進(jìn)行實(shí)驗(yàn)。本文采用準(zhǔn)確率、召回率以及F1值作為評價指標(biāo)。
首先使用6 260篇故事與33 025條笑話構(gòu)成的39 285的數(shù)據(jù)集進(jìn)行幽默識別任務(wù)。雖然故事與笑話都具有一定的情節(jié),但是由于篇幅的不同,使用長度作為特征就可以把二者區(qū)分開。這也進(jìn)一步證明了笑話的簡潔的特點(diǎn),結(jié)果如表4。
表4 以故事類為負(fù)例的實(shí)驗(yàn)結(jié)果
其次,本文使用1 671條歇后語/諺語作為負(fù)例,由于負(fù)例與正例的數(shù)據(jù)明顯不平衡,將33 025條笑話中名人笑話1 874條笑話與該負(fù)例構(gòu)成數(shù)據(jù)集,并進(jìn)行識別任務(wù)。由于各自篇幅的特點(diǎn),實(shí)驗(yàn)采用了長度作為特征,相較與長篇故事,效果更好。由于笑話通常會有一定的情節(jié),而歇后語/諺語是簡單扼要地說明一個問題,一般是通俗易懂的短句或韻語,歇后語/諺語與笑話類型的語料在長度上有天然的分界。實(shí)驗(yàn)結(jié)果如表5。
表5 以歇后語/諺語為負(fù)例的實(shí)驗(yàn)結(jié)果
接著,本文使用收集到的6 071條新聞類語料當(dāng)作負(fù)例,與33 025條笑話構(gòu)成共39 096條數(shù)據(jù)的數(shù)據(jù)集進(jìn)行笑話識別。先使用長度作為特征,但并未取得較好的效果,這說明新聞類的體裁與笑話類體裁的篇幅差距不大。由于新聞類體裁屬于官方文字,所以情感詞語用得不多,本文使用徐琳宏[15]等人構(gòu)建的詞典作為基礎(chǔ),如出現(xiàn)在情感詞典中,則值為1,否則為0。實(shí)驗(yàn)結(jié)果如表6所示,證明了句法特征以及情感特征的有效性。
最后本文采用SMP 2016評測提供的微博中的前三萬條作為負(fù)例,長度特征、句法特征、情感特征依次添加到模型中,結(jié)果如表7所示,證明隨著特征的增加,準(zhǔn)確率、召回率、F1值等都有不同程度的提升,再一次證明了特征的有效性。
表6 以新聞類體裁為負(fù)例的實(shí)驗(yàn)結(jié)果
表7 以微博類體裁為負(fù)例的實(shí)驗(yàn)結(jié)果
本節(jié)分別從故事、歇后語/諺語、新聞以及微博分別構(gòu)建負(fù)例,做笑話識別任務(wù)。由于笑話更貼近人們的生活,具有強(qiáng)烈的情感,所以與其他體裁識別效果明顯。
考慮到不同數(shù)據(jù)集的文本長度分布的不同,僅使用文本長度就可以對笑話與非笑話進(jìn)行區(qū)分,不利于笑話識別工作的開展。針對這個問題,本文從文本長度的角度對正例與負(fù)例進(jìn)行數(shù)據(jù)集重新構(gòu)建,正例來自中文笑話語料庫,負(fù)例來源于故事、新聞體裁、諺語/歇后語以及微博構(gòu)建的負(fù)例集合。長度統(tǒng)計(jì)如表8所示。
表8 正例與負(fù)例在不同長度區(qū)間的分布
基于正負(fù)比例平衡,選取長度大于150小于等于200的笑話作為正例,負(fù)例同樣選取該區(qū)間的文本。最終選取了3 477條正例與4 242條負(fù)例構(gòu)建的數(shù)據(jù)集進(jìn)行幽默識別試驗(yàn)。由于選取了相同的長度區(qū)間的正例、負(fù)例,所以長度不能再作為特征之一。首先采用情感作為特征之一,此時僅僅采用情感詞的多少作為特征是遠(yuǎn)遠(yuǎn)不夠的,將一個樣例中所有的情感詞根據(jù)情感詞典中具有積極情感以及消極情感的詞的打分,取出得分最高以及最低的情感詞,并將其得分相減,作為情感特征。實(shí)驗(yàn)采用了情感特征、句法特征、基于笑話本身的轉(zhuǎn)折特征以及詞義距離訓(xùn)練分類器,笑話識別結(jié)果如表9所示。
表9 等長文本的笑話識別結(jié)果
“人工智能之父”——圖靈在哲學(xué)刊物《思維》(Mind)上發(fā)表了“計(jì)算機(jī)器與智能”的文章,提出了后來經(jīng)典的圖靈測試——交談能檢驗(yàn)智能,如果一臺計(jì)算機(jī)能像人一樣對話,它就能像人一樣思考?,F(xiàn)有的聊天機(jī)器人還處于比較低級的人工智能階段,并沒有通過圖靈測試。目前的聊天機(jī)器人還存在缺少人情味、不能思考等問題。為了使聊天機(jī)器人更智能、更有人情味以及具有幽默感,本節(jié)通過以下幾點(diǎn)分析介紹。
現(xiàn)有的聊天機(jī)器人在笑話儲備問題上不夠完整,比如Siri、微軟小冰等,讓他們講諸如阿凡提這類具有我國少數(shù)民族特色的笑話,他們都不能勝任,因?yàn)樗麄儾话祟愋υ挕V形男υ捳Z料庫包含了多種類、多視角的笑話,可以滿足更多人的需求??梢酝ㄟ^以下幾個方式來滿足用戶的需求:
(1) 利用用戶提供的關(guān)鍵詞,直接搜索,找到對應(yīng)的笑話;
(2) 對于找不到精確匹配的笑話,可以根據(jù)關(guān)用戶提供的關(guān)鍵字與笑話的題目、關(guān)鍵字、場景、分類等依次進(jìn)行相似度計(jì)算,匹配相似度最高的笑話作為輸出。
聊天機(jī)器人想要通過圖靈測試,至少暫時性地讓與它對話的人類認(rèn)為他是一個人而不是一臺機(jī)器,成為一種高級的人工智能。除了使機(jī)器人具有情感、智慧、能夠思考外,還應(yīng)該讓它具有幽默感,能夠理解與它對話的人類幽默的點(diǎn),這將使人工智能向前推進(jìn)一步。如何讓計(jì)算機(jī)擁有幽默感呢?目前國內(nèi)外也有很多研究者在幽默識別的工作中取得了一些進(jìn)展,也使用了很多類特征,使用機(jī)器學(xué)習(xí)方法做識別任務(wù)。也有很多學(xué)者使用了深度學(xué)習(xí)方法。我們?nèi)蘸罂梢酝ㄟ^中文笑話語料庫中標(biāo)注的關(guān)系、場景、關(guān)鍵詞等訓(xùn)練需要識別的文本,抽取相應(yīng)的特征;使用深度學(xué)習(xí)表示方法對該文本深層語義信息進(jìn)行表示,利用深度學(xué)習(xí)網(wǎng)絡(luò)模型將抽取的特征添加到模型中,通過深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)計(jì)算判斷是否為笑話。
聊天機(jī)器人要想實(shí)現(xiàn)高級的人工智能,僅僅能夠理解笑話是不夠的,還需要能夠根據(jù)用戶的需求自動生成笑話。中文笑話數(shù)據(jù)庫的構(gòu)建為笑話生成技術(shù)帶來了可能。笑話的生成是聊天機(jī)器人通過用戶的輸入以及笑話產(chǎn)生的機(jī)制自動化地生成笑話的過程。在NLP領(lǐng)域中,生成技術(shù)一直以來都是一個難點(diǎn),尤其笑話生成是基于人的認(rèn)知的高難度難題,它既需要深度理解文本中的語義,也需要對背景知識以及相關(guān)文化有所了解。林鴻飛[17]等人提出一種基于深度學(xué)習(xí)的幽默生成框架,今后可以參照該框架結(jié)合中文笑話語料庫自身的特點(diǎn),最終實(shí)現(xiàn)笑話生成技術(shù)。
笑話生成技術(shù)中的輸入為用戶提供的文本,根據(jù)上下文的對話提取關(guān)鍵信息,如關(guān)鍵詞、場景、人物關(guān)系以及雙關(guān)語等,利用深度神經(jīng)網(wǎng)絡(luò)模型對關(guān)鍵詞進(jìn)行深層語義挖掘表示,與中文笑話語料庫中的笑話中的高頻詞進(jìn)行相似度計(jì)算,取出相似度最高的高頻詞與笑話對應(yīng)的關(guān)鍵詞進(jìn)行替換,形成候選笑話文本集合,依次根據(jù)笑話識別技術(shù)判斷其是否好笑,好笑的文本則作為輸出。
在幽默計(jì)算對語料資源的迫切需求下,本文構(gòu)建了大規(guī)模笑話語料庫。目前已經(jīng)完成了第一階段的標(biāo)注,包括33 025條笑話。本文通過對中文笑話語料庫的分析,總結(jié)了許多笑話內(nèi)部的特點(diǎn)。通過與小學(xué)生常用字作對比,驗(yàn)證了笑話通俗易懂的特點(diǎn)。通過對高頻詞的歸納,可以總結(jié)出比如“阿凡提”“小明”等名字、“老婆”“老公”等稱呼、“甲”“乙”等代詞多在笑話中出現(xiàn)。在笑話語料庫第一階段初步標(biāo)注的基礎(chǔ)上,本文結(jié)合笑話簡潔、具有一定的情感等特點(diǎn),構(gòu)建了五類特征,并且構(gòu)建了不同的負(fù)例對笑話進(jìn)行識別,從不同的角度驗(yàn)證了特征的有效性。但是,語料庫的構(gòu)建不可能是完美無暇的,我們將在今后的工作中,進(jìn)一步對語料庫進(jìn)行完善修訂,補(bǔ)充更多的數(shù)據(jù);利用語料庫標(biāo)注的信息對反轉(zhuǎn)識別、雙關(guān)識別(諧音/諧義)、反語識別、笑話生成等難題進(jìn)行攻破。