吳 浩,艾山·吾買爾+,卡哈爾江·阿比的熱西提,王路路,吐爾根·依布拉音
(1.新疆大學 信息科學與工程學院,新疆 烏魯木齊 830046;2.新疆大學新疆多語種信息技術實驗室,新疆 烏魯木齊 830046)
句子相似度計算是自然語言處理任務中較為基礎的研究任務,具體應用包括反映自動問答系統中的問題匹配程度[1]、檢測文檔摘要的句子重要性[2]、對句子級別的文本分類[3]等。
近年來,一些學者在句子相似度問題上提出了許多改進方法。李彬等[4]提出了基于語義依存的漢語句子相似度計算方法,通過依存句法分析與知網Hownet[5]單詞相似度,計算依存對的相似度。張培穎[6]提出了多特征融合的語句相似度計算方法,融合了詞形、詞序、結構、句長、距離、語義等各層次的相似度計算方法。劉敏[7]提出了一種句子相似度計算方法,結合了基于詞向量的依存句法相似度與基于詞向量的Jaccard相似度。田堃等[8]提出了基于語義角色標注的句子相似計算方法,構造標注句型得到句子相似度計算。李曉等[9]通過依存句法分析將句子分成主語、謂語、賓語成分,對不同成分進行加權計算,還考慮了句型信息與否定語義信息。黃洪等[10]提出了基于依存句法的漢語句子相似度算法,對句中不同單詞劃分重要性計算。李峰等[11]提出了一種融合詞向量的多特征句子相似度計算方法,將句中公共詞塊計算詞序、連續詞、重疊詞數,非公共詞構造相似度矩陣并采用動態規劃計算相似度。
目前句子相似度大部分研究工作借助語法信息,在單詞相似度的基礎上計算句子相似度。在對獲取句子語法信息等預處理時,手工標注成本過高,而機器自動標注誤差較大,嚴重影響句子相似度計算的性能。針對上述問題,考慮到詞性(POS)為名詞、動詞、與形容詞的單詞在句子中語義信息更加豐富,反映了句子中不同單詞的重要性,且詞性自動標注精度較高。本文嘗試了兩種融合詞性特征計算句子語義相似度的方法。
單詞相似度計算是計算句子相似度的基礎。目前計算單詞相似度主要有兩種方法:①基于知網Hownet的單詞相似度計算;②基于word2vec[12]的單詞相似度計算。
Hownet是根據世界知識體系人工構建的一個知識庫,用不可分割的“義原”描述單詞。缺陷在于需要人工構建補充、代價較大;同時對于未登錄詞無法處理。Word2vec較為常用的訓練模型包括CBOW[12]、Skip-gram[12]和Glove[13]等。目前使用Word2vec計算單詞相似度已成為主流方法,其無監督的學習方式減少了大量的人力資源消耗,同時word2vec訓練的單詞向量能夠較好地學習到單詞的語義信息。
綜合上述兩種單詞相似度方法,參考近幾年工作,本文統一采用word2vec作為單詞組合語義的基礎來計算單詞相似度,單詞之間的相似度為不同單詞向量之間的余弦值。
本文采用哈工大ltp平臺(https://www.ltp-cloud.com)進行詞性標注,該平臺詞性標注標準采用863詞性標記集。其中關于名詞的詞性,具體劃分為“普通名詞/n”、“地點名詞/nl”、“方位名詞/nd”、“人名/nh”、“時間名詞/nt”、“組織名詞/ni”、“地點名詞/ns”、“其它專有名詞/nz”共8類名詞。本文計算方法中將這8類詞性統一視為相同的基礎名詞詞性。
經過分詞處理的句子可視為單詞的序列,由詞性標注得到句子的詞性序列。句子S1由m個單詞組成序列:S1=w11,w12,…,w1m-1,w1m;S2為長度為n的單詞序列:S2=w21,w22,…,w2n-1,w2n。 則S1的詞性序列為S1p=w11p,w12p,…,w1m-1p,w1mp,S2的詞性序列為S2p=w21p,w22p,…,w2n-1p,w2np。 單詞相似度為兩個單詞的詞向量求取余弦相似度得到。設兩個單詞w1、w2,詞向量均為n維向量w1=[v11,v12,v13, …,v1n],w2=[v21,v22,v23, …,v2n],單詞相似度計算如式(1)所示
(1)
以下單詞相似度均由式(1)計算。文獻[6,7]中采用了同樣的句子相似度算法,不同之處在于,前者融合詞形等各類句子表層信息進行計算,后者結合了依存句法分析進行計算。該算法如式(2)~式(4)所示

(2)

(3)

(4)
其中,sim(w1i,w2j) 為單詞相似度,Sim(S1_S2) 為句子1對句子2的單向相似度,sim(w1j,w2i)、Sim(S2_S1) 同理。上述式(2)、式(3)中每個詞與另一個句子所有詞相似度取最高值,此步驟尋找對應句子中最相關的詞計算相似度,消除了其它不相關詞對句子相似性的影響。綜合雙向句子相似度得到最終句子相似度結果。該算法基本思想:若兩個句子相似,則其中單詞的語義也相似,反之同理,若單詞之間平均相似度較高,則句子相似度也較高。在此基礎算法上,為了降低虛詞等無實際意義的單詞對整個句子相似度的影響,同時提高名詞、動詞等蘊含主要信息的單詞對句子相似度影響,嘗試融合詞性信息計算句子相似度,采用兩種方法進行改進。
方法一(Pos_weight)根據詞性信息分配單詞權重,具體分為5個步驟計算:
步驟1 首先通過詞性標注的結果為句子中的每個單詞分配相應權重。此時初始詞性權重設置,動詞為wv、名詞為wn、形容詞為wa、副詞為wd、其余詞為wo;
步驟2 對兩個句子中單詞分別進行權重歸一化計算。例如,句子S1的第i個單詞初始詞性權重為w_wi,歸一化后權重如式(5)所示
(5)
步驟3 計算句子S1對句子S2的單向相似度,其中sim(w1i,w2j) 為S1中第i個單詞與S2中第j個單詞的相似度,如式(6)所示

(6)
步驟4 計算句子S2對句子S1的單向相似度,其中sim(w2i,w1j) 為S2中第i個單詞與S1中第j個單詞的相似度。如式(7)所示

(7)
步驟5 綜合兩個句子的單向相似度值得到句子相似度的最終結果,如式(8)所示

(8)
方法二(Pos_key)根據詞性信息選擇關鍵詞計算,具體分為3個步驟:
步驟1 將詞性為動詞、名詞、形容詞、副詞的單詞篩選出來作為句子關鍵詞;
步驟2 計算句子S1對句子S2的單向相似度,如式(9)所示

(9)
步驟3 計算句子S2對句子S1的單向相似度,如式(10)所示

(10)
步驟4 綜合兩個句子的單向相似度得到句子相似度的最終結果,如式(11)所示

(11)
上述兩種方法中需要確定的參數為各種詞性的權重,權重參數的設置與調優可看作一個參數最優化問題。參數優化方法可采用遺傳算法或隨機采樣進行參數調優。然而實際使用遺傳算法進行參數調優需要多次迭代,且單次迭代時間消耗較大,因此使用遺傳算法調整參數不適用于實驗參數選擇及后續應用。
實驗最終采用確定參數空間中的隨機取樣方法進行參數選擇,綜合復雜度與性能考慮,將單詞根據詞性分為3類,動詞與名詞一類,形容詞與副詞一類,其它詞歸為一類。針對3類詞性的單詞設置了3個不同的權重,動詞與名詞在句子中最為重要因此權重最高,負責承擔句子的主要內容信息,形容詞與副詞次之,起修飾作用,其它詞類無實際意義權重最低?,F設3個權重為0-1之間的數,可選值均為0.1的整數倍(即不同詞性的單詞對句子的重要性最大差距在10倍以內),整個參數組合空間大小為10的3次方共1000種,考慮3種權重數值遞減(單詞重要性按上述3類詞性遞減),因此參數組合可能的個數縮減到220個。
在220個參數組合基礎上,通過遍歷該確定的參數組合空間選擇參數。先采用隨機取樣抽取權重比例不同的參數組合,再選擇較優的參數組合確定詞性的權重參數。需要說明的是,遍歷的方式能對上述確定的參數組合空間進行更好的選擇,缺點在于計算代價過大,按不同權重比例進行隨機取樣的方式能夠減少運算量,但可能無法獲得當前參數組合空間下的最優解。
上述參數選擇是將參數組合空間縮小,由連續的參數組合空間轉化為離散的參數組合。其縮小的參數組合可能僅存在局部較優解??紤]到實驗目標在于驗證詞性權重設置對于句子相似度實驗有所提升,若隨機抽取的參數組合在實驗中存在較好的結果則可說明融合詞性信息可提升性能。
以word2vec計算單詞相似度為計算單元,Pos_weight與Pos_key方法以及原基礎算法時間復雜度均為O(n2)。該文提出的兩種方法需要額外進行詞性標注和歸一化計算操作,這部分操作在實際計算過程中占比較小(ltp平臺標注性能為每秒45 942個單詞,由于平臺限速無法計算實際詞性標注所需消耗時間)。其中Pos_key方法減少了非關鍵詞的單詞相似度計算,實際使用中能較大程度上減少計算量(取決于名詞、動詞等詞性的單詞在整個句子單詞的占比)。
由于目前缺乏標準的中文句子相似度評價數據集,本文的評價實驗借鑒文獻[7]構造了一個評價數據集。由新疆大學自然語言處理重點實驗室提供了CWMT2017機器翻譯語料,該語料由若干組句子構成,每組4個同義相似句。從該語料中隨機抽取500組句子(共2000個句子),將其按 1∶3 的比例拆分為500個基準句集與1500個比對句集,每個基準句對應3個相似句,例如:
基準句:“中國 人民 從此 當家做主,中華民族 的 發展 從此 開啟 了 新 的 歷史 紀元。”
相似句1:“中國 人民 從此 站 了 起來,中華民族 的 發展 從此 掀開 了 新 的 歷史 一 頁。”
相似句2:“中國 人民 從此 站 起來 了,中華民族 的 發展 也 從此 掀開 克 新 的 歷史 篇章?!?/p>
相似句3:“中國 人民 從此 崛起 了,中華民族 的 發展 又 邁向 了 新 的 臺階?!?/p>
另從CWMT2017機器翻譯語料中隨機抽取500個單句作為噪聲句子加入比對句集。數據集共500個基準句與2000個比對句。
經過人工審核,發現數據集中存在1組重復句、2組對應但不相似的句子以及2組無關信息句子,剔除這5組句子,共得到基準句集495個,比對句集1985個。該數據集作為最終實驗數據集。
使用上述數據集,每個基準句與比對句集中全部句子計算得到1985個相似度值,對這些相似度值進行從高到低排序。設如果算法能夠在某個基準句相似度排序結果的Top3中,找到比對句集中對應的一個相似句,則命中數增加1,每個基準句命中數最多為3。鑒于本文數據集中的對應句子相似度較高,因此排序結果僅取Top3作為衡量范圍,若取更大范圍,則不同算法效果都比較好,難以區分優劣。該數據集上每種算法執行都需計算495*1985次句子相似度,總命中數為1485。本文實驗評價指標采用命中率衡量句子相似度算法在評價數據集的表現,如式(12)所示

