我使用R中的对象和字典documentTermMatrix创建了文档中单词出现频率的脚本。该脚本适用于单个单词,而不适用于复合单词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
我怎样才能解决这个问题?
问题是DocummentTermMatrix(...)
默认情况下在分词时标记化。您至少需要二元组。
相信这篇文章的基本方法。
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句