我只是想通过根据字典制作一个简单的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的新手,所以我可能会遗漏一些东西。
如果有..请告诉我。
提前谢谢。
答案 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