代鈺琴 徐魯強
(西南科技大學(xué)計算機科學(xué)與技術(shù)學(xué)院 四川綿陽 621010)
自然語言的本質(zhì)屬性是信息的載體和信息的容量,其信息內(nèi)容目前已經(jīng)用計算詞相似度的方式來衡量[1]。為此,中文句子相似度計算成為人工智能研究的熱點,在機器翻譯、信息檢索和智能標(biāo)記等領(lǐng)域也得到了廣泛應(yīng)用。由于漢語句子的多樣性及其意義的復(fù)雜性,使得兩句子之間的相似性更難準(zhǔn)確地比較。隨著自然語言處理技術(shù)的發(fā)展,各種計算句子相似度的算法應(yīng)運而生。這些算法主要分為兩大類:統(tǒng)計方法和基于語義方法?;诮y(tǒng)計的方法是在大規(guī)模的語料庫下統(tǒng)計詞語的頻率,利用IDF算法、詞向量、N-Grammar等方法計算句子的相似度,注重句子的整體結(jié)構(gòu)。基于語義的方法則是在語義知識、句法依存、語義依存等方面進行分析,注重句子的語義分析。
現(xiàn)有的算法主要有基于句子多種特征、基于詞向量[2]、基于語義角色標(biāo)注[3]、基于語義依存[4]及改進TF-IDF 結(jié)合余弦定理的句子相似度計算[5]。這些算法都從句子結(jié)構(gòu)和詞語語義上考慮句子相似度,其中,改進的TF-IDF算法既注重句子的整體結(jié)構(gòu),還與詞語語義相結(jié)合,即將語義與結(jié)構(gòu)結(jié)合起來,更有效地反映了句子的相似度。盡管如此,該方法也忽略了句子不相似的部分[6]和詞語語義方向及一些有重大意義且在句中占比重輕的詞語。因此,本文提出了一種基于語義分析的融合了統(tǒng)計和語義兩個方面并考慮詞語語義方向和句子語義方向的改進TF-IDF算法。
比較文本片段之間的語義意義就是比較單詞的語義特征及其關(guān)系[7],因此詞語相似度是計算句子相似度的基礎(chǔ),詞語相似度包含基于詞典的詞語相似度和基于語料庫的詞向量計算?;谠~典主要采用《知網(wǎng)》和《同義詞林》兩個詞典,能準(zhǔn)確地反映詞語之間語義的相似性,但很少考慮詞語之間句法特點。而基于語料庫就需要通過大量的數(shù)據(jù)訓(xùn)練,在詞語句法、語義、語用等方面都有客觀評價,能綜合計算其相似度,但過于依賴訓(xùn)練的語料庫,一旦某個詞語在語料庫中出現(xiàn)得較少或未出現(xiàn),則不能準(zhǔn)確判斷其相似度[5]。綜上,由于句法和語用等方面的特點可以分析句子結(jié)構(gòu),因此本文采用基于詞典的詞語相似度計算。
1.1.1 基于《知網(wǎng)》的詞語相似度
利用《知網(wǎng)》主要是計算詞語之間的語義程度[8],《知網(wǎng)》是把每個詞語的多個概念一一列出,并用一系列義原來描述每個概念,其中概念是對詞匯語義的描述,義原是描述概念的最小單位。在《知網(wǎng)》中,是將一系列義原通過上下位關(guān)系組織成一個樹狀義原層次體系,因此計算義原相似度采用語義距離計算。假設(shè)兩個義原在這個層次體系中的路徑距離為d,可以得到這兩個義原之間的語義距離:
(1)
其中,p1和p2表示兩個義原(Primitive),d是p1和p2在義原層次體系中的路徑長度,是一個正整數(shù)。α是一個可調(diào)節(jié)的參數(shù)。
由于義原是組成詞語或概念的最小單位,因此對兩個詞語W1和W2,如果W1有n個義項(概念):S11,S12,……,S1n,W2有m個義項(概念):S21,S22,……,S2m,則W1和W2的相似度為各個概念相似度的最大值:
(2)
1.1.2 基于《同義詞林》的詞語相似度
同義詞詞林按照樹狀的層次結(jié)構(gòu)把所有收錄的詞條組織到一起,如圖1所示,把詞匯分成大、中、小3類。每個小類里都有很多的詞,這些詞又根據(jù)詞義的遠近和相關(guān)性分成了若干個詞群。每個詞群中的詞語又進一步分成了若干個行,同一行的詞語要么詞義相同,要么詞義有很強的相關(guān)性。
《同義詞林》的詞語相似度計算與《知網(wǎng)》類似,利用樹狀結(jié)構(gòu)的詞語中義項編碼,計算義項距離,從而得到義項相似度,由于中文詞語博大精深,一個詞語往往表達了很多意思,也就是說有很多個義項。同義詞林編碼規(guī)則如下:第一層為大類,用大寫英文字母表示;第二層是中類,用小寫英文字母表示;第三層為小類,用兩位十進制數(shù)表示;第四層為詞群,用大寫英文字母表示;第五層為原子詞群,用兩位十進制數(shù)表示。計算詞語的相似度是根據(jù)一項編碼計算兩個詞語的各義項間的相似度,取最大值作為兩個詞語的相似度值。
《知網(wǎng)》和《同義詞林》都是通過收錄的詞典,雖然詞匯量大,但也可能出現(xiàn)沒有收錄的詞,如果結(jié)合兩個詞典,找到未收錄的詞就大大減少。因此本文采用的方法是如果某個詞語僅被一個詞典收錄,其相似度就為基于該詞典的相似度,若兩個詞典都收錄了這個詞,其相似度為二者的平均值。
詞語相似度不僅僅只看詞語表面的語義,還應(yīng)考慮其相關(guān)性[9],詞語所表達的意思也可進行分解和合成[6],其主要目的是為了更準(zhǔn)確地判斷詞語的相似性,判斷語義方向就能將詞語相關(guān)性和整合詞語結(jié)合。詞語語義方向主要判斷詞語的積極性或消極性,而句子語義方向主要是通過分析謂語動詞的極性。通過一般中文句子可以發(fā)現(xiàn),如果句子的謂語動詞是否定的,則整個句子都是否定的,但如果某個形容詞是負向的,只影響該形容詞修飾的詞語,因此,謂詞的語義方向才是影響整個句子方向的核心。通過這些特點,本文采用哈爾濱工業(yè)大學(xué)開發(fā)的語言技術(shù)平臺提供的分詞、詞性標(biāo)注、依存句法等漢語語言處理模塊,可以分析判斷詞語和句子的極性。
1.2.1 詞語語義方向分析
通過總結(jié)發(fā)現(xiàn),能表示詞語極性的詞大多都是評價類或情感類的詞,因此本文對詞語極性的判斷采用了《知網(wǎng)》的情感詞典,若句中詞語為負面評價詞語或負面情感詞語,則將句子標(biāo)記為消極,反之則標(biāo)記為積極。下面用簡單的例子來說明詞語的語義理解。
例句1 “教育具有不公平性?!钡姆衷~、此行標(biāo)注和依存句法標(biāo)注如圖2所示。

