2017-04-14 52 views
1

我在R中使用tm包来计算在矢量中包含短划线的单词的频率。如何避免在使用R与tm包时删除标点符号

我的代码是这样的:

a = c("happy_day", "great_book", "funny_movie") 

myCorpus = Corpus(VectorSource(a)) 

myDTM = DocumentTermMatrix(myCorpus, control = list(minWordLength = 1)) 

freq = sort(colSums(as.matrix(myDTM)), decreasing = T) 

我预计TM包数三个文本字符串作为三个词,但实际上它把每个字符串作为两个单词。

我的频率的预期的内容是:

funny_movie great_book happy_day 

    1    1   1 

不过,我实际上得到的是

book day funny great happy movie 

1  1  1  1  1  1 

我已经在几个星期前使用类似的代码,在那个时刻的代码便从我预期的结果。但是现在我总能得到意想不到的结果,即使我使用myDTM = DocumentTermMatrix(myCorpus, control = list(minWordLength = 1, removePunctuation = FALSE))

你知道我能做什么来计算我的文件中带有下划线“_”的单词吗?

非常感谢!

回答

2

如果更改

myCorpus = Corpus(VectorSource(a)) 

myCorpus = VCorpus(VectorSource(a)) 

你应该得到你想要的结果。 Corpus通话默认为返回SimpleCorpus。当你运行DocumentTermMatrix时,它会执行效率管道,包含大多数(?)用户想要的任务(基本上忽略了control=参数。您可以通过明确创建一个VCorpus

+1

感谢您的建议!该VCorpus确实工作。 –