¿Cuál es la forma correcta de calcular la similitud de coseno entre una consulta y un documento? Cuando calculo la magnitud del documento, ¿sumo los cuadrados de todos los términos del documento o solo los de la consulta?

La magnitud del documento es, como su nombre lo indica, específica del documento.

Una segunda cosa que podría ayudar es que una consulta es un documento en esencia. Tiene palabras; las palabras tienen frecuencias y valores IDF. Justo como un documento.

Para poder calcular una similitud de documento de consulta, generalmente mantengo todas las palabras en el siguiente formato:

Palabras :

ID de palabra, etiqueta, recuento de documentos, frecuencia de documento inversa.

Documentos :

ID del documento, magnitud, longitud del documento (número de palabras distintas)

Tabla de ocurrencias :

ID de Word, ID de documento, frecuencia (absoluta, relativa o ajustada)

Usando estas tres estructuras de datos, tanto la similitud del coseno como Okapi 25 son fáciles de calcular.

Las principales diferencias son:

  • A diferencia de la similitud de coseno (que se encuentra entre [0, 1] en la representación de bolsa de palabras), Okapi no tiene límites superiores.
  • Okapi 25 tiene un parámetro K1 ajustable que puede sintonizar entre [1.2, 2]. Esto se usa generalmente para evitar que los documentos demasiado largos o demasiado cortos tengan un gran valor.
  • Okapi tiene alternativas, que se adaptan mejor a la indexación de documentos web. Podría favorecer una palabra que aparece en el título de una página en lugar de otra palabra que aparece en la página.

La similitud del coseno supone que cada documento está representado por un vector unitario en una dirección determinada por todos los términos del documento.

Por lo tanto, debe sumar los cuadrados de frecuencias para todos los términos en el documento antes de normalizar.

Usar Tfidf después de calcular las frecuencias de término y antes de normalizar podría ayudar a la recuperación. Una vez que haya normalizado las frecuencias de los términos, solo tiene que multiplicar los elementos por los términos de la consulta (ya que las otras multiplicaciones darían un resultado cero).

Además, eche un vistazo a Okapi BM25 como una forma alternativa de sopesar los términos.