Compartilhamento de tecnologia

Elasticsearch entende pontuação de relevância (TF-IDF, BM25, etc.)

2024-07-12

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

No Elasticsearch, a pontuação de relevância é o núcleo da função de pesquisa, que determina a qualidade e a classificação dos resultados da pesquisa. Compreender como o Elasticsearch calcula as pontuações de relevância, especificamente os algoritmos TF-IDF e BM25, é fundamental para otimizar o desempenho e os resultados da pesquisa. Este artigo examinará detalhadamente esses dois algoritmos e sua aplicação no Elasticsearch.

1. Introdução à pontuação de relevância

A pontuação de relevância é uma medida de quão bem um resultado de pesquisa corresponde à consulta de um usuário. Elasticsearch usa um algoritmo complexo para calcular a pontuação de relevância de cada documento e da consulta. Quanto maior a pontuação, maior o grau de correspondência entre o documento e a consulta. Em cenários de aplicação, como sites de comércio eletrônico e bases de conhecimento, as pontuações de relevância determinam diretamente se os usuários podem encontrar rapidamente as informações de que precisam.

2. Algoritmo TF-IDF

2.1 Definição e Princípio

TF-IDF (Term Frequency-Inverse Document Frequency) é um algoritmo clássico de recuperação de informações usado para avaliar a importância de uma palavra para um conjunto de documentos ou um dos documentos em um corpus. Consiste em duas partes:

  • TF(Termo Frequência) : Frequência das palavras, ou seja, o número de vezes que uma palavra aparece no documento. A fórmula de cálculo é: TF = (número de vezes que uma palavra aparece no documento) / (número total de palavras no documento).
  • IDF (Frequência de Documento Inversa) : Frequência inversa do documento, ou seja, a importância geral de uma palavra em uma coleção de documentos. A fórmula de cálculo é: IDF = log((número total de documentos do acervo documental) / (número de documentos contendo palavras + 1)).

2.2 Vantagens e Desvantagens

O algoritmo TF-IDF é simples e eficiente, mas também possui limitações óbvias. Por exemplo, não considera factores como o comprimento do documento e a posição do termo de pesquisa, e tende a sobrevalorizar palavras de alta frequência.

3. Algoritmo BM25

3.1 Definição e Princípio

O algoritmo BM25 (Best Matching 25) é uma melhoria e extensão do algoritmo TF-IDF. Ele introduz mais fatores no cálculo da pontuação de relevância, como comprimento do documento e posição do termo de pesquisa. O principal objetivo do algoritmo BM25 é melhorar a qualidade dos resultados de recuperação, especialmente quando se trata de coleções de documentos em grande escala.

A fórmula básica do algoritmo BM25 é:

[
texto{Pontuação}(D, Q) = soma_{i=1}^{n} texto{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|}{texto{méd.dl}})}
]

em, DDE representa um documento, QQPq Representa consulta, qi q_iqeu Representa os termos da consulta, f ( qi , D ) f(q_i, D)e(qeu,E) Indica itens lexicais qi q_iqeuna documentação DDEfrequência em, ∣ E ∣ |E|E Representar documento DDEcomprimento, texto avgdl{avgdl}médiadl Representa o comprimento médio de todos os documentos da coleção de documentos, k 1 k_1o1 e bbb é um parâmetro ajustável.

3.2 Vantagens e Desvantagens

O algoritmo BM25 tem as seguintes vantagens sobre o algoritmo TF-IDF:

  • Normalização do comprimento do documento: considera o efeito diluidor do comprimento do documento na frequência das palavras.
  • Ajuste de saturação de frequência de palavras: Ao introduzir uma função logarítmica para ajustar a saturação da frequência das palavras, evita-se a ênfase excessiva em palavras de alta frequência.
  • Saturação de frequência do documento: Um fator de saturação da frequência do documento é introduzido para ajustar o impacto da frequência do documento.

Porém, o algoritmo BM25 também tem sua complexidade, exigindo o ajuste de múltiplos parâmetros para obter os melhores resultados.

4. Aplicações no Elasticsearch

4.1 Diferenças de versão

Antes do Elasticsearch versão 5.0, o algoritmo TF-IDF era usado por padrão para pontuação de relevância. A partir da versão 5.0, o Elasticsearch utiliza o algoritmo BM25 por padrão porque apresenta melhor desempenho em aplicações práticas.

4.2 Depuração e Otimização

Para obter insights sobre como o Elasticsearch calcula a pontuação de relevância de um documento para uma consulta, você pode usar_explain API. Esta API pode retornar uma explicação da pontuação de cada termo de consulta no documento, incluindo seus componentes individuais (como subconsultas, fatores, normalização, etc.) e sua contribuição específica para a pontuação geral.

Por exemplo, você pode usar o seguinte comando para visualizar a pontuação TF-IDF ou BM25 para uma consulta específica:

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 Cenários práticos de aplicação

No site de comércio eletrônico, os usuários podem inserir a palavra-chave “celular” para pesquisar. O Elasticsearch indexará todos os documentos que contenham “telefone celular” e calculará suas pontuações de relevância usando o algoritmo BM25. Documentos com pontuações altas têm classificação mais elevada nos resultados de pesquisa, melhorando a experiência do usuário.

5. Resumo

O mecanismo de pontuação de relevância do Elasticsearch é baseado em algoritmos complexos, entre os quais os algoritmos TF-IDF e BM25 são dois algoritmos de pontuação importantes. Compreender os princípios e aplicações desses algoritmos é crucial para otimizar o desempenho e os resultados de pesquisa do Elasticsearch.Ajustando os parâmetros do algoritmo e usando_explain API para depuração,