【问题标题】:Document similarity using LSA in R在 R 中使用 LSA 的文档相似性
【发布时间】:2023-03-07 23:23:02
【问题描述】:

我正在使用 LSA(使用 R)进行文档相似性分析。 这是我的步骤

  1. 导入文本数据并创建语料库。是否进行了诸如词干提取、空白删除等基础语料库操作

  2. 创建 LSA 空间如下

    tdm <- TermDocumentMatrix(chat_corpus) tdm_matrix <- as.matrix(tdm) tdm.lsa <- lw_bintf(tdm_matrix)*gw_idf(tdm_matrix) lsaSpace <- lsa(tdm.lsa)

  3. LSA 上的多维建模 (MDS)

'

dist.mat.lsa <- dist(t(as.textmatrix(lsaSpace)))
fit <- cmdscale(dist.mat.lsa,eig = T)
points <- data.frame(fit1$points,row.names=chat$text)

我想创建一个矩阵/数据框来显示文本的相似程度(如附件结果所示)。行和列将是要匹配的文本,而单元格值将是它们的相似度值。理想情况下,对角线值将是 1(完美匹配),而其余单元格值将小于 1。

请提供一些有关如何执行此操作的见解。提前致谢

注意:我得到了 python 代码,但在 R 中需要相同的代码

similarity = np.asarray(numpy.asmatrix(dtm_lsa) * numpy.asmatrix(dtm_lsa).T)
pd.DataFrame(similarity,index=example, columns=example).head(10)

Expected Result

【问题讨论】:

    标签: r lsa


    【解决方案1】:

    为此,您首先需要从您创建的 lsa 空间中获取 S_kD_k 矩阵,并将 S_k 乘以 D_k 的转置,得到 k 乘以 @ 987654327@矩阵,其中k是维数,n是文档数。这段代码如下:

    lsaMatrix &lt;- diag(myLSAspace$sk) %*% t(myLSAspace$dk)

    然后将生成的矩阵放入lsa 包中的cosine 函数一样简单:

    simMatrix &lt;- cosine(lsaMatrix)

    这将产生一个n^2 大小的相似矩阵,然后可用于聚类等。

    您可以在 lsa 包文档中阅读有关 S_kD_k 矩阵的更多信息,它们是应用 SVD 的输出。

    https://cran.r-project.org/web/packages/lsa/lsa.pdf

    【讨论】:

      猜你喜欢
      • 2017-05-20
      • 2014-06-09
      • 2014-08-09
      • 2020-09-07
      • 1970-01-01
      • 2017-11-28
      • 1970-01-01
      • 2011-12-10
      • 1970-01-01
      相关资源
      最近更新 更多