陳丹華,王艷娜,周子力,趙曉函,李天宇,王凱莉
1.曲阜師范大學 網(wǎng)絡空間安全學院,山東 曲阜 273100
2.曲阜師范大學 物理工程學院,山東 曲阜 273100
詞語相似度作為自然語言處理的主要研究課題之一,在許多方面都有所涉及,例如文本分類、機器翻譯等[1]。目前詞語相似度計算主要有基于語料庫統(tǒng)計與基于知識兩類方法[2]?;谡Z料庫統(tǒng)計的方法根據(jù)詞匯上下文信息的共現(xiàn)概率計算詞語相似度?;谥R的方法根據(jù)知識庫內部的結構層次進行計算,常用的英文知識庫是WordNet,它是一個組織概念及其關系的語義網(wǎng)絡,當前WordNet詞語相似度計算方法主要有3種[3]:基于路徑的方法、基于信息內容(IC)的方法和基于特征的方法。
基于路徑的方法根據(jù)WordNet內部結構中兩個概念對應節(jié)點之間的最短路徑長度度量相似度,Rada等人[4]、Hirst等人[5]、Wu等人[6]和Liu等人[7]認為節(jié)點路徑越短,相似度越大;基于信息內容(IC)的方法依靠節(jié)點共同的概念信息內容大小度量語義相似性,內容越多概念越相似,Resnik[8]和Lin等人[9]利用IC提出了一系列詞語相似度算法。雖然以上方法易于理解并且實驗效果較好,但只考慮邊的統(tǒng)計信息或IC值,未考慮詞語的語義信息,當兩個概念的最短路徑或IC相同時,相似度通常被認為是相同的[2],會出現(xiàn)明顯的錯誤;基于特征的方法主要將每個概念表示為特征集或特征向量,其中特征來自WordNet的不同屬性,如Gloss和相關術語,根據(jù)集合理論或向量空間,概念的相似性可以轉換為集合重疊或向量相似性。Tversky[10],Petrakis等人[11]和Rodriguez等人[12]認為當兩個概念具有較多的共同特征時,將更加相似;Banerjee等人[13]、Aouicha等人[14]和Patwardhan等人[15]專注于WordNet的Gloss特征,即定義概念含義的簡短術語,用Gloss量化兩個概念的重疊程度進而計算相似度。盡管考慮了詞語概念,但基于特征的方法依靠特征集,并沒有考慮WordNet內部的詞語位置關系,使計算效果較差。
因此本文提出了一種新的WordNet詞語相似度計算方法:利用Word2Vec模型計算WordNet中的詞語相似度。本文首先對WordNet原始數(shù)據(jù)進行預處理,改進其表示形式,構建WordNet語料庫:在WordNet名詞數(shù)據(jù)集中提取具有特定語義關系的同義詞集的標號集,再使用信息排列方法處理標號集;然后使用Word2Vec對WordNet標號集進行向量化處理,利用標號向量的余弦值計算詞語相似度。實驗結果表明本文方法進一步提高了與人工判定值計算取得的Pearson相關系數(shù)指標。
Word2Vec[16]本質是一種簡單的神經網(wǎng)絡模型,通過訓練將文本內容處理簡化為K維向量空間的向量。向量的相似性可用于表示文本的語義相似性,它在情感分析[17]和文本分類[18]中具有良好的性能。詞向量表示有兩種方法:One-Hot表示和分布式表示。當數(shù)據(jù)量很大時,One-Hot表示容易造成維數(shù)災難,并且任何兩個單詞都沒有語義聯(lián)系。分布式表示將特征從高維空間減少到相對低維的空間,不僅解決了維度災難問題,而且挖掘了詞之間的語義聯(lián)系。Word2Vec模型的輸入是One-Hot向量,然后進入多層神經網(wǎng)絡,在神經網(wǎng)絡的訓練過程中,不斷修改參數(shù)并更新權重矩陣,最后獲得了分布式向量,從而使詞之間具有語義關系。
Word2Vec主要使用CBOW和Skip-gram模型[19]進行訓練,包含輸入層、投影層和輸出層,并使用Hierarchical Softmax和負采樣技術來加快訓練過程。如圖1所示,可以看出Skip-gram模型使用中心詞作為輸入來預測周圍的上下文。相比之下,CBOW模型是給定上下文預測中心詞。Hierarchical Softmax[20]在輸出層中使用Huffman樹來加速訓練,輸出層Softmax計算的概率值被替換為Huffman樹來計算單詞出現(xiàn)的概率,降低了時間復雜度。負采樣[21]用于提高訓練速度和改善單詞向量質量,每次選擇一部分樣本進行訓練,然后更新參數(shù),而不是訓練所有數(shù)據(jù),可以大大加快訓練速度。
圖1 Word2Vec模型Fig.1 Word2Vec model
WordNet[22]是一個英語詞匯數(shù)據(jù)庫,它由同義詞集構成,每個同義詞集代表一個不同的概念,并且包含一組相同意義的單詞,若一個單詞有多重語義,那么也會在多個同義詞集中出現(xiàn)[23]。
WordNet還包含同義詞集之間的關系,如上位、下位和整體-部分等,通常由不同的關系指針符號表示。以WordNet 3.0名詞數(shù)據(jù)集為例,表1顯示了同義詞集的關系指針符號表示,例如上位關系用符號“@”表示,下位關系用符號“~”表示等。表2說明了數(shù)據(jù)集每行數(shù)據(jù)即每個同義詞集從左至右排列的編碼格式[24],行首是本概念同義詞集標號,根據(jù)標號即可獲取對應的一組具有相同意義的單詞,隨后是各種標記。值得注意的是,若某行有多個關系指針列表ptr,則本概念同義詞集有多個與之有語義關系的同義詞集,即每行數(shù)據(jù)中包含多個同義詞集標號。數(shù)據(jù)集行數(shù)就是同義詞集個數(shù),也是概念個數(shù)。
表1 WordNet名詞同義詞集的關系指針符號Table 1 Relational pointer symbols of WordNet noun synsets
表2 WordNet名詞數(shù)據(jù)集編碼格式Table 2 Coding format in WordNet noun dataset
圖2給出了WordNet名詞數(shù)據(jù)集片段,例如標號00006269的同義詞集中有一個同義詞life,有兩個與之有語義關系的同義詞集,分別是標號為00004258的上位同義詞集與標號為08010218的下位同義詞集,依據(jù)它們的標號就可以查詢到各自對應的同義詞集。
圖2 WordNet名詞數(shù)據(jù)集片段Fig.2 WordNet noun dataset fragment
目前,WordNet詞語相似度計算方法可分為基于路徑的方法、基于信息內容的方法和基于特征的方法三類,本節(jié)將具體介紹這些方法。
2.2.1 基于路徑的方法
基于路徑的方法通過測量兩個詞語即概念在Word-Net is_a關系分類樹中對應節(jié)點的最短路徑長度來計算詞語相似度,節(jié)點路徑越長,相似度越小。
Rada等人[4]提出了單一路徑算法,利用WordNet中連接兩個概念(c1,c2)的邊所形成的最短通路長度path(c1,c2)計算詞語相似度,公式如下:
其中i代表概念對之間的第i條通路。
Hirst等人[5]的方法中加入了路徑方向,包括上位關系和下位關系等,路徑越長,方向變換次數(shù)越多,相似度越低。
Wu等人[6]考慮了概念對(c1,c2)到最近公共父節(jié)點的最短路徑N1與N2,還考慮了最近公共父節(jié)點在層次結構中的深度H:
Liu等人[7]使用平滑參數(shù)(0<α,β≤1)為概念對(c1,c2)的最短路徑長度L和最近公共父節(jié)點深度H分配各占的比重:
2.2.2 基于信息內容的方法
該類方法是將WordNet中每個概念的信息內容(IC值)作為參數(shù),利用某個概念的下位子圖確定IC值,兩個概念的共享IC值就代表詞語相似度。
Resnik等人[8]首次將IC值用在WordNet詞語相似度計算中,用概念對(c1,c2)的最近公共父節(jié)點LCS(c1,c2)的IC值來展現(xiàn)概念對的相似度:
Lin等人[9]將概念對的共享IC值即IC(LCS(c1,c2))占概念對IC值總和的比例作為詞語相似度:
2.2.3 基于特征的方法
基于特征的方法假設WordNet中的每個概念都有一組指示其特征的屬性,如Gloss(表示概念含義的簡短注釋)。當兩個概念有較多的共有特征而較少的非共有特征時將更相似。
Tversky[10]根據(jù)WordNet的語義關系提取描述概念對的語義特征,特征共性越多,相似度越高。
Petrakis等人[11]認為若兩個概念的同義詞集、Gloss和相鄰概念在詞法上越相似,則概念越相似。
Rodriguez等人[12]將同義詞集、特征和相鄰概念之間的重疊度進行加權求和來衡量詞語相似度:
其中,α、β和γ是權重系數(shù),S是相似度計算方法。
Banerjee等人[13]利用概念對的Gloss中重疊詞的數(shù)量和相鄰概念的Gloss來計算相似度。
Aouicha等人[14]基于is_a分類樹用Gloss集合來表示每個概念,為概念對的Gloss集合中的重疊名詞分配名詞因子(某名詞的同義詞集詞語的IC值之和):
其中,factorc(c1),factor c(c2)是概念c1與c2的Gloss集合中的名詞因子之和,Commonality(c1,c2)是重疊名詞的因子之和。
Patwardhan等人[15]分別為概念對的Gloss和它們的相鄰概念的Gloss創(chuàng)建向量,將相互對應的Gloss向量的余弦值之和作為相似度。
盡管上述方法結果較好,但基于路徑與基于信息內容的方法只考慮路徑或信息內容,忽略了語義信息,不能完全反映詞語相似度;基于特征的方法利用特征集,考慮了語義信息,但缺少了詞語在WordNet結構中的位置關系,因此準確性也會降低。為了改善這些不足,本文綜合考慮詞語的語義信息和位置關系,提出了新的WordNet詞語相似度算法。
針對上文提到的WordNet詞語相似度計算方法存在的問題,本文提出了一種新的詞語相似度算法:使用Word2Vec詞向量模型計算WordNet詞語相似度。計算過程如下:(1)構建基于WordNet的新的語料庫,即提取WordNet名詞數(shù)據(jù)集中具有上位、下位、組成和成員關系的同義詞集標號,用信息排列方法處理后生成的標號集;(2)使用Word2Vec訓練WordNet語料庫生成標號向量;(3)計算向量余弦距離得到詞語相似度。
本文先后構建了兩個用于訓練的WordNet語料庫,分別定義為Set a與Set b,以圖2中標號為00006269和03896233的同義詞集為例,構建過程如下:
步驟1獲取原始數(shù)據(jù)
原始數(shù)據(jù)Setorg為WordNet 3.0中的名詞數(shù)據(jù)集,包含所有名詞同義詞集,表示如下:
示例如下:
其中,N為數(shù)據(jù)集中的名詞同義詞集synset的總個數(shù),也是數(shù)據(jù)集行數(shù)。例如synset1為數(shù)據(jù)集中的第一個同義詞集,synset N為數(shù)據(jù)集中的最后一個同義詞集。
步驟2提取標號集
從原始數(shù)據(jù)中提取兩種有特定語義關系的標號集,分別為Set IDa與Set IDb,提取方法如下:
第一種標號集:
其中,上標代表行數(shù)1至N,ID synset是本概念同義詞集標號,ID@-synset是與同一行中本概念同義詞集有上位關系的同義詞集標號,ID~-synset是與同一行中本概念同義詞集有下位關系的同義詞集標號。所以find a()方法提取原始數(shù)據(jù)每行中的ID synset、ID@-synset和ID~-synset標號,按順序排列后形成N行新數(shù)據(jù),即Set IDa。
第二種標號集:
示例如下:
其中,上標代表行數(shù)1至N,ID synset、ID@-synset和ID~-synset與第一種標號集Set IDa中的標號具有相同意義,ID%p-synset是與同一行中本概念同義詞集有整體-組成關系的同義詞集標號,ID%m-synset是與同一行中本概念同義詞集有整體-成員關系的同義詞集標號。所以findb()函數(shù)提取原始數(shù)據(jù)1至N行中每行的ID synset、ID@-synset、ID~-synset、ID%p-synset以及ID%m-synset標號,按順序排列后形成N行新數(shù)據(jù),即Set IDb。
步驟3標號集處理
使用信息排列方法Ma與Mb分別處理步驟2得到的標號集Set IDa與Set IDb,獲得用于Word2vec訓練的WordNet語料庫Set a與Set b。
M a→Set a:
與原始數(shù)據(jù)相比,標號集沒有了關系指針等標記,只保留了八位十進制數(shù)形式的標號,并且本概念同義詞集標號在每行中的第一個位置。若該行中的關系同義詞集很多,則有一些標號就與第一個標號距離較遠,不能體現(xiàn)兩者的語義關系。因此,M a在每行每個上位詞集標號ID@-synset與下位詞集標號ID~-synset后增加了一個本概念同義詞集標號ID synset,組合成標號集Set a,解決了標號因距離遠不能充分利用語義關系的問題,Set a表示方式如下:
示例如下:
第一種信息排列方法Ma雖然可以解決因標號距離遠而產生的問題,但忽略了WordNet結構是一個大范圍的語義網(wǎng)絡,同義詞集作為基本單位在語義網(wǎng)中有時會相隔較多層[25],為符合語義網(wǎng)中的同義詞集分布形式,Mb在Ma的基礎上改進了標號排列方式,進一步加強了標號對應詞語的位置聯(lián)系,分別對Set IDb中的四種關系同義詞集標號做了以下處理:
對于上位詞集標號ID@-synset,在每個ID@-synset后增加一個本概念同義詞集標號ID synset。表示方式如下:
對于下位同義詞集標號ID~-synset,組成同義詞集標號ID%p-synset以及成員同義詞集標號ID%m-synset,分別在三種標號的左側依次增加ID synset與ID@-synset,在右側依次增加ID@-synset與ID synset。表示方式如下:
示例如下:
使用Mb得到的語料庫讓每一個關系同義詞集(上位詞集除外)的左右兩邊都包含ID synset和ID@-synset,即使WordNet為樹狀結構,它們都能跨越層次限制接收到來自上層的信息。
經過上述三個步驟,獲得了兩種基于WordNet的語料庫Set a和Set b。
本文采用基于Hierarchical Softmax優(yōu)化技術的Skipgram模型(HSS模型)分別訓練語料庫Set a和Set b,將語料庫中的標號轉化為向量,以便計算相似度。HSS模型結構如圖3所示,訓練過程如下:
圖3 HSS模型Fig.3 HSS model
步驟1選擇語料庫,對語料庫進行預處理。
步驟2建立標號字典C ID,計算標號出現(xiàn)頻率。
步驟3根據(jù)標號出現(xiàn)的頻率,在HSS模型輸出層建立一棵Huffman樹[26]。
步驟4輸入層輸入根據(jù)字典C ID生成的中心標號w ID的one-hot向量v ID。
步驟5投影層利用權重矩陣將v ID映射為特定維度的向量。
步驟6輸出層Huffman樹的根節(jié)點對應v ID,葉子節(jié)點對應字典中的任意標號e,且從根節(jié)點到葉子節(jié)點的路徑有且僅有一條,路徑上的每個分支都是一次二分類,左邊是負類,右邊是正類。每次分類產生一個概率p(u ID|w ID),即某個標號u ID成為中心標號w ID上下文的概率,將這些概率累乘,得到中心標號w ID的上下文Context(w ID)出現(xiàn)的概率:
步驟7對每一個樣本(w ID,Context(w ID)),使用隨機梯度上升法最大化目標函數(shù):
不斷更新Huffman樹中的節(jié)點參數(shù)和向量,訓練完畢后得到整個語料庫所有標號的分布式向量。
經過以上步驟,Word2Vec對兩個語料庫Set a與Set b的訓練全部完成,得到了兩種標號向量,用于計算詞語相似度。
得到標號向量后,對于任意兩個詞語t1、t2,計算語義相似度的過程如下:
步驟1在原始數(shù)據(jù)中查詢t1、t2所在同義詞集的標號。由于有些詞語在WordNet中有多種語義,所以會對應多個同義詞集標號。假設t1對應m個標號,t2對應n個標號,則得到m×n個標號對。例如在圖2中,單詞rooster標號為01792158,單詞voyage標號為00312553與00312784,得到2個標號對:(01792158,00312553)、(01792158,00312784)。
步驟2計算每對標號向量的相似度即夾角余弦值cosθ,標號向量分別為v t1與v t2:
其中,1≤i≤m,1≤j≤n,是標號向量的索引值。得到每個標號對的相似度后,選取最大值作為t1與t2的詞語相似度:
經計算,圖2中單詞rooster與voyage的標號對相似度分別為0.14與0.19,取最大值0.19作為最終詞語相似度。
為了充分評估本文提出方法計算詞語相似度的效果,實驗選取了三個公開的詞語相似度評測集,分別是1965年Rubenstein和Goodenough[27]提供的65對名詞的人工判定相似值(R&G-65),1991年Miller和Charles[28]發(fā)布的30對名詞的人工判定相似值(M&C-30),和2014年Taieb等人[29]從兩個不同的生物醫(yī)學數(shù)據(jù)集中提取的38個醫(yī)學名詞對的人工判定相似值(MED38)。上述三種評測集中的詞語都可以在WordNet中找到,并且與WordNet中詞語的詞性相同,均為名詞,評測集統(tǒng)計信息如表3所示,具體介紹了評測集的提出年份、包含的單詞對數(shù)、單詞詞性以及人工評測值的分值范圍。
表3 詞語相似度評測集Table 3 Evaluation datasets for word similarity
實驗評價指標為常用的Pearson相關系數(shù)[30],衡量兩個變量之間的相關性,其計算公式為:
其中,cov(X,Y)為X和Y的協(xié)方差,D(X)與D(Y)分別為X與Y的方差,ρX,Y越大相關性越高。
本文實驗基于Python實現(xiàn),定義計算兩種WordNet語料庫Set a與Set b中詞語相似度的方法分別為method-1與method-2,對應的Word2Vec訓練模型分別為model-1與model-2。
訓練語料庫時,經過多次實驗得出各個語料庫上的模型最優(yōu)參數(shù)配置,如表4所示,初始學習率為alpha,詞向量維度為size,窗口值為window,批處理數(shù)為batch,最低詞頻為min-count,其他參數(shù)均為默認,訓練完成后保存兩個訓練模型以計算詞語相似度。
表4 Word2Vec訓練參數(shù)設置Table 4 Word2Vec training parameters setting
為了全面評估本文提出方法的效果,首先使用method-1與method-2計算出在三個測評集上的詞語相似度,得到Pearson相關系數(shù),然后將Pearson相關系數(shù)對比實驗分為三部分,分別為不同算法、不同詞向量模型和不同語料庫之間的對比。
4.4.1 不同算法之間的Pearson相關系數(shù)對比
為了確保本文方法的有效性,本小節(jié)實驗列出了上文提到的多種詞語相似度算法在測評集上的Pearson相關系數(shù)[29],與本文方法進行了對比,測評集是R&G-65、M&C-30和MED38,對比結果如表5所示。
根據(jù)表5數(shù)據(jù)分析,由于Word2Vec(HSS)模型訓練WordNet語料庫后生成的標號向量不僅具有豐富的詞語語義信息,而且包含了詞語在WordNet結構中的位置關系信息,使得本文提出的方法在整體上優(yōu)于前人提出的方法,并且易于計算。其中,在R&G-65和MED38上都達到了最優(yōu)效果,分別為0.85與0.71。但在M&C-30上略低于Aouicha等人[14]的方法,可能是由于Aouicha等人將每個單詞的IC值作為權重分配給了對應的特征值,概念特征較豐富。
表5 與不同算法的Pearson相關系數(shù)對比Table 5 Comparison of Pearson correlation coefficients with different algorithms
4.4.2 不同詞向量模型之間的Pearson相關系數(shù)對比
為了驗證本文使用Word2Vec詞向量模型的可行性,本節(jié)實驗選擇了兩種常見的詞向量模型作為基線模型,分別為FastText[31]模型與Glove[32]模型,兩種模型使用與model-1相同的實驗設置訓練了Set a,與model-2相同的實驗設置訓練了Set b,然后使用與本文相同的方法計算詞語相似度,最后得出與人工判定值計算的Pearson相關系數(shù)與本文方法對比,測評集仍然為R&G-65、M&C-30和MED38,對比結果如表6所示。
從表6看出,本文使用Word2Vec詞向量模型訓練語料庫的方法在三個測評集上的效果均優(yōu)于另外兩種詞向量模型,說明Word2Vec詞向量模型融合WordNet語料庫進行訓練的方法具有科學性和可行性。
表6 與不同詞向量模型的Pearson相關系數(shù)對比Table 6 Comparison of Pearson correlation coefficients with different word vector models
4.4.3 不同語料庫之間的Pearson相關系數(shù)對比
為了進一步驗證本文構建的WordNet語料庫即標號集的合理性,本小節(jié)實驗采用Mikolov等人[16]使用Word2Vec模型在google-news英文語料上訓練好的詞向量,通過計算詞向量的余弦距離得到測評集單詞對的相似度,進而得到Pearson相關系數(shù),與本文在語料庫Set a、Set b上的計算結果進行了對比。由于google-news側重于新聞數(shù)據(jù),缺少一些醫(yī)學術語,所以使用了R&G-65與M&C-30測評集,對比結果如表7所示。
表7 與不同語料庫的Pearson相關系數(shù)對比Table 7 Comparison of Pearson correlation coefficients with different corpora
由表7數(shù)據(jù)看出,在使用相同詞向量模型Word2Vec的條件下,使用本文構建的語料庫計算出的詞語相似度比google-news英文語料庫更接近人類的判定標準,由此證明本文構建的兩個WordNet語料庫有一定的合理性,語料庫Set a與Set b將文本形式的詞語替換為對應的標號,使詞語語義更加充實,又使用信息位置排列方法增強了標號的位置關系,使最終結果更加合理。
為了解決現(xiàn)有的WordNet詞語相似度計算方法未充分考慮詞語語義信息和位置關系的問題,本文提出了一種使用Word2Vec詞向量模型計算WordNet中詞語相似度的算法。構建WordNet標號集之后,利用Word2Vec模型訓練標號集,然后找到詞語對應的標號后就可通過計算標號向量之間的余弦距離獲得詞語相似度。其中,WordNet標號集語料包含了豐富的詞語信息,信息位置排列方法進一步增強了詞語位置關系,使計算出的詞語相似度更加接近人工評判值,符合實際結果。
在下一步工作中,將繼續(xù)豐富基于WordNet的標號集,考慮其他詞性的同義詞集,優(yōu)化詞向量模型的性能,進一步提高與人工判斷的相關性。此外,嘗試將Word-Net標號向量用于其他自然語言處理技術中。