日韩性视频-久久久蜜桃-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的相关度分数算法的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 色91在线 | 爱射网| 男同互操gay射视频在线看 | jizz一区| 久久精品国产亚洲AV无码男同 | 久久视频免费 | 性爱免费在线视频 | 成人在线视频免费观看 | 亚洲精品免费av | 91精品欧美一区二区三区 | 人人草超碰 | 国产伦精品一区二区三区在线 | 奇米网在线观看 | 亚洲免费激情视频 | 日韩城人视频 | 97在线视频观看 | 亚洲精品在线视频 | 在线的av | 中日韩男男gay无套 人人草人人干 | 欧美激情久久久久 | 中文字幕免费在线看线人动作大片 | 欧美激情视频一区二区三区不卡 | 波多野结衣福利视频 | 97国产在线视频 | 激情视频网站在线观看 | 嫩草免费视频 | 国产精品国产三级国产专区51区 | 不卡av在线播放 | 天天成人| 97久久人澡人人添人人爽 | 欧美视频免费在线 | 日韩高清不卡在线 | 又黄又爽无遮挡 | 国产精品二区一区二区aⅴ污介绍 | 国产精品视频免费看 | 久久青青热 | 国产成人在线视频观看 | 国产在线操 | 欧美3p在线观看 | 国产精品一区二区三区在线播放 | 黄网av | 美女视频黄a视频全免费观看 | 国产精品久久久久久久久久久久久久久 | 不卡av免费在线观看 | 欧美精品二区 | 一区二区韩国 | 看片在线 | 一本色道久久综合精品婷婷 | 国产精品久久久久久一区二区 | 亚洲一区中文字幕 | 一炮成瘾1v1高h | 日韩午夜在线播放 | 午夜在线小视频 | 中文字幕日本在线观看 | 色婷婷在线视频 | 国产性生活视频 | a级片在线免费观看 | 日韩在线观看视频一区二区 | 人妻少妇精品中文字幕av蜜桃 | 一区二区三区丝袜 | 国产第一色 | 日韩91在线 | 亚洲欧美成人综合 | 99久久精品一区二区 | 99热这里有精品 | 张津瑜国内精品www在线 | 国产免费脚交足视频在线观看 | 视频丨9l丨白浆 | 成人免费一区二区三区在线观看 | 丁香久久 | 四虎影院成人 | 97人妻精品一区二区 | 三点尽露的大尺度国产 | 欧美男人的天堂 | 三级av网| 日韩精品一区二区三区久久 | 久久密av | 激情五月色婷婷 | 成人福利视频在线观看 | 成人xxxxx | 一级黄色片在线观看 | 久久久久久久久97 | 福利在线国产 | 女人色极品影院 | 色综合一区二区三区 | 亚洲欧美综合一区二区 | 亚洲GV成人无码久久精品 | 国产精品嫩草av | 亚洲欧洲日本国产 | 亚洲涩涩图 | 精品人妻伦九区久久aaa片 | 国产精品xxx在线观看www | 搞逼综合网| 神马久久香蕉 | 欧美大胆a | 国产性爱精品视频 | 日本黄图 | 国产欧美精品一区二区色综合朱莉 | 给我看高清的视频在线观看 |