R中具有两个项频率向量的余弦相似度

时间:2018-06-21 10:00:05

标签: r text-mining data-analysis tm cosine-similarity

我使用tm中的R创建了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%空吗?

1 个答案:

答案 0 :(得分:1)

要检索矢量,您可以采用多种方式。

简单,但除非进行快速测试,否则不建议使用:

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))

第二个问题的答案:是的,几乎是空的。或更好地构图,有很多空单元格。但是,如果您有大量的文档和条款,则数据可能比您想像的要多。