付鵬斌,陳帥帥,楊惠榮,李建君
(北京工業大學 信息學部,北京 100124)
語義相似度是給定一組文本,評價這一組文本之間內容表達相似程度的量度[1]。語義相似度出自計算語言學領域,目前廣泛應用于自然語言處理中的Web信息可信分析、搜索引擎、Web服務發現、文本聚類研究和標識釋義等領域[2]。
在語義相似度的研究方法中,主要分為基于詞向量的語義距離相似度計算方法和基于語法結構的語義相似度計算方法。其中,基于詞向量的語義距離相似度計算,是將文本中的詞頻轉化為詞向量的形式,然后在詞向量的基礎上計算空間距離的長度,以此來表示文本的語義距離相似度。目前,主流的詞向量轉化方法是TF-IDF(term frequency-inverse document frequency)方法,TF-IDF方法是計算出文本中詞的詞頻集合[3]。而使用TF-IDF方法將中文文本轉化成詞向量,比較不同詞向量在線性空間中的相似度有余弦距離、歐氏距離、概率分布距離(K-L距離)等方法。文獻[4]使用向量空間模型計算文本的語義相似度,使用TF-IDF算法將文本轉化為詞向量,然后將這些詞向量映射到文本向量空間,這樣就將一組文本之間的匹配問題轉化為求向量空間的距離問題。但是,基于向量空間模型的語義相似度只是單純地計算詞向量之間的空間距離,沒有考慮句子中詞語的詞序和句子的結構信息對句子語義的影響。文獻[5]使用基于詞性信息的改進TF-IDF算法去計算每個詞向量之間的權重系數,然后將這些權重系數應用到向量空間和馬爾可夫模型中,分別計算它們的語義相似度,最終獲得整體的語義相似度。但是,文獻[5]沒有精確地反映出每個詞向量之間的語義關聯,如果在詞向量中同時考慮到語義結構,那么該方法在文本語義相似度中有更好的表現。
在基于語法結構的語義相似度計算方法中,應用最廣泛的語法結構是依存句法結構。依存句法是法國語言學家L. Tesnier[6]提出的,這種句法結構將句子的內部成分之間的依賴關系更加清楚地呈現到開發者的面前。語義依存關系能準確反映句子成分之間的搭配關系,李彬[7]利用句子的關鍵依存關系來匹配相似度,但是只使用依存關系中的詞來計算依賴關系的相似性,不能準確地反映句子的內部語義關系。文獻[8]對中文依存句法樹進行研究和分析,提出一種細粒度依存關系的相似度計算方法,該方法基于依存句法樹中的各節點的詞語、詞性以及它們之間的依賴關系及其重要性權重等多個特征值,給出了兩個依存句法結構的相似度計算方法。但是,文獻[8]計算復雜度特別大, 當文本的句長特別大時,消耗的時間較多,影響文本的語義相似度計算的效率。
而目前針對基于依存關系的語義相似度計算方法中,只考慮文本中詞語的詞序信息和句子的結構信息,而忽略文本中單個詞語之間的詞義信息。因此,文中在基于依存關系的語義相似度計算方法的基礎上,增加了基于同義詞詞林的詞語語義相似度計算方法,較好地解決上述問題,彌補以上不足。
定義1:依存關系圖Rs=(Vs,Es),Vs為圖中所有頂點的集合,Es為圖中所有相鄰邊的集合。且滿足條件:?e∈Es,?u,v∈Vs(u≠v),使得e=(u,v)。
依存關系圖是根據標注關系連接分詞的,圖中的每個頂點表示的是一個分詞,子節點表示文本的依存詞,父節點表示文本的中心詞,子節點是依賴于父節點,它們直接使用連接弧來反映它們之間的依存關系。其中依存關系的標志類型有15種[9],如表1所示。

表1 依存句法分析標注關系
《同義詞詞林》[10]是以樹狀的形式將所有的詞語編織在一起,將所有的詞語可以分為大類、中類和小類這三類形式。為了更能細化各個詞語之間的語義關系,《同義詞詞林》將小類又細分為詞群和原子詞群。詞群是將小類中的詞語根據詞語之間的詞義相關性和詞義相似性進行劃分,而原子詞群又在詞群的基礎上進行劃分,每個原子詞群之間的詞語相關性特別的接近而且詞義相似性幾乎相同。根據上述分析,可以將《同義詞詞林》分為5層樹狀結構,它們以編碼的形式進行體現。第一層的編碼形式使用英文大寫字母表示;第二層的編碼形式使用英文小寫字母表示;第三層的編碼形式使用兩位阿拉伯數字表示;第四層使用英文大寫字母表示;第五層使用兩位阿拉伯數字表示。同時為了體現第五層的詞義相關性和詞義相似性,單獨增加一位編碼進行標記,標記有3種,分別是“=”、“#”、“@”,其中“=”代表“相等”、“同義”;“#”代表“不等”、“同類”,屬于相關詞語;“@”代表“自我封閉”、“獨立”,它在詞典中既沒有同義詞,也沒有相關詞。具體的編碼描述如下:
<詞義編碼>=<大類><中類><小類><詞群><原子詞群><標記>
例如:編碼“Ba01A02=”的詞語類別為“物質 質 素”,它的編碼描述見圖1。