圖2 例1的句子結(jié)構(gòu)特點Fig.2 Sentence structure of Example 1
由主觀評判可以看出例句1是一個負向的句子,但根據(jù)句法分析發(fā)現(xiàn)其謂語為“具有”,是一個正向的詞語,因此在分析句子極性時還需考慮其他成分的詞語極性。將例句2分詞后得到“教育”、“具有”“不”、“公平性”這幾個詞語,其中“教育”、“具有”、“公平性”是正向詞語,“不”屬于單重否定,是一個負向詞語,但“不”是一個不具有實際意義的詞,因此需要找到“不”修飾的詞語,即“公平性”,并認為其為負向詞語,因此句中“公平性”是一個負向詞語。
1.2.2 句子語義方向分析
由于中文句子的謂語成分占很大比重,且一般謂語直接影響著整個句子的方向,因此分析謂語語義方向能大致得到句子語義方向。謂語極性主要由謂詞及修飾謂詞的副詞決定,下面用簡單的例子來說明句子的語義理解。
例2“教育內(nèi)容不滿足學(xué)生需求。”的分詞、此行標(biāo)注和依存句法標(biāo)注如圖3所示。

圖3 例2的句子結(jié)構(gòu)特點Fig.3 Sentence structure of Example 2
分析該例句,句子的謂語動詞為“滿足”,依存句法標(biāo)注為“HED”,證明是句子最核心的成分,影響著整個句子的方向,即決定了句子的極性。根據(jù)詞語語義方向分析可得該句的謂詞“滿足”屬于正面評價詞語,如果僅判斷謂詞的極性,則例句2應(yīng)該為積極,但人為判斷該句應(yīng)該為消極,其原因在于句中還有修飾謂詞的詞語,這些詞語在句子結(jié)構(gòu)中占的比重不大,但能影響整個句子的意思。從語義分析可以看出,這類詞大多與謂詞構(gòu)成狀中結(jié)構(gòu),以修飾謂詞,即與謂詞間的關(guān)系為“ADV”,其類型大多也為評價詞、情感詞、連詞和否定詞[10]。其中連詞不具極性,評價詞和情感詞仍然采用《知網(wǎng)》的情感詞典,而否定詞則需要自定義。根據(jù)查閱,建立了如表1的否定詞表。

