Partage de technologie

Elasticsearch comprend la notation de pertinence (TF-IDF, BM25, etc.)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Dans Elasticsearch, l'évaluation de la pertinence est au cœur de la fonction de recherche, qui détermine la qualité et le classement des résultats de recherche. Comprendre comment Elasticsearch calcule les scores de pertinence, en particulier les algorithmes TF-IDF et BM25, est essentiel pour optimiser les performances et les résultats de recherche. Cet article examinera en profondeur ces deux algorithmes et leur application dans Elasticsearch.

1. Introduction à la notation de pertinence

Le score de pertinence est une mesure de la mesure dans laquelle un résultat de recherche correspond à la requête d'un utilisateur. Elasticsearch utilise un algorithme complexe pour calculer le score de pertinence de chaque document et de la requête. Plus le score est élevé, plus le degré de correspondance entre le document et la requête est élevé. Dans des scénarios d'application tels que les sites Web de commerce électronique et les bases de connaissances, les scores de pertinence déterminent directement si les utilisateurs peuvent trouver rapidement les informations dont ils ont besoin.

2. Algorithme TF-IDF

2.1 Définition et principe

TF-IDF (Term Frequency-Inverse Document Frequency) est un algorithme classique de recherche d'informations utilisé pour évaluer l'importance d'un mot dans un ensemble de documents ou l'un des documents d'un corpus. Il se compose de deux parties :

  • TF (Fréquence des termes) : Fréquence des mots, c'est-à-dire le nombre de fois qu'un mot apparaît dans le document. La formule de calcul est : TF = (nombre de fois qu'un mot apparaît dans le document) / (nombre total de mots dans le document).
  • IDF (fréquence inverse des documents) : Fréquence inverse des documents, c'est-à-dire l'importance générale d'un mot dans une collection de documents. La formule de calcul est : IDF = log((nombre total de documents dans la collection de documents) / (nombre de documents contenant des mots + 1)).

2.2 Avantages et inconvénients

L’algorithme TF-IDF est simple et efficace, mais il présente également des limites évidentes. Par exemple, il ne prend pas en compte des facteurs tels que la longueur du document et la position du terme de recherche, et a tendance à trop insister sur les mots fréquents.

3. Algorithme BM25

3.1 Définition et principe

L'algorithme BM25 (Best Matching 25) est une amélioration et une extension de l'algorithme TF-IDF. Il introduit davantage de facteurs lors du calcul du score de pertinence, tels que la longueur du document et la position du terme de recherche. L'objectif principal de l'algorithme BM25 est d'améliorer la qualité des résultats de récupération, en particulier lorsqu'il s'agit de collections de documents à grande échelle.

La formule de base de l'algorithme BM25 est :

[
texte{Score}(D, Q) = somme_{i=1}^{n} texte{IDF}(q_i) cdot frac{f(q_i, D) cdot (k_1 + 1)}{f(q_i, D) + k_1 cdot (1 - b + b cdot frac{|D|}{texte{moyenne}})}
]

dans, DDD représente un document, QQQ Représente la requête, qi q_iqje Représente les termes de la requête, f ( qi , D ) f(q_i, D)F(qje,D) Indique des éléments lexicaux qi q_iqjedans la documentation DDDfréquence dans, ∣ D ∣ |D|D Représenter le document DDDlongueur, texte avgdl{avgdl}moyenne Représente la longueur moyenne de tous les documents de la collection de documents, k 1 k_1k1 et bbb est un paramètre réglable.

3.2 Avantages et inconvénients

L'algorithme BM25 présente les avantages suivants par rapport à l'algorithme TF-IDF :

  • Normalisation de la longueur du document: Prend en compte l'effet dilutif de la longueur du document sur la fréquence des mots.
  • Ajustement de la saturation de la fréquence des mots: En introduisant une fonction logarithmique pour ajuster la saturation de la fréquence des mots, on évite de trop insister sur les mots à haute fréquence.
  • Saturation de la fréquence des documents: Un facteur de saturation de la fréquence des documents est introduit pour ajuster l'impact de la fréquence des documents.

Cependant, l'algorithme BM25 a également sa complexité, nécessitant l'ajustement de plusieurs paramètres pour obtenir les meilleurs résultats.

4. Applications dans Elasticsearch

4.1 Différences de versions

Avant Elasticsearch version 5.0, l'algorithme TF-IDF était utilisé par défaut pour l'évaluation de la pertinence. À partir de la version 5.0, Elasticsearch utilise l'algorithme BM25 par défaut car il est plus performant dans les applications pratiques.

4.2 Débogage et optimisation

Pour mieux comprendre comment Elasticsearch calcule le score de pertinence d'un document par rapport à une requête, vous pouvez utiliser_explain API. Cette API peut renvoyer une explication du score de chaque terme de requête sur le document, y compris ses composants individuels (tels que les sous-requêtes, les facteurs, la normalisation, etc.) et leur contribution spécifique au score global.

Par exemple, vous pouvez utiliser la commande suivante pour afficher le score TF-IDF ou BM25 pour une requête spécifique :

GET /my_index/_search
{
  "explain": true,
  "query": {
    "match": {
      "text": "this is the first document"
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

4.3 Scénarios d'application pratiques

Sur le site de commerce électronique, les utilisateurs peuvent saisir le mot-clé « téléphone mobile » pour effectuer une recherche. Elasticsearch indexera tous les documents contenant « téléphone mobile » et calculera leurs scores de pertinence à l'aide de l'algorithme BM25. Les documents avec des scores élevés sont mieux classés dans les résultats de recherche, améliorant ainsi l'expérience utilisateur.

5. Résumé

Le mécanisme de notation de pertinence d'Elasticsearch est basé sur des algorithmes complexes, parmi lesquels les algorithmes TF-IDF et BM25 sont deux algorithmes de notation importants. Comprendre les principes et les applications de ces algorithmes est essentiel pour optimiser les performances et les résultats de recherche d'Elasticsearch.En ajustant les paramètres de l'algorithme et en utilisant_explain API pour le débogage,