搜索引擎算法之Query Similarity (query relevance、查詢的相似性或相關性)

       關鍵詞是用戶使用搜索引擎的常見輸入條件,但是用戶在搜索的時候不僅僅是用關鍵詞。當你在淘寶上面搜索的時候,可能通過男裝、女裝類目去搜索。話說當年yahoo 起家的時候就是通過類目導航,但是yahoo小看了關鍵詞搜索,錯過了成爲第一大搜索引擎的機會。接着說用戶在淘寶用關鍵詞搜索之後,還可以點擊各種屬性、價格區間來搜索。一個完整的Query包括幾個部分:關鍵詞、類目、屬性(可以有多個)、價格區間、地域限制等。如果要推薦相關Query,我們應該對整個Query去找相關Query。

        一、計算相似性的方法很多,最簡單是是根據字面的編輯距離來計算相似性。例如:

           sim(QA,QB) = 編輯距離(QA->QB) / length(AB) ,顯然這種計算相似性的方法誤差很大。所以我們可以考慮同義詞、單複數、詞形還原考慮一部分同義詞。但是對於精確的計算兩個Query的相似性就無能爲力了。

         二、更近一步,很自然想到搜索點擊的結果來計算兩個Query的相似性。例如QA有一個點擊的商品集合,QB有兩個點擊的商品集合,用點擊數量或者點擊率作爲商品的權重來設計一個向量,這樣兩個Query就可以通過cosin(vector(QA),vector(QB)) 來計算相關性。還有比較簡單的方法是計算兩個Query(x和y)在session 中的互信息,PMI(x,y)=p(x,y)/(p(x)*p(y))

        三、當然我們也可以藉助協同過濾的方法,把query和點擊item作爲一個評分矩陣,按照協同過濾的方法來計算相關性。由於協同過濾沒有考慮點擊的次數信息,因此推薦詞的點擊次數和原始詞的搜索次數、長度可能不夠匹配,還需要很多方法來糾正。

        四、由於點擊數據受到搜索結果的影響,由於排序質量的問題,點擊的位置bias,有很多辦法來糾正;以及部分Query的點擊比較稀疏,商品的點擊比較稀釋,例如simrank,simrank++(http://www.vldb.org/pvldb/1/1453903.pdf)等算法。

         前阿里媽媽的yangxudong 文章裏面有mapreduce 的實現:https://blog.csdn.net/yangxudong/article/details/24788137 。主要是基於分塊矩陣的計算。實現中利用二次排序,做了不少優化。

      另外git hub 上面有兩個代碼:

(1)https://github.com/thunderain-project/examples  其部分代碼無法通過編譯。

(2)https://blog.csdn.net/dengxing1234/article/details/78933187  編譯通過,少量數據可以通過編譯,大量數據還無法跑得結果。

 

        五、第二種方法是用商品向量來表示Query,也有一些方法借鑑了simrank和向量的思想,用詞向量來表示Query和Title。例如yahoo研究院的這篇論文《Learning Query and Document Relevance from a Web-scale Click Graph》。

        六、如今深度學習大行其道,Query相關性也可以用深度語義網絡DSSM (cikm 2013)  https://www.cnblogs.com/baiting/p/7195998.html  。把Query 先和Title 先分別用word hash 到一個3萬維的空間,然後一層層embedding 到一個128維的向量, 最後可以簡單的用cosin來計算相似性。

 

      7、我們在推薦算法中看到,一個用戶在一個session中點擊的商品序列可以用來做embedding ,得到商品id到embedding vector。同時我們可以可以考慮把用戶在一個session中輸入的Query當成序列來做embedding 。按照這個思路找了一下論文,果然2018年有人用這個想法寫了論文。《Querying Word Embeddings for Similarity and Relatedness》http://aclweb.org/anthology/N18-1062

       We tested vector spaces with varying dimensionalities (dim=100/200/300) and number of context words (win=3/6/10), as well as minimum occurrence cutoff (min=1/5), negative samples (neg=1/5) and iterations (iter=1/5). These variations were tested to ensure the observed patterns reported in the experiments, but we report numerical results only for best performing models. In particular, higher dimensional vectors with dim=300 produced consistently better alignment with human scoring data. We also found min=1, neg=5 and iter=5 to be the optimal parameter settings across all experiments.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章