日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

白话Elasticsearch24- 深度探秘搜索技术之TFIDF算法/向量空间模型算法/lucene的相关度分数算法

發布時間:2025/3/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 白话Elasticsearch24- 深度探秘搜索技术之TFIDF算法/向量空间模型算法/lucene的相关度分数算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 概述
  • boolean model
  • TF/IDF
    • TF: term frequency
    • IDF:inversed document frequency
    • length norm
  • vector space model向量空間模型
  • lucene的相關度分數算法
    • boolean model
    • lucene practical scoring function
    • query normalization factor
    • query coodination
    • field level boost

概述

繼續跟中華石杉老師學習ES,第24篇

課程地址: https://www.roncoo.com/view/55


boolean model

類似and這種邏輯操作符,先過濾出包含指定term的doc

query “hello world” --> 過濾 --> hello / world / hello & world
bool --> must/must not/should --> 過濾 --> 包含 / 不包含 / 可能包含
doc --> 不打分數 --> 正或反 true or false --> 為了減少后續要計算的doc的數量,提升性能


TF/IDF

單個term在doc中的分數

query: hello world --> doc.content doc1: java is my favourite programming language, hello world !!! doc2: hello java, you are very good, oh hello world!!!

hello對doc1的評分

TF: term frequency

找到hello在doc1中出現了幾次,1次,會根據出現的次數給個分數
一個term在一個doc中,出現的次數越多,那么最后給的相關度評分就會越高


IDF:inversed document frequency

找到hello在所有的doc中出現的次數,3次
一個term在所有的doc中,出現的次數越多,那么最后給的相關度評分就會越低


length norm

hello搜索的那個field的長度,field長度越長,給的相關度評分越低; field長度越短,給的相關度評分越高

最后,會將hello這個term,對doc1的分數,綜合TF,IDF,length norm,計算出來一個綜合性的分數

hello world --> doc1 --> hello對doc1的分數,world對doc1的分數 --> 但是最后hello world query要對doc1有一個總的分數 --> vector space model


vector space model向量空間模型

多個term對一個doc的總分數

hello world --> es會根據hello world在所有doc中的評分情況,計算出一個query vector,query向量

hello這個term,給的基于所有doc的一個評分就是2
world這個term,給的基于所有doc的一個評分就是5

[2, 5]

query vector

doc vector,3個doc,一個包含1個term,一個包含另一個term,一個包含2個term

3個doc

doc1:包含hello --> [2, 0]
doc2:包含world --> [0, 5]
doc3:包含hello, world --> [2, 5]

會給每一個doc,拿每個term計算出一個分數來,hello有一個分數,world有一個分數,再拿所有term的分數組成一個doc vector

畫在一個圖中,取每個doc vector對query vector的弧度,給出每個doc對多個term的總分數

每個doc vector計算出對query vector的弧度,最后基于這個弧度給出一個doc相對于query中多個term的總分數
弧度越大,分數月底; 弧度越小,分數越高

如果是多個term,那么就是線性代數來計算,無法用圖表示


lucene的相關度分數算法

我們boolean model、TF/IDF、vector space model

深入講解TF/IDF算法,在lucene中,底層,到底進行TF/IDF算法計算的一個完整的公式是什么?

boolean model

query: hello world

"match": {"title": "hello world" }"bool": {"should": [{"match": {"title": "hello"}},{"natch": {"title": "world"}}] }

普通multivalue搜索,轉換為bool搜索,boolean model


lucene practical scoring function

practical scoring function,來計算一個query對一個doc的分數的公式,該函數會使用一個公式來計算

score(q,d) = queryNorm(q) · coord(q,d) · ( tf(t in d) · idf(t)2 · t.getBoost() · norm(t,d) ) (t in q)

score(q,d) score(q,d) is the relevance score of document d for query q.

這個公式的最終結果,就是說是一個query(叫做q),對一個doc(叫做d)的最終的總評分


  • queryNorm(q) is the query normalization factor (new).

queryNorm,是用來讓一個doc的分數處于一個合理的區間內,不要太離譜,舉個例子,一個doc分數是10000,一個doc分數是0.1,你們說好不好,肯定不好

  • coord(q,d) is the coordination factor (new).

簡單來說,就是對更加匹配的doc,進行一些分數上的成倍的獎勵

The sum of the weights for each term t in the query q for document d.

  • ∑:求和的符號

∑ (t in q):query中每個term,query = hello world,query中的term就包含了hello和world

query中每個term對doc的分數,進行求和,多個term對一個doc的分數,組成一個vector space,然后計算嗎,就在這一步

  • tf(t in d) is the term frequency for term t in document d.

