Compartir tecnología

Elasticsearch comprende la puntuación de relevancia (TF-IDF, BM25, etc.)

2024-07-12

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

En Elasticsearch, la puntuación de relevancia es el núcleo de la función de búsqueda, que determina la calidad y la clasificación de los resultados de búsqueda. Comprender cómo Elasticsearch calcula las puntuaciones de relevancia, específicamente los algoritmos TF-IDF y BM25, es fundamental para optimizar el rendimiento y los resultados de la búsqueda. Este artículo analizará en profundidad estos dos algoritmos y su aplicación en Elasticsearch.

1. Introducción a la puntuación de relevancia

La puntuación de relevancia es una medida de qué tan bien un resultado de búsqueda coincide con la consulta de un usuario. Elasticsearch utiliza un algoritmo complejo para calcular la puntuación de relevancia de cada documento y la consulta. Cuanto mayor sea la puntuación, mayor será el grado de coincidencia entre el documento y la consulta. En escenarios de aplicaciones como sitios web de comercio electrónico y bases de conocimientos, las puntuaciones de relevancia determinan directamente si los usuarios pueden encontrar rápidamente la información que necesitan.

2. Algoritmo TF-IDF

2.1 Definición y principio

TF-IDF (Frecuencia de términos-Frecuencia de documentos inversa) es un algoritmo clásico de recuperación de información que se utiliza para evaluar la importancia de una palabra para un conjunto de documentos o uno de los documentos de un corpus. Está formado por dos partes:

  • TF (frecuencia del término) : Frecuencia de palabras, es decir, la cantidad de veces que aparece una palabra en el documento. La fórmula de cálculo es: TF = (número de veces que aparece una palabra en el documento) / (número total de palabras en el documento).
  • IDF (Frecuencia inversa de documentos) : Frecuencia inversa de documentos, es decir, la importancia general de una palabra en una colección de documentos. La fórmula de cálculo es: IDF = log((número total de documentos en la colección de documentos) / (número de documentos que contienen palabras + 1)).

2.2 Ventajas y desventajas

El algoritmo TF-IDF es simple y eficiente, pero también tiene limitaciones obvias. Por ejemplo, no tiene en cuenta factores como la longitud del documento y la posición del término de búsqueda, y tiende a poner demasiado énfasis en las palabras de alta frecuencia.

3. Algoritmo BM25

3.1 Definición y principio

El algoritmo BM25 (Best Matching 25) es una mejora y extensión del algoritmo TF-IDF. Introduce más factores al calcular la puntuación de relevancia, como la longitud del documento y la posición del término de búsqueda. El objetivo principal del algoritmo BM25 es mejorar la calidad de los resultados de la recuperación, especialmente cuando se trata de colecciones de documentos a gran escala.

La fórmula básica del algoritmo BM25 es:

[
texto{Puntaje}(D, Q) = suma_{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|}{text{promedio}})}
]

en, DDD representa un documento, QQQ Representa consulta, yo soy q_yoqi Representa los términos de la consulta, f(qi, D) f(q_i, D)F(qi,D) Indica elementos léxicos yo soy q_yoqien documentación DDDfrecuencia en, ∣ D ∣ |D|D Representar documento DDDlongitud, texto promedio{promedio}promedio Representa la longitud promedio de todos los documentos de la colección de documentos, el 1 el 1a1 y cama y desayunob es un parámetro ajustable.

3.2 Ventajas y desventajas

El algoritmo BM25 tiene las siguientes ventajas sobre el algoritmo TF-IDF:

  • Normalización de la longitud del documento: Considera el efecto diluyente de la longitud del documento sobre la frecuencia de las palabras.
  • Ajuste de saturación de frecuencia de palabras: Al introducir una función logarítmica para ajustar la saturación de la frecuencia de las palabras, se evita el énfasis excesivo en las palabras de alta frecuencia.
  • Saturación de frecuencia de documentos: Se introduce un factor de saturación de la frecuencia de los documentos para ajustar el impacto de la frecuencia de los documentos.

Sin embargo, el algoritmo BM25 también tiene su complejidad, ya que requiere ajustar múltiples parámetros para lograr los mejores resultados.

4. Aplicaciones en Elasticsearch

4.1 Diferencias de versión

Antes de la versión 5.0 de Elasticsearch, el algoritmo TF-IDF se usaba de forma predeterminada para la puntuación de relevancia. A partir de la versión 5.0, Elasticsearch utiliza el algoritmo BM25 de forma predeterminada porque funciona mejor en aplicaciones prácticas.

4.2 Depuración y optimización

Para obtener información sobre cómo Elasticsearch calcula la puntuación de relevancia de un documento para una consulta, puede utilizar_explain API. Esta API puede devolver una explicación de la puntuación de cada término de consulta en el documento, incluidos sus componentes individuales (como subconsultas, factores, normalización, etc.) y su contribución específica a la puntuación general.

Por ejemplo, puede utilizar el siguiente comando para ver la puntuación TF-IDF o BM25 para una 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 Escenarios de aplicación práctica

En el sitio web de comercio electrónico, los usuarios pueden ingresar la palabra clave "teléfono móvil" para buscar. Elasticsearch indexará todos los documentos que contengan "teléfono móvil" y calculará sus puntuaciones de relevancia utilizando el algoritmo BM25. Los documentos con puntuaciones altas ocupan un lugar más alto en los resultados de búsqueda, lo que mejora la experiencia del usuario.

5. Resumen

El mecanismo de puntuación de relevancia de Elasticsearch se basa en algoritmos complejos, entre los cuales los algoritmos TF-IDF y BM25 son dos algoritmos de puntuación importantes. Comprender los principios y aplicaciones de estos algoritmos es crucial para optimizar el rendimiento y los resultados de búsqueda de Elasticsearch.Ajustando los parámetros del algoritmo y usando_explain API para depuración,