社交搜索典型算法

騰訊在2011年發佈“大社區搜索”概念,以“搜索+分享”的形式整合騰訊現有的社交產品,並在近幾年逐步實現了這一構想。今天我就個人對社交搜索的研究內容做一整理。

首先講幾個重要的算法:

1.HITS算法

全名爲超文本敏感標題算法。

算法的原理

用戶輸入關鍵詞後,該算法對返回的匹配頁面計算兩種值:樞紐值(Hub Scores)和權威值(Authority Scores)。樞紐值指頁面上所有導出鏈接指向頁面的權威值之和。權威值指所有導入鏈接所在的頁面中樞紐之和。在限定範圍之後根據網頁的出度和入度建立一個矩陣,通過矩陣的迭代運算和定義收斂的閾值不斷對兩個向量Authority和Hub值進行更新直至收斂。

具體算法

將查詢q提交給基於關鍵字查詢的檢索系統,從返回結果頁面的集合中取前n個網頁(如n=200),作爲根集合(root set),記爲S,則S滿足:
1.S中的網頁數量較少
2.S中的網頁是與查詢q相關的網頁
3.S中的網頁包含較多的權威(Authority)網頁
通過向S 中加入被S 引用的網頁和引用S 的網頁,將S 擴展成一個更大的集合T. 以T 中的Hub 網頁爲頂點集V1 ,以權威網頁爲頂點集V2 。
V1 中的網頁到V2 中的網頁的超鏈接爲邊集E ,形成一個二分有向圖. 對V1 中的任一個頂點v ,用h ( v) 表示網頁v 的Hub 值,且h ( v)收斂;對V2 中的頂點u ,用a ( u) 表示網頁的Authority 值。
開始時h ( v) = a ( u) = 1 ,對u 執行I 操作,修改它的a ( u) ,對v執行O操作,修改它的h ( v) ,然後規範化a ( u),h ( v) ,如此不斷的重複計算下面的I操作和O操作,直到a ( u),h(v)收斂 。
其中I操作:a ( u) = Σh ( v) ;O 操作: h ( v) = Σa ( u) 。每次迭代對a ( u) 、h ( v) 進行規範化處理: a ( u) = a ( u)/Σ[ a ( q) ]2 ; h ( v) = h ( v)/Σ[ h ( q) ]2 。

優點

HITS算法通過兩個評價權值——內容權威度(Authority)和鏈接權威度(Hub)來對網頁質量進行評估。其基本思想是利用頁面之間的引用鏈來挖掘隱含在其中的有用信息(如權威性),具有計算簡單且效率高的特點。HITS算法認爲對每一個網頁應該將其內容權威度和鏈接權威度分開來考慮,在對網頁內容權威度做出評價的基礎上再對頁面的鏈接權威度進行評價,然後給出該頁面的綜合評價。內容權威度與網頁自身直接提供內容信息的質量相關,被越多網頁所引用的網頁,其內容權威度越高;鏈接權威度與網頁提供的超鏈接頁面的質量相關,引用越多高質量頁面的網頁,其鏈接權威度越高。

缺點

1.完全將網頁的內容或文本排除在外,僅考慮網頁之間的鏈接結構來分析頁面的權威性,導致結果誤差。
權威頁面必須針對某一主題或關鍵詞而言。例如某一頁面對一確定主題具有較大權威性,但這並不意味在其他與其無關的主題方面同樣具有權威性。
2.非正常目的的引用。
一個頁面對另一頁面的引用有多種情況,如一頁面對另一頁面的認可,但也有其他目的的鏈接,如爲了導航或爲了付費廣告。在HITS算法看來,也誤認爲是正常引用。
HITS算法在實現過程中均沒有考慮以上情況,故導致了結果與目標的差距。

改進

針對缺點一,有相關學者提出了一種利用超鏈文字及其周圍文字與關鍵字相匹配而計算超鏈權值的方法,並引入係數對周圍文字和超鏈文字進行權值的相對控制,很好地將頁面文本信息引入到HITS算法,提高了算法的可靠性,並在現實中取得了很好的效果。
針對缺點二,HITS算法又引入了時間參數,即利用對一鏈接引用的時間長短來評價是否爲正常引用。因爲非正常鏈接其引用時間肯定不會很長(如交換鏈接、廣告鏈接),相反,如果一頁面對另一頁面的鏈接時間較長,則必然反映此頁面就是用戶的尋找頁面。即目標頁面或至少是正常引用。
如設定訪問時間少於1分鐘者爲非正常引用。如果設定時間閥值,則可以將非正常引用的鏈接在HITS算法的實現過程中篩選出來。另外可構造時間訪問函數,控制權威頁面的相對大小。如隨訪問時間的增大而其權威性也逐漸非線性增大.這樣可爲HITS算法的權威頁面提供更合理、更科學的解釋。

