我正在使用R的tm库来查看语料库中的术语频率。最后,我想复制this paper第42页上的td-idf术语加权方案。到目前为止,这是我的代码:
setwd("C:/Users/George/Google Drive/Agility")
library(tm)
cname <- ("C:/Users/George/Google Drive/R Templates/corpus")
corpus <- Corpus(DirSource(cname))
#Cleaning
corpus <- tm_map(corpus, tolower)
corpus <- tm_map(corpus, removeNumbers)
corpus <- tm_map(corpus, removePunctuation)
corpus <- tm_map(corpus, stripWhitespace)
corpus <- tm_map(corpus, removeWords, c("a","the","an","that","and"))
#Create a term document matrix
tdm1 <- TermDocumentMatrix(corpus)
m1 <- as.matrix(tdm1)
#run frequencies
word.freq <- sort(rowSums(m1), decreasing=T)
#convert matrix to dataframe
frequencies<-as.data.frame(as.table(word.freq))
print(frequencies)
这很好用,给我一个术语列表,按照它们出现在整个语料库中的次数排序:
Var1 Freq
1 him 1648
2 unto 1486
3 they 1168
4 them 955
5 not 940
但是,如果不是获得频率的总计数,我想计算包含该术语的语料库中的文档数量 - 无论在该文档中使用它的次数如何?
例如,第一个条目可能不是1648次使用“他”这个词,而是出现在25个语料库的文档中。
谢谢
答案 0 :(得分:0)
一种引导式的解决方案,只需一次更改即可为您提供所有文档数:
word.freq <- sort(rowSums(m1), decreasing=T)
收件人:
word.freq2 <- sort(rowSums(m1 > 0), decreasing=T)
word.freq
保留了语料库中术语使用的频率,而word.freq2
分别保留了包含每个术语的文档数。