首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中使用LSA的文档相似度

在R中使用LSA的文档相似度
EN

Stack Overflow用户
提问于 2016-10-14 10:07:17
回答 1查看 1.7K关注 0票数 1

我正在使用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的多维建模

代码语言:javascript
复制
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中需要相同的代码。

代码语言:javascript
复制
similarity = np.asarray(numpy.asmatrix(dtm_lsa) * numpy.asmatrix(dtm_lsa).T)
pd.DataFrame(similarity,index=example, columns=example).head(10)

预期结果

EN

回答 1

Stack Overflow用户

发布于 2018-07-26 10:48:37

为了做到这一点,您首先需要从您创建的lsa空间中提取S_kD_k矩阵,并通过D_k的转置将S_k乘以,得到kn矩阵得到,其中k是维数,n是文档数。这一守则如下:

lsaMatrix <- diag(myLSAspace$sk) %*% t(myLSAspace$dk)

然后,只需将生成的矩阵通过来自cosine包的lsa函数即可:

simMatrix <- cosine(lsaMatrix)

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

您可以在S_k包文档中更多地了解lsaD_k矩阵,它们是应用的SVD的输出。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40040492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档