2.齊普夫定律

該定律爲詞頻分佈定律。詞頻分佈是文獻自動分類、自動標引的研究對象。

算法原理

如果把一篇較長文章中每個詞出現的頻次統計起來,按照高頻詞在前、低頻詞在後的遞減順序排列,並用自然數給這些詞編上等級序號,即頻次最高的詞等級爲1,頻次次之的等級爲2,……,頻次最小的詞等級爲D。若用f表示頻次,r表示等級序號,則有fr=C(C爲常數),即fr將近似爲一個常數C。人們稱該式爲齊普夫定律。

3.向量空間模型

又稱爲VSM(Vector Space Model)。該算法爲典型的相似度計算模型。

算法原理

把對文本內容的處理簡化爲向量空間中的向量運算,並且它以空間上的相似度表達語義的相似度,直觀易懂。當文檔被表示爲文檔空間的向量,就可以通過計算向量之間的相似性來度量文檔間的相似性。文本處理中最常用的相似性度量方式是餘弦距離。

具體算法

向量空間模型將文檔映射爲一個特徵向量V(d)=(t1,ω1(d);…;tn, ωn(d)),其中ti(i=1,2, …,n)爲一列互不雷同的詞條項,ωi(d)爲ti在d中的權值, 一般被定義爲ti在d中出現頻率tfi(d)的函數,即


圖1

算法理解

把每個詞看成一個維度,詞的頻率看成其值(有向),即向量,這樣每篇文章的詞及其頻率就構成了一個i維空間圖,兩個文檔的相似度就是兩個空間圖的接近度。假設文章只有兩維的話,那麼空間圖就可以畫在一個平面直角座標系當中。
向量空間模型 (或詞組向量模型) 是一個應用於信息過濾,信息擷取,索引 以及評估相關性的代數模型。SMART是首個使用這個模型的信息檢索系統。
文件(語料)被視爲索引詞(關鍵詞)形成的多次元向量空間, 索引詞的集合通常爲文件中至少出現過一次的詞組。
搜尋時,輸入的檢索詞也被轉換成類似於文件的向量,這個模型假設,文件和搜尋詞的相關程度,可以經由比較每個文件(向量)和檢索詞(向量)的夾角偏差程度而得知。
通過上述的向量空間模型,文本數據就轉換成了計算機可以處理的結構化數據,兩個文檔之間的相似性問題轉變成了兩個向量之間的相似性問題。

舉例

假設共有十個詞:w1,w2,……,w10,而共有三篇文章,d1,d2和d3。統計所得的詞頻表(杜撰的,爲了便於演示用法)如下:


表1

常用的向量空間公式見下圖:

圖2

假設計算d1和d2的相似度,那麼ai和bi分別表示d1和d2中各個詞的詞頻,我們以Cosine爲例:

圖3

餘弦計算的好處是,正好是一個介於0到1的數,如果向量一致就是1,如果正交就是0,符合相似度百分比的特性,餘弦的計算方法爲,向量內積/各個向量的模的乘積.2)內積計算,直接計算內積,計算強度低,但是誤差大。
實際上,計算夾角向量之間的餘弦比直接計算夾角容易:
餘弦爲零表示檢索詞向量垂直於文件向量,即沒有符合,也就是說該文件不含此檢索詞。
我們看到,上面公式的計算量是很大的,尤其當文檔中詞的數量巨大時。爲提高運算效率,我們可以採取降維的方法。所謂降維,就是降低維度。具體到文檔相似度計算,就是減少詞語的數量。常見的可用於降維的詞以功能詞和停用詞爲主(如:”的”,”這”等),事實上,採取降維的策略在很多情況下不僅可以提高效率,還可以提高精度。

例如:
1.這是我的筆。
2.那是你的筆。
如果把”這”、”那”、”你”、”我”、”是”、”的”都當功能詞處理掉,那麼相似度就是100%。如果都不去掉,相似度可能只有60%。而這兩句話的主題顯示是一樣的。

4.TF/IDF

TF-IDF(term frequency–inverse document frequency)是一種用於信息檢索與數據挖掘的常用加權技術。

TF-IDF是一種統計方法,用以評估一字詞對於一個文件集或一個語料庫中的其中一份文件的重要程度。字詞的重要性隨着它在文件中出現的次數成正比增加,但同時會隨着它在語料庫中出現的頻率成反比下降。TF-IDF加權的各種形式常被搜索引擎應用,作爲文件與用戶查詢之間相關程度的度量或評級。除了TF-IDF以外,因特網上的搜索引擎還會使用基於鏈接分析的評級方法,以確定文件在搜尋結果中出現的順序。

算法原理

