袁紹正,周艷平
(青島科技大學(xué) 信息科學(xué)技術(shù)學(xué)院,青島 266061)
計算句子相似度是自然語言處理領(lǐng)域研究的一個基礎(chǔ)且重要的工作,有著廣泛的應(yīng)用方向,多用于智能問答、信息檢索、語義分析和文本分類等場景.
目前對于句子相似度的研究停留在語義理解范圍,依托越來越龐大的數(shù)據(jù)庫做大量的仿真,做到讓機器理解人類的語言,但現(xiàn)有的句子相似度計算方法主要分為兩大類:基于統(tǒng)計的方法和基于深度學(xué)習(xí)的方法[1].典型的方法有萊文斯坦距離、BM25、TF-IDF、Word2Vec余弦相似度、Jaccard 系數(shù)相似性計算等.
國內(nèi)外各個學(xué)者對句子相似度的研究做了廣泛的探索.Tian 等[2]提出一種基于同義詞表的改進Word2Vec句子相似度算法,通過構(gòu)建同義詞表和融合詞向量來提高句子相似度計算的準確性;Wilson 等[3]提出一種使用組合語義方法來測量文檔相似性的有效方法,該方法結(jié)合了多個語義計算;文獻[2,3]的研究由于語義工具和應(yīng)用邏輯的效率決定了應(yīng)用程序的準確度和整體性能,待進一步提升;Goz 等[4]研究基于關(guān)鍵字的社交網(wǎng)絡(luò)相似性的適用性;Ruan 等[5]計算句子相似度是將Word2Vec 方法和詞嵌入相似度方法結(jié)合,二者對于關(guān)鍵詞詞性信息稍欠考慮;翟社平等[6]提出多特征的句子詞形、詞序及句長特征融合的相似度計算方法,由于句子關(guān)鍵詞存在一詞多義,只考慮了句子的字面特征,將導(dǎo)致相似度匹配不準確.
句子由多個詞組成也包含多種屬性,句長度、詞出現(xiàn)的頻率和詞在句中的詞性以及其在句中的順序?qū)渥诱Z義的影響度不同,需綜合考慮到句子深層和表層所有因素[7].因此本文以句子的語序結(jié)構(gòu)、詞性信息和形態(tài)結(jié)構(gòu)等特點為核心要素,構(gòu)建研究領(lǐng)域本體庫,通過給各屬性分配權(quán)重,提出一種基于句子的多屬性融合相似度計算方法,以提升句子相似度計算的合理性.
文本相似度一般指文本在語義上的相似程度[8],句子相似度指的是句子在語義上的相似程度,用來評估句子之間符合程度.如果兩個句子之間符合程度高,那兩者一定有相似或相同的屬性,令SIM(S1,S2)作為兩個句子S1和S2的相似度,則其具有以下幾個特點:
(1)SIM(S1,S2)∈[0,1]∩SIM(S1,S2)∈R,表示兩個句子相似度的取值;
(2)SIM(S1,S2)=0,表示句子之間沒有任何相同的屬性,兩個句子不相似;
(3)SIM(S1,S2)=1,表示兩個句子在形態(tài)結(jié)構(gòu)、語序結(jié)構(gòu)、語義信息等方面具有完全相同的屬性;
(4)SIM(S1,S2)=SIM(S2,S1),表示兩個句子相似且具有對稱性.
兩個句子的相似度可以用向量余弦值的值來衡量,稱為余弦相似度[9].首先,將兩個句子數(shù)字化變成向量,其次,計算其夾角余弦cos(θ),衡量兩個向量之間差異的大小.余弦值接近1,夾角趨于0,表明兩個向量越相似,余弦值接近0,夾角趨于90 度,表明越不相似.如圖1所示,向量a和向量b的余弦夾角小于向量a和向量c的余弦夾角,表示a和b具有更高的相似度.
圖1 向量的余弦相似度
將句子S1和S2以向量表示:
則句子的余弦相似度計算公式為:
一個句子除包含的關(guān)鍵詞外,也不能忽略自身的一些屬性,比如詞頻、詞序、詞性和句長,本文將4 個屬性進行加權(quán)融合得到句子相似度.句子之間在詞語形態(tài)上的相似度,即出現(xiàn)共有關(guān)鍵詞的頻率為詞頻相似度;句子之間共有關(guān)鍵詞的相對位置關(guān)系的相似度為詞序相似度;句子之間共有關(guān)鍵詞的詞性的相似度為詞性相似度;兩個句子的長度的關(guān)系為句長相似度.
傳統(tǒng)方法對句子進行分詞、去停等操作提取關(guān)鍵詞進行表面特征的相似度比較,這是不全面的,中文自然語言不同于英文自然語言,中文有著豐富且靈動的表達形式.如詞性方面,“退役士兵有什么需要?”與“退役士兵需要有什么?”,此處的兩個“需要”字面特征一致,本質(zhì)卻不同,名詞和動詞的詞性不同導(dǎo)致句子所表達的意思有差別.詞性序列如表1所示.
表1 句子關(guān)鍵詞詞性
本文將使用哈爾濱工業(yè)大學(xué)開發(fā)的在線語言技術(shù)平臺(language technology platform,LTP)[10]進行分詞并得到所需的句子屬性信息.LTP 處理后的結(jié)果如圖2.
圖2 分詞和詞性標注的結(jié)果
改進基于向量空間模型TF-IDF(term frequencyinverted document frequency)的詞頻計算方法[11].TFIDF 簡單結(jié)構(gòu)沒有考慮詞語的語義信息,無法處理一詞多義與一義多詞的情況.
采用詞語逆頻率方式計算加權(quán)算法TF-IWF(term frequency-inverse word frequency),將句子S1和S2各自的詞頻向量映射到向量空間中,其中為關(guān)鍵詞wi的詞頻-逆詞頻率,為關(guān)鍵字wi在文本中出現(xiàn)的頻率,即TF 值,表示關(guān)鍵詞wi出現(xiàn)的次數(shù)與所有詞匯量的比值,iwfwi為逆詞頻率,即IWF 值,表示為所有詞語的頻數(shù)之和與關(guān)鍵詞wi出現(xiàn)的頻數(shù)和的比值.結(jié)合向量余弦相似度方法[12]:
句子中共有關(guān)鍵詞需考慮其相對位置關(guān)系,詞序相似度是共有關(guān)鍵詞在兩個句子中的位置相似度,詞位置順序不同導(dǎo)致句子意思不同.句子S1=“青島籍退役士兵在北京服役政策”,句子S2=“北京籍退役士兵在青島服役政策”.經(jīng)詞性和詞頻相似度計算,S1和S2相似度是100%,但實際意義差別較大,采用逆序數(shù)與向量距離相似度度量方法[13,14]融合計算詞序相似度.
舉例說明,S1的中心詞={‘青島’,‘退役士兵’,‘北京’,‘服役’,‘政策’};S2的中心詞={‘北京’,‘退役士兵’,‘青島’,‘服役’,‘政策’}.
以句子S1的序列為標準序列(1,2,3,4,5).
首先以兩個句子所含相同關(guān)鍵詞的逆序數(shù)作為衡量因素,S2的序列為(3,2,1,4,5),Ron(S1,S2,s)代表句子S2中詞匯的逆序數(shù),S為相同關(guān)鍵詞個數(shù),則采用逆序數(shù)衡量詞序相似度公式為:
得出句子S1和S2的逆序數(shù)詞序相似度為:
然后以兩個句子所含相同關(guān)鍵詞的向量距離[14]作為衡量因素,distance(S1,S2)代表句子S1到S2的向量距離,maxDistance(S1,S2)為distance(S1,S2)的最大值,其計算公式為:
得出句子S1和S2的向量距離詞序相似度為:
逆序數(shù)Rev(S1,S2)與向量距方法Vec(S1,S2)融合計算詞序相似度為:
詞性相似度(nature similarity)指兩個句子中共有關(guān)鍵詞的詞性相似度,此相似度計算方法用來完善一詞多義的情況[15],定義為具有相同詞性的共有關(guān)鍵詞數(shù)與兩個句子總關(guān)鍵詞數(shù)和之比.計算公式為:
使用LTP 分詞后并將得到的關(guān)鍵詞詞性進行比較,式子中Ncs(S1,S2)是句子S1和S2相同詞性的共有關(guān)鍵詞數(shù),Com(S1)和Com(S2)即句子S1和S2的總關(guān)鍵詞數(shù).顯而易見的,如果得到的兩個句子詞性相同的關(guān)鍵詞數(shù)越多,那么兩個句子詞性相似度越高.
以詞頻、詞序、詞性為核心要素計算相似度時,而要完整、準確的反映句子的信息也要考慮句長的存在.
兩個句子長度的差的絕對值,可以反映一定程度上的句子相似度,其與絕對值的大小成反比,值越小,說明此種程度上的相似度越大.假設(shè)句子S1長度表示為Len(S1),S2長度表示為Len(S2),句長相似度表示為LenSim(S1,S2),則其計算公式如下:
式中,abs()為絕對值函數(shù).
綜合詞頻、詞序、詞性、句長4 種屬性,融合4 種相似度,其計算流程如圖3所示.
圖3 方法計算流程
首先輸入句子S1,S2,經(jīng)過分詞處理、去停留詞、詞性標注等預(yù)處理操作,最終得出句子相似度公式為:
式中,α 、 β、 γ、 δ分別是詞頻、詞序、詞性和句長相似度的權(quán)重值,其中0≤ α≤1,0≤ β≤1,0≤ γ≤1,0≤δ≤1,且滿足|α+β+γ+δ|=1.
本文采用層次分析法(AHP)[16]通常被用到處理復(fù)雜的決策問題,準備采取決策的問題分成3 個層次,基于該方法計算出的各相似度的權(quán)重.步驟如下:
(1)將問題條理化、層次化,根據(jù)詞頻、詞序、詞性和句長相似度建立層次結(jié)構(gòu)模型.
(2)根據(jù)經(jīng)驗賦予各相似度重要程度并構(gòu)造判斷矩陣,詞頻與詞序相似度重要程度高且一致,相較而言,詞性和句長相似度重要程度低且一致,并使用1~9 及其倒數(shù)作為標度來確定ai j的值,如表2所示.
顯然,表2 中的元素滿足:
表2 重要程度
根據(jù)層次分析法規(guī)則可得比較矩陣,如表3所示.
表3 比較矩陣
(3)層次單排序并進行一致性檢驗,根據(jù)表3 可得判斷矩陣A.
計算該判斷矩陣的最大特征值λmax= 3,其對應(yīng)的特征向量為[0.6934,0.6934,0.1387,0.1387],求出一致性指標CI(consistency index):
其中,n為矩陣的維度,得出CI=0,表示完全一致.CI的值越小,表示越一致,CI的值越大,表示越不一致.
(4)使用Satty 模擬1 000 次得到的RI表計算一致性比率,RI表如表4所示.
表4 RI 表
根據(jù)|α+β+γ+δ|=1,得出基于詞頻和詞序?qū)傩缘南嗨贫葯?quán)值為0.417,基于詞性和句長屬性的相似度權(quán)值為0.083.
本文算法實驗中,開發(fā)環(huán)境為Windows 10 X64,開發(fā)工具為VSCode1.54.1,開發(fā)語言為Python 3.6.4.采用哈爾濱工業(yè)大學(xué)開發(fā)的在線語言技術(shù)平臺(LTP)進行關(guān)鍵詞分詞并得出所需的句子的屬性.
為驗證方法的效果,對本文提出的基于句子的多屬性融合相似度計算方法和Jarcarrd、文獻[14]方法,設(shè)計對比試驗,以召回率(Recall)、準確率(Precision)、F-度量值(F-Measure)[17]對比不同算法的性能,F 度量值綜合涵蓋召回率與準確率兩個指標,值越接近于100%,說明準確率和召回率越均衡,方法的效果越好,相反,如果F 度量值越接近于0,說明兩個指標的均衡性越差,方法效果欠缺.
(1)召回率(Recall)衡量相似度匹配的查全率.
(2)準確率(Precision)衡量相似度匹配的查準率.
(3)F-度量值(F-Measure)是召回率與準確率的指標歸一化平均值,用于反映整體的指標.
實驗步驟如下:
實驗所需數(shù)據(jù)為隨機從國家與地方退役軍人事務(wù)局等網(wǎng)站爬取的,經(jīng)過數(shù)據(jù)處理建立的問答庫,從中選取300 條問答對作為初始數(shù)據(jù)集S.隨機從S中選取50 條作為初始標準集,余下250 條作為初始噪聲集,w為標準集的問句,w∈S.依次使用w作為百度知道的查詢條件,利用Python 正則表達式對查詢返回的網(wǎng)頁進行標簽分析處理,提取出網(wǎng)頁中前5 個標題,問句w會有1-5 個相似問句,人工處理篩選出標題和問句相似度高的句子,得到完善好的包含223 個元素的擴充標準集,將擴充標準集和初始標準集混合成為273 個元素的標準測試集,相同的將初始噪聲集處理得到包含1 190 個元素的擴充噪聲集,并和初始噪聲集混合得到1 440 個元素的噪聲測試集,最后將二者混合得到測試集.依次從標準測試集的273 個句子中抽出一個問句P,然后將其與測試集的問句的相似度計算出進行逆序排列,如果前5 個句子包括了擴充標準集中問句P所以對應(yīng)的1-5 個句子,則表明句子相似度計算達到預(yù)期.實驗結(jié)果如表5所示.
表5 句子相似度對比實驗(%)
Jaccard 方法和文獻[14]方法與本文方法的實驗結(jié)果從表5 可以看出,Jaccard 方法具有較高準確率和較低召回率,但該方法以句子的字面量為特征,所以有一定限制在一詞多義層面的相似度計算方面,句子中包含的關(guān)鍵詞相似,但卻忽略了關(guān)鍵詞詞性的不同.文獻[14]方法解決了一義多詞問題,比較而言,其召回率比Jaccard 方法高64.3%,準確率卻下降了26.2%,顯而易見,兩種方法均沒有達到均衡穩(wěn)定的效果.本文方法相較于文獻[14]方法準確率提高約20%,且F-度量值更接近于100%,明顯優(yōu)于使用Jaccard 方法和文獻[14]方法.
本文提出的基于句子的多屬性融合相似度計算方法,綜合考慮了句子的結(jié)構(gòu)和包含的屬性,以詞頻、詞序、詞性和句長4 種相似度加權(quán)融合計算,對提高句子相似度計算的準確率有利,且不會大范圍出現(xiàn)召回率的降低,其可靠性及可行性優(yōu)于傳統(tǒng)方法,召回率、準確率不僅均衡且歸一化F度量值較高,達到87.12%,擁有綜合優(yōu)勢.接下來,將該方法應(yīng)用于智能問答系統(tǒng)的句子匹配,可適用普遍存在的句子語法情況,進一步研究時,將繼續(xù)優(yōu)化此方法的復(fù)雜度及問答效率.