(12)
為說明本文所提出的算法有效性,本文選取了近年4個研究工作進行對比實驗,通過實驗對本文方法和前人研究工作進行詳細分析。同時本文也嘗試了另外兩種方法一并作為對比方法,實驗對比方法包括:
(1)基于依存句法分析(Dp2015)
該方法[7]結合了基于詞向量的依存句法相似度與基于詞向量的Jaccard相似度。其基于詞向量的Jaccard相似度部分與文獻[6]語義相似度部分一致。依存句法相似度部分則考慮了中文句子的語法特性,通過依存句法分析得到依存句對,將兩個句子擁有相同依存關系的依存對計算單詞相似度。組合兩部分相似度得到句子相似度?;谝来婢浞ㄓ嬎阆嗨贫炔糠值牧鞒倘缦拢?/p>
首先對兩個句子進行依存句法分析,將依存分析結果中的依存對取出,得到兩個依存對集合DepPairSet1、DepPairSet2。每個依存對Pair由兩個依存詞 (Pair{0},Pair{2})、依存關系標簽 (Pair{1}) 組成,由DepPairSize表示依存對集合大小。
Dp2015算法偽代碼
Begin
forPair1 in DepPairSet1:
forPair2 in DepPairSet2:
ifPair1{1}=Pair2{1}:
if Sim(Pair1{0},Pair2{0}) > Threshold:
if Sim(Pair1{2},Pair2{2}) > Threshold:
SimScore+=α×wordSimAverage/max(DepPair1Size, DepPair2Size)
End
該方法綜合考慮詞義信息與語法信息,利用依存關系準確找到兩個句子對應部分比較相似性,具有較好的實用價值。但該方法語義相似度部分較為依賴句子依存分析的質量,依存句法分析的好壞嚴重影響該算法的性能。
(2)基于語義角色標注的算法(Srl2016)
該方法[8]主要建立在以動詞為核心的框架的相似度上,通過標注的語義角色信息,將句子構造為以動詞為核心的標注句型。標注句型含有m個語義角色的標注句T,表示為一個三元組 (v,e(S),r(S)),v表示動詞、e(S) 表示論元成分、r(S) 表示角色標簽。該算法分為3個步驟:
1)句子的相似度計算:句子S1和句子S2,分別有p、q個標注句型。S1的標注句型集合為:T(S1)={T11,T12,…,T1p},S2的標注句型集合為:T(S2)={T21,T22,…,T2q},如式(13)所示

