我正在開發搜索算法,並且我正在努力理解如何實際使用奇異值分解的結果(u,w,vt = svd( a))減少術語文件矩陣。如何將搜索查詢與SVD結果'w'矩陣進行比較
例如,假設我有一個M×N的矩陣如下,其中每列表示(每個文檔中許多術語)的文件向量
a = [[ 0, 0, 1 ],
[ 0, 1, 2 ],
[ 1, 1, 1 ],
[ 0, 2, 3 ]]
現在,我可以在運行一個TF-IDF功能這個矩陣爲每個術語/文檔值生成一個分數,但爲了清晰起見,我將忽略它。
SVD結果
一旦在此矩陣運行SVD,我結束了關於「W」
import svd
u,w,vt = svd.svd(a)
print w
// [4.545183973611469, 1.0343228430392626, 0.5210363733873331]
我明白或多或少什麼這代表(得益於以下對角矢量很多的閱讀,特別是這篇文章https://simonpaarlberg.com/post/latent-semantic-analyses/),但是我不知道如何將這個產生的'逼近'矩陣返回到原始文檔?這些權重代表什麼?如何在我的代碼中使用此結果來查找與術語查詢相關的文檔?
基本上...我如何使用它?
謝謝@rlbond,我認爲這是開始有意義的。我使用的是gensim,它真的爲我做了所有的工作,但我真的很想了解底層的數學。我想我只是需要更多的時間來研究這個話題,才能讓我的頭腦環繞它。 –