楊 松, 樓新遠(yuǎn)
(西南交通大學(xué),四川成都610031)
隨著互聯(lián)網(wǎng)的發(fā)展,現(xiàn)代社會已成為一個知識爆炸的社會,如何從廣闊的知識海洋中找到需要的知識是目前人們最需要解決的問題。解決此類問題的主要途徑就是利用搜索引擎進(jìn)行查找,通過使用搜索引擎,可以查找到一系列的相關(guān)文章,然后通過閱讀文章得到想要的答案?,F(xiàn)在,自動問答系統(tǒng)逐漸走入人們的視線,越來越受到重視。用戶通過自動問答系統(tǒng)可以直接得到想要的答案,而不是一系列相關(guān)的文章,比搜索引擎更加直接、友好。自動問答系統(tǒng)中的一個關(guān)鍵問題就是如何根據(jù)用戶的提問在知識庫中查找到對應(yīng)的答案,目前一般都是通過計(jì)算用戶提問的句子和知識庫中的對應(yīng)問題的句子的相似度解決。
目前進(jìn)行句子相似度計(jì)算時(shí)主要使用的算法有向量空間模型(Vector Space Model,VSM)[1-2],編輯距離算法(Levenshtein Distance)[3],語義詞典方法[4],依存樹法(Semantic Dependent T ree)[5-6],以及詞形詞序結(jié)合的方法等?;谙蛄靠臻g模型的相似度計(jì)算方法是一種基于語料庫中出現(xiàn)的關(guān)鍵詞詞頻的統(tǒng)計(jì)方法,以大規(guī)模真實(shí)語料為基礎(chǔ),首先計(jì)算出每個關(guān)鍵詞的權(quán)重,然后將句子轉(zhuǎn)換成由關(guān)鍵詞權(quán)重表示的詞項(xiàng)向量,最后通過計(jì)算兩個句子向量的夾角余弦,得到句子相似度。傳統(tǒng)的向量空間模型沒考慮到詞語的語義,沒考慮到詞語之間的相似度。論文在向量空間模型的基礎(chǔ)上增加了詞義特征,通過在傳統(tǒng)的向量空間模型中引入詞語之間的相似度,從而使計(jì)算出的兩個句子的相似度分?jǐn)?shù)更加準(zhǔn)確。
在向量空間模型中,把每個句子都表示為一個 n維詞項(xiàng)向量的形式,然后在計(jì)算兩個句子的相似度時(shí),將其轉(zhuǎn)換成向量空間中的向量夾角計(jì)算問題。使用向量空間模型計(jì)算句子相似度的時(shí)候并沒考慮到詞項(xiàng)的詞義,沒考慮到詞項(xiàng)之間的相似性。假設(shè)有如下兩個句子:句子S1=如何注冊成為淘寶會員;句子S2=怎樣申請?zhí)詫氋~號。將兩個句子分別進(jìn)行分詞處理,得到如下結(jié)果:
S1=<如何,注冊,成為,淘寶,會員>
S2=<怎樣,申請,淘寶,賬號>假設(shè)各個詞的權(quán)重如表1所示:
表1 詞的權(quán)重
則得到的兩個向量為:
S1=<1.7,3.6,0.8,5.2.3.9,0,0,0>;S2=<0,0,0,5.2,0,1.3,2.2,4.2>
則根據(jù)傳統(tǒng)的向量空間模型計(jì)算出兩個句子的相似度為0.493。
從上面的計(jì)算過程可以看出,整個過程當(dāng)中并沒考慮到詞項(xiàng)“如何”和“怎樣”是同義詞,“注冊”和“申請”是具有一定相似度的近義詞,“會員”和“賬號”也是具有一定相似度的近義詞。雖然從語義上感覺句子 S1和句子 S2非常相似,但是通過傳統(tǒng)的向量空間模型計(jì)算出的相似度分?jǐn)?shù)卻很低,就是因?yàn)橄蛄靠臻g模型中并沒考慮到詞語之間的相似性。
為了解決上述問題,提出了帶有詞義特征的向量空間模型,通過在計(jì)算的過程中引入詞語的相似度,改進(jìn)傳統(tǒng)的向量空間模型。
為了在計(jì)算句子相似度時(shí)引入詞項(xiàng)之間的相似度,新的詞項(xiàng)向量生成算法不只是將相同的詞項(xiàng)作為同一個維度進(jìn)行計(jì)算,而且將相似度大于閾值的 δ兩個詞項(xiàng)也作為同一個維度參與計(jì)算。目前計(jì)算詞項(xiàng)之間的相似度的算法一般有字面相似度算法[7-8],詞素相似度算法[9],基于《知網(wǎng)》和《同義詞詞林》的算法[10-11]等。設(shè)向量VS1是句子 S1生成的詞項(xiàng)向量,向量 VS2是句子 S2生成的詞項(xiàng)向量,向量 VSim 存放的是 VS1中和 VS2中對應(yīng)的詞項(xiàng)的相似度,所以有式(1)的關(guān)系:
其中 VSimk表示向量VSim中的第k項(xiàng),VS1k表示向量VS1中的第k個詞項(xiàng),VS2k表示向量VS2中的第k個詞項(xiàng)。生成 VS1和 VS2的算法描述如下:
(1)m=|S1|,n=|S2|;//即 S1中有 m 個詞項(xiàng),S2中有 n個詞項(xiàng)
(2)構(gòu)建一個m×n的詞項(xiàng)相似度矩陣M,矩陣元素 Mij=Sim(T1i,T2j),Tpq表示句子Sp中的第q個詞項(xiàng);
(3)查找矩陣中的最大值,記為Max,Max所在行記為r,所在列記為c;
(4)if Max≧δthen
將詞項(xiàng) T1r加入到向量VS1的結(jié)尾,并從 S1中刪除詞項(xiàng) T1r;
將詞項(xiàng) T2c加入到向量VS2的結(jié)尾;并從 S2中刪除詞項(xiàng) T2c;
將Max加入到向量 VSim的結(jié)尾;
end if
(5)重復(fù)(1)~(4),直到?jīng)]有Max值小于 δ,或者矩陣為空;
(6)將S1中剩余的k個詞項(xiàng)加入到向量VS1的結(jié)尾,并在 VS2的結(jié)尾加入k個0元素;
(7)將 S2中剩余的t個詞項(xiàng)加入到向量VS2的結(jié)尾,并在 VS1的結(jié)尾加入 t個0元素;
(8)在 VSim的結(jié)尾加入k+t個0元素。
假設(shè)詞項(xiàng)之間的相似度如表2所示:
表2 詞項(xiàng)相似度
假設(shè)閾值δ=0.7,根據(jù)上述算法生成的3個詞項(xiàng)向量分別為:
VS1=<如何,淘寶,會員,注冊,成為>
VS2=<怎樣,淘寶,賬號,申請,0>
VSim=<1,1,0.8,0.7,0>
可以看出,這里生成的詞項(xiàng)向量已經(jīng)將相似度大于δ的詞項(xiàng)放在同一個維度。
因?yàn)橥ㄟ^新算法生成的句子向量,將相似的兩個詞項(xiàng)當(dāng)做同一個維度,所以需要對傳統(tǒng)的向量空間模型中的公式進(jìn)行改進(jìn),在計(jì)算兩個詞項(xiàng)的權(quán)重的乘積時(shí)引入詞項(xiàng)的相似度。繼續(xù)使用符號 W作為詞項(xiàng)的權(quán)重標(biāo)記,Wpq表示句子向量VSp中的第q個詞項(xiàng)的權(quán)重。改進(jìn)的相似度算法如式(2)所示:
其中 VSim是新的句子向量算法生成的詞項(xiàng)相似度向量。
上文例子中的兩個句子“如何注冊成為淘寶會員”和“怎樣申請?zhí)詫氋~號”,通過新的相似度算法計(jì)算出的相似度得分為0.873,顯然好于之前的計(jì)算結(jié)果。
使用正確率(Precision,P)和召回率(Recall,R)[12]兩個基本指標(biāo)來衡量句子相似度算法的效果。通過將正確率和召回率進(jìn)行融合,可以得到二者的調(diào)和平均值F,使用F作為最終的衡量結(jié)果,F的定義如下:
另β=1,即表示F值中正確率和召回率的權(quán)重相等,得到
實(shí)驗(yàn)中,使用某電子商務(wù)公司的自動問答機(jī)器人系統(tǒng)中某類別的470條常見問題集作為語料庫,隨機(jī)抽取某日用戶針對該類問題提問的313個問題作為查詢問題集,使用查詢問題集中的問題對語料庫進(jìn)行提問,并對查詢結(jié)果進(jìn)行人工識別。根據(jù)《同義詞詞林(擴(kuò)展版)》得到詞語的相似度,《同義詞詞林(擴(kuò)展版本)》使用5層分類體系,將詞語進(jìn)行編碼,兩個詞語的編碼從左至右進(jìn)行對比,得到的公共前綴子串越長,表示兩個詞語越相似。根據(jù)《同義詞詞林(擴(kuò)展版)》中定義的層級對詞語的相似度進(jìn)行打分,結(jié)果如表3所示。
表3 詞語的相似度分?jǐn)?shù)
根據(jù)上述數(shù)據(jù)和公式分別計(jì)算通過傳統(tǒng)的向量空間模型得到的F值,以及通過改進(jìn)的向量空間模型得到的F值(見表4)。其中詞語相似度的閾值δ進(jìn)行3次不同的取值,分別為1,0.9和0.7。
表4 實(shí)驗(yàn)結(jié)果
通過實(shí)驗(yàn)結(jié)果可知,使用帶有詞義的向量空間模型得到的計(jì)算結(jié)果的精確率和召回率有所改善。
提出了帶有詞義特征的向量空間模型,通過在傳統(tǒng)的向量空間模型中引入詞語的相似度,彌補(bǔ)了傳統(tǒng)向量空間模型中沒有考慮詞義的缺點(diǎn),通過實(shí)驗(yàn)驗(yàn)證了該方法可以得到更高的精確率,尤其是召回率提高的較多。但是生成句子向量的算法復(fù)雜度較高,不適合計(jì)算詞項(xiàng)很多的整篇文檔之間的相似度,只適用于計(jì)算句子的相似度。
[1] Salton G,Wong A.On the Specification of Term Value in Automatic Indexing[J].Journal of Documentation,1973,29(4):351-372.
[2] Salton G.The SMART Retrieval System-Experiments in Automatic Document Processing[M].Englewood Cliff,NJ:Prentice Hall Inc,1971.
[3] 車萬翔,劉挺,秦兵,等.基于改進(jìn)編輯距離的中文相似句子檢索[J].高技術(shù)通訊,2004,(7):15-19.
[4] 裘江南,羅志成,王延章.基于中文語義詞典的語義相關(guān)度方法比較研究[J].情報(bào)理論與實(shí)踐,2008,(5).
[5] 李彬,劉挺,秦兵.基于語義依存的漢語句子相似度計(jì)算[J].計(jì)算機(jī)應(yīng)用研究,2002,(12):15-17.
[6] 穗志方,俞士汶.基于骨架依存樹的語句相似度計(jì)算模型[A].中文信息處理國際會議[C],北京,1998.
[7] 吳志強(qiáng).經(jīng)濟(jì)信息檢索后控詞表的研究[D].南京:南京農(nóng)業(yè)大學(xué),1999.
[8] 章成志.基于多層特征的字符串相似度計(jì)算模型[J].情報(bào)學(xué)報(bào),2005,24(6).
[9] 侯漢清,朱毅華,沙印亭.計(jì)算機(jī)識別同義詞的兩種算法的比較與評測[J].中國圖書館學(xué)報(bào),2002,28(140):82-85.
[10] 李素建,劉群.基于《知網(wǎng)》的詞匯語義相似度計(jì)算[C].第三屆中文詞匯語義學(xué)研討會,中國臺北,2002.
[11] 梅家駒,竺一鳴,高蘊(yùn)琦.同義詞詞林:第二版[M].上海:上海辭書出版社,1996.
[12] Christopher D.Manning,Prabhakar Raghavan,Hinrich Schutze.Introduction to Information Retrieval[M].Cambridge University Press,2008.