(13)
其中,(T1i,T2j) 為標注句型的匹配對,Sim(T1i,T2j) 為標注句型的相似度。
2)標注句型的匹配對確定:句子S1有m個謂詞,句子S2有n個謂詞。根據謂詞相似度構造行為m,列為n的相似度矩陣。循環以下步驟:找到矩陣中最大值;將其行與列對應的謂詞作為一個匹配對;刪除該行該列。可找到min(m,n)個匹配的標注句型;
3)匹配的標注句型相似度,如式(14)所示

(14)
其中,i、j分別為T1,T2中的標注句型。
該方法通過動詞相似度得到標注句型的搭配對,計算匹配標注句型的相似度,綜合各個標注句型相似度得到句子整體相似度計算,充分利用了句中動詞及相關施事受事等角色信息。但該方法采用手工標注的方式標注語義角色信息,代價較大。因此本文采用ltp自動標注,ltp標注規范與該文標注規范略有出入,但算法實現思路一致。
(3)基于語義依存(Dp_improve2017)
該方法[10]為對文獻[4]的改進方法,首先對句子進行依存句法分析得到3類詞:依存分析直接得到句子核心詞Wcore;依存于核心詞的名詞、動詞、形容詞作為關鍵詞Skeyword;余下的詞為其它詞。計算方法如式(15)所示
SentSim(S1,S2)=αSpart1+βSpart2
α+β=1,0<β<α<1
(15)
其中,Spart1部分,如式(16)所示
Spart1=WordSim(Wcore1,Wcore2)×Skeyword
(16)
關鍵詞相似度取兩個句子中關鍵詞構造相似度矩陣,循環以下步驟:取最大值;刪除行列。直到矩陣行或列長度為零,累計最大值后求平均。其它詞Spart2部分與關鍵詞部分求解類似。該方法實驗使用Hownet計算單詞相似度,為保持不同算法基礎條件的一致性,本文使用word2vec計算單詞相似度替換原文的Hownet方法進行實驗。
(4)結合句子成分(Dp_sentt2017)
文獻[9]通過依存句法分析將句子內容分成主語成分、謂語成分、賓語成分。通過線性加權方式將這3部分的相似度結合到一起。該文另考慮了句型、句子成分、否定語義三方面的影響,設置了相應系數。該方法中句型部分需要人工判別,經過語料分析,本文實驗語料中疑問句、感嘆句和祈使句分別僅有一句。
(5)基于語義依存(Sdp2015)
文獻[7]的復現過程中,本文嘗試在原文依存分析計算相似度基礎上用語義依存分析替換依存句法分析。使用語義依存對句子進行分析,得到語義依存對進行實驗。
(6)詞向量累加、平均構造句子向量
在解決各自然語言任務的神經網絡模型中,構造句子表示比較通用的方法是將詞向量進行累加、平均、拼接等操作。本文也嘗試使用句子中各詞向量累加和平均的方式得到句子向量,使用句子向量進行相似度計算。
本文選取了4篇研究工作,分別為基于依存句法分析的方法(Dp2015)、基于語義角色標注的方法(Srl2016)、基于語義依存的方法(Dp_improve2017)、結合句子成分的方法(Dp_sentt2017)。此外嘗試的兩種新方法包括,基于語義依存句法分析的方法(Sdp2015)、詞向量累加和平均(Word2vec_average、Word2vec_sum)的方法。以上所有方法中,統一使用word2vec作為單詞相似度計算基礎。此外,實驗中所有語料經過預處理,時間代價不包括分詞、依存分析等預處理工作。最終實驗結果見表1。

