3

我目前正在开发一个程序来根据其语义(含义)比较两段文本。我知道有诸如 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. 在 SVD 中,矩阵被缩减为 3 个更小的矩阵。那么这些较小的矩阵中的哪一个用于余弦距离测量?

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

我知道这是一个非常小众的话题,但我希望对这两个问题有所了解。谢谢

4

1 回答 1

2

我认为你一开始就走错了路。

段落的集合表示为一个type x document矩阵。也就是说,行代表集合的“单词”;列代表集合的段落。

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

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

M = U * S * Vt

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

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

于 2014-10-13T12:48:20.157 回答