過去連假都會讀點書,不過現在有 AI 之後,讀書有點不夠看了。這次是做實驗並和幾個 AI 對話。當然,也可以叫 AI 互相對話。不過自己就會像個白癡一樣,只能看著他們熱烈討論。所以硬是要加一點自己的意見進去,此時 AI 頂多懷疑有個笨 AI 加入討論,不至於影響主人的威信~~~ 以下記錄其中一點收穫。
第三個關鍵字是融合,表示可以用多種方式排名,然後混在一起算。當然,這就有可能要給不同的方法一個權重。對於所有排名清單集合 R,某個排名清單編號 r ,文件 d 的 RRF(d) 分數如下。其中 k 是一個正值的常數,用來使排名第一和第二的差異不要太懸殊。另一方面,這個值會使得排名在後面的 d 們,RRF (d) 看起來也都差不多,故稱為平滑常數。
我們回顧一下本來要做什麼事?我們是用一個查詢句 query q,去資料庫的一堆 data d,想要找出前幾名相關的文件。而文件中不同的 d 有長有短,不同文件的長度可能差異很大。長文件因為包含的詞較多,自然也更容易命中查詢關鍵字。
相反地,若同一個詞在一份短文件與一份長文件中出現相同次數,它在短文件中的集中程度通常更高。所以文件 d 的長度 |d| / 平均 d 的長度 (avgdl = average data length),也可以反映重要性。如果都一樣長,那麼 |d|/avgdl = 1,1 – b + b = 1,分母就更簡化了。
另外 b 就可以單獨控制要不要考慮文件長度:
b=0:完全不考慮文件長度
b=1:完整依照文件長度比例進行正規化
0<b<1:在不正規化與完整正規化之間折衷
公式講完了,最後來正名。BM25 的 25 是版本編號,BM 是 best match。它是由 Okapi 資訊檢索系統所發展的一系列 Best Match 排名函數之一,就算只取 top 5,公式還是叫 BM25。