表1 否定詞詞典Table 1 Negative word dictionary
根據(jù)漢語特點,雙重否定表肯定,結(jié)合謂語語義方向,若句子包含奇數(shù)個單重否定,謂語為消極詞語,判定句子為積極;謂語為積極詞語,句子為消極。若句子包含偶數(shù)個單重否定詞,句子的極性由謂語極性決定。若句子中有雙重否定,則句子極性也由謂語極性決定。
例句2的謂詞“滿足”為積極詞語,但前有“不”修飾,“不”又是單重否定詞,根據(jù)以上規(guī)則,滿足句中包含一個單重否定,且謂語為積極,則句子為消極。
1.2.3 復(fù)合句簡化
上述判斷句子極性的方法只適用于只有一個謂語的簡單句,對多個謂語的復(fù)合句就不適用。復(fù)合句分為并列復(fù)句、遞進復(fù)句、選擇復(fù)句和轉(zhuǎn)折復(fù)句。但不管哪種類型,復(fù)句中的每個單句謂語都屬于并列關(guān)系,下面進行舉例說明。
例3 “社會生活和教育融合,生產(chǎn)勞動也和教育相結(jié)合?!钡姆衷~、此行標(biāo)注和依存句法標(biāo)注如圖4所示。
例句3是一個并列復(fù)句,該句子是由兩個簡單句組成,每個單句的謂語動詞都屬于并列關(guān)系,如圖4所示,單句1的謂詞“融合”與單句2的謂詞“結(jié)合”的關(guān)系便是并列,在依存句法中表示為“COO”。復(fù)合句的特點就是將其拆分為多個單句時,句子意思不變,因此在判斷復(fù)合句方向時是將其拆分為多個單句,再對單句進行一一比較。

圖4 例3的句子結(jié)構(gòu)特點Fig.4 Sentence structure of Example 3
根據(jù)研究,利用空間結(jié)構(gòu)更能反應(yīng)語義之間的關(guān)系[11],其中,向量表示是最為普遍的方法。TF-IDF算法就是將句子用空間向量進行表示,然后計算兩個句子空間向量夾角的余弦值。目前,大多數(shù)學(xué)者都發(fā)現(xiàn)了TF-IDF算法的無法調(diào)整權(quán)值的缺點[12],因此對權(quán)值方面進行了深入研究,例如TF-IGM(詞頻-逆權(quán)重)算法[13]。但TF-IDF算法還有語義分析不到位的缺點[14],本文則主要從語義分析方面對TF-IDF算法進行改進。
本文改進的TF-IDF算法是根據(jù)詞語方向(DIR)分析句子詞頻(TF)和逆文檔詞頻(IDF),并將TF和IDF的乘積作為關(guān)鍵詞的特征值,將中文分詞后、去停用詞表得到句子的關(guān)鍵詞,計算關(guān)鍵詞的特征值,構(gòu)成空間向量相似度計算夾角余弦值,其中值越大,句子越相似。TF-IDF算法原理如下:
(1) 將兩個句子S1和S2的有效關(guān)鍵字組成數(shù)組V=(X1,X2,…,Xn)。
(2) 計算S1和S2兩個句子的詞頻向量V1={ω1,ω2,…,ωn},V2={ξ1,ξ2,…,ξn}。
其中,ωi(1≤i≤n)為關(guān)鍵詞組Xn在S1中出現(xiàn)的次數(shù)TF與 IDF的乘積,ξi(1≤i≤n)為關(guān)鍵詞組Xn在S2中出現(xiàn)的次數(shù)TF與IDF的乘積。TF-IDF算法如下:
實驗組患者的滿意度為98.0%,對照組為7.0%,實驗組顯著高于對照組,輸血差錯率顯著低于對照組,差異均有統(tǒng)計學(xué)意義(P<0.05),詳見表1。
詞頻(TF)= 某個詞在句子中的出現(xiàn)次數(shù)
(3)

