斯坦福大學-自然語言處理入門 筆記 第十八課 排序檢索介紹(ranked retrieval)

一、介紹

  • 之前我們的請求都是布爾類型。對於那些明確知道自己的需求並且瞭解集合體情況的用戶而言,布爾類型的請求是很有效的。但是對於大部分的其他用戶而言,布爾請求的問題是:大部分用戶不熟悉布爾請求;布爾請求比較複雜;布爾請求的結果不是太多就是太少。排序檢索應運而生。
  • 排序檢索返回的是排序好的文檔結果,它可以很好地處理布爾請求以及自由文檔請求(free text queries),即自然語言的請求。而我們也不需要擔心太多的請求結果會導致我們用戶體驗不良,我們可以只給出前幾名的檢索結果。
  • 排名的依據就是分數,設定一個0-1之間的數代表分數,分數度量的是文檔和請求的契合程度。一個最簡單的分數是:當我們請求是一個項的時候,直接把文檔中項出現的次數作爲分數的依據,次數越高分數越高。
  • 下面會介紹一些算分的方法。

二、計算分數的方法

1、Jaccard 係數

  • 一個比較常見的度量的兩個集合的相似程度的方法是Jaccard 係數,係數範圍是0-1,公式是jaccard(A,B) = |A ∩ B| / |A ∪ B|。
    • jaccard(A,A) = 1
    • jaccard(A,B) = 0 if A ∩ B = 0
    • A和B不需要元素數量一致。
  • 一個計算的例子:可以看到Jaccard 係數會比較偏向比較短的文檔
    在這裏插入圖片描述
  • Jaccard係數的問題:
    • 它沒有考慮到項的頻率(term frequency),也就是在文檔中項出現的次數。因爲在集合中比較稀有的項含有的信息量比常見的項更多,但是Jaccard係數沒有考慮到這個問題。
      • 我們需要更好的方法來對長度進行標準化,在後面的介紹中,我們會使用下面的公式來替代之前的公式。
        在這裏插入圖片描述

2、項頻率權重

  • 項文檔計數矩陣:每一列表示一個文檔,每一行表示一個單詞,每一格表示在這個文檔中單詞出現的次數。
    在這裏插入圖片描述
    這種對文檔的表現方法會存在一些問題,比如說John is quicker than Mary和Mary is quicker than John表達的意思不同,但是表現出來的矩陣是一樣的。在後面的章節中我們會介紹用位置信息來修正這個問題。
  • 但是需要關注的一個問題是,文檔和請求的相關性與文檔中請求項(term)的出現次數並不是線性相關的,而是一個比線性增長更慢的增長曲線。所以不能直接使用對計數信息,而是需要進行轉化。計算方法如下:tf表示在文檔d中出現t的次數,w表示修正後的結果。
    在這裏插入圖片描述而文檔的分數就是這些結果之和
    在這裏插入圖片描述

3、逆文檔頻率權重

  • 因爲在集合中比較稀有的項含有的信息量比常見的項更多。如果一個項在每個文檔中都會出現的話,其實這個項就沒有什麼意義了。所以我們希望能有東西體現項的稀有性,於是出現了文檔頻率權重。
  • 文檔頻率權重的計算公式如下:N表示中所有的文檔數量,df表示文檔中包含t的文檔數量。對其取對數是希望降低df量級的影響。這個公式計算出來的指標,對越少見的項越高。
    在這裏插入圖片描述- 文檔頻率權重對一個項的請求是無效的,但是對兩個及其以上的項的請求可以調整每個項得分的權重。比如對buy insurance,會加重對insurance的權重。
  • 爲什麼使用文檔頻率而不是集合體頻率?所謂的集合體頻率指的是在集合中這個項總的出現的次數。這裏存在的問題是有些單詞可能在只在幾個文檔中出現,但是在這些文檔中會反覆出現;而有些單詞會在每篇文檔中出現,但是 文檔只出現一次。這就和之前的那種單詞性質不同,所以使用文檔頻率不合適。
    在這裏插入圖片描述

4、tf-idf

  • 將之前我們討論的項頻率權重(tf)和逆文檔頻率權重 (idf)相乘就可以得到tf-idf權重
  • 這是信息檢索領域最爲著名的重要度度量,當某個token在單一文檔中出現頻率越高,就越重要;當某個token在集合體中出現的越少,那麼就越重要。
  • 對於一個文檔對請求的評分就是這個文檔關卡與請求詞組的向量的加總。公式如下
    在這裏插入圖片描述

