Nlp 利用潜在语义分析度量语篇相似度

Nlp 利用潜在语义分析度量语篇相似度,nlp,similarity,cosine-similarity,lingpipe,latent-semantic-analysis,Nlp,Similarity,Cosine Similarity,Lingpipe,Latent Semantic Analysis,我目前正在开发一个程序,根据两段文字的语义(意思)来比较两段文字。我知道有像lingpipe这样的库提供了比较字符串距离的有用方法,但是我听说LSA是度量文本相似性的最好方法 我只是对使用LSA来衡量文本相似性有一点困惑。我知道这个过程是,有了LSA 1.Two passages are represented as two matrices X and Y. 2.Using SVD, the matrices each are reduced to 3 different matrices

我目前正在开发一个程序,根据两段文字的语义(意思)来比较两段文字。我知道有像lingpipe这样的库提供了比较字符串距离的有用方法,但是我听说LSA是度量文本相似性的最好方法

我只是对使用LSA来衡量文本相似性有一点困惑。我知道这个过程是,有了LSA

1.Two passages are represented as two matrices X and Y. 

2.Using SVD, the matrices each are reduced to 3 different matrices 

3.And then the cosine distance is measured between the two matrices

4. The cosine distance determines how similar they are
我只是想知道

A.在奇异值分解中,矩阵减少为3个较小的矩阵。那么,这些较小的矩阵中的哪一个用于余弦距离测量

余弦距离通常应用于向量。因此,在将它们应用于矩阵的情况下,我假设矩阵是迭代的,并且每2个向量之间测量余弦距离。然后假设所有这些距离的平均值是这两个矩阵之间的最终余弦距离


我知道这是一个非常利基的话题,但我希望这两个问题能有所启发。谢谢

我想你一开始就错了

段落集合表示为
类型x文档
矩阵。 也就是说,行表示集合的“单词”;列表示集合的段落

(此处您可能希望将TF-IDF加权方案应用于矩阵。)

使用SVD,您可以将这样一个矩阵(M)分解为三个矩阵(U、S和V),以便

M=U*S*Vt

S是M的奇异值按降序排序的对角矩阵。 您可以通过保持
k
第一个奇异值并将其他值设置为
0
来执行降维


现在,您可以使用前面的公式重新生成
类型x文档
矩阵,并开始计算行向量(即类型相似性)或列向量(即段落相似性)之间的余弦相似性

在这种情况下,为什么不在原始的“x型文档”矩阵之间做余弦相似性呢?如果语料库很小,SVD只会降低测量的准确性,不是吗?不是,因为当您重新生成
类型x文档
矩阵时,您会重新分配大量信息,因此没有共同单词但相似的文档会产生显著的余弦相似性…与传统的向量空间模型相比,
类型x文档
矩阵是稀疏的。在应用降维后,矩阵是密集的。你知道有没有实现这一点的Java库(即从文档生成SVD矩阵)?我不知道有没有Java库,但是必须有一个。。。我一直在使用SVDLIBC作为一个独立的程序,或Matlab svd函数。