TF/IDF實際上是:TF * IDF,TF詞頻(Term Frequency),IDF逆向文件頻率(Inverse Document Frequency)。詞頻TF表示詞條在文檔d中出現的頻率:


圖4

以上式子中分子是該詞在文件中的出現次數,而分母則是在文件中所有字詞的出現次數之和。
逆向文件頻率IDF是一個詞語普遍重要性的度量。某一特定詞語的IDF,可以由總文件數目除以包含該詞語之文件的數目,再將得到的商取對數得到:


圖5

|D|表示語料庫中的文件總數。

包含詞語的文件數目(即的文件數目)如果該詞語不在語料庫中,就會導致分母爲零,因此一般情況下使用作爲分母。

然後再計算TF與IDF的乘積:


圖6

某一特定文件內的高詞語頻率,以及該詞語在整個文件集合中的低文件頻率,可以產生出高權重的TF-IDF。因此,TF-IDF傾向於過濾掉常見的詞語,保留重要的詞語。

簡單理解

TF = f/m,其中f表示當前詞在當前文檔中出現的次數,而m表示當前文檔中出現次數最多的詞的次數。這樣TF值就在0和1之間。這樣做可以減少文檔中詞的頻率不合理分佈所引起的誤差。

IDF = log2 (n/nj) + 1,其中n表示在整個語料中文檔的總數,而nj表示含有當前詞的文檔數。這樣做可以減少在語料範圍內詞頻分佈不均勻造成的相似度誤差。


圖7

舉例理解

詞頻 (TF) 是一詞語出現的次數除以該文件的總詞語數。假如一篇文件的總詞語數是100個,而詞語“母牛”出現了3次,那麼“母牛”一詞在該文件中的詞頻就是3/100=0.03。一個計算文件頻率 (IDF) 的方法是測定有多少份文件出現過“母牛”一詞,然後除以文件集裏包含的文件總數。所以,如果“母牛”一詞在1,000份文件出現過,而文件總數是10,000,000份的話,其逆向文件頻率就是 log(10,000,000 / 1,000)=4。最後的TF-IDF的分數爲0.03 * 4=0.12。

理論假設

TF/IDF算法是建立在這樣一個假設之上的:對區別文檔最有意義的詞語應該是那些在文檔中出現頻率高,而在整個文檔集合的其他文檔中出現頻率少的詞語,所以如果特徵空間座標系取TF詞頻作爲測度,就可以體現同類文本的特點。另外考慮到單詞區別不同類別的能力,TF/IDF法認爲一個單詞出現的文本頻數越小,它區別不同類別文本的能力就越大。因此引入了逆文本頻度IDF的概念,以TF和IDF的乘積作爲特徵空間座標系的取值測度,並用它完成對權值TF的調整,調整權值的目的在於突出重要單詞,抑制次要單詞。

缺點

如果某個詞或短語在一篇文章中出現的頻率TF高,並且在其他文章中很少出現,則認爲此詞或者短語具有很好的類別區分能力,適合用來分類。
IDF的主要思想是:如果包含詞條t的文檔越少,也就是n越小,IDF越大,則說明詞條t具有很好的類別區分能力。如果某一類文檔C中包含詞條t的文檔數爲m,而其它類包含t的文檔總數爲k,顯然所有包含t的文檔數n=m+k,當m大的時候,n也大,按照IDF公式得到的IDF的值會小,就說明該詞條t類別區分能力不強。但是實際上,如果一個詞條在一個類的文檔中頻繁出現,則說明該詞條能夠很好代表這個類的文本的特徵,這樣的詞條應該給它們賦予較高的權重,並選來作爲該類文本的特徵詞以區別與其它類文檔。這就是IDF的不足之處. 在一份給定的文件裏,詞頻TF指的是某一個給定的詞語在該文件中出現的頻率。這個數字是對詞數(term count)的歸一化,以防止它偏向長的文件。(同一個詞語在長文件裏可能會比短文件有更高的詞數,而不管該詞語重要與否。)

在本質上IDF是一種試圖抑制噪音的加權 ,並且單純地認爲文本頻數小的單詞就越重要,文本頻數大的單詞就越無用,顯然這並不是完全正確的。IDF的簡單結構並不能有效地反映單詞的重要程度和特徵詞的分佈情況,使其無法很好地完成對權值調整的功能,所以TFIDF法的精度並不是很高。

此外,在TF/IDF算法中並沒有體現出單詞的位置信息,對於Web文檔而言,權重的計算方法應該體現出HTML的結構特徵。特徵詞在不同的標記符中對文章內容的反映程度不同,其權重的計算方法也應不同。因此應該對於處於網頁不同位置的特徵詞分別賦予不同的係數,然後乘以特徵詞的詞頻,以提高文本表示的效果。

後續會繼續補充相關算法的。

發佈了56 篇原創文章 · 獲贊 108 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章