我正在尝试使用 R 语言对相似文档进行聚类。 作为第一步,我为我的文档集计算词条文档矩阵。 然后我为之前创建的术语文档矩阵创建潜在语义空间。我决定在我的实验中使用 LSA,因为仅使用术语文档矩阵的聚类结果很糟糕。 是否可以使用创建的 LSA 空间构建相异矩阵(使用余弦度量)?我需要这样做,因为我使用的聚类算法需要一个差异矩阵作为输入。
这是我的代码:
require(cluster);
require (lsa);
myMatrix = textmatrix("/home/user/DocmentsDirectory");
myLSAspace = lsa(myMatrix, dims=dimcalc_share());
我需要从 LSA 空间构建相异矩阵(使用余弦度量),因此我可以按如下方式调用聚类算法:
clusters = pam(dissimilartiyMatrix,10,diss=TRUE);
有什么建议吗?
提前致谢!
最佳答案
要比较 LSA 空间中的两个文档,您可以对 $sk
和 $dk
矩阵求叉积,即 lsa()
返回以获取低维 LSA 空间中的所有文档。这是我所做的:
lsaSpace <- lsa(termDocMatrix)
# lsaMatrix now is a k x (num doc) matrix, in k-dimensional LSA space
lsaMatrix <- diag(lsaSpace$sk) %*% t(lsaSpace$dk)
# Use the `cosine` function in `lsa` package to get cosine similarities matrix
# (subtract from 1 to get dissimilarity matrix)
distMatrix <- 1 - cosine(lsaMatrix)
参见 http://en.wikipedia.org/wiki/Latent_semantic_analysis ,它说您现在可以使用 LSA 结果“通过比较向量 sk*d_j 和 sk*d_q(通常通过余弦相似度)来查看相关文档 j 和 q 在低维空间中的程度。”
关于r - 使用 R-lsa 包计算语义空间中文档之间的余弦相似度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15229584/