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

时间:2018-07-01 07:47:04

标签: r text text-mining corpus

我正在寻找一种方法来比较文件的直方图,该文件属于具有几个文档网络的文件夹语料库。我确实尝试过:

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   

1 个答案:

答案 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)) 

enter image description here