R中两个词频向量的余弦相似度

Cosine Similarity with two Term Frequency vectors in R

我在 R 中使用 tm 制作了一个 DocumentTermMatrix (dtm)。如果我理解正确的话,这个矩阵会为每个文档显示每个可能的术语出现的频率。现在我可以检查这个矩阵并得到

    Terms
Docs     can design door easy finish include light provide use water
  176004   1      2   11    8      0       3     3       4   4     4
  181288   1      2   11    8      0       2     3       4   4     4
  182465   4      4    0    2      0       0    42      13   6     0
etc.

我现在如何检索(例如)文档 181288 的向量?所以我会得到类似

的东西
1      2   11    8      0       2     3       4   4     4 ………

此外,它说我的 dtm 的稀疏度是 100%,它(通过近似)是 100% 空的吗?

要检索矢量,您可以通过多种方式进行。

简单,但不推荐,除非进行快速测试:

my_doc <- inspect(dtm[dtm$dimnames$Docs == "181288",])

这样做会限制您对 inspect 的操作,并且最多只能显示 10 个文档。

更好的方法是,如果需要,请创建一个选择列表并过滤 dtm。这保留了稀疏矩阵格式,然后将您需要的内容转换为 data.frame,以便在需要时进行进一步操作。

my_selection <- c("181288", "182465")

# selection in case of dtm
my_dtm_selection <- dtm[dtm$dimnames$Docs %in% my_selection, ]

# selection in case of tdm
my_tdm_selection <- tdm[, tdm$dimnames$Docs %in% my_selection]

# create data.frame with document names as first column, followed by the terms
my_df_selection <- data.frame(docs = Docs(my_dtm_selection), as.matrix(my_dtm_selection))

第二个问题的答案:是的,几乎是空的。或者更好的框架,很多空单元格。但是如果您有很多文档和术语,您可能拥有比您想象的更多的数据。