編碼位12345678符合Ba01A02=符號類別大類中類小類詞群原子詞群標記層數第一層第二層第三層第四層第五層
圖1 測試用例的編碼描述
文獻[11]提出一種基于句法依存分析的路徑相似度計算方法,該方法首先對文本進行句法依存分析,獲得依存樹,然后在依存樹中提取關系路徑,最后進行路徑間相似度的計算。
文獻[12]提出并實現了一種基于同義詞詞林的詞語相似度計算方法,該方法從詞語的語義出發,根據詞語的義項在同義詞詞林的位置和編碼,計算出詞語的相似度。
文獻[11]只考慮文本中詞語的詞序信息和句子的結構信息,而忽略文本中單個詞語之間的詞義信息。而文獻[12]只是從詞語的語義出發,沒有考慮文本的句子結構。因此文中提出了使用依存關系與同義詞詞林相結合的語義相似度計算方法,建立了一種結合依存關系與同義詞詞林的語義相似度模型,如圖2所示。該模型以哈工大自然語言處理平臺為基礎,將文本A和文本B進行中文分詞、詞性標注、語法分析和語義分析等包裝,最終獲得依存關系圖;在依存關系圖的基礎上提取關系路徑;使用基于《同義詞詞林》的詞匯語義相似度和基于搭配對的關系路徑計算文本之間的語義相似度。

圖2 依存關系與同義詞詞林相結合的語義相似度模型
定義2:關系路徑p可以表示為從依存關系圖的節點v0開始,到節點vn結束中間所經過的一系列邊es?Es和頂點vs?Vs所構成的集合。且滿足以下兩個條件:
連接性:?i:(vi-1,vi)∈Es∨(vi,vi-1)∈Es;
無環性:?i?j:i≠j→vi≠vj。
傳統的計算文本之間語義相似度的方法是通過對詞語之間的語義相似度進行加權求和,而文中在計算語義相似度時加入了依存句法結構,所以可以將計算文本之間的語義相似度轉化為求關系路徑間詞語的加權之和。關系路徑即通過遍歷依存關系圖,獲得圖中任意兩個頂點之間的通路,并根據通路得到兩個頂點之間的依存關系,它可以表示文本中詞語之間直接或間接的關系。每一個依存關系表示一個直接的語義關系,而一條關系路徑表示兩個詞語之間非直接的語義關系。因為關系路徑是整個句子的一部分,所以可以通過不同文本間對應的關系路徑的相似度來計算出文本間的相似度[13]。
通過下面的算法流程在依存關系圖中提取關系路徑[14]。
(1)算法輸入:依存關系圖Rs=(Vs,Es),Vs為圖中所有頂點的集合,Es為圖中所有相鄰邊的集合。且滿足條件:?e∈Es,?u,v∈Vs(u≠v),使得e=(u,v);
(2)初始化頂點集合S為空集,初始化關系路徑集合C為空集;
(3)?x∈Vs,將x添加到S中;
(4)若(?u∈S)∧(?v∈Vs-S)滿足(u,v)∈Es∨(v,u)∈Es,則將v添加到集合S中;
(5)尋找S中所有節點之間存在的路徑P=
(6)若S≠Vs,轉到3。否則,算法結束,返回關系路徑集合C。
根據《同義詞詞林》的分析可得,若是兩個詞語的編碼形式在第一層上有所區別,則說明兩個詞語不在同一個大類中,它們之間的詞義幾乎沒有相關性,如果在第一層的編碼相同,說明它們之間的詞義具有相似性,具體的相似性大小可以根據下方的算法流程進行計算。文中采用的算法定義是:在樹形結構中,兩個詞語的語義相似性與它們所處的層級成反比,對于標記位進行特殊處理[15]。具體的詞語語義相似度計算方法如下方的算法流程所示:
(1)算法輸入:兩個詞語S1和S2;
(2)查詢同義詞詞林,分別獲得詞語S1和S2的編碼形式code1和code2;
(3)遍歷code1和code2,如果code1和code2的編碼形式都相同,則SenseSim(S1,S2)=1,同時返回到第5步,反之,到第3步;
(4)如果code1和code2的編碼形式除標記位相同,若標記位等于“=”符號或“@”符號,則SenseSim(S1,S2)=1,否則,SenseSim(S1,S2)=0.5,同時返回到第5步,反之,到第4步;
(5)如果code1和code2的編碼形式的前i-1位編碼都相同,而第i位編碼不同,確定i在同義詞詞林樹狀結構中的層數j(其中層數j的獲得在1.2小節中有介紹),則SenseSim(S1,S2)=1/(12-(2*j));
(6)返回詞語語義相似度SenseSim(S1,S2)。
通常情況下,計算文本的語義相似度是通過計算詞語之間的語義相似度的加權求和。類似地,計算路徑間語義相似度,可以將2.1小節中提取的關系路徑轉化為計算詞語語義相似度計算的方法,但是這種計算方法不能完全體現詞語之間的無歧義性的依存關系,以及詞語之間的直接或間接依存關系[16]。因此,可以使用式1表示關系路徑pi:
pi=<
(1)
其中,wi為關系路徑pi上的一個頂點;ri為指向頂點wi的有向邊的依存關系。
則兩條關系路徑Pi和Pj的語義相似度可以用式2計算得到。
S(Pi,Pj)=
(2)


