我使用 R 中的对象和字典 documentTermMatrix 为文档中的单词频率创建了一个脚本。该脚本适用于单个单词而不是复合词
es. “富”“酒吧”“富酒吧”
这是代码
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
我必须找到一个“foo bar”= 1
我怎样才能解决这个问题?
最佳答案
问题是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
关于r - 在 R 中使用 tm 包计数器 ngram,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26764187/