NGramTokenizer未按预期工作

NGramTokenizer未按预期工作,r,ggplot2,n-gram,R,Ggplot2,N Gram,我有一个简单的R代码,从文件中读取文本,并在条形图上绘制重复出现的短语。出于某种原因,条形图只显示单个单词,而不是多个单词的短语。我哪里做错了 install.packages("xlsx") install.packages("tm") install.packages("wordcloud") install.packages("ggplot2") library(xlsx) library(tm) library(wordcloud) library(ggplot2) setwd("C

我有一个简单的R代码,从文件中读取文本,并在条形图上绘制重复出现的短语。出于某种原因,条形图只显示单个单词,而不是多个单词的短语。我哪里做错了

install.packages("xlsx")
install.packages("tm")
install.packages("wordcloud")
install.packages("ggplot2")

library(xlsx)
library(tm)
library(wordcloud)
library(ggplot2)

setwd("C://Users//608447283//desktop//R_word_charts")


test <- Corpus(DirSource"C://Users//608447283//desktop//R_word_charts//source"))

test <- tm_map(test, stripWhitespace)
test <- tm_map(test, tolower)
test <- tm_map(test, removeWords,stopwords("english"))
test <- tm_map(test, removePunctuation)
test <- tm_map(test, PlainTextDocument)

tok <- function(x) NGramTokenizer(x, Weka_control(min=3, max=10))
tdm <- TermDocumentMatrix(test,control = list(tokenize = tok))
termFreq <- rowSums(as.matrix(tdm))

termFreq <- subset(termFreq, termFreq>=50)

write.csv(termFreq,file="TestCSV1")
TestCSV <- read.csv("C:/Users/608447283/Desktop/R_word_charts/TestCSV1")

ggplot(data=TestCSV, aes(x=X, y=x)) +
  geom_bar(stat="identity") + theme(axis.text.x = element_text(angle = 90, hjust = 1))
install.packages(“xlsx”)
安装软件包(“tm”)
安装程序包(“wordcloud”)
安装程序包(“ggplot2”)
图书馆(xlsx)
图书馆(tm)
图书馆(wordcloud)
图书馆(GG2)
setwd(“C://Users//608447283//desktop//R\u word\u图表”)

测试最新版本的
tm
软件包(版本0.7)似乎存在问题

回到0.6-2版应该可以解决1克的问题


另一个问题可能是因为您的数据子集

过滤器(
termFreq=50)
)过于宽松,过滤掉了大量有价值的N-gram。我宁愿使用top-N方法来可视化数据。i、 e:

library(tm)
library(ggplot2)
library(RWeka)
library(data.table)
library(dplyr)

setwd(dir = "/home/eliasah/Downloads/")
test <- Corpus(DirSource("/home/eliasah/Downloads/sample/"))

test <- tm_map(test, stripWhitespace)
test <- tm_map(test, tolower)
test <- tm_map(test, removeWords,stopwords("english"))
test <- tm_map(test, removePunctuation)
test <- tm_map(test, PlainTextDocument)

tok <- function(x) NGramTokenizer(x, Weka_control(min=3, max=10))
tdm <- TermDocumentMatrix(test,control = list(tokenize = tok))
termFreq <- rowSums(as.matrix(tdm))
termFreqVector <- as.list(termFreq)

test2 <- data.frame(unlist(termFreqVector), stringsAsFactors=FALSE)
setDT(test2, keep.rownames = TRUE)[]
setnames(test2, 1, "term")
setnames(test2, 2, "freq")
test3 <- head(arrange(test2,desc(freq)), n = 30)

ggplot(data=test3, aes(x=reorder(term, freq), y=freq)) + geom_bar(stat="identity") + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) + coord_flip()
library(tm)
图书馆(GG2)
图书馆(鲁韦卡)
库(数据表)
图书馆(dplyr)
setwd(dir=“/home/eliasah/Downloads/”)

测试袋子还在那里!但是在问了“tm”软件包的人之后,我用了“VCorpus”而不是“语料库”现在它开始工作了。

您的原始数据文件是什么样子的?它只是一个包含大量文本的.txt文件。该文件中的数据样本将有助于重现原始数据issue@eliasah添加了一个dropbox链接到我正在使用的一些示例数据。我问了包联系人Ingo,从他那里我得到了以下答案“在从源代码构建语料库时,您可以简单地使用“VCorpus”而不是“Corpus”,而不是降级到tm 0.6-2。表示“找不到函数
排列
”。原因可能是什么?很抱歉,我忘记添加
库(dplyr)
。我已经更新了我的答案!我觉得这是tm软件包的问题。我无法在ubuntu上安装该版本,因为R3.3.1还不受支持。我现在无法访问该计算机,但我相信它是0.6.2版本!!!!!!这确实是tm软件包版本的问题。我安装了0.6-2,它工作起来很有魅力。但为什么最新版本没有达到预期效果?不管怎样,我认为你应该为此得到充分的赞扬。你能编辑你的答案,包括tm版本的问题,我会接受它作为答案。非常感谢您的帮助:)哦,现在我看到@Catherine Pfeifer在评论中也提出了这一点!我会留下这个评论,这样更容易看到。