表2 依存關系的權重

設文本A的關系路徑集合中最大的一條關系路徑的長度為max_path_count_A,文本B的關系路徑集合中最大的一條關系路徑的長度為max_path_count_B,設length(p)為關系路徑p(p∈ΠA∪p∈ΠB)的長度,且0 其中關系路徑集合T1和T2滿足下面的規則: 關系路徑集合T1和T2中的關系路徑一一對應,構建x*y維的相似度矩陣MAB(i),具體的計算方法[18]如下: (3) (2)使用式4計算關系路徑集合T1和T2的語義相似度Xwss(i),Xwss(i)具體表示關系路徑長度i在關系路徑集合T1、T2上的語義相似度,具體計算過程如下: (4) (3)Xwss(AB)表示文本A和文本B之間的加權語義相似度,具體的計算過程如下: (5) (4)計算所得的Xwss(AB),就是文中所求的文本語義相似度。 采用陜西省某重點中學2019屆高二年級共1 038名學生的第二學期歷史期末考試試題作為實驗數據集,一共采集了2 076條文本數據,每條文本數據包括學生答案、教師給分、該試題總分,及該題的標準答案。從實驗數據集中選取典型的236條數據作為實驗數據,使用文中基于改進的依存關系的文本相似度算法,以及胡寶順[11]和田久樂[12]提出的相似度方法分別在實驗數據上計算相似度,最后比較它們在評價指標上的效果。 文中引入了偏差率和平均偏差率分析它們之間的顯著效果。偏差率是表示各種方法計算的相似度和標準相似度(文中使用專家標記的相似度)之間的偏差,局部反映了文本之間語義相似度的穩定程度和正確性。而平均偏差率是從整體上去反映文本之間語義相似度的穩定程度和正確性。偏差率和平均偏差率的具體計算過程分別如式6和式7所示: (6) 平均偏差率= (7) 其中,由于計算的相似度范圍在[0,1] 之間,所以相似度的總量度恒等于1。 對文中的相似度方法和胡寶順的相似度計算方法繪制折線圖,具體如圖3所示。 圖3 方法對比(1) 對文中的相似度方法和田久樂的相似度計算方法繪制折線圖,具體如圖4所示。 圖4 方法對比(2) 通過分析圖3和圖4可得:在圖3中,基于依存關系與同義詞詞林相結合的語義相似度計算方法相比胡寶順的相似度方法在偏差率上有了小幅度的降低;在圖4中,文中方法相比田久樂的相似度方法在偏差率上有了大幅度的降低,同時文中方法相比田久樂的相似度方法在折線圖上的上下幅度波動明顯較小,說明文中方法的穩定性相有了明顯的提高。通過分析可得,文中的相似度方法和胡寶順的相似度方法都使用了依存關系計算文本的相似度,在計算相似度的過程中增加了語序結構,計算所得的文本相似度更能反映出語義層面的含義,所以兩種相似度方法在偏差率和穩定性上的差別不是很大。但是文中方法在胡寶順的方法的基礎上增加了基于同義詞詞林的詞語語義相似度,在計算文本的相似度過程中不僅考慮了語義結構,而且還考慮了詞形之間的詞義信息,所以相比較胡寶順的方法在相似度的偏差率上有了小幅度的降低。但是田久樂的相似度計算方法是基于同義詞詞林計算文本的相似度,只考慮了詞形的詞義信息,忽略了語義結構對文本相似度的影響,所以田久樂的相似度計算方法不僅在偏差率上還是在穩定性上都不如文中的相似度計算方法。 使用式7分別計算文中相似度方法、胡寶順的相似度方法和田久樂的相似度方法的平均偏差率,文中相似度方法的平均偏差率為13.83%,略低于胡寶順相似度方法的平均偏差率14.36%,明顯低于田久樂相似度方法的平均偏差率32.92%。因此,提出的結合依存關系與同義詞詞林的語義相似度計算方法,不但可以縮小與標準相似度之間的偏差率,同時可以提高該方法的穩定性。 筆者針對語義相似度計算方法的研究,設計了一種基于依存關系與同義詞詞林相結合的語義相似度計算方法,并在某高中歷史科目中進行實驗驗證。通過實驗分析可得,該方法的準確率相比較基于同義詞詞林的語義相似度和基于依存關系的語義相似度有了一定的提高。但是,筆者發現該方法雖然對于所有學科都能使用,但是由于各學科中的差異性,所以造成計算的精確性不是很高。在今后的研究中,可以根據不同的學科選擇不同的相似度方法進行相似度計算,這樣可以大大地提高相似度的精度。

3 實驗結果與分析
3.1 實驗數據
3.2 實驗結果與分析



4 結束語