劉青磊,顧小豐
(電子科技大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,四川 成都 611731)
在信息檢索、文本分類、信息抽取、基于實(shí)例的機(jī)器翻譯等各領(lǐng)域中,詞語相似度都有著廣泛的應(yīng)用。劉群[1]把詞語的相似度計(jì)算方法分為兩類:一類是通過統(tǒng)計(jì)語料上下文中詞語之間的相關(guān)性來得到其相似性,另一類是基于某種世界知識(shí)或者分類體系的方法,如Agirre[2]利用WordNet來計(jì)算英語詞語的語義相似度,李峰[3]用《知網(wǎng)》[4]來進(jìn)行漢語詞匯語義相似度方面的研究。
基于《知網(wǎng)》的相似度計(jì)算方法通常是根據(jù)整體相似度可由部分相似度合成而來的思想,通過尋找兩個(gè)詞語義原集合間的最相似元素來進(jìn)行一一匹配,詞語的相似度就等于各匹配對(duì)的加權(quán)均值。由于其計(jì)算的基本單位是一對(duì)一的義原匹配對(duì),因此也就割裂了構(gòu)成詞語的各個(gè)義原間的內(nèi)在聯(lián)系,不能從整體的角度給出客觀的義原匹配選擇,并且由于較多的加權(quán)值和參數(shù),使得最終的結(jié)果或多或少地會(huì)帶有一些主觀因素。
本文從信息論的角度出發(fā),分別對(duì)兩個(gè)義原集合間的共有信息和差異信息進(jìn)行統(tǒng)計(jì),并據(jù)此得出兩個(gè)義原集合的相似度,最終的詞語相似度計(jì)算是以集合為基本單位的。
在《知網(wǎng)》中,是用“概念”來對(duì)漢語中的每一個(gè)詞語進(jìn)行描述和定義的,而構(gòu)成這種概念描述語言的核心詞匯就是“義原”,這里試以“打”的其中一個(gè)義項(xiàng)“weave|辮編”為例,其在《知網(wǎng)》中記錄為:
NO.=015492 W_C=打 G_C=V E_C=~毛衣,~毛褲,~雙毛襪子,~草鞋,
~一條圍巾,~麻繩,~條辮子 W_E=knit G_E=V E_E= DEF=weave|辮編
其中“weave|辮編”就是“義原”,“E_C”的用途在于為消除歧義提供可靠的幫助。根據(jù)義原的上下位關(guān)系和分類特點(diǎn),所有的義原構(gòu)成了層次鮮明的義原森林,這個(gè)義原森林所要表達(dá)的層次分類體系正是接下來我們計(jì)算詞語(句子)相似度的基礎(chǔ)。
我們截取了以“entity|實(shí)體”為根節(jié)點(diǎn)的樹中的一個(gè)分支,并據(jù)此來討論目前幾種主要的義原相似度比對(duì)算法的特點(diǎn)(簡(jiǎn)便起見,下文中都省去了義原中的英語):
圖1 根節(jié)點(diǎn)為“entity|實(shí)體”的樹中的一個(gè)分支
a. 劉群通過計(jì)算兩個(gè)義原(Primitive)節(jié)點(diǎn)之間的路徑長(zhǎng)度來得出兩個(gè)義原的相似度,公式為:
(1)
其中p1和p2表示兩個(gè)義原,Dis(p1,p2)為它們?cè)诹x原層次體系中的路徑長(zhǎng)度,α(1.6)為可調(diào)節(jié)參數(shù)。
b. 李峰在劉群公式的基礎(chǔ)上考慮了義原的層次深度:
Sim(p1,p2)
(2)
其中min(depth(p1),depth(p2))表示p1和p2兩者在義原樹中深度的最小值。
c. Dekang Lin[5]認(rèn)為任何兩個(gè)事物的相似度取決于他們的共性和個(gè)性:
其中,common(E1,E2)表示E1和E2共同擁有的信息量大小,description(E1,E2)表示完整描述出E1和E2所需的全部信息量大小。
在層次體系中層次越深的節(jié)點(diǎn)包含的信息量就越大,那么如何具體的去衡量一個(gè)節(jié)點(diǎn)所包含的信息量有多少呢?由于義原體系是一個(gè)分類體系,子節(jié)點(diǎn)總是父節(jié)點(diǎn)的分類,當(dāng)我們把節(jié)點(diǎn)本身看成是其父節(jié)點(diǎn)不具有的特征集合時(shí),就容易推斷出:子節(jié)點(diǎn)總是擁有其自身和父節(jié)點(diǎn)。以圖1中的節(jié)點(diǎn)“人”為例,它所擁有的信息節(jié)點(diǎn)集合就為:{物質(zhì),生物,動(dòng)物,人},假設(shè)集合里面每個(gè)元素的地位都相同,這里可以簡(jiǎn)單認(rèn)為義原“人”所擁有的信息量為4,此時(shí)引入Dekang Lin公式的內(nèi)涵:
(3)
這里挑選了圖1中的幾組義原來實(shí)驗(yàn)討論公式(1)、(2)、(3)各自的特點(diǎn)。
首先對(duì)比下表1中的前兩行:A中義原深度都為1,B中都為4,從直觀感覺來講,B的相似度顯然要大于A。(1)的結(jié)果對(duì)A和B并沒有區(qū)分度,(2)和(3)表現(xiàn)較好。其原因是在式(1)中只要義原距離即Dis(p1,p2)相等,那么最終結(jié)果就會(huì)相同;而(2)和(3)都考慮了深度。
表1 距離相等時(shí)義原對(duì)的相似度
再來觀察后兩行:C中義原深度都為2,D中 “動(dòng)物”深度為2,“牲畜”為4,從直觀角度來看,D的相似度應(yīng)該要大于C。此時(shí)(2)的結(jié)果都為0.62,已經(jīng)沒有了區(qū)分度,(3)表現(xiàn)依然較好。究其原因,式(2)中的min(depth(p1),depth(p2))只考慮了義原深度中的較小值,而式(3)在進(jìn)行信息節(jié)點(diǎn)統(tǒng)計(jì)的同時(shí)把兩個(gè)義原的深度都考慮了進(jìn)去。同時(shí),細(xì)心的讀者會(huì)發(fā)現(xiàn),式(2)的計(jì)算結(jié)果在數(shù)值上都顯得過于偏大。從整體上講,式(3)的結(jié)果更加合理。
詞語相似度(孤立詞語之間的相似度)在《知網(wǎng)》中體現(xiàn)為描述詞語的概念之間的相似度,用公式表示為:
Sim(W1,W2)=maxSim(S1i,S2j)
(i=1…n,j=1…m)
(4)
其中,詞W1、W2分別有n和m個(gè)義項(xiàng)(概念),S1i為W1的第i個(gè)義項(xiàng),S2j為W2的第j個(gè)義項(xiàng),最終的詞語相似度結(jié)果取W1和W2的各個(gè)義項(xiàng)相似度的最大者。
劉群認(rèn)為描述詞語概念的義原可以分為第一基本義原、其他基本義原、關(guān)系義原和關(guān)系符號(hào)描述義原。李峰把其中的第一基本義原和其他基本義原合成為“直接義原”,關(guān)系義原和關(guān)系符號(hào)義原合成為“間接義原”,通過分別計(jì)算這兩組集合的相似度再經(jīng)過加權(quán)平均來得到整體相似度。
(5)
其中,S1、S2表示兩條概念,n取4(劉群)或2(李峰),βi為權(quán)值調(diào)節(jié)參數(shù),滿足β1,β2…βn之和為1,S1i、S2i分別對(duì)應(yīng)S1和S2的第i個(gè)義原集合。
本文中我們參考李峰的思路,仍然是把義原分割為直接義原和間接義原兩個(gè)集合。
常用的義原集合相似度計(jì)算方法可以分為兩個(gè)步驟:①通過計(jì)算兩個(gè)集合中各個(gè)義原之間的相似度來尋找最優(yōu)匹配(即相似度最大的義原對(duì));②對(duì)各個(gè)義原對(duì)加權(quán)求平均值或是根據(jù)某種條件對(duì)各部分賦權(quán)值后再求和。
這里試以詞“顏色”和“藍(lán)色”為例來說明上述方法:
顏色 { 屬性,顏色 }
藍(lán)色 { 屬性值,顏色,藍(lán) }
A: < 屬性,屬性值 > 0或δ
B: < 顏色,顏色 > 1
C: < 藍(lán),φ> (φ表空值) 0或δ
其中“屬性”、“屬性值”、“藍(lán)”三個(gè)義原分別位于不同的義原樹中,故三者可隨意配對(duì)并且任意兩者之間要么不存在相似度,要么可由數(shù)據(jù)平滑技術(shù)給定為一較小值δ。察看表中三個(gè)配對(duì),A和C都不存在相似度,那么就只有B才對(duì)最終的計(jì)算具有意義。實(shí)際上在義原分類體系中,B中的“顏色”是C中“藍(lán)”的父節(jié)點(diǎn),也就是說B和C擁有的信息量幾乎是相同的,但在合成時(shí),前者起到了決定作用,而后者卻幾乎沒有作用,這顯然是不合理的。
我們認(rèn)為應(yīng)該這樣配對(duì):A <屬性,屬性值>、B <{顏色},{顏色,藍(lán)}>。此時(shí)由分組B可知關(guān)鍵點(diǎn)就在于如何計(jì)算兩個(gè)集合的相似度。我們從整個(gè)集合所包含的信息量出發(fā),把集合包含的所有信息量做為一個(gè)不可分割的整體,在比較兩個(gè)集合的相似度時(shí),不再進(jìn)行元素最優(yōu)匹配,而是把元素所組成的集合視為元素所包含的信息量的集合。根據(jù)上文中我們對(duì)義原信息量的分析可以描述為:
{ 義原1,義原2,…,義原n}={ 義原1信息節(jié)點(diǎn)∪義原2信息節(jié)點(diǎn)∪…∪義原n信息節(jié)點(diǎn) }
這時(shí)計(jì)算兩個(gè)義原集合的相似度就歸結(jié)為計(jì)算兩個(gè)信息量集合的相似度,可以引入和擴(kuò)展公式(3):
Sim(D1,D2)
(6)
其中,D1和D2代表兩個(gè)直接義原集合,其元素個(gè)數(shù)分別為m和n,information(p)表示p在義原分類體系中其自身以及父節(jié)點(diǎn)所包含的信息節(jié)點(diǎn)集合。實(shí)際上,在m=1且n=1時(shí)公式(6)就表現(xiàn)為公式(3)。
間接義原即帶符號(hào)的義原。對(duì)其進(jìn)行的計(jì)算較為簡(jiǎn)單,首先根據(jù)它們所帶的符號(hào)是否相同來進(jìn)行分組(如果沒有與其對(duì)應(yīng)的符號(hào),就與空值對(duì)應(yīng)),再對(duì)各分組分別進(jìn)行義原相似度計(jì)算,整體的相似度計(jì)算結(jié)果就等于各部分的加權(quán)之和。例如:
球迷 {*喜歡,#看,#體育}
歌迷 {*喜歡,#音樂}
A: <喜歡,喜歡>
B: <{看,體育},{音樂}>
其中的分組A可按式(3)計(jì)算、分組B可按式(6)計(jì)算,間接義原與空值的相似度設(shè)為一個(gè)較小值 (本文中取值為0.2)。我們認(rèn)為表中的分組A和B在集合的相似度計(jì)算中所占的地位并不相同,這可以簡(jiǎn)單的取決于分組內(nèi)部的義原數(shù)量。
間接義原集合的相似度計(jì)算公式為:
(7)
公式中I1和I2分別表示兩個(gè)間接義原集合,m為分組個(gè)數(shù),n為兩個(gè)集合中的義原個(gè)數(shù)之和,ni為第i個(gè)分組中的義原個(gè)數(shù),Sim(Ai)表示第i個(gè)分組的相似度。
由于直接義原和間接義原在描述詞語的概念中所起作用和所占地位都不能一概而論,所以概念相似度最終應(yīng)由兩部分加權(quán)計(jì)算后合成而來。根據(jù)式(5)有:
(8)
其中,Sim(D1,D2)表示直接義原集合的相似度,計(jì)算方法由式(6)給出,Sim(I1,I2)表示間接義原集合的相似度,計(jì)算方法由式(7)給出。由于在對(duì)詞語的描述中,不同詞語的間接義原差異會(huì)比較大,經(jīng)過相關(guān)實(shí)驗(yàn)后,權(quán)重調(diào)節(jié)參數(shù)β設(shè)置如上。
常用的句子相似度比對(duì)算法可以分為三類:一類是基于句子的結(jié)構(gòu)和語法特征,如穗志方[6]提出的基于骨架依存結(jié)構(gòu)的句子相似度計(jì)算模型;另一類是根據(jù)句子中的詞類串來進(jìn)行計(jì)算,如王榮波[7]等提出的句子結(jié)構(gòu)相似度計(jì)算方法;最后一類是基于句子語義信息的方法,如張奇[8]等利用《知網(wǎng)》進(jìn)行的比對(duì)算法。
實(shí)際上,上文中對(duì)詞語相似度的計(jì)算方法也極易擴(kuò)展到句子的相似度比對(duì)中去,接下來對(duì)此做一些簡(jiǎn)要介紹。
在進(jìn)行句子相似度比對(duì)時(shí),一些常用的虛詞、介詞等比較的意義并不大,因此這里只考慮名詞、動(dòng)詞、形容詞等實(shí)詞。另外,在計(jì)算前還要對(duì)句子中的多義詞進(jìn)行詞義消歧,使其得到一個(gè)唯一的義項(xiàng)。這里我們先假定已經(jīng)進(jìn)行了詞義消歧(4.2節(jié)介紹)。有兩個(gè)句子:
Sentence1={W1,W2,…Wm}
Sentence2={W1,W2,…Wn}
其中,Sentence1和Sentence2代表句子1和句子2,它們的實(shí)詞個(gè)數(shù)分別為m和n。
在不考慮句子語法特征的情況下,可以把句子看成是詞的集合(Bag of Words),根據(jù)上文中詞語相似度計(jì)算的思想,可以把詞語看成義原的集合,籍此我們也就可以把句子看成是義原的集合;義原又分為直接義原和間接義原,那么一個(gè)句子就分為直接義原集合和間接義原集合兩個(gè)部分;再由公式(3),義原所含的信息量是其包含的信息節(jié)點(diǎn)的集合,最后根據(jù)式(8)有:
Sim(S1,S2)=(1-γ)Sim(D1,D2)+γSim(I1,I2)
(9)
上式中,S1和S2表示兩個(gè)句子,D1、D2分別表示兩個(gè)句子的直接義原集合,I1和I2代表間接義原集合,γ為一可調(diào)節(jié)參數(shù),經(jīng)相關(guān)實(shí)驗(yàn)后調(diào)整為0.2。
實(shí)際上,式(8)是式(9)中兩個(gè)句子詞語個(gè)數(shù)都為1時(shí)的特例,故在本文中我們認(rèn)為句子相似度是詞語相似度的擴(kuò)展,詞語相似度是義原相似度的擴(kuò)展。
詞義消歧有時(shí)也稱為詞義標(biāo)注,其任務(wù)就是確定一個(gè)多義詞在給定的上下文語境中的具體含義[9]。基于《知網(wǎng)》的詞義排歧可以歸類為基于義類詞典的消歧方法,這類方法的基本思想是:多義詞的不同義項(xiàng)在使用時(shí)往往具有不同的上下文語義類。因此,利用《知網(wǎng)》提供的短語搭配“E_C”(第二部分可見)進(jìn)行排歧的基本思路就是:比較該詞所在的上下文環(huán)境和每一個(gè)實(shí)例提供的環(huán)境之間的相似性,可以認(rèn)為語境最相似的實(shí)例所代表的詞語義項(xiàng)就為該詞在給定上下文中的含義。
以“打”為例,打在《知網(wǎng)》中共有28個(gè)義項(xiàng)。對(duì)于歧義句:媽媽給我打了一件毛衣,首先提取出歧義詞的上下文環(huán)境A為:{媽媽,毛衣},再提取出《知網(wǎng)》中各個(gè)搭配實(shí)例的環(huán)境B1,B2,…Bn等,利用上文中的式(9)進(jìn)行A和B的相似度計(jì)算,結(jié)果最大的實(shí)例所在的義項(xiàng)就為該詞的義項(xiàng)。用公式表示為:
S=S(maxSim(A,Bi))i=1,2,…,n
(10)
這里假設(shè)歧義詞在《知網(wǎng)》中有n個(gè)搭配實(shí)例,S代表該詞的義項(xiàng),Bi表示提取出的第i個(gè)實(shí)例環(huán)境,S(maxSim(A,Bi))表示Bi所在的義項(xiàng)。
公式(9)中已經(jīng)假設(shè)每一個(gè)詞都給出了明確的含義,因此,在環(huán)境A和B的提取中,要盡量只提取沒有歧義的詞語,如果必須具有歧義詞,就需要把歧義詞的義項(xiàng)一一代入取其最大值。
這里我們選取出劉群、李素建以及李峰論文中共有的一些詞語,通過對(duì)這些詞語的實(shí)驗(yàn)結(jié)果進(jìn)行比對(duì)分析來討論幾種算法的特點(diǎn)。
表2中第3列為李峰給出的結(jié)果,其文中給出的直接義原計(jì)算公式為:
其中
(11)
表2 詞語相似度實(shí)驗(yàn)數(shù)據(jù)
續(xù)表
在計(jì)算時(shí)我們發(fā)現(xiàn),文中對(duì)<φ,A2i>的深度并未給出明確的說明,例如,在計(jì)算上表中“男人”和“猴子”的相似度時(shí),前者概念為“人,家,男”(多個(gè)義原),后者為“走獸”(僅有一個(gè)義原),最優(yōu)匹配顯然為:<人, beast|走獸>、<φ,家>和<φ,男>。那么<φ,家>和<φ,男>的最小深度和權(quán)重該怎樣計(jì)算,文中并沒有給出相關(guān)說明。籍此原因,在接下來的數(shù)據(jù)分析中,我們把重點(diǎn)放在第4、5、6列。
① “男人”與“女人”,“男人”與“和尚”,“男人”與“經(jīng)理”。在這三對(duì)詞的比較中,第6列可以說是對(duì)第4、5列一個(gè)很好的折衷。
② “跑”與“跳”,“發(fā)明”與“創(chuàng)造”。第5列給出的結(jié)果要低于它們實(shí)際的相似度,原因是并沒有考慮義原的深度。第6列給出的值要高于第3、5列,結(jié)果上較為合理。
③ “珍寶”和“寶石”,“粉紅”和“深紅”,“粉紅”和“顏色”。第5列給出的相似度分別為0.130、0.074 和0.059,顯然低于人們實(shí)際經(jīng)驗(yàn)中的相似度,原因是第5列在計(jì)算時(shí)過于倚重第一個(gè)義原。
④ “醫(yī)生”與“患者”。從意義上講,對(duì)這兩個(gè)詞的相似度衡量實(shí)際上已經(jīng)轉(zhuǎn)移到了對(duì)其相關(guān)性的衡量上。第3、5、6列給出的結(jié)果都較為合理。
從總體上來看,第6列中我們給出的數(shù)據(jù)更為合理,整體上的表現(xiàn)也更加穩(wěn)定。
為了便于手工識(shí)別,我們?cè)谛吕司W(wǎng)主頁上的標(biāo)簽“財(cái)經(jīng)、體育、軍事、教育、房產(chǎn)、天氣、健康、旅游”8個(gè)分類網(wǎng)站中各抽取出20個(gè)句子總共160句(大部分都為各類文章的題目),其中的每一句要么不存在未登錄詞,要么已經(jīng)用《知網(wǎng)》中存在的同義詞來代替未登錄詞;然后我們用手工識(shí)別的方法對(duì)每一類中的20個(gè)句子根據(jù)其相似度分為4類(每一類中有5個(gè)句子);接下來把每一句作為待比對(duì)句,和剩余的所有句子一一比對(duì),分別取比對(duì)后相似度值排序最前的5個(gè)、8個(gè)和10個(gè)句子做為輸出并計(jì)算出結(jié)果中和手工分類中相同的句子數(shù)目correct,那么召回率recall=correct/5。下面表3為幾種方法的實(shí)驗(yàn)結(jié)果。
表3 句子相似度實(shí)驗(yàn)數(shù)據(jù)表
從表3中可見,基于詞形詞序的方法在三種輸出下的提高并不大,其原因是只考慮了句子中相同的詞匯而沒有兼顧語義。第三行中詞義消歧后再進(jìn)行相似度計(jì)算的方法可以說是集成了本文中提出的幾個(gè)主要觀點(diǎn),其結(jié)果明顯優(yōu)于第一、第二種方法,召回率較為令人滿意,這也進(jìn)一步證明了本文中各個(gè)辦法的有效性。
本文提出的詞語(句子)相似度計(jì)算方法是從信息論的角度出發(fā),利用《知網(wǎng)》中提供的義原上下位關(guān)系把義原做為信息節(jié)點(diǎn)的集合,并據(jù)此提出了自已的計(jì)算義原相似度的公式;把構(gòu)成詞語(句子)的所有直接義原看成是一個(gè)大的信息融合了的集合,根據(jù)其共性和個(gè)性來計(jì)算出兩個(gè)集合的相似度,進(jìn)而得到詞語(句子)的相似度;文中還利用新的句子相似度計(jì)算方法提出了一種簡(jiǎn)單直觀的詞義消歧辦法。最后通過實(shí)驗(yàn)和數(shù)據(jù)分析驗(yàn)證了新方法的正確性和實(shí)用性。
[1] 劉群,李素建. 基于《知網(wǎng)》的詞匯語義相似度的計(jì)算[C]//第三屆漢語詞匯語義學(xué)研討會(huì),中國臺(tái)北,2002.
[2] Agirre E, Rigau G. A Proposal for Word Sense Disambiguation using Conceptual Distance[C]//Proceedings of the First International Conference on Recent Advanced in NLP. 1995.
[3] 李峰,李芳. 中文詞語語義相似度計(jì)算——基于《知網(wǎng)》2000 [J]. 中文信息學(xué)報(bào), 2007, 21(3):99-105
[4] 董振東,董強(qiáng). 《知網(wǎng)》[P]. http://www.keenage.com.
[5] Dekang Lin. An Information-Theoretic Definition of Similarity Semantic distance in WordNet [C]//Proceedings of the Fifteenth International Conference on Machine Learning. 1998.
[6] 穗志方. 基于骨架依存樹的語句相似度計(jì)算模型[C]//計(jì)算語言學(xué)文集, 1998, (3):176-184.
[7] 王榮波,池哲儒. 基于詞類串的漢語句子結(jié)構(gòu)相似度計(jì)算方法[J]. 中文信息學(xué)報(bào), 2005, 19(1):21-29.
[8] 張奇,黃萱菁,吳立德. 一種新的句子相似度度量及其在文本自動(dòng)摘要中的應(yīng)用[J]. 中文信息學(xué)報(bào), 2005,19(2):93-99.
[9] 宗成慶. 統(tǒng)計(jì)自然語言處理[M]. 清華大學(xué)出版社, 2008.