楊延?jì)?,趙國(guó)濤,王丕棟
西北師范大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,蘭州730070
句子相似度計(jì)算是自然語(yǔ)言處理中一項(xiàng)重要的基礎(chǔ)性研究,相關(guān)研究成果可以廣泛應(yīng)用到許多方面。在智能問答系統(tǒng)中,使用句子相似度從原始數(shù)據(jù)庫(kù)中找出與目標(biāo)句子最相似的句子[1];在機(jī)器翻譯中,使用句子相似度從實(shí)例集中找出與待翻譯語(yǔ)句最相似的源語(yǔ)句[2];在文本自動(dòng)分類中,使用句子相似度作為判別構(gòu)成文本的句子集歸類的主要標(biāo)準(zhǔn)[3];在文本檢測(cè)和文本查重中,句子相似度計(jì)算作為核心標(biāo)準(zhǔn),決定了文本檢測(cè)和查重的準(zhǔn)確率[4]。因此,句子相似度是一項(xiàng)重要的計(jì)算標(biāo)準(zhǔn),其計(jì)算效率和準(zhǔn)確率可影響到許多相關(guān)系統(tǒng)的運(yùn)行效率。
目前國(guó)外成熟的句子相似度計(jì)算方法有簡(jiǎn)單匹配、最長(zhǎng)公共子序列(Longest Common Length,LCS)、萊文斯坦距離(Levenshtein Distance)、Jaccard等[5]。不同于印歐語(yǔ)言以單詞為語(yǔ)義的最小單位,中文因?yàn)槠錁?gòu)詞表意的靈活性,使得上述方法應(yīng)用于中文句子相似度計(jì)算時(shí),只考慮到了詞語(yǔ)的字面信息與句子相互轉(zhuǎn)化的次數(shù)等特征,而忽略了詞語(yǔ)的語(yǔ)義信息和操作可能引起的語(yǔ)義差異,導(dǎo)致此類方法對(duì)中文句子相似度計(jì)算準(zhǔn)確率較低。
在此基礎(chǔ)上,Ruan等[6]使用詞嵌入技術(shù),結(jié)合Word2vec與神經(jīng)網(wǎng)絡(luò)來計(jì)算句子相似度,這種方法考慮到了句子形態(tài)信息,但未考慮到句子語(yǔ)義信息。Gokul等[7]使用句子中關(guān)鍵詞的同義詞,結(jié)合余弦相似度在喜馬拉雅語(yǔ)中查找相似短語(yǔ),取得了不錯(cuò)的效果,但該方法適用于特定語(yǔ)言,通用性小。李曉等[8]使用哈爾濱工業(yè)大學(xué)LTP平臺(tái),結(jié)合Word2vec模型提取句法結(jié)構(gòu)來計(jì)算句子的語(yǔ)義相似度,提高了相似度計(jì)算的準(zhǔn)確率。翟社平等[9]提出一種融合多特征的句子相似度計(jì)算方法,分別提取詞性、詞序及句長(zhǎng)特征計(jì)算句子相似度,提高了句子相似度計(jì)算的準(zhǔn)確率,但該方法計(jì)算過程依靠本體詞語(yǔ)庫(kù),若本體詞語(yǔ)庫(kù)很小則方法計(jì)算結(jié)果會(huì)出現(xiàn)偏差。陳俊月等[10]結(jié)合詞向量技術(shù)對(duì)傳統(tǒng)萊文斯坦距離方法和Jaccard方法進(jìn)行了改進(jìn),提出一種多特征組合的句子相似度算法,提升了句子相似度計(jì)算的精度和效率。鄧涵等[11]在詞語(yǔ)相似度的基礎(chǔ)上分析句子的句法結(jié)構(gòu)和依存關(guān)系,提取出句子中的“主謂介賓”結(jié)構(gòu),并結(jié)合修飾詞分別計(jì)算各部分相似度。實(shí)驗(yàn)證明該方法有不錯(cuò)的準(zhǔn)確率與F值,但該方法在提取“主謂介賓”的同時(shí)忽略了其他句子成分,遺漏了許多重要信息。紀(jì)明宇等[12]通過詞向量和神經(jīng)網(wǎng)絡(luò)提取詞語(yǔ)級(jí)與句子級(jí)的語(yǔ)義特征,在金融領(lǐng)域智能客服句子相似度計(jì)算上取得了不錯(cuò)的效果。
綜上所述,現(xiàn)有句子相似度計(jì)算方法計(jì)算句中關(guān)鍵詞以及關(guān)鍵詞附加部分相似度,或者直接比較組成句子詞語(yǔ)的相似度,以之代表整個(gè)句子的相似度,容易造成信息遺漏問題,且無(wú)法從語(yǔ)句表意內(nèi)容方面綜合計(jì)算,為此本文提出一種基于語(yǔ)義與情感的句子相似度計(jì)算方法,從更細(xì)粒度方面綜合比較句子中各個(gè)語(yǔ)義獨(dú)立成分以及各個(gè)語(yǔ)義獨(dú)立成分組成部分,結(jié)合情感與句型因子計(jì)算出一種綜合的句子相似度值。
相似度是兩個(gè)事物之間的相似程度,句子是由詞或詞組按照一定的語(yǔ)法結(jié)構(gòu)組成的表達(dá)一個(gè)完整意思的語(yǔ)言單位,句子作為一個(gè)整體,其相似性建立在部分相似性的基礎(chǔ)上。起初的漢語(yǔ)句子相似度計(jì)算方法是基于字的,后來出現(xiàn)基于詞語(yǔ)的句子相似度計(jì)算方法,詞語(yǔ)類似于英文中的單詞,實(shí)驗(yàn)證明,基于詞語(yǔ)的句子相似度計(jì)算方法在準(zhǔn)確率上遠(yuǎn)高于基于字的句子相似度計(jì)算方法。
傳統(tǒng)的句子相似度計(jì)算方法基于詞語(yǔ),以兩句中詞語(yǔ)的相似度表示兩句相似度,基于詞語(yǔ)的相似度計(jì)算方法通過鏈?zhǔn)阶畲笃ヅ浞ㄓ?jì)算句子相似度,方法過程簡(jiǎn)單,準(zhǔn)確率低。之后學(xué)者們?cè)诖嘶A(chǔ)上加入了詞序詞長(zhǎng)等影響因子,取得了一定效果,但這些方法未考慮到詞語(yǔ)在句中的語(yǔ)義語(yǔ)法特性,因此方法的效率受到限制。
文獻(xiàn)[8]與文獻(xiàn)[11]使用哈工大LTP平臺(tái)對(duì)句子進(jìn)行句法依存分析,以得到句子主謂賓部分,通過計(jì)算主謂賓部分相似度得到兩句相似度。這兩種方法考慮到了句中詞語(yǔ)的語(yǔ)法特征,相較于上述僅基于詞語(yǔ)的方法效率有所提升,但僅僅通過依存關(guān)系并不能準(zhǔn)確得到詞語(yǔ)在句中的語(yǔ)義定位,且只提取主謂賓部分計(jì)算句子相似度容易遺漏其他重要成分,造成計(jì)算結(jié)果的偏差。
因中英語(yǔ)言的差異性,適用于英文單詞體系的句子相似度算法在移植到中文時(shí),未考慮到中文句子靈活多變的表達(dá)特點(diǎn)。以上兩種方法雖然在依存關(guān)系上對(duì)句子進(jìn)行句法結(jié)構(gòu)分析,但還是基于詞語(yǔ)的句子相似度計(jì)算方法,句子相似度計(jì)算仍停留在詞語(yǔ)階段。
考慮到中文語(yǔ)言的特性,相較于基于詞語(yǔ)的句子相似度計(jì)算方法而言,基于句意即基于理解的句子相似度計(jì)算方法具有更強(qiáng)的合理性與可解釋性。本文方法從表意層面計(jì)算兩句之間的相似度,在句法依存關(guān)系分析的基礎(chǔ)上對(duì)句子進(jìn)行語(yǔ)義角色標(biāo)注,使用語(yǔ)義角色標(biāo)注結(jié)果將句子劃分為語(yǔ)義上獨(dú)立的若干部分,提取出句中動(dòng)作發(fā)起者(廣義主語(yǔ))、謂語(yǔ)、動(dòng)作目標(biāo)(廣義賓語(yǔ))、動(dòng)作效果、時(shí)間狀語(yǔ)、地點(diǎn)狀語(yǔ)、原因狀語(yǔ)等語(yǔ)義獨(dú)立成分,這些語(yǔ)義上的獨(dú)立成分囊括句中所有詞語(yǔ),沒有遺漏任何信息,保證了本文方法計(jì)算結(jié)果的可靠性。
得到兩句語(yǔ)義獨(dú)立成分后,本文方法根據(jù)語(yǔ)義獨(dú)立成分的標(biāo)簽對(duì)各語(yǔ)義獨(dú)立成分賦予相似度權(quán)重系數(shù),然后計(jì)算兩句中相同標(biāo)簽語(yǔ)義獨(dú)立成分(相同性質(zhì)的完整表意部分)相似度,計(jì)算過程中使用依存關(guān)系判別核心詞與修飾詞,參照詞法關(guān)系賦予各部分權(quán)重系數(shù),之后加權(quán)計(jì)算語(yǔ)義獨(dú)立成分相似度,從而得到句子整體相似度。最后使用情感值字典定量計(jì)算兩句的情感總值,在句子整體相似度的基礎(chǔ)上對(duì)情感差值大于閾值的兩句計(jì)算情感減益,對(duì)符號(hào)不同的高相似句子計(jì)算句式減益得到句子最終相似度。本文方法在表意層面上綜合情感與句式因子,使計(jì)算結(jié)果更加準(zhǔn)確。本文方法句子整體相似度計(jì)算公式如式(1)所示:
其中,S1、S2表示第一句與第二句;Pi為句子語(yǔ)義獨(dú)立成分,例如動(dòng)作發(fā)起者、謂語(yǔ)、動(dòng)作目標(biāo)、動(dòng)作效果、時(shí)間地點(diǎn)狀語(yǔ);Sim(S1Pi,S2Pi)為兩句中此語(yǔ)義獨(dú)立成分的相似度;αS1Pi、αS2Pi為第一、二句此語(yǔ)義獨(dú)立部分的全局權(quán)重系數(shù)(當(dāng)任一句此部分為空時(shí),值為0);min()為取最小值方法。
句子相似度計(jì)算依賴于詞語(yǔ)相似度計(jì)算,本文方法使用哈工大《同義詞詞林》擴(kuò)展版[13]計(jì)算詞語(yǔ)相似度。《同義詞詞林》是梅家駒等人[14]編撰的可計(jì)算漢語(yǔ)詞庫(kù),用于同義詞及近義詞的歸類,經(jīng)哈爾濱工業(yè)大學(xué)社會(huì)計(jì)算與信息檢索中心擴(kuò)展后,包含7萬(wàn)多詞語(yǔ),9萬(wàn)多概念,這些概念被分為12個(gè)大類、95個(gè)中類、1 428個(gè)小類、4 026個(gè)詞群以及17 797個(gè)原子詞群[15],基本上涵蓋了日常生活中使用的大部分詞語(yǔ)?!锻x詞詞林》擴(kuò)展版中詞語(yǔ)具體編碼示例如表1所示。
表1 同義詞詞林編碼示例Table 1 SynonymCilin coding example
文獻(xiàn)[16]提取詞林詞語(yǔ)編碼的最大公共塊,根據(jù)最大公共塊的長(zhǎng)度計(jì)算詞語(yǔ)相似度,計(jì)算公式如式(2)所示:
其中,coeff是不同層的影響系數(shù),公共塊的長(zhǎng)度越大,coeff值越高;n是詞語(yǔ)所在分支的分支數(shù),即分支所在父節(jié)點(diǎn)的分支總數(shù);k是兩個(gè)詞語(yǔ)編碼對(duì)應(yīng)分支的距離;degree是內(nèi)置值,取180。
文獻(xiàn)[17]提出一種以詞語(yǔ)距離d為主要因素,以分支節(jié)點(diǎn)數(shù)n與分支間隔數(shù)k作為調(diào)節(jié)參數(shù)的詞林詞語(yǔ)相似度計(jì)算方法,計(jì)算公式如式(3)所示:
文獻(xiàn)[17]將同義詞詞林編碼分為五層樹結(jié)構(gòu),層次從高到底依次為大類、中類、小類、詞群、原子詞群,五層樹連接邊w1、w2、w3、w4的權(quán)重分別取0.5、1.0、2.5、2.5。式(3)中Dis()為詞語(yǔ)在樹狀結(jié)構(gòu)中的距離函數(shù),函數(shù)值等于詞語(yǔ)對(duì)的連接路徑中各邊的權(quán)重之和,取值為2w1、2(w1+w2)、2(w1+w2+w3)、2(w1+w2+w3+w4)。
文獻(xiàn)[18]在《同義詞詞林》擴(kuò)展版的基礎(chǔ)上進(jìn)行本體改造,提出一種基于信息內(nèi)容的詞林詞語(yǔ)相似度計(jì)算方法,通過計(jì)算兩個(gè)概念及其父節(jié)點(diǎn)的信息內(nèi)容得到詞語(yǔ)相似度,計(jì)算公式如式(4)所示:
其中,MaxDiff表示差異上界;MinDiff表示差異下界;Dis(C1,C2)表示詞語(yǔ)C1與C2的差異值。
以上三種詞語(yǔ)相似度計(jì)算方法各有側(cè)重,各方法在計(jì)算某些詞語(yǔ)時(shí)會(huì)因?yàn)榉椒ㄏ拗瞥霈F(xiàn)相似度過小的現(xiàn)象。而本文方法計(jì)算過程中多次進(jìn)行乘法操作,為了保證計(jì)算結(jié)果的可靠性,使用上述詞語(yǔ)相似度計(jì)算方法結(jié)果最大值作為詞語(yǔ)相似度值,計(jì)算公式如式(5)所示:
哈爾濱工業(yè)大學(xué)語(yǔ)言技術(shù)平臺(tái)(Language Technology Platform,LTP)提供了包括分詞、詞性標(biāo)記、依存關(guān)系分析、語(yǔ)義角色標(biāo)記等一系列中文信息處理功能[19]。
本文使用哈工大LTP平臺(tái)作為句子結(jié)構(gòu)分析工具,通過哈工大LTP平臺(tái)對(duì)句子進(jìn)行預(yù)處理,包括分詞、詞性標(biāo)記、句法依存關(guān)系分析、語(yǔ)義角色標(biāo)注,并將分詞結(jié)果與其對(duì)應(yīng)的詞性標(biāo)記、句法依存標(biāo)記共列為一項(xiàng),將語(yǔ)義角色標(biāo)注結(jié)果單獨(dú)列出。
哈工大LTP平臺(tái)語(yǔ)義角色標(biāo)注結(jié)果由語(yǔ)義角色標(biāo)簽和分詞區(qū)間組成,本文方法根據(jù)語(yǔ)義角色標(biāo)簽和分詞區(qū)間將句子劃分為語(yǔ)義上的獨(dú)立成分。LTP平臺(tái)語(yǔ)義角色標(biāo)簽及其意義如表2所示。
表2 語(yǔ)義角色標(biāo)簽及其意義Table 2 Semantic role tags and their meaning
例句“這本好看的書什么時(shí)候上架?”經(jīng)過哈工大LTP平臺(tái)預(yù)處理后,得到詞項(xiàng)列表:[(這,r,2,ATT,1),(本,q,5,ATT,2),(好看,a,5,ATT,3),(的,u,3,RAD,4),(書,n,8,SBV,5),(什么,r,7,ATT,6),(時(shí)候,n,8,ADV,7),(上架,v,0,HED,8),(?,wp,8,WP,9)]與語(yǔ)義角色標(biāo)注結(jié)果[(A1,1,5),(TMP,6,7)]。
詞項(xiàng)列表中詞項(xiàng)為元組,元組中第一項(xiàng)為分詞,第二項(xiàng)為分詞詞性,第三項(xiàng)為句法依存關(guān)系中分詞指向位置序號(hào),第四項(xiàng)為句法依存標(biāo)記,第五項(xiàng)為此項(xiàng)在句子中的位置序號(hào)。
以詞項(xiàng)(好看,a,5,ATT,3)為例,分詞詞語(yǔ)為“好看”,詞性為“a”即形容詞,依存關(guān)系指向?yàn)?即修飾句中位置序號(hào)為5的詞項(xiàng)(書,n,8,SBV,5),依存標(biāo)記“ATT”說明此詞語(yǔ)為形容詞性修飾部分修飾依存關(guān)系指向詞語(yǔ),位置序號(hào)為3說明此詞語(yǔ)為句中第三個(gè)詞。需要注意的是,LTP句法依存標(biāo)記中標(biāo)記為“HED”的部分指向0項(xiàng),此項(xiàng)為句子虛擬根節(jié)點(diǎn),并無(wú)實(shí)際意義。
語(yǔ)義角色標(biāo)記結(jié)果中第一項(xiàng)為此區(qū)間的標(biāo)簽意義,二、三項(xiàng)為此區(qū)間的起始位置與結(jié)束位置。如(A1,1,5)中A1表示此項(xiàng)為動(dòng)作目標(biāo),1為此區(qū)間在句中的起始位置。5為此區(qū)間在句中的結(jié)束位置,例句中“這本好看的書”為A1區(qū)間內(nèi)容,作為“上架”的動(dòng)作目標(biāo),是語(yǔ)義上完整獨(dú)立部分。得到語(yǔ)義獨(dú)立成分后,根據(jù)語(yǔ)義角色標(biāo)簽給句中語(yǔ)義獨(dú)立成分分配權(quán)重系數(shù),如式(6)所示。
其中,α1,α2,…,αn表示n個(gè)語(yǔ)義獨(dú)立成分權(quán)重系數(shù),和為1。
在漢語(yǔ)言中,詞法、形態(tài)與句法之間并沒有明確的界限[20],詞法結(jié)構(gòu)和句法結(jié)構(gòu)具有同一性。文獻(xiàn)[21]整理了各類型構(gòu)詞結(jié)構(gòu)詞語(yǔ)貢獻(xiàn)度,鑒于詞法結(jié)構(gòu)與句法結(jié)構(gòu)的同一性,本文方法使用文獻(xiàn)[21]中相關(guān)系數(shù)參照語(yǔ)義角色標(biāo)簽對(duì)句子中各語(yǔ)義獨(dú)立成分賦予全局相似度權(quán)重系數(shù),其中A0視為主語(yǔ)、A1視為賓語(yǔ)、A2視為補(bǔ)語(yǔ)、TMP與LOC等視為定語(yǔ)或狀語(yǔ)。表3為文獻(xiàn)[21]構(gòu)詞結(jié)構(gòu)貢獻(xiàn)度表。
表3 構(gòu)詞結(jié)構(gòu)貢獻(xiàn)度Table 3 Contribution of word formation
語(yǔ)義獨(dú)立成分中A0區(qū)間為動(dòng)作發(fā)起者,A1區(qū)間為動(dòng)作目標(biāo),A2區(qū)間為動(dòng)作效果,其他區(qū)間意義如表2所示。在簡(jiǎn)單的主謂賓結(jié)構(gòu)句子中,A0為句法依存標(biāo)記為“SBV”的詞語(yǔ)(主語(yǔ)),A1為句法依存標(biāo)記為“VOB”的詞語(yǔ)(賓語(yǔ))。在帶有從句的復(fù)雜句子結(jié)構(gòu)中,A0與A1為名詞性短語(yǔ),并不僅僅是句法依存標(biāo)記中“SBV”與“VOB”詞語(yǔ),且在A0區(qū)間中可能出現(xiàn)句法依存標(biāo)記為“VOB”的詞語(yǔ),在A1區(qū)間中可能出現(xiàn)句法依存標(biāo)記為“SBV”的詞語(yǔ)。綜上所述,本文認(rèn)為A0部分為句子廣義主語(yǔ)(動(dòng)作發(fā)起者),A1部分為句子廣義賓語(yǔ)(動(dòng)作目標(biāo))。
本文將句法依存標(biāo)記為“HED”的詞語(yǔ)作為單獨(dú)的HED部分即謂語(yǔ)部分,除單名詞組成句子外,所有句子都有謂語(yǔ)部分,此部分不出現(xiàn)在語(yǔ)義角色標(biāo)注結(jié)果中,由本文方法單獨(dú)標(biāo)識(shí)。
因此當(dāng)語(yǔ)義角色標(biāo)注結(jié)果僅為A0時(shí),說明句子是主謂結(jié)構(gòu),參考表3中主謂結(jié)構(gòu)相關(guān)系數(shù),對(duì)A0與HED部分分別賦予權(quán)重系數(shù)0.4、0.6。
當(dāng)出現(xiàn)兩個(gè)或以上語(yǔ)義角色標(biāo)簽時(shí),各語(yǔ)義獨(dú)立成分權(quán)重系數(shù)賦值方法如下:當(dāng)語(yǔ)義角色標(biāo)簽數(shù)目為2時(shí),HED部分權(quán)重系數(shù)為0.4,當(dāng)語(yǔ)義角色標(biāo)簽數(shù)目大于2時(shí),HED部分權(quán)重系數(shù)為0.3,其他部分中名詞性部分A0與A1占1.5個(gè)最低優(yōu)先級(jí),其余部分占1個(gè)最低優(yōu)先級(jí)(實(shí)詞性部分相較于虛詞性部分具有更大的表意屬性)。如式(6)所示,各語(yǔ)義獨(dú)立成分權(quán)重系數(shù)之和為1,除HED部分外其他部分權(quán)重系數(shù)總和為1-αHED。首先使用(1-αHED)/n(n為其他部分所占最低優(yōu)先級(jí)數(shù)目之和)計(jì)算出每個(gè)最低優(yōu)先級(jí)單位所占權(quán)重系數(shù),然后乘于獨(dú)立成分所占最低優(yōu)先級(jí)數(shù)得到獨(dú)立成分的全局權(quán)重系數(shù)。
例如當(dāng)語(yǔ)義角色標(biāo)記結(jié)果為A0、A1時(shí),說明句子為主謂賓結(jié)構(gòu),參考表3相關(guān)系數(shù)和上述權(quán)重系數(shù)賦值方法,對(duì)A0、HED與A1部分分別賦予權(quán)值0.3、0.4、0.3,其他情況時(shí)分別參考表3相關(guān)系數(shù)賦值。
得到各語(yǔ)義獨(dú)立成分權(quán)重系數(shù)之后,本文方法將兩句中相同標(biāo)簽語(yǔ)義獨(dú)立成分進(jìn)行比較。例如用第一句A0部分比較第二句A0部分,即比較兩句動(dòng)作發(fā)起者(廣義主語(yǔ))的相似度。在語(yǔ)義獨(dú)立成分內(nèi)部比較時(shí),根據(jù)語(yǔ)義獨(dú)立成分標(biāo)簽找出獨(dú)立成分的核心詞語(yǔ),在A0和A1等名詞性語(yǔ)義獨(dú)立成分中,句法依存標(biāo)記為“SBV”與“VOB”的詞語(yǔ)為核心詞語(yǔ),在TMP等狀語(yǔ)定語(yǔ)性語(yǔ)義獨(dú)立成分中,句法依存標(biāo)記為“ADV”的詞語(yǔ)為核心詞語(yǔ)。
找到核心詞語(yǔ)后,根據(jù)依存關(guān)系找出指向核心詞語(yǔ)的修飾詞,并將修飾詞按詞性加入對(duì)應(yīng)修飾詞表。例如將詞性為“a”的詞語(yǔ)加入形容詞修飾詞表,將詞性為“q”的詞語(yǔ)加入量詞修飾詞表,將詞性為“n”的詞語(yǔ)加入名詞修飾詞表,并根據(jù)修飾詞表種類分配修飾詞表與核心詞語(yǔ)的權(quán)重系數(shù),權(quán)重系數(shù)分配參考表3。
獨(dú)立成分中修飾詞種類越多,核心詞語(yǔ)權(quán)重越小,沒有任何修飾詞時(shí),核心詞語(yǔ)權(quán)重為1.0。當(dāng)修飾詞表只有一種成分時(shí),查表3得修飾詞與核心詞語(yǔ)權(quán)重系數(shù)。例如當(dāng)修飾詞表只有形容詞表時(shí),修飾詞與核心詞語(yǔ)形成定中結(jié)構(gòu),查表3得形容詞與核心詞語(yǔ)權(quán)重系數(shù)分別為0.3、0.7。當(dāng)修飾詞表有多種成分時(shí),核心詞權(quán)重系數(shù)為0.5,形容詞表與名詞表占1.5個(gè)最低優(yōu)先級(jí),其余詞表占1個(gè)最低優(yōu)先級(jí),計(jì)算方法如語(yǔ)義獨(dú)立成分權(quán)重系數(shù)計(jì)算方法。
詞表相似度為表中詞語(yǔ)相似度,實(shí)驗(yàn)發(fā)現(xiàn),絕大多數(shù)句子中同一類型修飾詞語(yǔ)為0或1個(gè),極少出現(xiàn)兩個(gè)及兩個(gè)以上同一類型修飾詞語(yǔ)。為了簡(jiǎn)化計(jì)算,鑒于漢語(yǔ)重心后移現(xiàn)象,逆序選擇兩句同類型修飾詞表中第一個(gè)詞語(yǔ)(后置位詞語(yǔ))計(jì)算詞語(yǔ)相似度得到修飾詞表相似度。
式(7)為A0與A1部分相似度的計(jì)算公式,以A0部分為例:
其中,S1A0HED、S2A0HED為第一句與第二句A0部分核心詞語(yǔ);SimATT(S1A0ATT,S2A0ATT)為兩句A0部分形容詞表相似度;Simq(S1A0q,S2A0q)表示兩句A0部分量詞表相似度;以α開頭的為對(duì)應(yīng)部分的權(quán)重系數(shù)。
式(7)省略的部分有名詞詞表、代詞詞表等,此類詞語(yǔ)最多只有一種黏著性修飾部分(修飾此詞語(yǔ)的部分),參照表3相關(guān)系數(shù)對(duì)詞語(yǔ)與其黏著性修飾部分賦予權(quán)重系數(shù),加權(quán)計(jì)算得到詞表相似度。
修飾詞中,形容詞性修飾詞可能會(huì)有副詞或者前附加詞作為黏著部分。例如在短語(yǔ)“非??鞓返摹敝?,副詞“非?!毙揎棥翱鞓贰?,“的”作為快樂的前附加部分修飾“快樂”(前附加是雙詞組合結(jié)構(gòu),核心詞在前,附加詞在后,后附加同理),參考表3分別對(duì)副詞“非?!?、形容詞“可愛”、前附加詞“的”賦予0.3、0.6、0.1的權(quán)重系數(shù)。式(8)為形容詞性修飾詞相似度計(jì)算方法。
其中,A1、A2為形容詞及其黏著部分;WS()為本文詞語(yǔ)相似度計(jì)算方法;A1ATT、A2ATT為形容詞本身;A1ADV、A2ADV為修飾形容詞的副詞;A1RAD、A2RAD為修飾形容詞的前附加部分;以α開頭的為對(duì)應(yīng)部分權(quán)重系數(shù)。
計(jì)算HED部分相似度,即謂語(yǔ)部分相似度時(shí),需要考慮到語(yǔ)義角色標(biāo)注結(jié)果中的ADV部分,此部分為謂語(yǔ)副詞,用于修飾句子的HED部分(句法依存標(biāo)記為“HED”的詞語(yǔ))。本文方法并未將ADV部分當(dāng)作一個(gè)語(yǔ)義獨(dú)立成分看待,而是將其加入到HED部分的計(jì)算中。本文使用知網(wǎng)總結(jié)的否定詞表判斷ADV部分中的否定詞,使用知網(wǎng)總結(jié)的程度詞表判斷ADV部分中的程度詞,在此基礎(chǔ)上參照文獻(xiàn)[11]中相關(guān)系數(shù)對(duì)程度副詞賦予程度系數(shù),例如“極其”類系數(shù)為1.4,“欠”類系數(shù)為0.4。
本文方法設(shè)置一個(gè)謂語(yǔ)系數(shù)λ,初始化為1,當(dāng)謂語(yǔ)部分出現(xiàn)否定副詞時(shí),λ=-λ,當(dāng)出現(xiàn)程度副詞時(shí),λ=κλ,κ為程度系數(shù)。這種方法解決了雙重否定以及多重否定句子的相似度計(jì)算問題。HED部分相似度計(jì)算公式如式(9)所示:
計(jì)算其他語(yǔ)義獨(dú)立成分例如TMP(時(shí)間狀語(yǔ))相似度時(shí),本文方法依照兩句語(yǔ)義獨(dú)立成分的詞語(yǔ)數(shù)目,對(duì)滿足條件的部分使用縮略詞語(yǔ)相似度計(jì)算方法。實(shí)驗(yàn)發(fā)現(xiàn),在許多時(shí)間地點(diǎn)等定語(yǔ)、狀語(yǔ)性語(yǔ)義獨(dú)立成分中,常有縮略詞語(yǔ)出現(xiàn),如縮略詞語(yǔ)“明晚”與短語(yǔ)“明天晚上”意義完全相同,表達(dá)卻不同,使用普通的計(jì)算方法容易得到極小的相似度值,本文針對(duì)此類特征設(shè)計(jì)了縮略詞語(yǔ)相似度計(jì)算方法。特別是兩部分出現(xiàn)一二結(jié)構(gòu)時(shí)(一部分只含一個(gè)詞語(yǔ),另一部分包含兩個(gè)詞語(yǔ)),方法取唯一詞語(yǔ)的前一個(gè)字與另一部分中第一個(gè)詞語(yǔ)計(jì)算相似度乘前語(yǔ)貢獻(xiàn)系數(shù)0.4,取唯一詞語(yǔ)后一個(gè)字與另一部分中第二個(gè)詞語(yǔ)計(jì)算相似度乘后語(yǔ)貢獻(xiàn)系數(shù)0.6,相加得到縮略詞語(yǔ)與短語(yǔ)的相似度。
本文詞語(yǔ)相似度計(jì)算方法使用《同義詞詞林》擴(kuò)展版,在詞的編碼中,單字總是排在相關(guān)詞語(yǔ)的原子詞群中,非常有利于縮略詞與短語(yǔ)的相似度計(jì)算,保證了縮略詞語(yǔ)相似度計(jì)算方法的可行性。
將上述各部分語(yǔ)義獨(dú)立成分計(jì)算公式代入式(1),得到句子整體相似度具體計(jì)算公式,如式(10)所示:
式(10)省略的語(yǔ)義獨(dú)立成分相似度計(jì)算方法較為簡(jiǎn)單,省略部分無(wú)復(fù)雜的構(gòu)造,一般只由一至兩個(gè)詞語(yǔ)構(gòu)成,計(jì)算詞語(yǔ)相似度得到語(yǔ)義獨(dú)立成分相似度。
由式(10)可知,本文方法將句子分成語(yǔ)義上的獨(dú)立成分,加權(quán)計(jì)算語(yǔ)義獨(dú)立成分相似度得到句子整體相似度,即使兩句組成不一致,仍能計(jì)算出一種合理的相似度值。本文方法通過靈活賦值的方式增加了句子相似度計(jì)算的魯棒性。
在上一節(jié)得到句子整體相似度之后,還需對(duì)句子進(jìn)行情感分析,進(jìn)一步提高句子相似度計(jì)算的準(zhǔn)確率。在情感計(jì)算方面,文獻(xiàn)[11]使用知網(wǎng)褒貶義詞典提取句中定中或狀中關(guān)系形容詞,比較兩句形容詞褒貶性是否相同,以此粗粒度地判斷兩句是否為相同情感指向(同褒或同貶),對(duì)情感進(jìn)行定性計(jì)算。而在現(xiàn)實(shí)世界中,情感除了有褒貶之分,亦有強(qiáng)度之別,“喜”“大喜”“狂喜”同為喜悅,表意程度上大有不同,通過定性計(jì)算難以區(qū)分情感程度。
本文使用BosonNLP情感值詞典[22]對(duì)句中詞語(yǔ)進(jìn)行定量情感計(jì)算。BosonNLP情感詞典是從大規(guī)模網(wǎng)絡(luò)語(yǔ)料庫(kù)中自動(dòng)構(gòu)建的情感極性詞典,包括114 767個(gè)詞語(yǔ)及其情感值,基本囊括了所有規(guī)范用語(yǔ)與非規(guī)范用語(yǔ),詞典中褒義詞詞性為正,貶義詞詞性為負(fù),其值隨詞語(yǔ)褒貶義程度強(qiáng)弱而變化,取值范圍為-6.5~+6.5。
因?yàn)閯?dòng)詞與名詞也有強(qiáng)烈的情感趨向,所以本文方法不僅計(jì)算句子中形容詞的情感值,還計(jì)算句子中名詞與動(dòng)詞的情感值。
句子是表達(dá)情感的表意結(jié)構(gòu),在一個(gè)完整的句子中,極少出現(xiàn)褒貶義詞同時(shí)存在的情況,句子整體情感趨于穩(wěn)定,因此本文計(jì)算句子的情感總值衡量句子的情感傾向。直接使用情感字典計(jì)算句子情感總值會(huì)因詞語(yǔ)數(shù)目差異出現(xiàn)突?,F(xiàn)象,當(dāng)句子出現(xiàn)許多情感詞語(yǔ),尤其是情感趨向強(qiáng)烈的詞語(yǔ)時(shí),直接計(jì)算情感總值會(huì)得到過高或過低的結(jié)果,與正常句區(qū)分明顯,如此機(jī)械地判斷句子情感傾向是不合理的。
受到經(jīng)典聚類算法K-Means的啟發(fā),本文方法使用簡(jiǎn)單K-Means方法聚類句中詞語(yǔ)的情感值(單維度聚類),取類中心詞語(yǔ)情感值做和處理,作為句子的情感總值。具體方式為:依序選擇句中情感詞語(yǔ),將其作為初始聚類中心,并將情感值位于此詞語(yǔ)1.0范圍內(nèi)的詞語(yǔ)加入此類,循環(huán)此過程直至遍歷所有情感詞語(yǔ),最后使用K-Means聚類過程聚類兩次得到最終聚類結(jié)果。這種變K值的單維K-Means方法將兩句的情感值平滑處理,避免因兩句情感詞語(yǔ)數(shù)目差異影響本文情感值的計(jì)算。
通過大量實(shí)驗(yàn)發(fā)現(xiàn),當(dāng)兩句的情感總值差值(絕對(duì)值)大于1.7(約為情感詞典極值的1/4)時(shí),句子的情感傾向開始出現(xiàn)明顯差距,說明兩句情感傾向不同。為此當(dāng)兩句的情感總值相差大于1.7時(shí),在上一節(jié)句子整體相似度的基礎(chǔ)上計(jì)算情感減益,如式(11)所示:
其中,Mood(S1)與Mood(S2)表示第一句與第二句的情感總值。
最后,參考文獻(xiàn)[8]對(duì)句式因子的處理,本文方法使用句法依存標(biāo)記中WP(標(biāo)點(diǎn)符號(hào))部分判定句式,將句子分為疑問句、祈使句、陳述句三種類型。參考文獻(xiàn)[8]中句式影響因子,對(duì)不同句式設(shè)置懲罰因子,將疑問句與其他句式的懲罰因子設(shè)置為0.1,其余句式間的懲罰因子設(shè)置為0.5。計(jì)算情感減益之后,對(duì)相似度大于0.8的句子對(duì)(高相似句子對(duì))計(jì)算句式減益,即在句子相似度值上乘于句式懲罰因子得到句子最終相似度。
硬件環(huán)境:Intel?CoreTM4510-U,內(nèi)存8 GB。軟件環(huán)境:Win10 64位,Python3.6+Pycharm2019.3.4。LTP庫(kù):ltp_data_v3.4.0。
中文句子并沒有標(biāo)準(zhǔn)的相似度計(jì)算句庫(kù),本文從人工構(gòu)建的簡(jiǎn)單句庫(kù)、復(fù)雜句庫(kù)、主謂句庫(kù)與非主謂句庫(kù)共600句中隨機(jī)選取30組句子作為測(cè)試集,并請(qǐng)12位專業(yè)人士對(duì)句子進(jìn)行判斷,給出相似度值取平均作為核定標(biāo)準(zhǔn),判斷核定標(biāo)準(zhǔn)0.1范圍內(nèi)的句子相似度值為正確結(jié)果。
本文使用語(yǔ)義方法、Word2vec方法、海明距離方法、VSM方法、文獻(xiàn)[8]方法和文獻(xiàn)[11]方法6種句子相似度計(jì)算方法做對(duì)比實(shí)驗(yàn),使用準(zhǔn)確率、MSE與RMSE評(píng)價(jià)實(shí)驗(yàn)效果。
MSE為均方誤差函數(shù),用來檢測(cè)模型預(yù)測(cè)值與真實(shí)值之間的偏差,MSE值越小,說明模型預(yù)測(cè)結(jié)果越貼近于真實(shí)值。RMSE為MSE的平方根。MSE的計(jì)算公式如式(12)所示,RMSE的計(jì)算公式如式(13)所示。
其中,ym為真實(shí)值,y?m為模型預(yù)測(cè)值。
表4 為各方法在測(cè)試集上的實(shí)驗(yàn)結(jié)果,表5從測(cè)試集中隨機(jī)選取了5組句子,展示了本文方法與對(duì)比方法對(duì)例句的相似度計(jì)算結(jié)果。
表4 實(shí)驗(yàn)結(jié)果Table 4 Experimental results
表5 部分實(shí)驗(yàn)結(jié)果數(shù)據(jù)對(duì)比Table 5 Comparison of some experimental results
由表4可知,不考慮語(yǔ)義特征的句子相似度計(jì)算方法準(zhǔn)確率較低,基于句法依存關(guān)系與情感信息的方法準(zhǔn)確率較高,本文提出的基于語(yǔ)義與情感的句子相似度計(jì)算方法具有最高的準(zhǔn)確率與最小的MSE值,優(yōu)于上述對(duì)比方法,具有優(yōu)良的實(shí)用性。
語(yǔ)義方法使用文獻(xiàn)[17]方法計(jì)算詞語(yǔ)相似度,通過鏈?zhǔn)椒▌t以計(jì)算兩句中詞語(yǔ)最大相似度的方式得到兩句相似度;Word2vec方法基于WordEmbedding(詞嵌入),通過One-Hot和神經(jīng)網(wǎng)絡(luò)將詞語(yǔ)轉(zhuǎn)化為詞向量,將詞向量的均值歸一化作為句向量,計(jì)算句向量的余弦相似度得到句子相似度;海明距離方法使用SimHash將分詞后句子轉(zhuǎn)化為編碼,計(jì)算兩句編碼海明距離,以此作為兩句之間的相似度;VSM方法將句子映射為一個(gè)特征向量,通過對(duì)比特征向量的相似度得到句子相似度。
上述四種句子相似度計(jì)算方法基于詞語(yǔ)、詞向量或句向量,并未考慮語(yǔ)義關(guān)系與情感信息,當(dāng)計(jì)算語(yǔ)義結(jié)構(gòu)不同或情感傾向不同(情感差值大于閾值)句子的相似度時(shí),方法準(zhǔn)確率較低。
文獻(xiàn)[8]方法結(jié)合Word2vec與句法結(jié)構(gòu),使用Word2vec計(jì)算主謂賓相似度,使用詞語(yǔ)依存關(guān)系計(jì)算句法結(jié)構(gòu)相似度,綜合得到句子相似度。該方法有一定準(zhǔn)確率,但其對(duì)主謂賓部分賦予固定的0.3、0.5、0.2的全局權(quán)重系數(shù),并非所有句子都有完整的主謂賓結(jié)構(gòu),對(duì)主謂賓部分固定賦值的方式降低了句子相似度計(jì)算的魯棒性與靈活性,且該方法并未考慮到句子的情感信息,無(wú)法有效計(jì)算不同情感傾向句子的相似度。
文獻(xiàn)[11]方法提取主謂介賓與修飾部分計(jì)算句子相似度,在本文測(cè)試集上取得了不錯(cuò)的效果,但該方法只提取主謂介賓與修飾詞計(jì)算句子相似度,存在信息遺漏問題。在情感計(jì)算方面,該方法提取定中或狀中關(guān)系中的修飾詞,參照知網(wǎng)總結(jié)的褒貶義詞表對(duì)兩句做褒貶義的情感趨向判斷,忽略了句中其他單元的情感信息。如表5第五組句子所示,“笑”與“哭”作為謂語(yǔ),并不參與到情感計(jì)算中,導(dǎo)致該方法對(duì)第五組句子相似度值計(jì)算過高。
不同于上述基于詞語(yǔ)的句子相似度計(jì)算方法,本文方法計(jì)算范圍包含句中所有詞語(yǔ),解決了信息遺漏問題,計(jì)算結(jié)果更具可靠性;從表意層面計(jì)算句子相似度,通過對(duì)比兩句表意單元的相似性得到句子整體相似度,相對(duì)于上述基于詞語(yǔ)的句子相似度計(jì)算方法而言,從句子表意屬性上計(jì)算句子相似度更加符合人類認(rèn)知規(guī)律,更具合理性;使用分層次的計(jì)算策略,通過靈活賦值匹配比對(duì)的方式得到句子整體相似度,對(duì)比于上述基于詞語(yǔ)或關(guān)鍵詞語(yǔ)的句子相似度計(jì)算方法而言,具有更強(qiáng)的魯棒性,方法在計(jì)算結(jié)構(gòu)不同或長(zhǎng)短不同的句子時(shí)總能得到一個(gè)合理的相似度值。
在情感計(jì)算方面,以往句子相似度計(jì)算方法基本沒有參考句子的情感屬性,因此該類方法無(wú)法有效計(jì)算不同情感趨向句子的相似度。文獻(xiàn)[11]方法從句子褒貶義方面對(duì)句子情感趨向做粗粒度判斷,提升了句子相似度計(jì)算的準(zhǔn)確率,但該方法的使用范圍有限,無(wú)法定量計(jì)算句子情感值。在句子整體相似度的基礎(chǔ)上,本文使用變K值的單維K-Means方法,結(jié)合情感詞典計(jì)算情感減益,以此對(duì)句子相似度進(jìn)行情感修正。情感減益在情感傾向明顯不同的客觀句子相似度計(jì)算中作用顯著,如表5第五組句子所示,若不計(jì)算情感減益會(huì)得到0.939 671的相似度值,與人類理解出現(xiàn)較大偏差。通過情感減益,在計(jì)算不同情感傾向句子的相似度時(shí),可以得到一個(gè)合理的相似度值,進(jìn)一步提升句子相似度計(jì)算的準(zhǔn)確率與可靠性。
本文方法計(jì)算句子構(gòu)成簡(jiǎn)單尤其是單一結(jié)構(gòu)句子相似度時(shí),在不考慮情感因素的情況下與其他方法效果相當(dāng);計(jì)算句子構(gòu)成復(fù)雜尤其是帶有從句部分句子的相似度時(shí),能有效地提取各語(yǔ)義獨(dú)立成分及其組成部分,計(jì)算得到更為精準(zhǔn)的句子相似度值。
綜合來看,本文提出的基于語(yǔ)義與情感的句子相似度計(jì)算方法對(duì)比其他方法具有更高的準(zhǔn)確率與魯棒性,計(jì)算結(jié)果更加符合人們對(duì)漢語(yǔ)言的認(rèn)知,具有良好的實(shí)用性。
本文基于語(yǔ)義和情感,提出一種更細(xì)粒度的句子相似度計(jì)算方法。該方法以語(yǔ)義獨(dú)立成分代替詞語(yǔ)作為判斷句子相似度的主要標(biāo)準(zhǔn),從語(yǔ)義層面計(jì)算句子相似度,計(jì)算過程中結(jié)合了依存關(guān)系、詞法關(guān)系、情感與句型因子得到一種更為精確的句子相似度結(jié)果,通過實(shí)驗(yàn)證明了本文方法的有效性。但本文方法句子相似度計(jì)算依賴哈工大LTP平臺(tái),當(dāng)哈工大LTP平臺(tái)處理結(jié)果中語(yǔ)義角色缺失時(shí),方法效率會(huì)受到影響。因此,下一步工作是在LTP平臺(tái)處理結(jié)果中語(yǔ)義角色缺失時(shí)補(bǔ)全語(yǔ)義角色,并盡可能綜合更多語(yǔ)義與情感信息,繼續(xù)提升基于語(yǔ)義與情感的句子相似度計(jì)算方法的效率。