Lucece評分公式OKapi BM25原理解析(中)

背景:
延續(xù)上篇寫了TF/IDF的公式解析圃阳,本篇為BM25解析簡單介紹诅炉。
BM25起源于 概率相關(guān)性模型罢荡,而不是矢量空間模型,但是該算法與Lucene的實(shí)際評分功能有很多共同點(diǎn)紧索。
兩者都使用Term詞頻率袁辈,逆文檔頻率和字段長度歸一化,但是每個因素的定義都略有不同珠漂。與其詳細(xì)解釋BM25公式晚缩,不如將重點(diǎn)放在BM25提供的實(shí)際優(yōu)勢上。

BM25是一個詞袋檢索功能媳危,它基于每個文檔中出現(xiàn)的查詢詞對一組文檔進(jìn)行排名荞彼,而不管它們在文檔中的距離如何。它是一組評分功能济舆,其組件和參數(shù)略有不同卿泽。該函數(shù)最突出的實(shí)例之一如下。

BM25評分公式


image.png

1)score(D,Q)公式

給定查詢Q,得到文檔D的BM25得分签夭,Q其中包含關(guān)鍵字q1…qn齐邦。

2)IDF(qi)公式

原BM25的IDF公式:


image.png

優(yōu)化后BM25的IDF公式:


image.png

其中 N是集合中文檔的總數(shù),并且n(qi) 是包含qi的Doc數(shù)量第租。
對IDF有幾種解釋措拇,其公式略有不同。在原始BM25推導(dǎo)中慎宾,IDF分量是從二進(jìn)制獨(dú)立模型推導(dǎo)的丐吓。
上面IDF公式對出現(xiàn)在超過一半的文檔中的Term有缺陷。這些Term的IDF為負(fù)趟据,因此對于任何兩個幾乎完全相同的文檔券犁,包含該Term的文檔的排名可能會低于不包含該Term的文檔的排名。這是有問題的汹碱,因此許多應(yīng)用程序以各種方式調(diào)整IDF公式:
1)每個被加數(shù)的下限可以為0粘衬,以刪減常用項(xiàng)。
2)可以給IDF函數(shù)一個下限常量咳促,以避免完全忽略Term稚新;
3)可以將IDF函數(shù)替換為形狀相似的函數(shù),該函數(shù)應(yīng)為非負(fù)或嚴(yán)格為正跪腹,以避免完全忽略Term褂删。

下面對比BM25/優(yōu)化版BM25/老版IDF公式做下對比,
條件: 100個Doc冲茸,命中從1-100屯阀,看各公式表現(xiàn)。


image.png

3)tfNorm公式

tfNorm=(freq * (k1 + 1)) / (freq + k1 * (1 - b + b * fieldLength / avgFieldLength))
tfNorm反映的該term在所有滿足條件的doc中field中的重要性噪裕,一般來說蹲盘,相同的freq 下,field的長度越短膳音,那么取值就越高召衔。

D: 文檔
qi: 搜索詞 (多個)
f(qi,D) : qi 這個詞在文檔 D 中的出現(xiàn)次數(shù)頻率。
|D|: 滿足條件的D單詞數(shù)祭陷,也就是D的長度苍凛。
avgdl: 整個文檔庫中文檔的平均長度
k1 , b: 自由參數(shù),一般取值范圍是 k1∈[1.2,2.0]默認(rèn)1.2, b=0.75

4)詞頻

在BM25中詞頻的影響降低兵志。詞頻的影響一直在增加醇蝴,但漸漸地逼近一個值。不考慮文件長度情況下想罕,詞頻遵循公式:((k + 1) * tf) / (k + tf)


image.png

