使用點擊二分圖傳導計算query-document的相關性


之前的博客中已經介紹了Ranking Relevance的一些基本情況(Click Behavior,和Text Match):http://www.cnblogs.com/bentuwuying/p/6714064.html,這里就不再贅述了。針對之前在計算Ranking Relevance的過程中遇到的問題:Click Behavior對長尾的或者根本沒出現過的query-doc pair無效,Term Match無法解決近義詞和語義隔離問題,Topic Match解釋性差的問題。本篇博客介紹的paper中的這種計算Ranking Relevance的方法能夠有效地解決上述的問題:結合了Click Behavior和Text Match兩方面的信息,並利用點擊日志構成二分圖,根據二分圖進行傳導,學習到query和doc各自的向量表達式,最終收斂之后進行query-doc relevance的計算。

該方法的特點有:

1. 利用二分圖的傳導,從相似的query(或者doc)中提取term來豐富當前query(或者doc)的term表達。

2. 在二分圖的傳導過程中,利用query-doc pair的點擊信息,來平滑query和doc的vector中各個維度的term weight大小。

解決之前Click Behavior中的Sparsity和Noisy的問題。

該paper的三方面貢獻在於:

1. 可以使querydoc在同一空間上生成詞向量考慮

2. 對於未曾有點擊行為的querydoc也可以進行該空間詞向量的估計

3. 最終計算的效率較高,可以用於商業的搜索引擎

 

1. 已有點擊行為的query-doc relevance計算

用Doc表示文檔集合,用Query表示query集合,則點擊二分圖的節點集合為Doc U Query。對於一個query-doc pair:qi和dj,如果它們之間有至少一次點擊,則二分圖中這兩個節點之間會有一條邊相連接,且權重為該query-doc pair的點擊次數。點擊二分圖的示例如下圖所示。現在假設語料的長度為V,Query構成的矩陣為|Query|×V,矩陣的每一行代表了一個query的vector表示;以及Doc構成的矩陣為|Doc|×V,矩陣的每一行代表了一個doc的vector表示。那么現在的任務就是如何計算這兩個矩陣。

要知道,這個方法的目的是要將所有的query和doc表示成一個公共向量空間上的向量(可以是query的term space,也可以是doc的term space)。它利用二分圖的某一邊的節點上的conetnt information 初始化該邊的節點的vector,然后利用點擊信息進行傳導,這樣就可以在傳導過程中,將具有代表性的term的weight提高,將不具有代表性的term的weight降下去。

首先,我們需要初始化二分圖中某一邊的節點的向量表示,例如,我們選擇query這一邊的節點,將所有的query進行分詞,構成詞典,便得到query space上各個query的向量表示了。每一個維度代表了一個term,每個維度(term)可以看成是一個feature,這便是term級別的表示,過去的研究表明,term級別的表示方法解釋性較強,便於驗證和debug(雖然同時會遇到無法解決近義詞和語義隔離問題,不過我們這里介紹的方法可以對這種問題進行解決)。通過讓query和doc都使用公共向量空間的表示方式(這里是query space),我們可以消除query與doc的語義隔離問題。

下一步便是query & doc的向量在二分圖上的傳導了。基本思路是利用query vector結合起來表示在query下有點擊的doc的vector,反之亦然。如果某些query之間擁有較多的共同點擊的doc,則這些query是相似的query,它們的vector representation應當較為相似,反之doc之間亦然。

當然,我們這樣計算的前提是,click information可以很好地表示query-doc的relevance,並且relevance的大小與click number的多少是正相關的。

具體的向量傳導步驟如下:

1. 我們假設從query side開始。初始化的時候,每個query都用它自身的term表示成一個vector(利用one-hot方式),每個term的weight與term出現的次數成正比,最后將每個query的vector進行歸一化處理。初始化矩陣(包含所有query的vector)可以用表示。

2. 在第n次傳導中,我們先利用二分圖中有邊連接的各個query的vector加權求和,來計算doc的vector矩陣,這個權重即為query-doc的click number,如下式:

3. 下一步就是反過來,利用二分圖中有邊連接的各個doc的vector加權求和,來更新query的vector矩陣

4. 按2,3中的步驟不斷進行迭代,直至收斂,其產出的query和doc的向量就都在一個空間內,可以計算query-doc relevance,同時還可以計算相似度/相關性。

 

