计数器ngram与R中的tm包

时间:2014-11-05 18:13:21

标签: r dictionary frequency text-mining tm

我使用对象和R中的字典documentTermMatrix为文档中的单词频率创建了一个脚本。该脚本适用于单个单词,而不适用于复合单词 ES。 "富" "杆" " foo bar"

这是代码

require(tm)
my.docs <- c("foo bar word1 word2")
myCorpus <- Corpus(VectorSource(my.docs))
inspect(DocumentTermMatrix(myCorpus,list(dictionary = c("foo","bar","foo bar"))))

但结果是

Terms

Docs bar foo  foo bar

   1   1   1        0

我必须找到一个&#34; foo bar&#34; = 1

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

问题是DocummentTermMatrix(...)在分词处是标记化是默认的。你至少需要bigrams。

归功于this post的基本方法。

library(tm)
library(RWeka)
my.docs <- c("foo bar word1 word2")
myCorpus <- Corpus(VectorSource(my.docs))
myDict   <- c("foo","bar","foo bar")
BigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 1, max = 2))
inspect(DocumentTermMatrix(myCorpus, control=list(tokenize=BigramTokenizer,
                                                  dictionary=myDict)))
# <<DocumentTermMatrix (documents: 1, terms: 3)>>
# ...
#     Terms
# Docs bar foo foo bar
#    1   1   1       1