動態

詳情 返回 返回

Elasticsearch 相似度算法 TF-IDF 與 BM25 簡要説明(qbit) - 動態 詳情

前言

  • 簡要説明 TF-IDFBM25
  • 簡要説明 BM25k1b 參數調整

TF-IDF 與 BM25

TF-IDF

  • TF是指歸一化後的詞頻
    image.png
  • IDF是指逆文檔頻率
    image.png
  • 詞彙(word)的TF-IDF
    image.png
  • 句子(sentence)的TF-IDF
    image.png

BM 25

一句話解釋:BM 25 可以看做 TF-IDF 的變形,原理上是類似的。
傳統的TF值理論上是可以無限大的。而BM25與之不同,它在TF計算方法中增加了一個常量k,用來限制TF值的增長極限。下面是兩種計算方法中,詞頻對TF Score影響的走勢圖。從圖中可以看到,當tf增加時,TF Score跟着增加,但是BM25的TF
Score會被限制在0~k+1之間。它可以無限逼近k+1,但永遠無法觸達它。這在業務上可以理解為某一個因素的影響強度不能是無限的,而是有個最大值,這也符合我們對文本相關性邏輯的理解。
image.png

BM25 下 k1b 參數調整

BM25 算分公式解釋

Elasticsearch 使用的 BM25 相似度算法的完整計算公式如下:

image.png

其中

image.png

k1b 參數調整

在Elasticsearch中,BM25相似度算法的參數k1和b的取值範圍如下:
  • k1 參數(術語頻率飽和調節器)通常是在 0 到 正無窮大 的範圍內。但是,在實際應用中,它一般設置在 0 到 3 之間。默認值是 1.2。k1 值較小意味着詞頻達到飽和的速度較快,也就是説詞頻的影響較小;而較大的 k1 值則意味着詞頻達到飽和的速度較慢,詞頻的影響更大。
  • b 參數(字段長度歸一化參數)的取值範圍是從 0 到 1。默認值是 0.75。當 b 設置為 0 時,表示不考慮文檔長度對評分的影響;當 b 設置為 1 時,則完全按照文檔長度進行歸一化處理。
k1 和 b 是字段級別的參數。
qbit 理解:k1 越大,詞頻的影響力越大;b 越大,有效信息的影響力越大。
即:
k1 越小 → 越關注“是否出現”,避免高頻詞刷分
b 越小 → 越忽略文檔長度,長文檔不會被過度懲罰
{
  "settings": {
    "index": {
      "similarity": {
        "default": {            // 調整索引的默認相似度
          "type": "BM25",
          "k1": 0.9,
          "b": 0.65
        },
        "bm25_01k1_0b": {        // 自定義其它名字的相似度
          "type": "BM25",
          "k1": 0.1,
          "b": 0
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "title": {
        "type": "keyword",
        "doc_values": false,
        "similarity": "bm25_01k1_0b",      // 這裏如果不寫明,會使用 default相似度 0.9/0.65
        "fields": {
          "text": {
            "type": "text",
            "analyzer": "ik_smart",
            "similarity": "bm25_01k1_0b"  // 這裏如果不寫明,會使用 default相似度 0.9/0.65
          }
        }
      }
    }
  }
}

設置索引級別的默認相似度

  • 官方文檔:https://www.elastic.co/docs/reference/elasticsearch/index-set...
  • 更改索引的默認相似度,只需要關閉索引,更改相似度算法後,重新打開索引即可,不需要重建索引
本文出自 qbit snap
user avatar cafebabe 頭像 wanlanqiudeyuechi 頭像 liutos 頭像 lpc63szb 頭像 rui0908 頭像 zhishuangdebaikaishui 頭像
點贊 6 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.