1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Elasticsearch 如何把評分限定在0到1之間?

        共 3793字,需瀏覽 8分鐘

         ·

        2023-06-20 18:06

        本文題目來自微信群討論。

        在 Elasticsearch 中,評分(或打分)通常在查詢過程中進行,以判斷文檔的相關(guān)性。

        默認的打分機制使用的是 BM25,但你也可以通過自定義的打分查詢(function_score)來自定義評分機制。然而,如果你想要將評分范圍限定在0到1之間,你可能需要在查詢中使用腳本來實現(xiàn)。

        Elasticsearch 的評分主要關(guān)注的是相關(guān)性排序,而不是確切的評分值,因此如果你想要讓 Elasticsearch 的評分等比例地映射到0和1之間,你需要使用一些形式的歸一化或縮放方法。但這并不是 Elasticsearch 內(nèi)置的功能,你需要自己來實現(xiàn)。

        1、歸一化解讀

        當我們談?wù)?歸一化"時,我們指的是將數(shù)據(jù)集轉(zhuǎn)換為一個共享的,標準化的比例或范圍。這在數(shù)據(jù)分析機器學(xué)習中非常常見,因為它能夠幫助我們對不同的數(shù)據(jù)集進行公平的比較。

        例如,假設(shè)你有兩個數(shù)據(jù)集,一個是人們的身高(以厘米為單位),另一個是人們的體重(以千克為單位)。這兩個數(shù)據(jù)集的范圍和單位都不同。如果我們直接比較它們,就很難得出有意義的結(jié)論。然而,如果我們將兩者都歸一化到0和1之間,我們就可以更容易地比較和理解這兩個數(shù)據(jù)集。

        常見的歸一化方法是使用最小值最大值歸一化法(Min-Max Normalization)。我們會使用到以下公式:

        其中Xmax代表最大值、Xmin代表最小值。需要注意的是,當有新數(shù)據(jù)進來時,可能會改變最大值或最小值,這時候我們就需要重新定義式子中的Xmax和Xmin,以免導(dǎo)致錯誤。

        參考:https://www.cupoy.com/collection/0000018008CD5D70000000046375706F795F72656C656173654355/00000181709BCC8F000000056375706F795F72656C656173654349

        2、Elasticsearch 歸一化

        在這個 Elasticsearch 的案例中,我們正在討論的是如何將評分(_score)歸一化到0和1之間。

        默認情況下,Elasticsearch 的評分可以在很大的范圍內(nèi)變化,這取決于很多因素,比如查詢的復(fù)雜性,文檔的數(shù)量,等等。如果我們想要更方便地比較和理解這些評分,我們可以將它們歸一化,這樣所有的評分都會在0和1之間。

        簡而言之,歸一化就是將數(shù)據(jù)轉(zhuǎn)換到一個統(tǒng)一的范圍,這樣我們就可以更容易地進行比較和理解。

        歸一化的方法取決于你知道評分范圍的上下限,或者愿意接受一些近似值。一種可能的方法是,首先執(zhí)行一個查詢來獲取最高和最低的評分,然后使用這些值來歸一化其他查詢的評分。

        然而,需要注意的是,這種方法可能會產(chǎn)生不一致的結(jié)果,因為 Elasticsearch 的評分機制會考慮各種因素(如 tf-idf,字段長度等),并且對于不同的查詢,最高和最低的評分可能會有所不同。

        因此,歸一化評分在 Elasticsearch 中是一個復(fù)雜的任務(wù),可能需要在查詢級別和/或應(yīng)用級別進行處理。如果你正在設(shè)計一個系統(tǒng),需要在0和1之間等比例地映射評分,那么可能需要重新考慮是否 Elasticsearch 的評分機制是最適合的方式,或者可能需要查找其他方法來補充或替代 Elasticsearch 的評分。

        3、Elasticsearch 8.X 評分歸一化

        如果你想將 Elasticsearch 的評分等比例地映射到0和1之間,你首先需要知道可能的評分范圍。這可能需要你先執(zhí)行一個查詢來找出可能的最高和最低分。以下是一個簡單的示例。首先,我們做一個查詢來找到評分范圍:

        GET?/your_index/_search
        {
        ??"query":?{?"match_all":?{}?},
        ??"size":?1,
        ??"sort":?[?{?"_score":?"desc"?}?]
        }

        這個查詢會返回評分最高的文檔。你可以從返回的結(jié)果中找到 _score 字段,這就是最高的評分。你也可以通過將排序方向改為 "asc" 來找到最低的評分。然后,你可以用這些值來進行歸一化。

        假設(shè)你已經(jīng)找到了最高評分 max_score 和最低評分 min_score,你可以在查詢中使用一個腳本來進行歸一化:

        {
        ??"query":?{
        ????"function_score":?{
        ??????"query":?{?"match_all":?{}?},
        ??????"script_score":?{
        ????????"script":?{
        ??????????"source":?"(_score?-?params.min)?/?(params.max?-?params.min)",
        ??????????"params":?{
        ????????????"max":?max_score,
        ????????????"min":?min_score
        ??????????}
        ????????}
        ??????}
        ????}
        ??}
        }

        在這個查詢中,我們使用了一個腳本,這個腳本會將原始評分 (_score) 歸一化到0和1之間。注意,你需要將 max_score 和 min_score 替換為你在前面的查詢中找到的值。

        請注意,這只是一個簡單的示例,并且這種方法有一些限制。例如,最高和最低的評分可能會隨著索引的更新而改變。你可能需要定期更新這些值,或者在每次查詢時都計算這些值,這可能會影響查詢的性能。

        此外,這個腳本假設(shè)評分總是在 min_scoremax_score 之間。如果有新的文檔或查詢導(dǎo)致評分超出了這個范圍,那么這個腳本可能會返回小于0或大于1的值。

        在使用這個方法時,你需要考慮這些限制,并根據(jù)你的實際情況進行調(diào)整。

        4、Elasticsearch 8.X 歸一化實操

        接下來我們通過一個實際的操作示例來演示這個過程。

        4.1 獲取最大評分

        POST?kibana_sample_data_ecommerce/_search
        {
        ??"_source":?[""],
        ??"query":?{
        ????"match":?{
        ??????"customer_full_name":?"Underwood"
        ????}
        ??},
        ??"size":?10,
        ??"sort":?[
        ????{
        ??????"_score":?"desc"
        ????}
        ??]
        }

        得到結(jié)果:4.4682097。

        4.2 獲取最小評分

        POST?kibana_sample_data_ecommerce/_search
        {
        ??"_source":?[""],
        ??"query":?{
        ????"match":?{
        ??????"customer_full_name":?"Underwood"
        ????}
        ??},
        ??"size":?10,
        ??"sort":?[
        ????{
        ??????"_score":?"asc"
        ????}
        ??]
        }

        得到結(jié)果:3.731265。

        4.3 計算到0-1之間的評分

        POST?kibana_sample_data_ecommerce/_search
        {
        ??"from":?0,
        ??"size":?10,
        ??"_source":?[
        ????""
        ??],
        ??"sort":?[
        ????{
        ??????"_score":?{
        ????????"order":?"asc"
        ??????}
        ????}
        ??],
        ??"query":?{
        ????"script_score":?{
        ??????"query":?{
        ????????"match":?{
        ??????????"customer_full_name":?"Underwood"
        ????????}
        ??????},
        ??????"script":?{
        ????????"source":?"(_score?-?params.min)?/?(params.max?-?params.min)",
        ????????"params":?{
        ??????????"max":?4.4682097,
        ??????????"min":?3.731265
        ????????}
        ??????}
        ????}
        ??}
        }

        通過這些步驟,我們就可以實現(xiàn)在 Elasticsearch 中將評分等比例地映射到0和1之間。

        但是,這種方法有其局限性和挑戰(zhàn),需要根據(jù)實際情況進行調(diào)整和優(yōu)化。

        5、小結(jié)

        本文詳細討論了在Elasticsearch中實現(xiàn)評分歸一化的方法。

        這涉及到獲取最高和最低評分,然后通過查詢中的腳本進行歸一化處理。雖然此方法在將評分等比例映射到0和1之間上有所作用,但存在諸如評分范圍隨索引更新而變化,新的文檔或查詢可能引發(fā)評分超出預(yù)設(shè)范圍等限制。

        因此,雖然本文給出了具體的操作示例,但在實際應(yīng)用中,用戶需要根據(jù)具體情況靈活調(diào)整和優(yōu)化。

        推薦閱讀

        1. 全網(wǎng)首發(fā)!從 0 到 1 Elasticsearch 8.X 通關(guān)視頻

        2. 重磅 | 死磕 Elasticsearch 8.X 方法論認知清單

        3. 如何系統(tǒng)的學(xué)習 Elasticsearch ?

        4. 2023,做點事

        5. 干貨 | 一步步拆解 Elasticsearch BM25 模型評分細節(jié)

        6. 實戰(zhàn) | Elasticsearch自定義評分的N種方法

        短時間快習得多干貨!

        和全球?近2000+?Elastic 愛好者一起精進!


        大模型時代,搶先一步學(xué)習進階干貨!

        瀏覽 82
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产一级婬片A片AAA樱花 | 操操操逼视频 | 亚洲国产成人va在线观看天堂 | 99超碰在线观看 | 国产激情在线观看视频 | 日韩视频在线免费观看 | 理伦片理伦在线观看 | 国产福利中文字幕 | 免费无码毛片 | 逼操免费网站视频在线看 |