对于一个term-document加权词频矩阵(如TF-IDF),如果他的规模m*n非常大,那么这些文本的存储还有计算聚类都会有不小的麻烦,LSA采用SVD分解将高维文本映射到低维的隐含语义空间,较好的解决了这个问题。
分解后的三部分都有解释,U*sigma的每行都是每个单词在隐含语义层的坐标,V*sigma的每行都是每个文本在隐含语义层的坐标,另外也有一种说法就是U,V分别为单词和文本在潜语义空间的坐标,其实,因为sigma是一个对角矩阵,U*sigma空间只是对U空间的每一个轴做了一个伸展或者收缩。
当我们进行矩阵SVD分解后分别求出U,sigma,V,我们接下来能做什么呢?
1 计算任意两个文本的相似度,原来我我们要对两个长度为m的文本向量进行相似度计算,现在只需要对长度为r(r为sigma方阵的大小)的向量进行计算,只需要计算V*sigma矩阵的任意两行的相似度即可。
2 当新来一个文本时d,我们先求出它在隐含语义层的坐标,然后用相似度可以寻找与他最相似的文本。
3 可以根据降维后的特征进行文本聚类,相似度计算按照cosine夹角即可。
4 也可以对单词计算隐含语义层的坐标,然后进行相似度计算聚类等操作。
值得说明的一点是,LSA较好的解决了多个单词同一个意义的问题,但是并不能解决一个单词多个意思的问题,PLSA模型能解决这个问题。