1. 程式人生 > >資訊檢索導論-乾貨速覽

資訊檢索導論-乾貨速覽

檢索問題可以分為兩類:

  • ad hoc:資料庫基本不變,query會發生變化
  • routing:query不怎麼變化,資料庫和熱點在實時更新

搜尋方式的進化:線性掃描(太慢)->詞項-文件關聯矩陣(太大)->倒排索引

建立倒排索引的過程:收集文件->確定文件的格式、編碼方式、語種進行識別、確立文件單位->tokenization(英語:詞幹還原(單複數)、詞形歸併(時態)、大小寫轉換等/漢語:分詞,去掉停止詞)->normalization(同義詞)->建立倒排表和詞典(詞典有雜湊表方式(小一點的詞典)和搜尋樹方式兩種實現方式,為了可以進行萬用字元查詢,需要建立k-gram 索引、輪排索引)

Query的處理過程:輸入的原始query->糾錯->tokenization(英語:詞幹還原(單複數)、詞形歸併(時態)、大小寫轉換等/漢語:分詞,去掉停止詞)->normalization(同義詞,拼寫校正(基於發音的和書寫的),query改寫)->查詢(由詞典找到相應的倒排表,根據邏輯合併倒排表,優化方法是從短的往長的合併,建立跳躍表、n-gram表、短語表)

文件的摘要:靜態摘要,動態摘要(為基於關鍵詞上下文(keyword-in-context,簡稱 KWIC)的結果片段)

進行排序的特徵:

  • 引數化索引:文件的作者、標題以及出版日期等等
  • tf-idf權重計算:tf*idf(亞線性尺度變換、基於最大值的 tf 歸一化、迴轉歸一化)
  • 餘弦相似度
  • BM25

快速評分及排序

  • 索引去除技術(只考慮那些詞項的 idf 值超過一定閾值的文件;只考慮包含多個查詢詞項(一個特例是包含全部查詢詞項)的文件)【減少要查詢的索引數量】
  • 勝者表(對於詞典中的每個詞項 t,預先計算出 r 個最高權重的文件)【減少要查詢的索引數量】
  • 靜態得分(每篇文件 d 往往都有 一個與查詢無關的靜態得分 g(d))【減少要查詢的索引數量】
  • 簇剪枝方法(cluster pruning)(先隨機取KaTeX parse error: Expected '}', got 'EOF' at end of input: \sqrt{N)
    個先導者,再對他們聚類每個由若干個追隨者,給定查詢先計算與先導者的相似度,在計算最近的相似度的先導者的追隨者的相似度)【減少要查詢的索引長度】

無序檢索結果的評價:正確率,召回率,F 值
有序檢索結果的評價方法:

  • 插值正確率(interpolated precision)(在某個召回率水平r上的插值正確率定義為對於任意不小於r的召回率水平 r′ 所對應的最大正確率 )
  • MAP(mean average precision)
  • 前 k 個結果的正確率(precision at k,可簡寫成 [email protected],缺點是不太穩定)
  • R-precision (對於共有|Rel| 篇相關文件查詢,而在前|Rel|個返回結果中有 r 篇相關文件,此時的正確率和召回率都為r/|Rel|,定義R-Precision為r/|Rel|)
  • ROC
  • CG(cumulative gain,累積增益),一個具體的指標為NDCG(normalized discounted cumulative gain,歸一化折損累積增益)。

線上測試:A/B 測試

RF(relevance feedback,相關反饋)的主要思想是,在資訊檢索的過程中通過使用者互動(點選率等)來提高最終的檢索效果 。

LTR(learning to rank):

  • NB:線性分類器
  • Svm
  • Rocchio:kmean類似,線性分類器
  • kNN:非線性
  • 在基於語言模型(簡記為 LM)的檢索(關鍵詞生成文章的概率)