Je travaille sur le développement d'un algorithme de recherche et j'ai du mal à comprendre comment utiliser réellement les résultats d'une décomposition de valeur singulière (u, w, vt = svd (a)) réduction sur une matrice document-terme.Comment comparer une requête de recherche à la matrice 'w' SVD
Par exemple, dire que j'ai une matrice M x N comme suit où chaque colonne représente un vecteur de document (nombre de termes dans chaque document)
a = [[ 0, 0, 1 ],
[ 0, 1, 2 ],
[ 1, 1, 1 ],
[ 0, 2, 3 ]]
Maintenant, je pouvais exécuter une fonction tf-idf sur cette matrice pour générer un score pour chaque valeur de terme/document, mais par souci de clarté, je vais ignorer cela.
SVD Résultats
Lors de l'exécution SVD sur cette matrice, je me retrouve avec le vecteur diagonale suivante pour « w »
import svd
u,w,vt = svd.svd(a)
print w
// [4.545183973611469, 1.0343228430392626, 0.5210363733873331]
Je comprends plus ou moins ce que cela représente (grâce à un beaucoup de lecture et en particulier cet article https://simonpaarlberg.com/post/latent-semantic-analyses/), mais je ne peux pas comprendre comment relier cette matrice 'approximation' résultant aux documents originaux? Que représentent ces poids? Comment puis-je utiliser ce résultat dans mon code pour trouver des documents liés à une requête de terme?
Fondamentalement ... Comment l'utiliser?
Merci @rlbond, je pense que ça commence à avoir du sens. J'utilise le gensim, qui fait vraiment tout le travail pour moi, mais je veux vraiment comprendre les maths sous-jacents aussi. Je pense que j'ai juste besoin de plus de temps pour étudier le sujet afin d'en avoir la tête enveloppée. –