【问题标题】:Using Latent Semantic Analysis to measure passage similarity使用潜在语义分析来衡量段落相似度
【发布时间】:2014-12-07 23:53:44
【问题描述】:

我目前正在开发一个程序来根据其语义(含义)比较两段文本。我知道有一些库,例如 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 个向量之间测量余弦距离。然后假设所有这些距离的平均值是这两个矩阵之间的最终余弦距离?

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

【问题讨论】:

    标签: nlp similarity cosine-similarity lingpipe latent-semantic-analysis


    【解决方案1】:

    我认为你的出发点是错误的。

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

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

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

    M = U * S * Vt

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

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

    【讨论】:

    • 在那种情况下,为什么不在原始“类型 x 文档”矩阵之间做余弦相似性呢?如果语料库很小,SVD只会降低测量的准确性不是吗?
    • 不,因为当您重新生成 type x document 矩阵时,您会重新分配大量信息,因此没有共同词但相似的文档会产生显着的余弦相似度...
    • 对于传统的向量空间模型,type x document 矩阵是稀疏的。应用降维后,矩阵是密集的。
    • 您知道任何实现此功能的 Java 库(即从文档生成 SVD 矩阵)吗?
    • 我不知道任何Java库,但是必须有一个......我一直将SVDLIBC用作独立程序,或Matlab svd函数。
    猜你喜欢
    • 1970-01-01
    • 2015-10-07
    • 2013-09-30
    • 2019-02-11
    • 2011-10-26
    • 1970-01-01
    • 2013-04-19
    • 2014-10-08
    • 2017-08-05
    相关资源
    最近更新 更多