陳靖元,周 剛,盧記倉
1(鄭州大學(xué) 中原網(wǎng)絡(luò)安全研究院,鄭州 450000)
2(數(shù)學(xué)工程與先進(jìn)計算國家重點實驗室,鄭州 450000)
詞語相似度計算是自然語言研究中的基礎(chǔ)任務(wù),該任務(wù)的研究直接關(guān)系知識獲取[1]、詞義消歧[2]、信息檢索[3]、機(jī)器翻譯[4]、文本分類[5]等自然語言處理領(lǐng)域中的上層工作[6].
目前學(xué)術(shù)界常見的詞語相似度計算方法可以為兩類[7]:一類是利用大規(guī)模語料來進(jìn)行統(tǒng)計分析,這種做法的假設(shè)是,凡是語義相近的詞語,它們的上下文也應(yīng)該相似[8];另一種根據(jù)某種世界知識或分類體系來計算,通常是基于某個由專家構(gòu)建的完備知識庫中的信息來進(jìn)行詞語相似度計算.表1中將兩類計算策略進(jìn)行簡單對比.
表1 兩類詞語相似度計算方法比較
在英文詞語相似度研究體系中,基于知識庫WordNet[9]的相似度計算已日臻完善,基于信息含量(information content,IC)的計算是主流的方法[10],而在基于信息含量的中文詞語相似度研究體系中,效果比較好詞語相似度計算方法卻并不常見.
針對于目前中文詞語相似度計算體系中基于信息含量的算法研究不足的問題,本文將綜合考慮HowNet信息含量和同義詞詞林[11]信息含量,并使用一種動態(tài)融合策略計算出最終的詞語相似度.
《HowNet》(中文名稱《知網(wǎng)》,以下簡稱知網(wǎng))是董振東父子畢30年之功建立的一個以概念為描述對象的中英文語言常識知識庫.其中包含了由22976條中英文詞條,35202個概念和定義概念所使用的2196個義原(1)http://www.keenage.com.在知網(wǎng)中,義原即最基本、不宜再分割的最小語義單位.
知網(wǎng)中的表現(xiàn)形式由記錄組成,每一條記錄為一個概念,主要包括詞語詞形、詞語例子,詞語情感,詞語詞性和概念定義幾部分.每一個詞可以表達(dá)為一個或多個概念.表2給出知網(wǎng)中“打”的第8個概念的例子.
表2 知網(wǎng)中“打”的第8個概念樣例
概念定義是由語義表達(dá)式來進(jìn)行描述的,按照劉群等人[12]的劃分方法,語義表達(dá)式包含“第一義原描述”,“其他義原描述”,“關(guān)系義原描述”和“關(guān)系符號描述”4種表達(dá)式.語義表達(dá)式中的基本單位為義原,義原通過符號連接在一起形成表達(dá)式.可見,義原是知網(wǎng)體系結(jié)構(gòu)中的最小意義單位,這與我們?nèi)粘1磉_(dá)時使用的最小意義單位的細(xì)粒度有所不同.
有學(xué)者將義原分為“基本義原”,“語法義原”和“關(guān)系義原”3大類,將連接義原用的符號分為“邏輯符號”,“關(guān)系符號”和“特殊符號”.根據(jù)義原的上下位關(guān)系,可以將其組成一個樹狀的層次體系結(jié)構(gòu),如圖1所示.這個體系結(jié)構(gòu)是學(xué)者們進(jìn)行相似度計算和改進(jìn)的基礎(chǔ).
圖1 知網(wǎng)義原層次體系結(jié)構(gòu)
《同義詞詞林》最初是由梅家駒等[11]于1983年構(gòu)建,現(xiàn)代學(xué)者常用的版本為《哈工大信息檢索研究室同義詞詞林?jǐn)U展版》(2)http://ir.hit.edu.cn/demo/ltp/Sharing_Plan.htm(以下簡稱詞林),其中包括了77343 條詞語和90114條概念.詞林以圖2中的樹狀結(jié)構(gòu)將所有詞語編織在一起,這些詞語被分為大類、中類和小類這3種形式中,小類之下又可以細(xì)分為詞群和原子詞群.其中詞群是將小類中的詞語根據(jù)詞語之間的詞義相關(guān)性和詞義相似性進(jìn)行劃分,而原子詞群又在詞群的基礎(chǔ)上進(jìn)行劃分,每個原子詞群中的詞語相關(guān)性很大且詞語語義也基本相同.
圖2 詞林概念層次體系結(jié)構(gòu)
在使用時,詞林以文件的形式存儲在本地,文件中的每一行代表一個原子詞群,包含一個或多個概念,表3展示該文件的部分樣例.
表3 詞林文本存儲樣例
其中每行的前8位表示每個原子詞群的編碼,編碼的意義見表4.編碼位是按照從左到右的順序排列.第8位的標(biāo)記有3種,分別是“=”、“#”和“@”.其中“=”代表“相等”、“同義”;“#”代表“不等”、“同類”,屬于相關(guān)詞語;“@”代表“自我封閉”、“獨立”,表示該詞語在詞典中既沒有同義詞,也沒有相關(guān)詞.
表4 詞林中詞語編碼表
最早的基于信息含量的詞語相似度算法提出于1995年,Resnik[13]在研究中提到兩個詞語的相似度取決于他們的共享信息有多少.在一個具有良好分類層次結(jié)構(gòu)的知識庫中,兩個概念(每個詞可能被表達(dá)為多個概念,不同的概念存在于層級結(jié)構(gòu)的不同節(jié)點上)的共享信息可以通過它們的最近公共父節(jié)點所蘊含的信息含量來度量.基于這種考慮,詞語相似度計算可以分為主要的兩部分:信息含量的計算和基于信息含量的詞語相似度計算.
Resnik[13]將一個概念的信息含量定義見式(1):
ICResnik(C)=-logP(C)
(1)
公式(1)中P(C)為某個概念在給定總體中的出現(xiàn)概率,這個方法可以保證在樹狀結(jié)構(gòu)中隨著節(jié)點的深度增加,某個概念出現(xiàn)的可能性就越低,同時概念所蘊含的信息量就越高,這符合了信息論中的思想.在實際應(yīng)用中,Seco等[14]在公式(1)的基礎(chǔ)上提出基于WordNet信息含量的計算見公式(2):
(2)
sumnodes表示層次體系結(jié)構(gòu)中的節(jié)點總數(shù),hypo(C)表示概念C在層次結(jié)構(gòu)中所有下位節(jié)點的總數(shù)量.公式(2)表明層次越高的概念節(jié)點所蘊含的信息含量越少,但是沒有對于不同深度的節(jié)點具有相同數(shù)量的下位節(jié)點的情況的進(jìn)行區(qū)分.針對此誤差,Zhou等[15]在公式(2)中融入了概念節(jié)點的深度因素,如公式(3)所示:
(3)
deep(C)為概念C在層次結(jié)構(gòu)中的深度,deepmax為層次結(jié)構(gòu)的最大深度.在基于知網(wǎng)信息含量的詞語相似度計算中,由于計算時所用層次結(jié)構(gòu)不同,張波等[16]將式(3)中的深度因素部分修改為線性計算,同時測得當(dāng)k=0.8時效果最佳,如公式(4)所示:
(4)
Resnik[13]提出的基于信息含量的詞語相似度計算公式見式(5):
SimResnik(C1,C2)=IC(LCA(C1,C2))
(5)
LCA(C1,C2)表示概念C1和C2的最近公共父節(jié)點,IC(C)表示概念C的信息含量.沿著信息論的脈絡(luò),Jiang和Conrath[17]結(jié)合式(5)提出了一種通過概念間的語義距離來衡量相似度的方法,該方法可表述為式(6):
DisJ&C(C1,C2)=IC(C1)+IC(C2)-2IC(LCA(C1,C2))
(6)
該方法主要關(guān)注的是兩個概念之間的差異性.彭琪等[18]在此基礎(chǔ)上,根據(jù)詞林拓?fù)浣Y(jié)構(gòu)的特性提出的相似度計算公式如式(7)所示:
(7)
公式(7)中MaxDIFF為詞林中任意兩節(jié)點的最大差異,值為2,MinDIFF為任意兩節(jié)點的最小差異,值為0.與式(7)不同的是,Lin[19]認(rèn)為應(yīng)當(dāng)兼顧概念之間的共性和差異性來計算概念的相似度,計算公式見式(8):
(8)
公式(8)的分子部分代表概念C1和C2的共性,分母部分通過計算兩概念的信息含量之和來代表概念之間的差異性.
知識庫通常是由專家構(gòu)建的完備體系結(jié)構(gòu),在構(gòu)建過程中不可避免地會受專家的主觀影響.本文改進(jìn)朱新華等[20]研究中提到的一種動態(tài)加權(quán)策略綜合考慮兩種算法來得到詞語的相似度,這種融合策略本質(zhì)上可以達(dá)到風(fēng)險平攤的效果.同時,作為語義知識詞典,知網(wǎng)和詞林自身也存在一些完備性問題,即它不可能收錄現(xiàn)實世界中的所有詞匯,所以必然會有一部分詞語在知網(wǎng)或詞林中不存在,從而導(dǎo)致相似度無法進(jìn)行計算,而融合兩個詞典可以擴(kuò)充知識的完備性.在基于知網(wǎng)計算相似度時,本文采用知網(wǎng)義項網(wǎng)[16]作為計算概念信息含量的層次體系結(jié)構(gòu),由于義項網(wǎng)中每個概念的上位節(jié)點數(shù)量隨著深度的增加而呈指數(shù)級增加,下位節(jié)點數(shù)量隨著深度的增加而呈指數(shù)級減少,所以以公式(4)計算知網(wǎng)中每個概念的信息含量,并通過Lin提出的公式(8)來計算兩個概念之間相似度.
在基于詞林計算相似度時,本文使用改進(jìn)的同義詞詞林[18]作為計算概念所用的層次體系機(jī)構(gòu),將可以指代某一事物的概念從原子詞群中抽取出來,并參考WordNet中的層次體系結(jié)構(gòu),并將該概念放置在更高的分類節(jié)點中,使得層次結(jié)構(gòu)中所有的節(jié)點都擁有具體的概念,如表5所示.使用公式(3)計算詞林每個概念的信息含量,經(jīng)MC30數(shù)據(jù)集測試,k在0.85-0.95之間時計算結(jié)果與人工判定值之間的皮爾森相關(guān)系數(shù)最高,本文設(shè)定k=0.9.而在衡量概念相似度時,由于詞林的體系結(jié)構(gòu)更能反映詞語之間的差異性,本文使用式(7)來計算兩概念之間的相似度.
表5 改進(jìn)后的詞林文本存儲樣例
融合算法的總體思想為:對于任意兩個詞語W1和W2,若詞語在知識庫中存在不止一個概念時,計算出兩個詞語所具有的所有概念之間的相似度的最大值,如公式(9)所示:
(9)
其中:C1i,i=1,2,3,…,n為詞語W1中的所有概念,C2j,j=1,2,3,…,m為詞語W2中的所有概念.將基于知網(wǎng)信息含量計算出的相似度記為sim1,基于詞林信息含量計算出的相似度記sim2,然后按照式(10)進(jìn)行加權(quán)融合得出最后的詞語相似度.
SIM=λswin1+(1-λ)sim2
(10)
其中sim1,sim2和λ的值根據(jù)如下的動態(tài)策略進(jìn)行計算:
如圖3所示,記僅被知網(wǎng)收錄的詞語集為A,記僅被詞林收錄的詞語集為B,同時被收錄的詞語集記為C.
圖3 詞語在知網(wǎng)和詞林中的分布圖
1)當(dāng)W1∈C,W2∈C時,sim1和sim2分別為兩詞語基于知網(wǎng)信息含量和詞林信息含量計算出的相似度值.經(jīng)測試,λ=0.4時性能最佳(下文若未經(jīng)強(qiáng)調(diào),默認(rèn)λ=0.4).
2)當(dāng)W1∈A,W2∈A時,令λ=1,即SIM=sim1.同理當(dāng)W1∈B,W2∈B時,SIM=λsim2.
3)當(dāng)W1∈A,W2∈B時,在詞林中查找W2的同義詞集,并將同義詞集中的詞語依次與W1進(jìn)行基于知網(wǎng)的相似度計算,取其中的最大值作為兩個詞語的相似度,記作sim1;在知網(wǎng)中查找與W1最相似度的前n個詞語(本文中n取10),依次與W2進(jìn)行基于詞林的相似度計算,取其中的最大值作為兩個詞語的相似度,記作sim2.
4)當(dāng)W1∈A,W2∈C時,首先對W1和W2進(jìn)行基于知網(wǎng)的相似度計算,結(jié)果記作sim1;在知網(wǎng)中查找與W1最相似度的前n個詞語,依次與W1進(jìn)行基于詞林的相似度計算,取其中的最大值作為兩個詞語的相似度,記作sim2.此時需將參數(shù)λ調(diào)整為0.6.
5)當(dāng)W1∈B,W2∈C時,首先對W1和W2進(jìn)行基于詞林的相似度計算,結(jié)果記作sim2;然后在詞林中查找W1的同義詞集,并將同義詞集中的詞語依次與W2進(jìn)行基于知網(wǎng)的相似度計算,取其中的最大值作為sim1.
對于未登錄詞,本文方法暫不給予考慮.
MC30數(shù)據(jù)集[21]為Miller和Charles在1991年發(fā)布的30對詞語,并取38個專家評價的平均值作為人工判定標(biāo)準(zhǔn),詞對間的相似度值在0~1之間,是目前學(xué)術(shù)界使用最廣泛的詞語相似度測試數(shù)據(jù)集.皮爾森相關(guān)系數(shù)用來評估兩個隨機(jī)變量之間的相關(guān)程度,取值范圍在-1~1之間,值越大表示兩個變量越相關(guān),反之越不相關(guān).本文采用MC30數(shù)據(jù)集作為實驗評測數(shù)據(jù),將本文方法所計算出的詞語相似度值,分別和Seco,Zhou,Resnik,Lin,劉群,張波等人的方法進(jìn)行對比,對比結(jié)果見表6.同時列出了這幾種方法與人工判定值之間的皮爾森相關(guān)系數(shù),見表7.為解釋本文方法所出現(xiàn)的誤差原因,表8列出了本文方法與人工判定值之間的絕對值誤差.
表6 MC30數(shù)據(jù)集相似度計算對比
表7 不同算法與人工判定值之間的皮爾森相關(guān)系數(shù)
表8 本文方法實驗結(jié)果與MC30人工判定值的絕對值誤差
通過上述實驗與結(jié)果對比,可以得出以下結(jié)論:
1)對比表6和表7,可以得出本文采用的基于知網(wǎng)和詞林信息含量的詞語相似度計算結(jié)果與人工判定值之間的皮爾森相關(guān)系數(shù)達(dá)到最高,這證明本文使用的方法較為符合人類的主觀判斷,可以達(dá)到實用水平.
2)對比表8,本文方法與人工判定值誤差較大的幾個詞對依次為“食物-水果”,“兄弟-和尚”,“魔術(shù)師-巫師”,“海岸-海濱”,“庇護(hù)所-精神病院”等.這主要是由于這些詞對即使是真正的專家們來判斷,也很難對它們的相似度值作出統(tǒng)一的判斷.所以我們應(yīng)當(dāng)允許計算結(jié)果與判定值之間存在一定誤差.另外應(yīng)當(dāng)注意的是,MC30數(shù)據(jù)集是由外國學(xué)者選取的單詞,后經(jīng)翻譯選取最相近的中文詞而來,這不可避免地會造成一些認(rèn)知上的誤差.
3)在詞語相似度計算的所有對比實驗中,兩種融合知網(wǎng)和詞林的計算方法總體而言皆可以達(dá)到令人滿意的效果.若我們把所有的人類知識庫作為理想中的數(shù)據(jù),這種融合多詞典的策略本質(zhì)上是一種隨機(jī)抽樣實驗,實驗結(jié)果證明可以達(dá)到減小誤差的效果.
本文充分利用了詞語在不同的體系結(jié)構(gòu)中所包含的信息含量,得到了一種融合知網(wǎng)和詞林的詞語相似度計算方法.該方法的實驗結(jié)果與MC30人工判定值高度相似,說明了本文的方法在實用中可以基本符合人類的主觀判斷.在實驗中我們也發(fā)現(xiàn)了一些詞對與人工判定值之間差異較大,這種情況主要是由于這些詞對本身就容易令人有不同的主觀意見,另外在詞對的翻譯過程中也可能造成誤差.融合多知識庫的算法本質(zhì)上是一種隨機(jī)抽樣算法,可以達(dá)到風(fēng)險平攤的效果,本文初做嘗試,未來將嘗試融合中文概念辭書(CDD)[22],現(xiàn)代漢語語義詞典[23]等知識庫,這樣得到的詞語相似度應(yīng)該能夠具有更可靠的結(jié)果.