表1 句子相似度評價實驗結果
(1)詞向量構造句子向量方法分析
如表1所示,通過句中單詞的詞向量平均或者累加的方式構造句子向量,應用在句子相似度計算時,無法有效進行計算。其原因可能在于,一個低維的實數向量不能較好的容納和表達一個句子的完整信息;同時另外一個重要的原因在于將詞向量累加和平均構造句子向量的方式過于粗糙,無法有效表示句子的語義信息。
(2)Dp2015、Dp_improve2017、Dp_sentt2017方法分析
這3種方法均使用依存分析的結果作為句子相似度計算的基礎,分別從關鍵詞、依存句對、句子成分3個角度設計算法進行實驗。實驗顯示Dp2015結果較好,其余兩種較差。由于相似句子中用詞有所差異,例:
“每 到 一 地,書記 都 深入 了解(HED) 黨 的 建設 情況。”
“書記 到 各地 考查 時,對 黨 的 組織 狀況 進行(HED) 了 深入 了解?!?/p>
依存句法分析對該句子進行標注時,核心謂詞標注位置有所偏差。通過分析數據,發現數據集中所有的相似句對(共1485條)經依存句法分析之后,相似句之間核心謂詞(標簽“HED”)相同的僅有440個。Dp_improve2017與Dp_sentt2017算法結果不佳的原因,可能是其算法設計過于依賴核心謂詞的相似性。Dp2015使用依存對的相似性進行設計,對依存分析的容錯率更高。數據顯示,在495*1485次相似度計算中,實驗中依存對累加共出現9 238 228次,其中兩個句子對應的依存對共出現6 961 924次,兩個對應的依存對中至少有一個相同詞的情況共出現5 678 390次。這組數據表明,依存對關系可較為合理地確定兩個句子的相似部分,從而進行下一步計算。
(3)Srl2016方法分析
該方法首次使用語義角色標注進行計算,將句子相似度計算建立在標注句型框架的基礎上,但實驗結果并不理想??赡艽嬖诘膯栴}有兩點:①原文實驗中標注任務由人工完成準確率較高,本文采用ltp平臺進行標注準確率為77.9%,因其算法建立在核心動詞相似的基礎上,標注的準確率對結果影響較大。②原文標注規范與本文采用的ltp平臺不一致。ltp標注將語義角色分為A0-A5這6種,此外還包括15個附加語義角色。原文的標注規范中總計15種標簽,在標注過程對標簽進行了簡化。標注規范的不一致可能導致基礎計算單元(論元)的選取和計算不一致,影響實驗結果。
(4)Sdp2015方法分析
本文采用Dp2015的算法設計思路,將原文通過依存句法分析構造的依存對替換為語義依存分析構造的依存對。依存句法注重非實詞(介詞)在句子結構分析中的作用,而語義依存傾向具有直接語義關聯的實詞之間的聯系。實驗結果使用語義依存的實驗結果比原文算法稍差。
(5)Pos_weight、Pos_key方法分析
經過多次權重參數的隨機采樣實驗,確定本文Pos_weight方法中詞性權重設置為動詞1.5、名詞1.5、形容詞1.5、副詞1.5、其它詞為1的參數組合,使用該參數組合的算法在實驗中取得了最好的效果。這一結果說明了句子中這4類詞性的單詞蘊含更豐富的句子信息。該方法根據詞性調整了不同單詞對句子相似度的影響程度,有效提升了句子相似度計算的性能,但是該方法計算較為復雜,尤其對于長句子計算時花費時間較長。Pos_key方法用詞性篩選出關鍵詞,僅對關鍵詞進行計算,大大減少了算法的計算時間,同時也獲得了較優的效果。對比其它幾組研究工作,本文兩種方法摒棄了句法結構方面的句子信息,選用單詞的詞性特征融合計算。本文方法的優勢在于①詞性標注準確率高,ltp平臺達到97%的精度,誤差小對實驗結果影響?。虎谠~性作為單詞的基本特征,可有效確定單詞在句子中的重要性,例如名詞和動詞所蘊含的信息一般情況下相比于介詞等虛詞更加豐富;③方法一中句子所有單詞都參與運算,影響程度主要取決于其詞性,方法二可作為方法一對計算長句子時的替代方法。兩者結合既保證精度又保證速度。
本文提出了融合詞性特征的句子相似度計算的兩種方法,對句中名詞、動詞、形容詞、副詞、標點、介詞、助動詞等各類詞性合理調整單詞對句子相似度的影響,結合單詞相似度來計算句子的相似度。對比于近年來的一些研究工作,本文方法所融合的詞性特征自動標注精度高且速度快,通過調整權重,使得句子相似度計算結果更加準確,在實驗數據集中表現更好。但本文算法也存在一定不足,當句子長度不加限制時,句子長度越長時間代價越大。另外一點,本文算法是對句子語義層面進行的計算,很多時候詞形信息等也很重要,下一步工作將對其進行優化,獲得更好的性能提升。