R中的DTM计数错误

时间:2017-09-13 05:09:26

标签: r

我只是想通过根据字典制作一个简单的DTM来查看文档出现的次数,所以我的代码看起来像:

library(tm)

doc <- "phone book laptop book PC"

vocab <- c('phone','book', 'laptop')

dtm_n <- DocumentTermMatrix(Corpus(VectorSource(doc)),
                            control=list(
                              dictionary=vocab) 
)
inspect(dtm_n)

结果如下:

<<DocumentTermMatrix (documents: 1, terms: 3)>>
Non-/sparse entries: 3/0
Sparsity           : 0%
Maximal term length: 6
Weighting          : term frequency (tf)
Sample             :
    Terms
Docs book laptop phone
   1    1      1     2

似乎以某种方式交换了单词(书,电话)的价值。

有没有好办法解决这个问题?

我是R的新手,所以我可能会遗漏一些东西。

如果有..请告诉我。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果您只是在doc这样的矢量中检查术语频率,您可以通过各种方式完成工作。由于我最近使用tidytext包,我为你留下了一条路。使用unnest_tokens()时需要数据框。该功能拆分字并以长格式创建数据帧。然后,使用dplyr包中的count()计算每个单词出现在文档中的次数。

library(dplyr)
library(tidytext)

out <- data_frame(document = 1, text = doc) %>%
       unnest_tokens(input = text, output = word) %>%
       count(word)

#    word     n
#   <chr> <int>
#1   book     2
#2 laptop     1
#3     pc     1
#4  phone     1

如果您需要检查特定单词的术语频率,可以对结果进行分组。

out %>%
filter(word %in% vocab)

#    word     n
#   <chr> <int>
#1   book     2
#2 laptop     1
#3  phone     1

或者,您可以使用以下两个功能来检查术语频率。

table(strsplit(doc, " "))
#    .
#  book laptop     PC  phone 
#     2      1      1      1