¿Cuál es la mejor manera (habitual) de combinar los puntajes tf-idf para cada documento que un usuario ha visto al crear un perfil para este usuario?

No soy un experto en este tema, pero esto es lo que puedo concluir.

‘La suma de los puntajes’ podría no funcionar muy bien . Como ejemplo, suponga que el usuario ha visitado un número significativo de documentos. Ahora, si apareciera en todos los documentos, aparecerían términos muy comunes, como ‘the’, con un TF-IDF muy bajo por documento. Los términos poco comunes ocurrirían con menos frecuencia, y aunque los documentos individuales en los que aparecen podrían darles puntajes altos, en general podrían ser degradados en relación con los términos comunes. Parece que necesitas algún tipo de normalización.

Una forma intuitiva de pensar en los puntajes de término para el perfil del usuario es pensar en contraer d1, d2 y d3 (documentos que el usuario ha visto) en un documento en lugar de procesarlos como tres documentos diferentes. Ahora, el objetivo es tratar de llegar a nuevos puntajes TF-IDF para el nuevo conjunto de documentos reducido.

Nota: La aproximación anterior funcionará solo cuando el número de documentos vistos sea una pequeña fracción del número total de documentos (o si no hay IDF realmente). Los términos poco comunes que son visitados más por el usuario tenderán a tener TF-IDF más altos en el nuevo documento contraído, y esta es la intuición detrás de la técnica.

Así es como parece funcionar esta reducción:

Por definición, para el término u y el documento d1, TF-IDF (u, d1) es directamente proporcional a la frecuencia de ocurrencia f (u, d1) e inversamente proporcional a ‘FREQ’, número de documentos en los que aparece el término ‘u’. Supongamos que D es el número total de documentos.

[matemáticas] TFIDF (u, d_1) = C * f (u, d_1) * log \ left (\ frac {D} {FREQ} \ right) [/ math]

Tenga en cuenta que FREQ, arriba, es una función del término ‘u’. Será alto para términos comunes y bajo para términos poco comunes.

Por lo tanto, si dos documentos d1 y d2 fueran unificados (colapsados ​​en uno),
[matemáticas] \ cdots [/ matemáticas]
[matemáticas] TFIDF (u, d_1 \ cup d_2) = [/ matemáticas]
[matemáticas] C * [f (u, d_1) + f (u, d_2)] * log \ left (\ frac {D-1} {FREQ-1} \ right) [/ math]

Dos cosas a tener en cuenta aquí. En primer lugar, uno debería normalizar la ‘suma de frecuencias’ en los corchetes anteriores, en función de la longitud del documento (promedio ponderado), para evitar sesgos hacia documentos grandes. En segundo lugar, el número de documentos se reduce en 1 (tanto en el numerador como en el denominador) del factor IDF, como un tecnicismo menor (el decremento se puede omitir con seguridad y FREQ y D se usan tal cual, como aproximaciones, suponiendo que D es grande) .

Entonces el problema se reduce a FREQ de computación inversa. Dada una puntuación TFIDF existente, la frecuencia de término de ‘u’ en el documento actual y el número total de documentos D en sí, ahora se puede invertir el FREQ de cálculo (dentro de un multiplicador constante) basado en la fórmula. Utilice este valor en la puntuación calculada para el conjunto de documentos unificados / reducidos, y esto debería encargarse de degradar los términos comunes una vez más (porque la puntuación para los términos comunes se dividirá por un valor FREQ más grande).

En otras palabras, ‘ponderamos’ la suma de frecuencias en función de las frecuencias inversas de ocurrencia, y esto da una mejor puntuación.

Creo que esta aproximación debería funcionar mucho mejor que una suma directa, por las razones explicadas anteriormente.