R:按文档比较单词直方图

R: compare words histogram by document

我正在寻找一种方法来比较属于文件夹语料库的文档的单词直方图和多个文档网。我确实尝试过:

freq <- sort(colSums(as.matrix(dtm), group=Docs), decreasing=TRUE) 

也尝试了 ggplot 选项:

p <- p + geom_bar(stat="identity") +   facet_wrap(~ Docs)   

但遗憾的是我出错了。

下面是我的代码的一个修改示例,但遗憾的是我的 3 个文档像一个一样绘制,也没有按 Docs 分段:

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   

您创建 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))