r - 使用 R-lsa 包计算语义空间中文档之间的余弦相似度

标签 r cluster-analysis text-mining trigonometry lsa

我正在尝试使用 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/

相关文章:

algorithm - 除了 Levenshtein 之外,用于有序词集和后续聚类的更好的距离度量

python - “numpy.float64”对象不可迭代 - 均值漂移聚类

machine-learning - 从java程序访问Rapid Miner API时出错

linux - 在 R 中使用 linux 系统命令删除特殊字符

r - 进行这样的相关矩阵图的最佳方法是什么?

r - 从 cdplot() 中提取 x 和 y 值

python - 如何总结对话中每个人的字数?

regex - R regmatches() 和 stringr str_extract() 拖动空格

algorithm - map 应用的聚类算法

javascript - 查找文本中的日期