李建華,陳濤,賈旭東,常青玲
(1.五邑大學 智能制造學部,廣東 江門 529020;2.加州州立大學北嶺分校 計算機科學與工程學院,加州 北嶺 91330)
謎語是一種融合了多種語言現象的智趣游戲,猜謎者需要依據謎語所提供的表層信息,分析得出隱藏背后的答案[1].回答謎語是一個具有挑戰(zhàn)性的認知過程,它需要非常復雜的推理能力.隨著智能問答研究的不斷深入,機器自動回答謎語越來越引起研究者的關注.Lin 等[2]首次提出一個回答常識性謎語問答的英文數據集RiddleSense,旨在測試機器進行自然語言理解所必需的能力,但由于語言文化的差異,該數據無法用于中文謎語自動問答任務.Tan 等[3]構建了一個中文漢字字謎數據集,并提出了一種通過從現有的漢字謎語中識別短語和字符之間的隱喻關聯規(guī)則來求解和生成漢字謎語的方法,但該數據集注重漢字的結構,而不是字謎答案的含義.Efrat 等[4]提出了一個基于隱藏交叉字詞的大規(guī)模文字游戲數據集,該數據集主要解決自然語言中文字游戲的歧義問題,兼顧了語言的復雜度和來源的便利性.Lu 等[5]圍繞漢字嵌入模型對漢字進行研究.Han 等[6]研究了漢字特征分解對機器翻譯的影響.Li 和Sun 等[7-8]將每個字符渲染成一個灰度圖像,并將符號特征合并到字符嵌入空間中,使得漢字的文字信息納入預訓練語言模型中.上述研究均是對漢字本身的字形、結構和漢字字謎的生成進行研究,并沒有利用語言模型對漢字謎語問答做出探索,因此,構建一個中文漢字謎語問答數據集,利用現有的自然語言處理技術解決謎語問答問題是十分必要的.
在建立通用智能問答數據集方面,Yang 等[9]提出了WikiQA 開放域問答數據集.Rogers 等[10]對近年來的問答和閱讀理解任務的基準數據集進行了綜述.Huang 等[11]提出了一種常識問答數據集COSMOS QA.Talmor 等[12]提出了CommonsenseQA 數據集.常識問答數據集里的問答描述比謎語更容易理解和推理,解答謎語不僅需要常識,還需要逆向思維.一般的常識性問題會引導讀者找到正確的答案方向,而謎語往往會故意誤導人類.此外,機器還需要理解謎語語言的比喻和模糊效果,與常識問答相比,解答謎語更加困難.隨著智能問答模型在通用問答數據集和常識問答數據集上的性能越來越好,難度更高的謎語智能問答也越來越引起大家的關注.
因此,構造一個大規(guī)模多類型的中文謎語數據集,對于彌補現有中文謎語數據集的缺失,推動中文謎語智能問答的發(fā)展具有重要意義.本文擬提出一個中文大規(guī)模多類型謎語問答數據集及其構建方法,希望該謎語數據集能夠作為衡量智能問答模型對語言文字和常識的深層理解能力的基準數據集被使用,也希望通過本文提出的數據集構建方法能夠構建出更多質量更好的謎語數據集,推動中文謎語自動問答的發(fā)展.
本節(jié)分兩個步驟介紹創(chuàng)建中文大規(guī)模謎語問答數據集(以下簡稱MDRiddle 數據集①https://github.com/canwuying/MDRiddle)的方法,第一步收集與整理謎語,第二步生成人工與機器相結合的干擾選項.
漢謎網②漢謎網:http://www.cmiyu.com/、語文迷③語文迷網:https://www.yuwenmi.com/my/和便民查詢網站④便民查詢網:https://naojinjizhuanwan.bmcx.com/上包含了大量不同類型的謎語,種類包含動植物謎語、腦筋急轉彎、數字和漢字等謎語.本文從這些網站上爬取了20 989 對中文謎語問題答案對.爬取的數據包含許多噪聲,例如一些字詞的錯誤拼寫、亂碼、重復數據等.通過對數據進行清洗得到18 066 條干凈的謎語.另外還有一類謎語屬于多種類型謎語的問題,處理方式是把它歸類于某一類謎語,例如“什么字永遠也寫不好?——孬”既屬于腦筋急轉彎謎語也屬于漢字謎語,根據腦筋急轉彎的特性把這種謎語歸類于腦筋急轉.又如“旭日東升——9(九)”既屬于漢字謎語又屬于數字謎語,謎題答案更側重數字就歸類于數字謎語.此外對于漢字謎語中不同的謎語問題對應同一個漢字的情況,本文把它們算作不同的漢字謎語,因為它們對同一個漢字的描述是完全不同的,例如“出口國外——回”和“洞中有洞,孔中有孔——回”,雖然謎底均為“回”字,但謎題描述不同,則不算作重復謎語,在第4 節(jié)統計了漢字謎語出現頻次較高的謎題.最后得的18 066 條謎語問答對,其中中文腦筋急轉彎1 000 條,中文數字謎語300 條,漢字謎語16 766 條.
由于謎語問答既需要常識知識,同時又要具有反常識思維,因此,無論對人還是機器,在沒有參考范圍的情況下,僅閱讀謎語中的問題直接回答謎語是十分困難的.前期實驗表明當前主流問答模型在MDRiddle 數據集上的性能過低,無法充分發(fā)揮數據集的價值.為了降低任務的難度,本文采用選擇題問答的方式來比較人類與問答模型在謎語問題上的推理能力.通過給正確答案添加干擾選項,讓機器從多個選項中選擇一個正確答案,比直接回答問題難度降低了很多.
在選擇題問答任務中,干擾選項是與正確答案相似或相近但又不能是正確答案的答案.例如謎語問答“什么魚不是魚——(A)鯊魚、(B)美人魚、(C)金魚、(D)鱷魚、(E)娃娃魚”中“美人魚”是正確答案,“鯊魚”、“金魚”等其他選項為干擾選項,可以看出“鯊魚”、“金魚”等干擾選項滿足“什么魚”而不滿足“不是魚”這一范疇,而“美人魚”這個答案同時滿足了謎題中是否為“魚”的矛盾.這表明干擾選項在“魚”這個特征上與正確答案一致,區(qū)別在于“不是魚”這一特征.高質量的干擾選項對于多項選擇題回答任務是必不可少的,人工為每個正確答案編寫干擾選項是非常昂貴和耗時的,而機器自動生成的干擾項又往往質量不高.因而,對于大規(guī)模問答數據集來說要獲得高質量的干擾選項是具有挑戰(zhàn)性的[13].
基于上述考慮,本文遵循主流謎語問答數據集(BiRdQA[14]、RiddleSense[2])構造干擾選項的數量,采用人工編寫與機器自動生成相結合的方式為每條謎語產生4 個干擾選項.Zhang 等[14]將干擾項分為全局干擾項和局部干擾項,其中采用Song 等[15]提出的干擾項單詞嵌入的余弦距離與正確答案相近的稱為全局干擾項,考慮到謎語類型的特性和數據集數量多少的原因,本文僅限在腦筋急轉彎數據集上通過人工替換或增減正確答案選項的單詞或通過謎語和常識結合聯想獲得全局干擾項.例如,從謎語“什么東西是你左手能拿而右手不能拿的——(A)腦袋、(B)左手、(C)右手、(D)胳膊、(E)腳”中的正確答案“右手”聯想到“左手”、“腳”、“胳膊”、“腦袋”等人體軀干.局部干擾項是從其他問題的正確答案中提取出來的,例如“扭頭走開——丑”與“提前出發(fā)——選”兩個字謎中的“丑”和“選”互為局部干擾項.
由此可見,全局干擾項往往干擾能力更強,但設計難度也更大,通常需要人工完成.本文主要為1 000 條中文腦筋急轉彎人工設計了共4 000 個干擾項,其中大多數是全局干擾項.為了保證干擾項的可信度和對抗性,人工編寫干擾項時設計了以下規(guī)則:1)干擾項應是人們更容易想到的,容易出錯的;2)與正確答案相似或相近但又不能是正確答案;3)干擾項是限定在一定范圍內與謎題內容是有關聯的.
為了避免生成的干擾選項成為正確答案,本文通過人工檢查、篩選詞匯重疊的干擾選項,例如“星星”和“恒星”可以認為是一樣的,以及一個謎語中存在兩個或兩個以上的正確答案的情況,例如謎語“什么泥不長草——橡皮泥”中,干擾項“跳跳泥”與“橡皮泥”實際上是同一種物品的不同稱呼.在檢查篩選時將類似上述情況的答案人工替換成其他選項.
本節(jié)對MDRiddle 數據集的關鍵數據進行統計和分析.MDRiddle 數據集中各類型謎語占比情況統計如圖1 所示,從圖中可以看出漢字謎語在MDRiddle 數據集中所占比重最大,達到了93%,其次是腦筋急轉彎占比5%,中文數字謎語占比最低,僅為2%.
圖1 MDRiddle 數據集中各類型謎語占比情況統計
此外,對MDRiddle 數據集中各類型謎語問答數據的訓練集、開發(fā)集和驗證集進行了統計,統計結果如表1 所示.其中,各類型數據集中訓練集、開發(fā)集與測試集占比均為8:1:1,,腦筋急轉彎的平均長度和最大長度都遠長于其他類型的謎語,字謎的長度一般較短.由此可見,腦筋急轉彎需要較多文字才能描述清楚,而字謎中提供給解答者的信息含量最少.
表1 MDRiddle 數據集的統計信息
本文的 MDRiddle 數據集的謎底除了中文謎底外還包括少量英文單詞謎底和阿拉伯數字謎底.例如腦筋急轉彎“世界上最長的單詞是什么?——smiles”中正確答案就包含英文單詞.通過觀察1 000 個腦筋急轉彎謎語,只發(fā)現9 個謎語包含跨語言文本.而中文數字謎語和漢字謎語只包含阿拉伯數字和漢字,不存在跨語言問題.
此外,在漢字謎語中,對同一字謎的答案有不同的描述,但它們不是重復的謎語,例如“任人宰割”和“一千”都是以“壬”作為答案.本文統計了答案相同問題描述不同的出現頻率最高的前10 個字,如表2 所示.
表2 MDRiddle 數據集中最常見答案出現頻率統計
BiRdQA[14]和CC-Riddle[16]是與本文最相近的兩個數據集.其中,BiRdQA 包含6 614 個英文謎語和8 751個中文謎語,每個謎語選項都包含對應的維基百科和百度百科的注釋,每個中文謎語的問題包含一個小提示,干擾選項采取人工結合答案庫抽取的方式半自動生成.CC-Riddle 包含34 656 條字謎,其中27 524 條由人工搜集,7 132 條由模型自動生成.本文與上述工作的不同之處在于:1)本文提出的數據集涉及的范圍更廣泛,不僅包含各種除人以外的實體,還包含人的各種動作和器官作為謎底,而BiRdQA 和CC-Riddle 只包含動植物實體、成語和漢字等;2)本文提出的數據集謎語類型更多,包括腦筋急轉彎、中文數字和中文漢字等多種類型,上述兩個數據集均不包含腦筋急轉彎和中文數字謎語,由于每種類型謎語的解答思維方式不同,因而更具有挑戰(zhàn)性;3)本文提出的數據集中的中文漢字謎語包含額外的干擾選項,CC-Riddle 中只包含問題答案對,而BiRdQA 中雖然也包含干擾選項但剔除了答案超過五個單詞或符號的謎語.
本節(jié)采用選擇題問答(選項固定為5 個)的方式對當前主流問答模型在MDRiddle 數據集上的性能進行評估.
準確率是一些選擇題問答任務(如ARC[17]和OpenbookQA[18])常用的評價指標.其計算公式如下:
其中,P表示回答正確的謎語數量,Q表示全部謎語數量,Acc 表示準確率.Acc 值越高,模型效果越好.
給定一個謎題,有5 個不同的答案{c1,…,c5}供選擇,其中只有一個是正確答案,其他都是干擾選項.智能問答模型需要對所有的選擇進行評估,并選擇其中一個作為最終的答案.最近的研究表明,大型預訓練語言模型,如BERT[19]、RoBERTa[20]和ALBERT[21]在很多問答任務上都取得了較好的成績,本文使用上述模型對MDRiddle 數據集進行評測,本實驗所采用的基線及其變種模型有:
1)BERT_base_chinese①https://huggingface.co/bert-base-chinese模型是一個將 BERT 模型在大規(guī)模中文語料預訓練得到的模型,具有12 個Transformer 編碼器層,其中每層具有768 個隱藏單元和12 個自注意力頭,總共有1.1 億個參數,具有較強的中文語言理解能力.
2)Chinese_MACBERT_base②https://huggingface.co/hfl/chinese-macbert-base模型是一個基于BERT 模型框架的中文預訓練語言模型,編碼器層與參數量與BERT 模型一致,訓練數據包含新聞、百科和論壇等多種領域文本,因此在處理多領域、多種風格的文本方面具有較強的泛化能力.
3)Chinese_BERT_wwm_ext③https://huggingface.co/hfl/chinese-bert-wwm-ext模型是基于BERT 模型的改進模型,采用了“whole word masking”(wwm)技術,將整個詞作為一個單元進行mask(不將詞拆分單個字符).這樣做的優(yōu)點是可以更好地處理中文語言中詞語的內部復雜結構和相對固定的詞序.
4)ALBERT_base_chinese④https://huggingface.co/hfl/chinese-roberta-wwm-ext-large模型作為BERT 模型的改進型,訓練數據更多,模型更小,參數更少,在多種NLP 任務上效果更好.
5)Chinese_RoBERTa_wwm_ext_large⑤https://huggingface.co/uer/albert-base-chinese-cluecorpussmall模型采用RoBERTa 模型的架構,使用比原始RoBERTa模型具有更多的訓練數據、更長的序列長度和更多的訓練輪數,采用了和Chinese_BERT_wwm_ext模型一樣的MLM 技術,可以更好地處理中文文本.
本文在Python3.10,Pytorch1.13 環(huán)境下實驗.BERT_base_chinese、Chinese_MACBERT_base、Chinese_BERT_wwm_ext 和ALBERT_base_chinese 的學習率設置為5e-5,批訓練大小為16 Chinese_RoBERTa_wwm_ext_large 學習率設置為3e-5,批訓練大小為8.實驗所有模型訓練迭代次數為20 次,序列最大長度設置為128.本實驗邀請了3 名以中文為母語的研究生進行人工回答謎語實驗,從測試集中隨機篩選200 條謎語,要求他們不能參考任何資料,僅憑自己已有知識回答謎語問題,然后計算3 人的平均準確率作為人類謎語問答的得分.
主流問答模型及人類在 MDRiddle 數據集的實驗結果如表3 所示.從表中可以看出,ALBERT_base_chinese 模型在5 個主流問答模型中表現最好,取得了37.56%的準確率,但與人類解答謎語有77.33%的準確率相比,還存在明顯的差距,這表明現有主流問答模型在解決謎語問答方面還有較大的提升空間.
表3 MDRiddle 數據集的謎語問答實驗結果 %
從3 種不同類型的謎語子集上的結果來看,主流問答模型在腦筋急轉彎上的表現均好于其他兩種類型謎語上的表現.其中,主流問答模型在腦筋急轉彎上的最好成績達到了71.27%,較接近人類的水平,而在中文數字謎語和漢字謎語上的最高準確率分別只有51.72%和39.50%.可能的原因是腦筋急轉彎的平均長度和最大長度都遠長于其他類型的謎語,具有較多的文字描述,使上述基于預訓練的問答模型能夠從預訓練網絡中找的更多的“依據”來回答問題,而中文數字謎語和漢字字謎的長度較短,信息含量最少,基于預訓練的問答模型難以發(fā)揮作用.此外,本文在構造干擾選項時,腦筋急轉彎中的全局干擾選項較多,中文數字謎語和漢字字謎中的局部干擾選項較多,也是一個可能原因.
關于謎語問答中干擾項類型分布,腦筋急轉彎主要采用全局干擾項(約占5%),數字謎語和漢字謎語采用局部干擾項(約占95%).類似物種種類替換與反常識替換這樣的干擾項只存在腦筋急轉彎中,考慮到腦筋急轉彎數據集在MDRiddle 中占比較小,物種種類和反常識替換的干擾項數量更少(分別占MDRiddle 數據集中全部干擾項的約0.4%和1%),因此,物種種類和反常識替換類干擾項對模型影響也會較小.
為了驗證主流問答模型在不同類型謎語上的泛化能力,本文還在MDRiddle 數據集上對主流問答模型進行了跨類型遷移謎語問答實驗.該實驗將不同類型的謎語兩兩組合成訓練集,另一類型數據集為測試集,其中訓練集數量為兩類型謎語組合成一起為1 500 條,測試集受數字謎語數量限制,每個類型為300 條.例如以“腦筋急轉彎+數字謎語”作為訓練集,以“漢字謎語”作為測試集,將腦筋急轉彎和數字謎語混合后,從中隨機的抽取1 500 條輸入到問答模型進行訓練,然后從漢字謎語中隨機抽取300 條謎語對訓練好的模型進行測試.跨類型遷移謎語問答實驗結果如表4 所示.從表中可以看出,目前主流的問答模型在跨類型遷移謎語問答上的效果較差,大多數結果僅比五選一隨機選擇概率(20%)稍高,最好成績也僅有34.21%.由此可見,目前主流問答模型在跨類型遷移謎語問答任務上還有較大的改進空間.
表4 跨類型遷移謎語問答實驗結果 %
考慮到不同干擾項數量對問答模型的影響,本文設計了相關的實驗.該實驗從MDRiddle 中隨機抽取1 300 條謎語問答數據,在每條謎語問答原有的4 個干擾項上分別隨機去除1、2、3 個干擾項和增加1 個干擾項,加上原有4 個干擾項不變的謎語問答數據,將1 300 條數據分別變?yōu)?、2、3、4、5 個不同干擾選項數量的數據集,每個數據集的訓練集和測試集按照8:2 的比例分配,5 種基線方法在上述5 個數據集上的實驗結果如表5 所示.
表5 不同干擾項數量的謎語問答實驗結果 %
從表5 中可以看出隨著干擾項數量從1 增加到5,模型回答謎語問題的能力逐漸減弱,其中干擾項數量從1 增加到4,模型回答謎語問題減弱趨勢較大,干擾項數量從4 到5,模型回答謎語問題減弱趨勢變小.考慮到現有的謎語問答數據集(如RiddleSense、BiRdQA)均采用4 個干擾選項,因此,本數據集在構造時亦選取4 個干擾選項.
下面簡單分析Chinese_RoBERTa_wwm_ext_large 模型在3 種類型謎語問答上的預測錯誤案例.例如,腦筋急轉彎“什么東西越洗越臟——(A)金、(B)木、(C)水、(D)火、(E)土”被模型錯誤預測,該謎語利用了人類的常識知識和發(fā)散的思維方式,對于“什么東西越洗越臟”這個問題,一般人首先不會想到“水”,而是“水”洗什么東西會臟,干擾項是由“水”聯想到中國傳統文化中的其他五行屬性“金”、“木”、“火”、“土”生成的.又如數字謎語“7÷2(猜一成語)——(A)三番五次、(B)接二連三、(C)不三不四、(D)一絲不茍、(E)無獨有偶”,該謎語的解答需要分兩個步驟:首先要算出結果“3.5”;再由“3.5”聯想出這個數既不是“3”也不是“4”;最后得出答案“不三不四”.模型預測的答案是“三番五次”,該選項雖然包含“3”和“5”兩個數字,但不能解釋“3.5”這個答案的含義.最后,漢字謎語“才下眉頭,又上心頭.”要結合漢字的結構知識和漢語文化知識才能答對,謎底是結合謎題的含義將“眉”字里的“目”和“心”字里的“丿”組成“自”這個字.從上述案例中可以看出,目前主流的問答模型要回答上述謎語還是有一定難度的,本文提出的謎語數據集可作為衡量智能問答模型對語言文字和常識的深層理解能力的基準數據集使用.
本文構建了MDRiddle 數據集,然后用幾個主流智能問答模型對該數據集進行了評測.實驗結果表明目前主流問答模型在謎語問答任務上與人類水平差距明顯,還有很大的改進空間,MDRiddle數據集的發(fā)布能夠激發(fā)更多關于謎題的研究,推動中文謎語自動問答的發(fā)展.在未來的工作中,計劃在MDRiddle 數據引入外部知識(百科知識和知識圖譜等),并且為每個謎語問答生成一個思維鏈(Chain of Thought,CoT),也就是從問題到答案的推理過程,使謎語問答模型的解答能夠有更好的可解釋性.