這里以上的圖為例再說一下計算過程:

1. 初始化query的向量:

2. 根據上一次query的迭代信息以及與doc的點擊信息來更新doc的向量:

3. 然后就是不斷的迭代就行了,這樣已經很清晰了

 

了解過一些信息檢索或者鏈接分析的朋友可能會馬上想到,這好像Hits這個算法。的確是的,在計算過程中極為相似,不過Hits權重主要是計算HubsAuthority兩端的權重,而這里的迭代完得到的是各個向量,有異曲同工之妙。
另外在實際的query量級一般都是百萬以上,這樣query的語料的量就很大了,而搜索引擎中需要計算的性能要求極高,所以一般進行稀疏存儲,並且只取一些重要的term(Top K的term)來對query進行表示。

 

2. 沒有點擊行為的query-doc relevance計算

實際應用中,用戶搜索之后帶來了點擊行為的只是一小部分。如果僅按照上述點擊傳播的方式來計算的話,無query點擊的文檔將會將會無法得到正常的向量,同時一些新的query(從未有用戶搜索過的query)也就無法得到正常的向量數據,所以需要一種對於這種缺失行為的query和doc進行向量表示估計。

由於在線計算相關性時,對於已有行為的query−doc和缺失行為的query-doc是一視同仁的,因此為了在線計算時不應該因為訓練數據產生偏差,所以需要與已有行為的query-doc向量在同一個空間內,同時考慮已有行為的query和doc的向量均已計算得到,我們還借助這些數據來預估缺失行為的向量。

2-1. 提取unit向量 

既然沒有點擊行為的query與doc之間沒有任何邊連接,那我們可以利用有點擊行為的query-doc的信息,通過有點擊行為的query進行的邊的構造,首先將query分解為各種unit(一般是N-grams,如unigrams,bigrams,trigrams等,但該query進行分解之后不能有overlap),這樣就有uiunit(qi),如果存在query含有ui,則將ui對應的query之間形成一條虛擬的邊,同時稱含有ui的所有query的集合為Oui

這種邊的構建方式如上圖,q1q2q3均都包含了yahoo這個詞,則在他們之間形成這條虛線的邊。
接下來我們可以理解query−doc之間的向量傳播方法,我們當然也可以完成unit−doc的傳播。
ui會與qi有邊相連,而qidi又有邊相連,因此我們可以間接認為uidi也是有邊相連的。
現假設qk包含了ui,同時qkdj存在點擊行為,Pi,k,j表示為這個二折線的權重,則該權重其實為qkdj的點擊次數,那么我們就會有

其演示就是上圖的右側部分,yahoo與d1之間的權重為8,與d2之間的權重為5,既然到了這一步,我們就可以按照上一小節的傳播方式來計算,這樣就可以巧妙的得到Ui的向量:

上面得到的是關於queryunit的向量,同樣的我們也可以從doc這一側出發,來計算doc相關的unit。

2-2. 計算unit向量權重

有了unit的向量之后,接下來要解決的問題就是如何得到query或者doc的向量了,其實最簡單的方法就是將他們各自的unit進行平均即可,不過paper中使用線性回歸的方法來計算得到每個unit的全局權重值,在進行權重訓練時使用最小均方差:

Ti是使用有點擊行為的query計算得到的向量,也就是我們所認為的gold-set。這樣求出來的W就是各個uniti不同的權重。

2-3. 預估向量

根據上面兩個步驟得到的unit的向量和權重之后,得到整體的query或者doc的向量就很方便了,由於unit本身就是query或者doc分解出來的,這里基礎數據也都已經計算完成了,所以直接進行加權求和即可:

 

3. 總結

該方法成功地借助了點擊日志,對query-doc relevance進行估計,並且在實現上:

1. 已有點擊數據的query和doc的向量直接離線就按完成。

2. 缺失點擊的query和doc可以利用離線計算的unit向量,在線直接進行加權求和即可。

3. 對於在線存儲均使用稀疏方式並只存top-k,因此存儲並不是問題。

4. 在線計算相關性可以直接按相似度計算,復雜度為klogk,所以並不是很高。

 

4. 參考

1. Learning Query and Document Relevance from a Web-scale Click Graph

2. http://kubicode.me/2016/11/03/Search%20Engine/Learning-Query-And-Document-Relevanec-from-a-Web-scale-Click-Graph/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM