[英]Cosine similarity of 2 DTMs in R
我有 2 个文档术语矩阵:
所以基本上我想将 DTM1 的每个文档与 DTM2 进行比较,并希望使用余弦函数查看哪些 DTM1 文档与哪些 DTM2 文档最接近。 任何指针都会有所帮助!
我使用“slam”包创建了一个余弦矩阵。
Docs –glyma –ie –initi –stafford ‘bureaucratic’ ‘empti ‘holi ‘incontrovert
1 0.000000 0 0.000000 0.000000 0.000000 0 0 0
2 0.000000 0 0.000000 0.000000 0.000000 0 0 0
3 0.000000 0 0.000000 0.000000 0.000000 0 0 0
4 0.000000 0 0.000000 0.000000 0.000000 0 0 0
5 0.000000 0 0.000000 0.000000 0.000000 0 0 0
6 0.000000 0 0.000000 0.000000 4.906891 0 0 0
7 0.000000 0 0.000000 4.906891 0.000000 0 0 0
8 0.000000 0 0.000000 0.000000 0.000000 0 0 0
9 0.000000 0 4.906891 0.000000 0.000000 0 0 0
10 4.906891 0 0.000000 0.000000 0.000000 0 0 0
余弦函数结果为:
但是,此矩阵将 DTM1 的文档相互比较。 我希望将这些向量与 DTM2 的向量进行比较,然后为给定的 DTM1 文档找到最接近的 DTM2 文档。
这是一种计算两个矩阵之间的余弦距离的方法。 tm 的使用仅用于数据目的...
library(slam)
library(tm)
data("acq")
data("crude")
dtm <- DocumentTermMatrix(c(acq, crude))
index <- sample(1:70, size = 10)
dtm1 <- dtm[index, ]
dtm2 <- dtm[-index, ]
cosine_sim <- tcrossprod_simple_triplet_matrix(dtm1, dtm2)/sqrt(row_sums(dtm1^2) %*% t(row_sums(dtm2^2)))
余弦函数改编自这篇 SO 帖子: R:Calculate cosine distance from a term-document matrix with tm and proxy
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.