【发布时间】:2017-09-07 12:39:14
【问题描述】:
我正在开发一种搜索算法,我正在努力了解如何在术语文档矩阵上实际使用奇异值分解 ( u,w,vt = svd(a) ) 的结果。
例如,假设我有一个 M x 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/),但是我不知道如何将这个产生的“近似”矩阵与原始文档联系起来?这些权重代表什么?如何在我的代码中使用此结果来查找与术语查询相关的文档?
基本上...我该如何使用它?
【问题讨论】:
标签: python vector vectorization tf-idf svd