传统向量空间模型的缺陷
向量空间模型是信息检索中最常用的检索方法,其检索过程是,将文档集D中的所有文档和查询都表示成以单词为特征的向量,特征值为每个单词的TF-IDF值,然后使用向量空间模型(亦即计算查询q的向量和每个文档di的向量之间的相似度)来衡量文档和查询之间的相似度,从而得到和给定查询最相关的文档。
向量空间模型简单的基于单词的出现与否以及TF-IDF等信息来进行检索,但是“说了或者写了哪些单词”和“真正想表达的意思”之间有很大的区别,其中两个重要的阻碍是单词的多义性(polysems)和同义性(synonymys)。多义性指的是一个单词可能有多个意思,比如Apple,既可以指水果苹果,也可以指苹果公司;而同义性指的是多个不同的词可能表示同样的意思,比如search和find。
我们希望找到一种模型,能够捕获到单词之间的相关性。如果两个单词之间有很强的相关性,那么当一个单词出现时,往往意味着另一个单词也应该出现(同义词);反之,如果查询语句或者文档中的某个单词和其他单词的相关性都不大,那么这个词很可能表示的是另外一个意思(比如在讨论互联网的文章中,Apple更可能指的是Apple公司,而不是水果)。
基于 SVD
+ 降维(低阶近似)
构造出一个新的Term-Document矩阵,使得新矩阵和原有矩阵的F范数之差很小(降噪,降维的过程)
降维之后,将term和document映射到同一个低维空间,聚类可以发现良好的效果;
物理意义的解释:期待看到《数学之美》里的解释;
Update
这里我看了《数学之美》中,吴军对SVD的描述,虽然我觉得他把词和文章的矩阵搞反了。。。。也可能是我理解有误,但是这样的解释还是很清晰的;
上述图片中:
(按照我的理解)
第一个矩阵X,每行代表一片文章,每列代表一个主题;每个元素代表,文章和主题的相关程度;
第三个矩阵Y,每列代表一个词,每行代表一个词类;每个元素代表某个词属于某个词类的概率;
中间的矩阵B,是文章主题和词类的相关程度;
这样解释,倒是十分清楚;
在新的矩阵中,潜层语义信息被表现出来;
即按照新的矩阵去索引文档,能够找到更准确的相近的文档
所以
LSI 输入:Term-Document矩阵
LSI 输出:新的(包含潜层语义信息的)Term-Document矩阵
Update 5.28
那么这两个矩阵有什么区别呢?
https://blog.youkuaiyun.com/cang_sheng_ta_ge/article/details/46708515
这里讲到了一个 low-rank approximation
那么原来的高rank的矩阵是输入
新产生的低rank的矩阵就是输出
中间的变化就是可以选择特征值最大的前k个,作为topic
那么新的矩阵中,每个term对应的那一列也可以作为一个词向量
中间的问题:
如何选中间的 Σ Σ 矩阵的前n个奇异值,换句话说,n如何确定?
n就是主题个数,这个问题在第一个参考链接里有回答。
特征值怎么保证从大到小排列,对应的特征向量的顺序改不改变?