信息檢索的相關反饋和查詢擴展


綜述

在進行搜索的時候,文檔中的同一個詞往往有多種表達方法,這種現象叫做同義詞。比如用戶輸入"充電寶",而文檔里有"移動電源",這時如果搜索系統沒有做查詢優化的話用戶是不能找到相關文檔的。由此我們引出查詢優化的概念。
查詢優化方法大體可以分為兩類:

  1. 全局方法:在不考慮原始查詢初始返回文檔的情況下對查詢進行擴展和重構。
  2. 局部方法:根據原始查詢匹配的初始文檔對查詢進行修改。

這兩個分類下又有一些常用的具體優化方法:
全局方法主要包括:

  1. 基於同義詞的優化
  2. 基於拼寫糾正的優化

局部方法主要包括:

  1. 相關反饋
  2. 偽相關反饋(也稱為盲相關反饋)
  3. 間接相關反饋

1.1 基於同義詞的優化

基於同義詞的優化核心思路是使用同義詞詞典。
在同義詞詞典中定義了一些詞的同義詞(集合),如"充電寶"的同義詞集合是["移動電源","移動充電器"],那么當用戶搜索"充電寶"時,查詢將會自動擴展為"充電寶 移動電源 移動充電器"。
同義詞方案的難點在於詞典的維護,如果詞典使用已經構建好的靜態的詞典,那么詞典不需要維護。如果要動態維護詞典,采用人工維護的方案顯然會帶來較大的成本,一種取代的思路是用過分析文檔集來自動構造同義詞詞典。
一種簡單的思路是認為在文檔中共現頻率高的詞是同義詞的可能性大。使用這種思路,首先我們給出詞項-文檔矩陣A,矩陣中的每個元素At,d代表詞項t在d中出現的頻率。要求歸一化后每行元素相加為1。然后計算:

此時Cu,v就是詞項u和v的相似度得分。

1.2 基於拼寫糾正的優化

一般使用編輯距離算法。

2.1 相關反饋

相關反饋是通過與用戶的交互來優化查詢,一般是通過用戶的原始查詢詞給出初始查詢結果,然后讓用戶對查詢結果進行反饋,根據用戶的反饋得出優化查詢。
相關反饋的過程一般是:

  1. 用戶提交原始查詢
  2. 系統根據原始查詢返回初始查詢結果
  3. 用戶對初始查詢結果進行反饋,標記出相關文檔與不相關文檔
  4. 系統根據反饋結果構造出更好的查詢來表示用戶的信息需求
  5. 利用優化的查詢返回新的查詢結果

可以看出,反饋系統的核心在於如何根據用戶的反饋結果構造出更好的查詢。
Rocchio算法是相關反饋的一個經典算法:
假設我們的原始查詢是向量q0,則我們要尋找的優化后的查詢向量qm應該更接近於用戶標注的相關文檔,更遠離用戶標注的不相關文檔,則有:

其中q0是原始查詢向量,Dr和Dnr分別是已知的相關和不相關的文檔集合。\alpha、\beta、\gamma分別是上述三者的權重。這個公式的本質就是讓原始查詢靠近所有已知的相關文檔的質心向量,遠離所有已知的不相關文檔的質心向量。

2.2 偽相關反饋

偽相關反饋和相關反饋十分類似,只是它不需要用戶的交互。偽相關反饋的過程如下:

  1. 用戶提交原始查詢
  2. 系統根據原始查詢返回初始查詢結果
  3. 由系統將初始查詢結果排名靠前的k篇文檔標記為相關文檔,其余文檔標記為不相關文檔
  4. 系統根據上邊的標記結果作為反饋結果構造出更好的查詢來表示用戶的信息需求
  5. 利用優化的查詢返回新的查詢結果

2.3 間接相關反饋

間接相關反饋也和相關反饋類似,只是它不需要用戶顯式地標記相關文檔和不相關文檔,而是收集用戶的隱式反饋。常見的就是web系統中對用戶瀏覽搜索結果進行收集,同一搜索結果中,用戶進行點擊瀏覽的結果被認為是相關的。這實際上是點擊流挖掘這個通用領域的一種形式。


免責聲明!

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



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