段宇光,劉 揚,俞士汶
(1.北京大學計算語言學教育部重點實驗室,2.北京大學元培學院,3.北京大學計算語言學研究所,北京 100871)
在機器智能時代,自然語言的理解和分析具有重要價值.在實現(xiàn)途徑上,大體分為基于知識庫的理性方法和基于語料庫的經(jīng)驗方法.在理性方法方面,《同義詞詞林》(以下簡稱《詞林》)作為漢語知識庫的一個典范代表,由語言學家對漢語中的詞進行劃分、歸類,形成語義上的層級結(jié)構(gòu),在詞義相似度計算[1-3]、實體關(guān)系抽取[4-5]、語義角色標注[6]、文本分類[7]等多種任務(wù)或應(yīng)用中有廣泛影響;在經(jīng)驗方法方面,建立在語料統(tǒng)計分析上的分布式表示也在不斷發(fā)展,早期基于詞共現(xiàn)矩陣獲得詞嵌入表示[8-10],后來通過前饋神經(jīng)網(wǎng)絡(luò)學習詞嵌入的方法成為主流[11],并廣泛應(yīng)用于自然語言處理的多種任務(wù)或應(yīng)用[12-14].
基于知識庫的理性方法,解釋性強,但一般情況下需要針對不同任務(wù)設(shè)計不同算法,在不同領(lǐng)域間的適用性較差.而基于語料庫的經(jīng)驗方法,往往采用無監(jiān)督訓練,自動化程度高,獲得的詞向量可以適用于多種任務(wù).因此,如何將兩者的優(yōu)勢結(jié)合起來,采用經(jīng)驗方法在知識庫中自動地提取詞義信息,最大程度地重復使用已有的人類專家知識,獲得適用于多種任務(wù)的嵌入表示,是一個較新的研究課題.
此前,有研究者注意到將理性知識注入以改善嵌入表示的潛在需求,挖掘WordNet圖結(jié)構(gòu)中簡化的鄰接關(guān)系信息[15]或者參照多部詞典的釋義條目信息[16],以此作為訓練內(nèi)容來獲得詞嵌入表示;也有人關(guān)注如何由已有的詞嵌入表示獲得義素嵌入表示和同義詞集嵌入表示[17],以及通過建立詞嵌入表示到同義詞集的映射來提高詞向量的解釋性[18];另有一些工作希望在語料庫訓練中加入詞義、句法知識以獲得更有效的詞嵌入表示[19];或者采用隨機游走(random walk)方法利用知識庫構(gòu)建偽語料,再通過神經(jīng)網(wǎng)絡(luò)訓練獲得詞嵌入表示[20].這些方法大多是在基于真語料庫訓練詞向量,部分地加入或聯(lián)結(jié)了知識庫中的詞義、句法知識.之后鄰接關(guān)系信息及隨機游走方法對此有所改進,不再依賴于真語料庫的預訓練,但在利用知識庫知識構(gòu)建嵌入表示或構(gòu)建偽語料時采用了相對間接、繁瑣的手段,其生成過程較為復雜.除此之外,針對一般的知識庫資源,目前也沒有相對直接的應(yīng)對策略和解決方法.
本研究使用哈爾濱工業(yè)大學研發(fā)的《詞林》擴展版(http:∥www.ltp-cloud.com/download)為知識本體,提出并展示基于知識庫訓練嵌入表示的偽句式構(gòu)造方法.根據(jù)《詞林》詞義編碼的層級結(jié)構(gòu),將其擴展為詞義描述式并構(gòu)造3類偽句式:義素編碼句式、義素編碼擴展句式、詞編碼句式,以此生成符合理性知識分布規(guī)律的不同的偽語料庫,在此基礎(chǔ)上使用word2vec訓練義素向量及詞向量;考察不同訓練模型、不同窗口大小在不同偽語料庫上的訓練效果,并將獲得的向量分別應(yīng)用于詞義合成、類比推理和詞義相似度計算等自然語言處理任務(wù)上.
《詞林》是由梅家駒編撰的漢語同義詞或相關(guān)詞的劃分、歸類詞庫[21],經(jīng)哈爾濱工業(yè)大學社會計算與信息檢索研究中心擴展后,目前共包含77 343個詞、90 102個義項,這些義項被分為12個大類、95個中類、1 428個小類、4 026個詞群和17 797個原子詞群.其大類編碼為1位大寫英文字母,中類編碼在之后加1位小寫英文字母,小類編碼在之后加2位十進制整數(shù),詞群編碼在之后加1位大寫英文字母,原子詞群編碼在之后加2位十進制整數(shù)并附1位符號對分類結(jié)果作特別說明;符號“=”代表該詞群內(nèi)的不同詞為同義詞,“#”代表該詞群內(nèi)的不同詞為相關(guān)詞,“@”代表該詞群內(nèi)只有一個詞.例如,原子詞群編碼“Aa01A01=”代表具有特定義項的同義詞集{人,士,人物,…}.《詞林》結(jié)構(gòu)與編碼如圖1所示.在下文中,以詞義編碼來泛指以上各類編碼.
圖1 《詞林》結(jié)構(gòu)示意圖
分布式語義是一種數(shù)據(jù)驅(qū)動的語義分析,旨在對語料中的語義相似性進行量化和歸類,它基于Harris[22]提出的著名的分布式假設(shè),即“上下文相似的詞,其語義也相似”.
在此基礎(chǔ)上,Hinton等[23]提出了詞的分布式表示,又稱嵌入表示(embedded representation),其思想源于如下認知看法:詞義或稱概念可以通過刻畫它的各種屬性來高效表示,而這些屬性又同時與多個概念相關(guān)聯(lián),因此,一個概念可以通過這些屬性的激活狀態(tài)來表示.這種表示方法顯著區(qū)別于傳統(tǒng)的獨熱表示(one-hot representation).在形式上,獨熱表示使用向量的一個維度來表示不同的詞,嵌入表示則用低維、稠密的實數(shù)向量來表示所有的詞,如表1所示.嵌入表示將詞之間的語義關(guān)聯(lián)進行了適當?shù)木幋a,使近義詞在大多數(shù)維度上都相近,因而比獨熱表示有更強的表達能力.比如,即使只使用二值表示(即將每一維的取值限定為0或1),長度為n的獨熱表示只能表示n個不同的概念,而嵌入表示則可以表示2n個不同的概念[24].
表1 獨熱表示與嵌入表示對比
語義合成一直是自然語言理解關(guān)注的重點,使用有限單位組合出無限的含義,這是人類可以有效交流的重要原因[25].基于此,不少研究者致力于使用神經(jīng)網(wǎng)絡(luò)訓得的詞向量合成表示短語、句子等更大語言單位的向量[14,26-28].但是,建立在神經(jīng)網(wǎng)絡(luò)模型上的語義合成不易捕獲和解釋,這仍是計算和認知科學中反復探討的一個未解難題[29-30].
此前,有關(guān)語義合成的研究大多將注意力放在詞以上的語言單位上,鮮有學者關(guān)注更基本的語言層級上的語義合成問題.事實上,詞并不是語言中的基本意義單位,文獻[31]中指出,語言中的一個基本語義單位是義位,相當于詞的一個義項表達,通過分解義位可以進一步得到最小的義素單位.比如,男人=“人”ד男性”ד成年”[32],其中,“人”、“男性”、“成年”都是最小的義素單位.基于此,本研究提出一種由詞以下單位進行詞義合成的任務(wù),即由義素向量合成詞向量的測試.在本研究中,將以《詞林》為例衡量該任務(wù),其測試集由《詞林》中的所有詞及其詞義編碼構(gòu)成.
類比推理任務(wù)由Mikolov等[33]提出,目的在于用詞向量來預測句法和語義的關(guān)聯(lián)性.比如,一個標準的表述形式如“男人∶女人∷父親∶wi”,在理想狀態(tài)下,詞wi的詞向量V可通過“男人”“女人”“父親”的詞向量的加、減運算得到,即V(wi)=V(女人)-V(男人)+V(父親).在類比推理任務(wù)中,人工預先給定wi的理想答案,計算給定詞的詞向量與理想詞向量的夾角余弦,以此評價詞嵌入的實際效果.
Chen等[34]給出了類比推理任務(wù)集(https:∥github.com/Leonard-Xu/CWE),其中包含3種類型,共計953組推理,包括:首都與國家506組,州/省與城市175組,親屬關(guān)系272組.在《詞林》中,實際包含該任務(wù)集中的921組,包括:首都與國家506組,州/省與城市175組,親屬關(guān)系240組.
詞義相似度計算是同義詞檢測、歧義消解、信息抽取等任務(wù)或應(yīng)用的基礎(chǔ),其計算方法分為2種[35]:一種是利用語料進行統(tǒng)計分析,將詞頻及分布等情況作為詞義相似度計算的依據(jù)[36],其結(jié)果依賴于選取的語料庫[37],目前常用神經(jīng)網(wǎng)絡(luò)模型獲得詞向量,并依據(jù)夾角余弦計算詞義相似度;另一種方法是通過發(fā)掘知識庫中概念之間的共性與差異性,以此來評估詞義相似度[38],包括基于路徑、特征、信息內(nèi)容和利用概念注釋等不同方法[39].
漢語中,常用的詞義相似度計算任務(wù)集包括MC30(https:∥github.com/huyingxi/Synonyms/blob/master/VALUATION.md)和wordsim297(https:∥github.com/thunlp/SE-WRL/blob/master/datasets/wordsim-297.txt).測試者使用計算模型對測試集中限定的詞對進行相似度評分,并與人工判定標準做比較,通常使用皮爾森相關(guān)系數(shù)r,對模型方法的有效性進行評價.
在《詞林》層級結(jié)構(gòu)中,每一層上的詞義編碼并沒有明確標出詞義的分類特征與取值.但是,在描寫詞義時,每增加一層編碼,客觀上都會對意義表達產(chǎn)生進一步的約束和限定.因此,可以將每層新增的編碼信息視為構(gòu)成詞義的一個新增義素,而低層的詞義編碼中,則包含了此上各層的義素信息.換言之,每個詞義可以等價于一組義素的組合.此外,在《詞林》中,所有的詞都分布在葉子節(jié)點上,其詞義描寫程度一樣,但這并不符合語言事實.實際上,每個詞的語義顆粒度不同,顆粒度大的應(yīng)位于較高層節(jié)點,而顆粒度小的應(yīng)位于較低層節(jié)點.基于以上看法,對《詞林》結(jié)構(gòu)進行調(diào)整.
考慮到位于群首的詞往往能表征該原子詞群的一般含義,其代表程度較高,顆粒度也較大,按如下方法進行《詞林》結(jié)構(gòu)的調(diào)整:由下至上,依次將低層中每個編碼對應(yīng)的首詞匯集起來并掛在上一層的父節(jié)點下,從而使高層編碼也有對應(yīng)的詞集,并通過高層詞集中的所有詞的共性來反映特定編碼的義素信息.最終不同抽象程度的詞均獲得了不同的語義顆粒度描寫.整理后的《詞林》結(jié)構(gòu)如圖2所示.
圖2 調(diào)整后的《詞林》結(jié)構(gòu)示意圖
神經(jīng)網(wǎng)絡(luò)訓練依據(jù)詞在上下文中的分布信息來捕捉詞義,因此,使用該方法在《詞林》中提取詞義,就需要依據(jù)其中的知識描述來構(gòu)造上下文分布合理的偽句子和偽語料庫.
整理后的《詞林》層級結(jié)構(gòu)中共有23 570個節(jié)點,每個節(jié)點代表的概念都不相同.利用每個詞的詞義編碼信息構(gòu)造3類偽句式,即:義素編碼句式、義素編碼擴展句式、詞編碼句式.由于《詞林》中的詞義編碼代表了該層上的概念含義,在造句時,依照層級結(jié)構(gòu)確定編碼和詞的距離具有分布合理性,適合用word2vec模型來訓練義素向量及詞向量.3類偽句式的定義如下,相應(yīng)的示例如表2所示.
表2 《詞林》中不同句式示例
1) 義素編碼句式:根據(jù)義素的編碼構(gòu)造偽句式,每個詞的所有祖先節(jié)點編碼構(gòu)成代表該詞義的義素組合,依據(jù)祖先節(jié)點在層級結(jié)構(gòu)中與該詞的距離,確定該祖先節(jié)點編碼在句中與該詞的距離.句式呈回文數(shù)形,詞前后均有5個編碼,如果編碼不足5個,則將距離該詞最近的編碼復制多次進行占位處理.這樣的造句方式,保證句長固定且前后對稱,同時滿足連續(xù)詞袋(CBOW)方法和跳字(Skip-Gram)方法對窗口詞形式的要求.
2) 義素編碼擴展句式:依據(jù)不同的詞義相似度計算方法,預先對每個詞篩選出和該詞相似度達到特定閾值的近義詞集,并將義素編碼句式中的詞依次代換為其近義詞集中的其他詞,以此擴大偽語料庫的規(guī)模.這種句式實質(zhì)上是借助已有的理性方法,提升近義詞在偽語料庫中的分布相似度,從而使依據(jù)分布信息訓得的詞向量能夠析取近義詞.本研究中采用田久樂等[1]的、呂立輝等[2]、朱新華等[3]提出的詞義相似度計算方法 .比如“人”的近義詞集,如果采用田久樂等[1]的算法,在特定的相似度閾值設(shè)定下,則包括{人,士,人物,人士,人氏,人選,人類,生人,全人類,人口,口,食指,翁}等詞.
3) 詞編碼句式:將義素編碼句式中的每個義素編碼替換為該編碼詞集中的所有詞.在這種句式假定下,每個義素編碼代表的義素信息可以通過該編碼詞集中的所有詞的共性反映出來,也由此代表了該義素信息.這種句式的句長不固定,但前后依然對稱.
Word2vec 模型基于上下文對詞進行概率預測,包括CBOW和Skip-Gram方法,它可以從大量無標的語料庫中學習詞的嵌入表示.其中,CBOW根據(jù)當前詞wi上下文的詞向量表示求和或平均后,直接預測wi;而Skip-Gram則與CBOW對稱,使用當前wi預測其上下文中的每一個詞.
本研究利用gensim自然語言處理庫中的word2vec模塊(https:∥github.com/RaRe-Technologies/gensim),使用CBOW和Skip-Gram方法在3種偽語料庫上進行平行訓練,完全不借助于任何其他真語料庫,并考察不同窗口詞大小對訓練結(jié)果的影響.
值得注意的是,在構(gòu)造義素編碼句式和義素編碼擴展句式時,《詞林》中各層的詞義編碼在偽語料庫中都有分布,并且與詞的出現(xiàn)形成合理的分布關(guān)系,經(jīng)過word2vec模型訓練,可以同時獲得針對《詞林》嵌入表示的義素向量和詞向量.并且本研究也在中文維基百科語料(https:∥dumps.wikimedia.org)上訓練詞向量,用于相關(guān)任務(wù)的效果對比與驗證.
由于《詞林》的詞義編碼中包含了各層的義素信息,詞義等價于一組義素的組合,理論上,可以將一個詞的詞向量替換成一組義素向量的歸一化求和結(jié)果,以此考察義素向量在詞義合成任務(wù)上的表現(xiàn).在本研究中,采取如下公式來計算義素合成的詞向量:
其中,w1為所要計算的詞,si為與詞義相關(guān)的義素,V(x)為義素向量或詞向量,αi為權(quán)重參數(shù).權(quán)重參數(shù)按義素所處的層級位置,采用等比遞減或等比遞增等不同方法,即:αi+1=0.5αi或αi+1=2αi.
通過計算義素向量合成的詞向量和原詞向量的余弦相似度,可以評價詞義合成任務(wù)的有效性.由于多義詞有多種義素編碼表達式,進而生成多種義素合成的詞向量,在任務(wù)評估時,對每個詞對,需取得和原詞向量余弦相似度最高的一組義素合成的詞向量.在該任務(wù)上,本研究使用CBOW和Skip-Gram方法在不同句式、不同窗口詞大小下的訓練結(jié)果如表3所示.
其中,擴展句式取αi+1=0.5αi和αi+1=2αi兩種權(quán)重分配中得分較高的一種,最優(yōu)模型均采用αi+1=0.5αi. 依據(jù)3種相似度計算算法的不同特點,擴展句式的相似度閾值ρ分別定為:ρ[1]=0.89,ρ[2]=0.65,ρ[3]=0.84,訓練中迭代次數(shù)為5,詞向量維度為300,最小詞頻為0,其他參數(shù)取默認值.
從實驗結(jié)果可以看出,Skip-Gram訓練效果普遍優(yōu)于CBOW,較合適的窗口大小為3~4.使用義素編碼句式效果最優(yōu),達到95.84%,表明義素信息實現(xiàn)了成功注入,可以有效地用義素合成的詞向量來表征原詞向量.這也說明《詞林》對詞義的分層描述具有一定的合理性,生成的偽句子在分布上依然保持了這種性質(zhì),經(jīng)訓練獲得的義素向量和原詞向量之間存在合成關(guān)系.在加入了理性算法后,合成效果反而有所下降,可能原因是擴展的句子采用了近義詞,給語料帶來了噪音,這也反過來說明理性算法與知識確實被注入進去了.
總體來說,《詞林》知識的采用,在語義合成任務(wù)上具有顯著優(yōu)勢.
對于類比推理任務(wù),使用CBOW和Skip-Gram方法在不同句式、不同窗口詞大小下訓練得到的結(jié)果如表4所示.
其中,擴展句式取αi+1=0.5αi,擴展句式的相似度閾值ρ同上,訓練模型參數(shù)同上,維基百科語料訓練中的最低詞頻為3,其他模型參數(shù)和偽語料庫相同.
可以看出,Skip-Gram效果更好,最佳句式為義素編碼句式,使用該句式的義素合成的詞向量成績達到94.37%,其效果明顯優(yōu)于原詞向量.該結(jié)果進一步說明,《詞林》知識的采用,可以有效實現(xiàn)詞義合成,并將義素合成的詞向量應(yīng)用于其他任務(wù)上.在模型參數(shù)相同的條件下,在偽語料庫上訓得的詞向量的效果優(yōu)于在維基百科上訓得的詞向量.可能原因在于:與詞單位相比,知識庫中的義素單位不存在歧義,且有不重不漏的特性;此外,《詞林》中的詞義描述式格式整齊,在此基礎(chǔ)上生成的偽句式分布具有規(guī)范性,句式生成過程中可以人為地控制信息分布,減少噪音,而語料庫往往帶有無法消解的歧義和噪音問題.
總體來說,使用新方法獲得的《詞林》嵌入表示在類比推理任務(wù)上具有顯著優(yōu)勢,且普遍優(yōu)于Chen等[34]報道的72.99%的最好效果.
對于詞義相似度計算任務(wù),上述不同來源的詞向量在MC30、wordsim297測試集上的相似度評分,以及與人工判定標準比較的皮爾森相關(guān)系數(shù)r評分,分別如表5和表6所示.
表3 詞義合成任務(wù)評估:義素合成的詞向量與原詞向量的余弦相似度
注:表中3~7表示窗口詞大小,*分別表示采用相應(yīng)文獻中的詞義相似度計算方法進行計算,下同.
表4 類比推理任務(wù)評估:推理詞向量與標準詞向量的余弦相似度
表5 MC30詞義相似度計算任務(wù)評估:r
其中,擴展句式取αi+1=2αi,擴展句式的相似度閾值ρ同上,訓練模型參數(shù)同上,維基百科語料訓練的模型參數(shù)同上.《詞林》中包含wordsim297中的277個詞對,最后評分以這277個詞對為標準,受最低詞頻限制,維基百科訓練結(jié)果中僅包括wordsim297中的 277個詞對,表6中相應(yīng)為這277個詞對上的得分.
在詞義相似度的計算任務(wù)上Skip-Gram效果更好,最佳窗口大小是7.義素合成的詞向量比原詞向量的表現(xiàn)要好,再次證明應(yīng)用《詞林》中的詞義合成性可以提高相關(guān)任務(wù)的性能.加入理性算法的擴展句式后進一步提升了其性能,其中,r最高的是加入了田久樂等[1]提出的相似度計算算法,其義素合成的詞向量達到了84.95%,表明理性方法在訓練過程中被成功注入,在近義詞的嵌入表示中得到了體現(xiàn).考查初始的理性方法,文獻[1-3]中的詞義相似度計算方法在MC30上的r分別為49.39%,74.03%和79.24%,在wordsim297上的r分別為35.53%,34.11%和42.22%,新方法獲得的《詞林》嵌入表示的效果普遍更好,優(yōu)于傳統(tǒng)的知識庫理性方法并可能接近《詞林》知識表示的能力上限.
和維基百科訓練結(jié)果相比,在迭代次數(shù)等模型參數(shù)相同的情況下,新方法獲得的《詞林》嵌入表示在MC30測試集上超過了維基百科,而在wordsim297上則落后于維基百科.此外,有意思的是,和MC30相比,wordsim297上理性方法計算得到的結(jié)果與新方法得到的結(jié)果都表現(xiàn)出隨迭代次數(shù)大致相同的下降趨勢,這或許與MC30選詞特殊及樣本過小等因素有關(guān).
表6 wordsim297詞義相似度計算任務(wù):r
總體來說,在詞義相似度計算任務(wù)上,語料庫上的訓練結(jié)果更加穩(wěn)定.《詞林》嵌入表示在wordsim297上表現(xiàn)不佳,有可能是因為《詞林》知識表示與數(shù)據(jù)本身存在先天的局限性,比如在顆粒度表達問題或者語義分類不合理等.
本研究以《詞林》為知識本體,提出并展示了基于知識庫訓練嵌入表示的偽句式構(gòu)造方法,考察不同訓練模型、不同窗口大小在不同偽語料庫上的表現(xiàn),并分別應(yīng)用于詞義合成、類比推理和詞義相似度計算等自然語言處理任務(wù)上.實驗結(jié)果表明,新獲得的義素向量及詞向量資源CiLin2Vec在不同任務(wù)上都取得了進展或突破.其中,在詞義合成和類比推理任務(wù)上表現(xiàn)突出,準確率達到90%以上,顯示該方法在應(yīng)用上的巨大潛力.本研究也將《詞林》的CiLin2Vec嵌入表示資源發(fā)布在網(wǎng)絡(luò)上(https:∥github.com/ariaduan/CiLin2Vec),以方便科研和業(yè)界驗證、使用、推廣.
在性質(zhì)上,該方法有效復用已有的知識庫資源,利用句式構(gòu)造控制向嵌入表示中注入的理性知識,并借鑒已有的計算方法進行預處理,發(fā)掘理性知識和計算方法結(jié)合的最優(yōu)方式,這些做法易于理解,有很強的解釋性;該方法在訓練過程中完全不使用真語料庫,基于知識庫生成偽語料的方式更加直接、簡便,降低了獲得嵌入表示的復雜度,極大地縮短了訓練周期.
在未來,針對其他各類知識庫,希望探究該方法的通用模型與一般特征,考察知識庫上訓得的詞向量與語料庫上訓得的詞向量的聯(lián)合應(yīng)用,并由此形成對不同資源的知識表示及數(shù)據(jù)特點的評價.這些觀點和方法,也將支持用于描述漢語語素及構(gòu)詞意義的北京大學《漢語概念詞典》的研究與開發(fā).