我正在寻找一种方法来比较文件的直方图,该文件属于具有几个文档网络的文件夹语料库。我确实尝试过:
freq <- sort(colSums(as.matrix(dtm), group=Docs), decreasing=TRUE)
还尝试了ggplot选项:
p <- p + geom_bar(stat="identity") + facet_wrap(~ Docs)
但可悲的是我出错了。
下面是我的代码的一个修改示例,但可悲的是,我的3个文档像一个图一样绘制,也没有按文档分段:
c= c("hola como hola como hola como", "hola me fui hola me fui hola me fui hola me fui", "hola como estas hola como estas hola como estas" )
corpus= VCorpus(VectorSource(c))
dtm <- DocumentTermMatrix(corpus)
m <- as.matrix(dtm)
m
freq <- sort(colSums(as.matrix(dtm)), decreasing=TRUE)
wf <- data.frame(word=names(freq), freq=freq)
p <- ggplot(subset(wf, freq>1), aes(word, freq))
p <- p + geom_bar(stat="identity")
p <- p + theme(axis.text.x=element_text(angle=45, hjust=1))
p
答案 0 :(得分:0)
创建wf的方式意味着您丢失了文档,并且它们不适用于ggplot2。我创建wf作为文档名称和dtm的组合。 (如果您的语料库很大,请在这里小心。)然后我将wf转换为长格式,因此ggplot对于ggplot2是非常好的格式。然后,只需在创建绘图时以所需的任何方式生成文档即可。在下面的示例中,我将图表分为两个文档。
library(tm)
c= c("hola como hola como hola como", "hola me fui hola me fui hola me fui hola me fui", "hola como estas hola como estas hola como estas" )
corpus= VCorpus(VectorSource(c))
dtm <- DocumentTermMatrix(corpus)
wf <- data.frame(docs=Docs(dtm), as.matrix(dtm))
library(tidyr)
wf <- wf %>% gather(key = "terms", value = "freq", -docs)
library(ggplot2)
ggplot(wf, aes(terms, freq)) +
geom_bar(stat="identity") +
facet_wrap(~ docs) +
theme(axis.text.x=element_text(angle=45, hjust=1))