(4)
其中,只有當(dāng)該詞的方向與包含該詞的文檔中的詞語方向一致時,文檔數(shù)才增加。
(3) 采用余弦相似性算法計算V1和V2相似度值:
(5)
其中,ωiξi為S1i和S2i的TF和IDF的乘積。
傳統(tǒng)的TF- IDF算法只注重關(guān)鍵詞,沒有考慮同義詞替換和語義方向等問題,所以計算結(jié)果與實際結(jié)果有一定偏差。改進的TF- IDF算法主要融入了詞語語義相似度,例如句子A和句子B的相似度算法主要依靠兩個單句的相似度計算,若句子A,B是復(fù)合句,還需將其拆分為單句,并一一比較兩個單句的相似度,取相似度最大的值。兩個單句A1和B1的相似度算法步驟如下:
(2) 遍歷數(shù)組A1′,當(dāng)A1j′ 和C[i]的方向一致時,統(tǒng)計數(shù)組C[i]的個數(shù),并賦值給TF1i;
(3) 如果存在不屬于A1′中的元素C[i],利用《知網(wǎng)》和《同義詞林》計算C[i]與A1′中各元素的最大相似度值sim,如果A1j′和C[i]的方向一致,將sim賦值給TF1i,否則,將1-sim賦值給TF1i;
(4) 根據(jù)IDF算法計算C1[i]的IDF1i值;
(5) TF1i與 IDF1i的乘積即為空間向量V1的一個元素;
(6) 遍歷數(shù)組B1′,重復(fù)步驟(2)-步驟(5),得到空間向量V2;
(7) 計算V1和V2空間向量的夾角余弦值,即為兩個句子的相似度similary;
(8) 計算句子A1和B1的謂語語義方向,如果A1和B1的謂語語義方向相同,則句子相似度為similary,否則句子相似度為1-similary。
實驗數(shù)據(jù)以《教育知識與能力》為基礎(chǔ),根據(jù)章節(jié)模塊,選取了教育和教育發(fā)展、德育、班級管理和教師教學(xué)這4個模塊的簡答題。為了直觀地將實驗結(jié)果進行對比分析,將每個模塊劃分為一組實驗,進行了4組實驗。將每組實驗的題目分發(fā)給學(xué)生進行在線測試,在收集的作答情況中,每道題均選取優(yōu)先作答的100位同學(xué)的作答情況,以比較學(xué)生作答情況和標(biāo)準(zhǔn)答案的相似度。實驗分組及題目如表2。
學(xué)生作答可能存在白卷、句子意思表達不完整、沒有明確斷字?jǐn)嗑涞葐栴},因此,為了更加準(zhǔn)確地測試本文算法,需要人工篩選掉一些作答不規(guī)范的句子。同時為了更體現(xiàn)本文算法在反義詞和否定意義詞上的價值,需要篩選得到盡可能多的含反義或否定意義詞的句子,將有效數(shù)據(jù)作為測試數(shù)據(jù)。經(jīng)過人工篩選,得到表3的分組測試數(shù)據(jù)。
將每組數(shù)據(jù)分別采用了貪心算法、改進的TF-IDF算法和本文基于語義分析的改進TF-IDF算法對每個答案與標(biāo)準(zhǔn)答案之間進行了相似度計算,然后對其相似度進行比較。這3種算法的詞語相似度都是基于《知網(wǎng)》和《同義詞林》的,只有在計算句子相似度時算法不一致,因此該實驗?zāi)軌虮WC得到的結(jié)果僅與句子相似度算法有關(guān)。為了驗證本文算法的有效性,還增加了人工評判,以便驗證該算法提高了其準(zhǔn)確性。

