在R中使用tm包装的计数器 [英] Counter ngram with tm package in R

查看:191
本文介绍了在R中使用tm包装的计数器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在文档中使用对象创建了一个脚本,并在R中使用了一个字典documentTermMatrix。该脚本适用于单个单词,而不是复合词
es。 foobarfoo bar

I created a script for the frequency of words in a document using the object and a dictionary documentTermMatrix in R. The script works on individual words and not on the compound word es. "foo" "bar" "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

我必须找到一个foo bar= 1

I would have to find one "foo bar" = 1

我如何解决这个问题?

推荐答案

code> DocummentTermMatrix(...)是默认的分词符号化。你需要至少两个字母。

The problem is that DocummentTermMatrix(...) is tokenizing at word breaks be default. You need at least bigrams.

信用到这篇文章的基本方法。

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中使用tm包装的计数器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