三、向量空間模型(VSM)

  • 將文檔和請求分別看成兩個向量,計算兩個向量的相似性
  • 計算兩個向量的相似性,歐氏距離不是一個好選擇。因爲當兩個向量的長度不同時,它們的距離就會很大。比如下面的請求q是需按照同時含有GOSSIP和JEALOUS的文檔,從圖上來看d2是和他最相似的,但是歐氏距離上卻是最遠的。
    在這裏插入圖片描述
  • 但是當文檔和請求相似的時候他們的夾角就會變小的。所以我們可以用文檔向量和請求向量之間夾角的大小來給文檔進行打分。當夾角爲0的時候,相似度是最高的。
  • 因爲cosine是在[0,180]單調遞減的(如下圖),我們可以用cosine來表示相似度。
    在這裏插入圖片描述- 向量可以用它的長度進行標準化,從而轉化成爲一個單位向量(unit vector)。這樣子的話就可以消除向量的長度帶來的影響,長短向量之間就可比了。向量的長度計算就是它的L2範式。
  • 關於相似度的cos計算,公式如下:其中qi表示請求中項i的tf-idf重要性,di表示文檔中項i的tf-idf重要性。cosine就是q和d的相似度,也就是q和d的夾角的cosine值。
    在這裏插入圖片描述如果向量本身是長度標準化的話,cosine相似度就直接是點積,公式見下,其中q和d都是長度標準化的。
    在這裏插入圖片描述- 一個計算的例子:比較簡奧斯丁的三部作品(情感與理智,傲慢與偏見和呼嘯山莊)的相似度。第一步是計算對應的tf。
    在這裏插入圖片描述
    接下來,對tf取對數;然後,進行長度標準化;接下來計算cosine。
    在這裏插入圖片描述

四、一個計算tf-idf的cosine的例子

  • tf-idf重要性有很多的變種。
    在這裏插入圖片描述
  • 很多的搜索引擎允許對請求和文檔採取不同的重要性計算方法。這些計算方法可以用上表中的首字母縮寫表示,形如ddd.qqq前三個字母表示對文檔的三個處理方法,後三個表示對請求的三個處理方法。
    • 一個比較標準的重要性計算框架是Inc.ltc。對文檔的處理是對數tf,不進行idf,進行cosine標準化。對請求的處理是對數tf,idf,然後進行cosine標準化。
    • 一個具體的Inc.ltc的例子
      在這裏插入圖片描述
  • 計算cosine得分的代碼:這是一個基本的算法,在實際的應用中會有更高效的算法
    在這裏插入圖片描述

五、搜索引擎評價

  • 搜索引擎是有很多方面的,比如索引多快,搜索多快,對請求的包容度,UI,是否免費等等
  • 但是其中最重要的是用戶的幸福程度(happiness),搜索速度和包容廣度是一些因素,但是更重要的是度量結果和用戶信息需求的相關性
    • 信息需求是被翻譯成了請求,但是信息需求不等於請求,比如我們想知道相比於白酒紅酒是否可以幫助我們更有效地低於心臟病風險,那麼我們的請求可能是:紅酒心臟病有效,而不是前面的那句話。所以我們評估的是文檔是否針對的是那些信息需求,而不是是否含有請求的項。
  • 評估排序結果
    • 評估需要的材料如下,隨後像之前一樣計算precision/recall/f值
      • 基準文檔集合
      • 一系列基準請求
      • 文檔與請求是否相關的判斷
    • 如何評估排序結果
      • 系統可能會返回任何數目
      • 通過改變我們取的返回結果的個數(recall的水平),我們可以得到一個precision-recall 曲線。
        在這裏插入圖片描述
    • 另一種評估方法:Mean average precision(MAP)
      • AP:每檢索到一個相關的文檔,就對之前所有的文檔計算一次precision,然後算所有precision的平均值
      • 一般會使用固定的recall水平,也就是計算前K個檢索結果的AP
      • 對一系列請求的MAP就是對每個請求的AP計算算術平均
      • 一個計算AP的例子
        在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章