表2 實驗分組及題目Table 2 Experimental group and topics

表3 分組測試數(shù)據(jù)Table 3 Group test data
本文首先以組一中的問題1“簡述教育對政治經(jīng)濟制度的影響?!睘槔?,收集100個學(xué)生對該題的作答情況,經(jīng)過篩選,剩余94條有效句子。將有效句子分別經(jīng)過貪心算法、改進的TF-IDF算法和本文算法計算其相似度,對其結(jié)果進行分析。為了更好地與人工進行比較,將句子相似度劃分為以下4個階段:0~0.59, 0.6~0.79, 0.8~0.89, 0.9~1.0,經(jīng)過各種算法計算,比較每個相似度階段所包含句子數(shù)量占比得到的結(jié)果如表4。

表4 各階段相似度數(shù)量占比Table 4 Proportion of similarities in each stage
通過實驗分析,在各相似度階段,本文算法與人工評判得到的句子數(shù)量更為接近,且在低相似度(0~0.59)和高相似度(0.85~1.0)階段句子數(shù)量較少,其余階段句子數(shù)量較多,符合日常中的正態(tài)分布情況,因此說明本文方法更符合實際情況,更貼近人的思想。
為了更加準(zhǔn)確地說明本文算法的性能,采用準(zhǔn)確率(Accuracy)和誤差率(Error Rate)進行評判。根據(jù)大量經(jīng)驗顯示,人工評判存在誤差性,但基本都在0.1以內(nèi),因此,如果測試結(jié)果與人工評判的相似度在0.1以內(nèi),則將該句子劃為正確,否則為錯誤。

(6)

(7)
準(zhǔn)確率對比結(jié)果如表5所示。

表5 準(zhǔn)確率對比結(jié)果Table 5 Accuracy comparison results
通過實驗對比發(fā)現(xiàn),每組實驗結(jié)果的準(zhǔn)確率均得到提高,部分提高較明顯可能是因為選取的實驗數(shù)據(jù)中包含的否定詞或反義詞較多。本文算法較貪心算法其平均準(zhǔn)確率提高了26%,較改進TF-IDF算法提高了5.7%,因此,本文算法更能準(zhǔn)確地判斷句子的相似度。
為了從多角度展現(xiàn)本文算法的可行性,本文針對16道題目進行平均誤差率計算,得到16組數(shù)據(jù)的平均誤差率對比結(jié)果如圖5所示。
從平均誤差率分析,本文算法16組測試結(jié)果中,有15組數(shù)據(jù)的平均誤差率均低于傳統(tǒng)算法,但有一組數(shù)據(jù)卻高于改進的TF-IDF算法。經(jīng)過查看測試數(shù)據(jù)發(fā)現(xiàn),該組數(shù)據(jù)中其復(fù)合句較多,且復(fù)合句中的簡單句語義方向不同,導(dǎo)致其相似度偏低,致使誤差率較低。但從整體上看,使用本文算法計算句子相似度能降低誤差率,得到與人工評判更接近的結(jié)果。
通過以上實驗對比,本文采用的基于語義分析的算法在準(zhǔn)確率上提升了5.7%,且誤差率相比傳統(tǒng)算法均普遍較低,因此本文算法具有一定優(yōu)勢。

圖5 平均誤差率對比Fig.5 Comparison of the average error rate
本文提出的基于語義分析的改進TF-IDF算法考慮句子語義方向,并結(jié)合詞語語義相似度,采用余弦定理計算了句子的相似度,使得計算結(jié)果更加準(zhǔn)確,更貼近實際情況。從實驗數(shù)據(jù)可知,傳統(tǒng)的方法都沒有考慮句子語義方向,大多只計算關(guān)鍵詞的相似度,所以會出現(xiàn)兩個句子意思相反,但得到的相似度較高的情況,本文算法就解決了這個問題。通過分析可以看出對復(fù)句進行比較時,由于本文是將復(fù)句拆分成簡單句進行一一比較的,因此會出現(xiàn)其相似度降低的情況,但這也防止了復(fù)句中語義方向所指對象不一致卻相似度高的情況。