r - 在 R 中使用 tm 包计数器 ngram

标签 r dictionary frequency text-mining tm

我使用 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/

相关文章:

python 从命令行读取多个键值(字典)到变量中

ios - 将 JSON 响应转换为字典 Swift

python - 如何将具有列表值的字典映射到数据框?

C. 将 char 十进制值存储到数组无法读取/存储 8 位字符

google-sheets - 如何在 SPSS 中处理(Google 表单 - 电子表格) "Checkboxes"答案

java - 在 Java 中拆分多个分隔符

r - 如何过滤出Tibble列表列的NULL元素

r - 如何给grep()输出添加一个属性

r - face_wrap 图与 R 中的 pROC 包(几个变量)

r - data.table 中更快的子集聚合