正如圖中所示悠栓,MB25中詞頻的曲線只會無限的逼近(k+1)霉涨,這里的k=1.2,更高的詞頻意味著更大的相關(guān)性惭适,但是很快就會趨于飽和笙瑟,收益遞減。而經(jīng)典的Lucene 詞頻相關(guān)性只會一直增加癞志,沒有飽和點(diǎn)往枷。
詞頻的調(diào)節(jié)因子 k1。 k1的作用是對查詢詞在文檔中的詞頻進(jìn)行調(diào)節(jié)凄杯,如果將 k1設(shè)定為 0错洁,則第二部分計(jì)算因子成了整數(shù) 1,即不考慮詞頻的因素戒突,退化成了二元獨(dú)立模型屯碴。 如果將 k1設(shè)定為較大值, 則第二部分計(jì)算因子基本和詞頻 fi保持線性增長妖谴,即放大了詞頻的權(quán)值窿锉,根據(jù)經(jīng)驗(yàn),一般將 k1設(shè)定為 1.2膝舅。

5)文檔長度

Lucene認(rèn)為較短的字段比較長的字段具有更大的權(quán)重:字段中術(shù)語的頻率會被字段的長度抵消。但是窑多,實(shí)際評分功能以相同的方式對待所有字段仍稀。它將把所有title字段(因?yàn)樗鼈兒芏蹋┍人衎ody字段(因?yàn)樗鼈兒荛L)更重要。
BM25還認(rèn)為較短的字段比較長的字段具有更大的權(quán)重埂息,但它通過考慮字段的平均長度來單獨(dú)考慮每個字段技潘。它可以區(qū)分短title字段和長標(biāo)題字段。
但從公式上看BM25還是偏向長字段千康。
其中參數(shù) b 是調(diào)節(jié)因子享幽,極端情況下,將 b 設(shè)定為 0拾弃,則文檔長度因素將不起作用值桩,設(shè)置為1不起調(diào)節(jié)作用,經(jīng)驗(yàn)表明一般將 b 設(shè)定為 0.75 會獲得較好的搜索效果豪椿。

6) 配置BM25奔坟、TF/IDF及b、k參數(shù)

在這里插入圖片描述

1:創(chuàng)建自定義BM25相似度打分器搭盾。
2:配置b長度影響因子咳秉,也k也是這么加。
3:title使用自定義BM25(my_bm25)鸯隅。
4: body字段使用默認(rèn)BM25

如果喜歡搜索技術(shù)請來我的公眾號吧 'Lucene Elasticsearch 工作積累'
每天會持續(xù)更新搜索相關(guān)技術(shù)


qrcode_for_gh_868f1965da39_258 (1).jpg
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末澜建,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌炕舵,老刑警劉巖何之,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異幕侠,居然都是意外死亡帝美,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進(jìn)店門晤硕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來悼潭,“玉大人,你說我怎么就攤上這事舞箍〗⑼剩” “怎么了?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵疏橄,是天一觀的道長占拍。 經(jīng)常有香客問我,道長捎迫,這世上最難降的妖魔是什么晃酒? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮窄绒,結(jié)果婚禮上贝次,老公的妹妹穿的比我還像新娘。我一直安慰自己彰导,他們只是感情好蛔翅,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著位谋,像睡著了一般山析。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上掏父,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天笋轨,我揣著相機(jī)與錄音,去河邊找鬼损同。 笑死翩腐,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的膏燃。 我是一名探鬼主播茂卦,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼组哩!你這毒婦竟也來了等龙?” 一聲冷哼從身側(cè)響起处渣,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蛛砰,沒想到半個月后罐栈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泥畅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年荠诬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片位仁。...
    茶點(diǎn)故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡柑贞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出聂抢,到底是詐尸還是另有隱情钧嘶,我是刑警寧澤,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布琳疏,位于F島的核電站有决,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏空盼。R本人自食惡果不足惜书幕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望揽趾。 院中可真熱鬧按咒,春花似錦、人聲如沸但骨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奔缠。三九已至,卻和暖如春吼野,著一層夾襖步出監(jiān)牢的瞬間校哎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工瞳步, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留闷哆,地道東北人。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓单起,卻偏偏與公主長得像抱怔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子嘀倒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評論 2 361