張艷杰,邵雄凱,劉建舟
(湖北工業(yè)大學計算機學院,湖北 武漢430068)
在基于實例的機器翻譯系統(tǒng)中,一個詞語可以用幾個意思相近或者是相同的詞語進行翻譯,相似度計算的準確性直接影響翻譯結果的正確性;在FAQ自動問答系統(tǒng)中,句子與句子間的相似度能夠使用戶提出的問句迅速地在數據庫中找到匹配問句的答案;在信息檢索中,文本間相似度[1]的計算可以對數據庫中的文本集合進行分類、排序,使檢索結果更加準確。
目前,句子相似度計算從本質上可以劃分為兩種:一種是基于統(tǒng)計的詞語共現方法,即句子的相似度取決于兩個句子中所包含相同詞語的個數,比如北大計算語言所提出的計算方法,這種方法實現簡單,但是在計算句子整體相似度上不夠準確;一種是基于語法與語義信息[2]的,如向量空間模型(Vector Space Model,VSM)、隱含語義標引模型、基于語義理解的模型等,這種方法雖然結合了詞語的語義信息,但是忽略了句子的結構信息。文中綜合兩種方法的優(yōu)缺點,提出了一種基于語義與結構相結合的句子相似度計算方法。
句子相似度[3]是指兩個句子之間的相似程度,是定義在[0,1]之間的一個實數,值越大說明兩個句子的相似程度越高,即相似值為1時表示兩個句子完全相似,相似值為0時表示兩個句子完全不相似。文中的計算方法包含對句子語義相似度的計算和句子結構相似度的計算。
通常,句子被視為詞語的線性序列,詞語語義相似度是計算句子語義相似度的基礎。為計算詞語相似度,文中采用基于董振東先生創(chuàng)建的知網的方法?!爸W”[4]是一個以漢語和英語的詞語所代表的概念為描述對象,以揭示概念與概念之間以及概念所具有的屬性之間的關系為基本內容的常識知識庫。在“知網”中:一個詞語包含多個概念;“概念”又通過“義原”描述,具體實例見表1。
表1 “知網”中詞語描述實例
表1中不同符號所代表的含義也不同,在知網中符號主要分為以下幾類:1)表示語義描述間的邏輯關系,包括,、~、^;2)表示概念之間的關系,包括#、%、$、*、+、&、@、?、??;3)一些無法歸入以上兩類的特殊符號{}、()、[]。以上表中的“BP機”為例,“*LookFor|尋”表示可以將BP機作為“尋找”物品的一種工具,“#cry|喊”表示其與“喊”相關。
義原間有8種關系:上下位、同義、反義、對義、屬性-宿主、部件-整體、材料-成品、事件-角色等關系,最重要的是上下位關系。所有義原的層次體系組成了一個復雜的樹狀結構(圖1),這是計算詞語語義相似度的基礎。
圖1 義原層次樹狀結構圖
由于直接計算兩個義原的相似度比較困難,且義原是相應的義原分類樹上的一個節(jié)點,可將對相似度的計算轉化為義原之間距離的計算。兩個義原P1和P2的語義相似度
其中,α是一個常數,代表相似度是0.5時的詞語距離,取α=1.6,d是P1、P2到共同父節(jié)點的距離。在得到兩個義原相似度計算方法后,兩個漢語詞語W1和W2的相似度為各個概念相似度的最大值,計算方法如下:
其中,S1i是W1的m個概念,S2j是W2的n個概念,sim(S1i,S2j)是義原相似度。
“知網”中詞包括實詞和虛詞,虛詞間的相似度為其對應的句法義原或關系義原之間的相似度[5]。實詞與虛詞之間的相似度為0。實詞用包含基本義原、其他基本義原、關系義原、符號義原四大特征的特征結構描述:
1)第一基本義原描述=基本義原1,描述的是實詞的最基本語義特征;
2)其他基本義原描述={基本義原2,基本義原3,…},描述除第一基本義原外的其他義原集合;
3)關系義原描述=[關系義原=基本義原|具體詞,關系義原=基本義原|具體詞,…],描述語義關系特征;
4)關系符號義原描述=[關系符號={義原|具體詞,義原|具體詞,…},關系符號={義原|具體詞,義原|具體詞,…},…],描述語義關系符號特征。
上文的四個概念相似度分別記為sim1(S1,S2)、sim2(S1,S2)、sim3(S1,S2)、
sim4(S1,S2),則兩個實詞間語義的整體相似度simsem(S1,S2)可表示為
其中,αi是一個可調節(jié)的參數,且α1+α2+α3+α4=1,αi的取值,由其應用的具體領域而定。在計算句子相似度時,第一基本義原反映的是概念最基本的語義特征,因此其權重取值較大,取α1=0.5,α2=0.2,α3=0.17,α4=0.13。得到句中包含詞語的相似度之后,兩個句子S1,S2的相似度可表示為
公式(2)中,m,n是S1,S2中包含的詞語個數,Wi,Wj分別是S1,S2中的詞語。
句子結構復雜,現有技術對句子結構的分析還不夠成熟,難以取得較好的效果,文中對句子結構相似度的計算采用的是句子的表層結構特征,即詞形特征(simW )和句長特征(simL)。句子的詞形相似度采用文獻[6]中使用的方法。句子S1,S2的結構相似度simstru(S1,S2)具體計算公式如下:
使用公式(2)和(3),分別計算出句子S1、S2的語義相似度和結構相似度之后,則兩個句子的整體相似度可以用下式表示:
其中,α+β=1,其值根據具體應用領域而定,在句子相似度計算中,句子的語義信息能更大程度地反映句子的內容,故取α=0.7,β=0.3;same(S1,S2)是S1與S2中包含的相同詞語的個數,len(S1)、len(S2)分別是句子S1、S2中包含的詞語個數。
該算法具體實現步驟如下:
Step 1:調用中科院的分詞工具Ictclas的java接口,對輸入的兩個句子進行分詞,使用本地定義的停用詞詞典,去掉停用詞,將切分后的詞語存入到List<String>中;
Step 2:去掉同一句話中重復出現的詞語,計算兩個句子中相同詞語的個數,并使用公式(2)計算結構相似度;
Step 3:遍歷Step 1得到的詞語,使用公式(1)計算句子語義相似度;
Step 4:得到結構相似度與語義相似度之后,使用(3)計算得到輸入的兩個句子的相似度。
//結構相似度
strusim =2*n/(word1.size()+word2.size())*
(1-Math.abs(word1.size()-word2.size())/(word1.size()+word2.size()));
//語義相似度
forint i=0;i<word1.size();i++){
for(int j=0;j<word2.size();j++){
semsim=semsim+ WordSimilarity.simWord(word1.get(i),word2.get(j));
}
}
semsim =semsim/(word1.size()+word2.size());
sim=0.7*semsim+0.3*strusim;
本實驗系統(tǒng)的開發(fā)語言是Java,環(huán)境是MyE-clipse,選用的測試數據是文獻[7]中由清華大學周強博士提供的句子庫。實驗方法是計算從語料庫中挑選出的各個句子與“愛夸張事實的孩子往往喜歡喜劇”之間的相似度,并比較不同方法得到的相似度。
實驗中計算得到的各個句子間的相似度見表2示,表中第一種方法是文獻[8]中提出的基于同義詞詞林的方法,先使用同義詞判斷兩個句子中包含的所有詞語的相似度,再計算得到句子相似度;第二種是文獻[9]中改進編輯距離(LD,Levenshtein Distance)的方法,對兩個句子進行添加、刪除、修改操作,將一個句子變成另外一個句子,句子間的相似度由編輯操作的次數決定,操作次數越多,句子間相似度越低;第三種即文中的基于語義與結構的句子相似度計算方法。
表2 標題與每個句子的相似度
從表2可以看出,在方法一中,句子2、句子3與句子1的相似度都要低于0.65,且句子7、8與1的相似度接近0.2;在方法二中句子2、3與1的相似度也比較低,而其余幾個句子的相似度則偏高,接近0.3,這兩種方法計算得到的結果與人工理解的自然語義不相符。文中的方法,綜合了語義與結構的分析,得到句子2、3和1的相似度較高,其余句子相似度低于0.11,這與自然理解比較接近,表明此方法是可行的。對實驗結果進行分析,影響句子相似度的主要有以下兩個因素:1)分詞使用中科院的開源項目Ictclas實現,是基于詞典,它的分詞結果和人工分詞存在差距,比如對未登錄詞的識別;2)句子的結構相似度使用詞形和句長特征表示,不夠精確,不同語氣類型的句子帶有一定的隱含意義,如疑問句是提出問題,而反問句則是通過一種疑問的句式表達肯定的觀點等。
句子相似度在信息處理中占有重要的地位,文中的方法相對于單一考慮語義或者是結構的方法在計算結果的準確度和可接受度上有所提高,解決了信息檢索的部分難題。自然語言語義理解豐富,同一個詞語從不同的角度在不同的語境中,意義都有很大不同。基于知網的語義理解運用的是哲學的知識,反映了它對客觀世界的認識和把握。知網系統(tǒng)的形成存在人為的主觀意識,因此不可避免的對語義的理解也會有某些偏差。另外對句子結構相似度的計算目前還只是考慮到了詞形和句長,對詞性、語義距離、句子類型等的研究還不夠,后續(xù)的研究將主要集中在消除詞語語義理解歧義和對句子結構相似度的把握,使句子相似度的計算更加準確。
[1] Lee Ming Che.A novel sentence similarity measure for semantic-basic expert systems[J].Expert System with Applications,2011(38):6 392-6 399.
[2] 舒曉明.基于語義網的個性化信息檢索的研究與實現[D].沈陽:沈陽工業(yè)大學,2011.
[3] 王 品,黃廣君.信息檢索中的句子相似度計算[J].計算機工程,2011,37(12):38-40.
[4] 王 桐,王 磊,吳吉義,等.WordNet中的綜合概念語義相似度計算方法[J].北京郵電大學學報,2013,36(02):98-101.
[5] 劉 群,李素建.基于“知網”的詞匯語義相似度的計算[C]∥第三屆漢語詞匯語義學研討會,中國臺北,2002:59-76.
[6] 何維.基于多示例學習的中文文本表示及分類研究[D].大連:大連理工大學,2009.
[7] 王榮波,池哲儒,常寶寶,等.基于詞串粒度及權值的漢語句子相似度衡量[J].計算機工程,2005,31(13):142-144.
[8] 田久樂,趙 蔚.基于同義詞詞林的詞語相似度計算方法[J].吉林大學學報(信息科學版),2010,28(06):602-608.
[9] 姜 華,韓安琪,王美佳,等.基于改進編輯距離的字符串相似度求解方法[J].計算機工程,2014,40(01):222-227.