張俊飛
(廣州醫(yī)科大學基礎學院,廣州 511436)
改進TF-IDF結(jié)合余弦定理計算中文語句相似度
張俊飛
(廣州醫(yī)科大學基礎學院,廣州 511436)
提出一種改進TF-IDF結(jié)合余弦定理計算中文語句相似度方法。首先采用IKAnalyzer分詞器對中文語句分詞處理,提取核心關鍵詞,然后通過計算句子關鍵詞詞頻和權重形成的TF-IDF向量組,結(jié)合余弦定理實現(xiàn)中文句子相似度計算。改進后的TF-IDF計算方法采用《同義詞詞林》詞典實現(xiàn)對關鍵詞及其同義詞詞頻統(tǒng)計,并通過Lucene技術實現(xiàn)關鍵詞權重快速計算。改進后的中文句子相似度算法不僅考慮句子中關鍵詞的物理特征,還對關鍵詞的語義特征進行相似度計算,提高中文句子相似度計算的準確性。
TF-IDF;余弦定理;同義詞詞林;Lucene
中文語句相似度計算是自然語言處理領域重要的一個方面。在智能答疑[1]、信息檢索[2]、機器翻譯[3]等領域都有很好的應用。隨著信息技術的發(fā)展,當前中文句子相似度的計算算法研究很多,總體來說可以分為兩大類:①基于表層特征的相似度計算方法,如基于詞物理特征的統(tǒng)計方法、字面匹配方法等;②基于語義層面的相似度計算,如語義知識、句子結(jié)構(gòu)等特征的分析[4]。
余弦定理是計算句子相似度的一個很好的方法,屬于基于表征相似度計算,通過對句子關鍵詞特征值組成向量進行余弦求解,按照值的大小說明句子相似度問題。本文在吸收傳統(tǒng)的余弦定理相似度計算算法基礎上,引入了語義層面相似度計算,通過改進關鍵詞特征值構(gòu)成的向量,實現(xiàn)對句子相似度計算更加精準。本文主要工作包括:①在計算詞頻(Term Frequency,簡稱TF)算法中,融合了基于《同義詞詞林》詞典的詞語相似度計算算法,利用詞的距離計算詞的相似性,很好的解決了同義詞、近義詞等問題,從而使得關鍵詞特征值更能體現(xiàn)關鍵詞的屬性,構(gòu)成的向量更加符合實際情況,提高計算的準確性。②詞的權重(Inverse Document Frequency,簡稱IDF)計算,以數(shù)據(jù)庫中錄入的相關問題為語料庫,采用Lucene技術對語料庫創(chuàng)建索引,快速查詢關鍵詞索引,從而計算出每一個關鍵詞的IDF值。模擬智能問答,驗證改進算法的優(yōu)越性。
中文分詞就是把一個漢字字符串序列分割成若干個詞語序列。中文語句分詞是計算句子相似度的基礎工作。目前主流的分詞算法可以分為三類:①依照詞典的機械分詞,用已存在的語料詞典和中文語句匹配,分割語句為若干詞語。②統(tǒng)計分詞,這是一種無詞典中文分詞法。其實現(xiàn)原理為:在語料庫中出現(xiàn)次數(shù)越多的漢字或者詞組則被認為是詞語的概率越大。然而可能忽視掉不常用的詞語,并且此種分詞法在時間和空間上的復雜度較高。③知識推理分詞,其原理為:把特定領域的語料資源和分詞工作在結(jié)構(gòu)上實現(xiàn)松耦合,通過邏輯推理實現(xiàn)中文分詞效果。該方法應該是最為復雜和困難的,實現(xiàn)起來很麻煩。
基于關鍵詞特征語句相似度計算[5],是對兩個語句進行去停用詞、中文分詞得到的關鍵詞進行空間向量相似度計算。通過對兩個語句關鍵詞特征值形成的空間向量進行向量夾角余弦值求解,計算相似度值,值越大,越相似。TF-IDF結(jié)合余弦相似性計算語句相似度實現(xiàn)原理如下。
①求出兩個句子S1和S2有效關鍵詞去重后,組成數(shù)組 V=(X1,X2,…,Xn)。
②計算S1和S2兩個句子的詞頻向量V1={ω1,ω2,…,ωn},V2={ξ1,ξ2,…,ξn}。其中ωi(1≤i≤n)為關鍵詞組Xn在S1中出現(xiàn)的次數(shù)TF與IDF的乘積;ξi(1≤i≤n)為關鍵詞組Xn在S1中出現(xiàn)的次數(shù)TF與IDF的乘積。TF和IDF算法如下:
詞頻(TF)=某個詞在文章中的出現(xiàn)次數(shù)
③采用余弦相似性算法計算V1和V2相似度值。
通過TF-IDF結(jié)合余弦相似性算法計算出S1和S2兩個語句的相似度值,但是此種方法沒有考慮句子關鍵詞的語義信息,如同義詞、近義詞的相似度。
詞語的語義分析是基于語義詞典的計算,比較常用的中文語義詞典有HowNet知識庫和《同義詞詞林》,英語常用的語料詞典是WordNet。本研究用到了基于同義詞詞林的語義相似度計算,以下詳細介紹其算法原理。
《同義詞詞林》是在1983年由梅家駒等人編寫的,詞典包含有詞語的同義詞、同類詞。本研究采用了哈工大信息檢索實驗室對詞林詞典更新后的擴展版,詞表包含77343條詞語。
同義詞詞典采用五層的層級體系,逐層詞語逐漸增多,描述的詞義越來越具體,直到第5層。第1層用大寫英文字母表示;第2層用小寫英文字母表示;第3層用二位十進制整數(shù)表示;第4層用大寫英文字母表示;第5層用二位十進制整數(shù)表示。例如:Cb02A 01=東南西北四方;Cb06E 09@民間;Ba01B 10#導體半導體超導體。
表1 哈工大擴展版編碼規(guī)則表
基于詞林詞典計算詞語相似度算法是對兩個詞語的距離進行計算,距離越大,其相似度越低[6]。中文的詞語有很多義項,同一個詞可能含有多個義項,因此被歸類到不同的層級中。在計算兩個詞語義項相似度時,要分別計算取最大值為兩個詞語的相似度值。相似度計算方法為層級相同則乘1,否則乘以系數(shù)ξ(0≤ξ≤1),然后再乘以調(diào)節(jié)系數(shù) cos(n*π )(n為層級的180節(jié)點總數(shù))。詞語在詞典樹中的分支多少也直接影響到了義項的相似度,因此還需要再乘以(n-k+1)/n,其中n為層級節(jié)點總數(shù),k兩個分支之間的距離。當兩個義項在詞典同一行內(nèi)編號相同時,如果尾號為“=”則相似度為 1;尾號為“#”,則相似度為系數(shù)e;尾號為“@”,則表示該詞沒有同義詞或同類詞。本研究中設置各個層級系數(shù)按照田久樂[7]設定的值:當兩個義項第一層分支不同時,設置兩個詞相似度f=0.1;當兩個義項第一層分支相同時,分別設為第二層ξ=0.65,第三層ξ=0.8,第四層ξ=0.9,第五層ξ=0.96,系數(shù) e=0.5。
中文語句相似度的計算其實就是語句包含的關鍵詞詞語特性值相似度計算。語句分詞效果影響到句子相似度計算的準確性,語句分詞是相似度計算的基礎。本研究采用IKAnalyzer2012FF_u1開發(fā)包實現(xiàn)中文語句分詞。
IK2012通過配置文件IKAnalyzer.cfg.xml實現(xiàn)對外部停用詞詞典和擴展分詞詞典的加載,從而實現(xiàn)分詞過程中剔除停用詞和增加擴展詞典的分詞。在PC測試系統(tǒng)環(huán)境下,IK2012的分詞效果如下表1所示。PC測試系統(tǒng)環(huán)境為:Core2 i7 3.4GHz雙核,4G內(nèi)存,64位Windows 7系統(tǒng),64位Sun JDK 1.6_29。
表2IK2012分詞效果表
為了實現(xiàn)快速檢索,Lucene采用倒排索引的數(shù)據(jù)結(jié)構(gòu)。倒排索引是根據(jù)屬性值查找記錄數(shù)據(jù),每個屬性包含該屬性歸屬的記錄數(shù)據(jù)地址。通常認為單詞是文檔的組成部分,反轉(zhuǎn)認為文檔是依附單詞存在,這樣的索引就稱作倒排,由屬性值查找記錄數(shù)據(jù)的位置因而稱為倒排索引。倒排索引以文檔形式存儲,形成倒排文檔。
Lucene的索引結(jié)構(gòu)可以分為索引(index)、索引段(segment)、索引文檔(document)、索引域(field)和索引項(term)五個層次。五個層次之間是具有包含關系的,每個索引由一個或者多個索引段組成,每個段包含一個或者多個索引文檔,每個文檔又管理一個或者多個索引域,每個域由一個或多個索引項構(gòu)成,而每個索引項就是一個索引數(shù)據(jù)。Lucene5.2.1生成的索引文檔類型如表3所示。
表3 索引文檔類型
改進后的算法優(yōu)化實現(xiàn)主要體現(xiàn)在兩點:TF運算中加入了詞語語義分析;IDF運算采用了Lucene技術實現(xiàn)。為了闡述改進TF-IDF結(jié)合余弦定理中文語句相似度計算算法,舉例中文語句A和B相似度計算中A的空間向量V1的算法實現(xiàn)。
算法2中文語句A和B相似度計算中求解A的空間向量V1
輸入:中文語句A、B
輸出:A的空間向量V1
1 String[]A'←IK2012(A);
2 String[]B'←IK2012(B);
3 String[]C'←A'∪B';
4 For i=0 to Length[C']do
5 TFi←C'[i]在 A'中的個數(shù);
6 If TFi=0 then
7 TFi←C'[i]在 A'中相似度最大 A'[j]的個數(shù),其中0≤j≤Length[A'];
8 Similarity←Sim(A'[j],C'[i]);
9 TFi←TFi*Similarity;
10End
11 If TFi<0.5 then
12 TFi←0;
13End
14 IDFi←Lucene(C'[i]);
15 V1.add(TFi*IDFi);
算法步驟解釋如下:
①采用IKAnalyzer分詞器實現(xiàn)對A、B的分詞,并分別賦給數(shù)組 A'、B',并求出 A'和 B'并集 C'。
②遍歷數(shù)組A',統(tǒng)計C'[i]個數(shù),并賦值給TFi。
③如果C'[i]不存在A'中,求出C'[i]與A'數(shù)組相似度值最大值元素A'[j]個數(shù),并賦值TFi;相似度值賦給變量Similarity;TFi與Similarity的乘積再賦給TFi。
④如果TFi值小于0.5,則TFi賦值0。
⑤求出C'[i]在語料庫中的IDFi值。
⑥TFi與IDFi的乘積即為空間向量V1的一個元素。
模擬智能問題答疑功能模塊實現(xiàn)對改進的相似度算法驗證。
選取互聯(lián)網(wǎng)中20道計算機基礎知識問答題,并錄入到SQL Server數(shù)據(jù)庫中作為相似度計算的語料。問題如表4所示。
表4 語料庫
利用Lucene對20道問題創(chuàng)建索引,然后分別采用傳統(tǒng)TF-IDF和改進TF-IDF結(jié)合余弦定理相似度算法對提出的問題和問題庫中的每個問題求相似度,然后對相似度值進行排序。傳統(tǒng)的TF-IDF算法中,TF算法不涉及關鍵詞語義的計算,單是物理詞頻的統(tǒng)計。兩種算法都采用Lucene技術實現(xiàn)IDF計算和余弦定理算法求相似度值。為了驗證改進后算法的計算效果,針對20道問題進行大量人工判斷,統(tǒng)計出人工排序結(jié)果作為參考。
實驗采用以“電腦的組成部分,常見應用有哪些?”為檢索問題,相似度計算結(jié)果如下所示。
從圖3可以看出,改進算法排序和人工排序曲線基本一致,傳統(tǒng)算法排序曲線與人工排序曲線重合度比較低。這說明改進算法更加符合實際情況,更接近人的認知水平。
圖3 三種排序結(jié)果圖
從兩種算法計算出相似度值對比圖4中可以看出,兩種算法計算出的結(jié)果是有差異的,且改進后的相似度計算結(jié)果普遍高于傳統(tǒng)算法。傳統(tǒng)算法實驗沒有考慮“計算機”、“電腦”等同義詞、同類詞,導致關鍵詞構(gòu)成的TF-IDF空間向量不同,問題相似度計算結(jié)果不同,排序也發(fā)生了變化。
圖4 兩種算法計算結(jié)果對比圖
本文通過改進IF-IDF算法,結(jié)合余弦定理,充分利用詞語在詞林中的語義距離計算,使得句子相似度更為準確,符合實際情況。從實驗數(shù)據(jù)可知,傳統(tǒng)的TFIDF與余弦定理結(jié)合算法,沒有對詞的語義知識考慮,單純的統(tǒng)計關鍵詞物理特征值,求得句子相似度值,與實際情況不符,準確性相比改進后的算法不高。
[1]康文寧,楊志強.相似度計算在智能答疑系統(tǒng)中的研究及應用[J].計算機技術與發(fā)展,2010,02:71-74.
[2]王莉軍.海量數(shù)據(jù)下的文本信息檢索算法仿真分析[J].計算機仿真,2016,04:429-432.
[3]李茂西,徐凡,王明文.機器譯文自動評價中基于IHMM的近義詞匹配方法研究[J].中文信息學報,2016,04:117-123.
[4]翟繼友.一種混合型的句子語義相似度計算方法[J].科學技術與工程,2014,28:81-85.
[5]駱正清,陳增武,胡上序.一種改進的MM分詞方法的算法設計[J].中文信息學報,1996,03:30-36.
[6]李杰,曹謝東,余飛.基于語義相似度計算的詞匯語義自動分類系統(tǒng)[J].計算機仿真,2008,08:295-299+307.
[7]田久樂,趙蔚.基于同義詞詞林的詞語相似度計算方法[J].吉林大學學報(信息科學版),2010,06:602-608.
Words Similarity Algorithm Based on Improved TF-IDF and Cosine Theorem
ZHANG Jun-fei
(Guangzhou Medical University,Guangzhou 511436)
Puts forward a Chinese sentence similarity computing method based on improved TF-IDF and Cosine Theorem.Firstly,extracts keywords by Chinese word segmentation processing,secondly,calculates space vector which based on TF and IDF.Then,combines cosine theorem to calculate words similarity.The improved TF-IDF calculation method adopts the synonym dictionary to calculate key words and synonym word frequency statistics,and through the Lucene techniques to calculate the IDF of key words fast.The improved Chinese sentence similarity algorithm not only considers physical characteristics of keywords,but also semantic characteristics,which improves the accuracy of the Chinese sentence similarity calculation.
TF-IDF;Cosine Theorem;Tongyici Cilin;Lucene
廣州醫(yī)科大學教育科學規(guī)劃課題(No.L159208)、廣州市教育局市屬高校教育教學改革項目(No.B17035003)
1007-1423(2017)32-0020-05
10.3969/j.issn.1007-1423.2017.32.005
張俊飛,助理實驗師,碩士,研究方向為中文信息處理
2017-07-11
2017-10-25