計算每一個term對doc的分數的時候,就是TF/IDF算法

  • idf(t) is the inverse document frequency for term t.

  • t.getBoost() is the boost that has been applied to the query (new).

  • norm(t,d) is the field-length norm, combined with the index-time
    field-level boost, if any. (new).


query normalization factor

queryNorm = 1 / √sumOfSquaredWeights

sumOfSquaredWeights = 所有term的IDF分數之和,開一個平方根,然后做一個平方根分之1,主要是為了將分數進行規范化 --> 開平方根,首先數據就變小了 --> 然后還用1去除以這個平方根,分數就會很小 --> 1.幾 / 零點幾分數就不會出現幾萬,幾十萬,那樣的離譜的分數


query coodination

獎勵那些匹配更多字符的doc更多的分數

Document 1 with hello → score: 1.5
Document 2 with hello world → score: 3.0
Document 3 with hello world java → score: 4.5

Document 1 with hello → score: 1.5 * 1 / 3 = 0.5
Document 2 with hello world → score: 3.0 * 2 / 3 = 2.0
Document 3 with hello world java → score: 4.5 * 3 / 3 = 4.5

把計算出來的總分數 * 匹配上的term數量 / 總的term數量,讓匹配不同term/query數量的doc,分數之間拉開差距


field level boost

權重相關的設置,權重越大,相關度分數越高

總結

以上是生活随笔為你收集整理的白话Elasticsearch24- 深度探秘搜索技术之TFIDF算法/向量空间模型算法/lucene的相关度分数算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: www.youji.com| 一级黄色片视频 | 欧美福利视频 | 操网站| 美女激情网站 | 久草免费福利 | 欧美操老女人 | 国产一区二区视频在线播放 | 久久免费看少妇 | 精品美女一区二区三区 | 欧美一区二区三区不卡视频 | 欧美成人性色 | 红猫大本营在线观看的 | 销魂奶水汁系列小说 | 青草成人免费视频 | 99九九视频| 成熟了的熟妇毛茸茸 | 亚洲熟妇一区二区 | 91日日| 欧美激情一区二区三区在线 | 99热这里只有精品66 | 欧美午夜精品久久久久久蜜 | 美女视频黄色在线观看 | 久久免费少妇高潮99精品 | 成人做爰100 | 欧美精品video | 色偷偷亚洲 | 国产精品嫩草69影院 | 182tv午夜| 97在线免费 | 欧美一区二区三区免费视频 | 午夜精品一区二区三区在线播放 | 插吧插吧综合网 | 亚洲乱码一区二区三区在线观看 | 精品乱人伦一区二区三区 | 制服诱惑一区二区三区 | 97超碰色| 日本一区二区三区电影在线观看 | 日本成人一区二区三区 | 黄色大片在线看 | 日本激情视频一区二区三区 | 久草综合在线观看 | 亚洲色图在线视频 | 麻豆激情网 | 亚洲午夜久久久 | 国产日韩欧美激情 | 男人私人影院 | 国产最新在线观看 | 欧美另类xxxx野战 | 亚洲久热 | 国产乱码精品一区二区三区不卡 | 丰满熟女人妻一区二区三区 | 久久综合久久88 | 黄色.com| 日韩精品片 | 美女让男生桶 | 小婕子伦流澡到高潮h | 国产人伦精品一区二区三区 | tube日本69第一次 | 三级视频网站 | 欧美精品久久久久a | 日本中文字幕久久 | 两性午夜免费视频 | 国产第一福利影院 | 日韩和欧美的一区二区 | 久久精品久 | 国产交换配乱淫视频免费 | 国产福利片一区二区 | 国产suv精品一区二区69 | 国产丝袜美女 | 日本黄色三级网站 | 亚洲毛片视频 | 亚洲色图36p| 无遮挡的裸体按摩的视频 | 91吃瓜今日吃瓜入口 | 69视频网 | 青青青国产 | 国产高清av | 青青草草视频 | a天堂在线资源 | 污免费在线观看 | 亚洲黄色片免费看 | 国产免费不卡av | 老熟女重囗味hdxx69 | 精品久久久久亚洲 | 蜜臀av88 | 911色| 男女无套免费视频网站动漫 | 国产精品扒开腿做爽爽爽a片唱戏 | 四虎影视免费永久大全 | 一区二区高清视频 | 午夜免费观看 | 求个黄色网址 | 综合激情五月婷婷 | 中字幕视频在线永久在线观看免费 | 国内三级视频 | 女同毛片一区二区三区 | 涩涩屋视频在线观看 | 亚欧毛片 |