【问题标题】:Find frequency of specific words for individual documents in corpus - R, TermDocumentMatrix, TM查找语料库中单个文档的特定单词的频率 - R、TermDocumentMatrix、TM
【发布时间】:2020-10-28 10:04:24
【问题描述】:

对于我正在进行的研究项目,我已将 pdf 文档读入 R,创建了语料库和 TermDocumentMatrix。我想检查我的语料库中每个文档中特定单词的频率。 下面的代码为我提供了我想要的矩阵类型,以及文档中单词的频率,但显然它只处理高频术语而不是特定术语。

ft <- findFreqTerms(tdm, lowfreq = 100, highfreq = Inf)
as.matrix(opinions.tdm[ft,])

我在另一条评论中找到了下面的代码,它允许搜索特定术语的频率,但是,它在文档中求和。如何调整它以便我在每个文档中而不是跨文档中搜索特定术语?

library(tm)
data("crude")
crude <- as.VCorpus(crude)
crude <- tm_map(crude, stripWhitespace)
crude <- tm_map(crude, removePunctuation)
crude <- tm_map(crude, content_transformer(tolower))
crude <- tm_map(crude, removeWords, stopwords("english"))


tdm <- TermDocumentMatrix(crude)

# turn tdm into dense matrix and create frequency vector. 
freq <- rowSums(as.matrix(tdm))
freq["crude"]
crude 
   21 
freq["oil"]
oil 
 85 

【问题讨论】:

    标签: r tm corpus word-frequency term-document-matrix


    【解决方案1】:

    跳过rowSums 部分,直接参考矩阵

    term_matrix <-as.matrix(tdm)
    term_matrix["crude",]
    # 127 144 191 194 211 236 237 242 246 248 273 349 352 353 368 489 
    #   2   0   2   3   0   2   0   0   0   0   5   2   0   2   0   0 
    # 502 543 704 708 
    #   0   2   0   1 
    term_matrix["oil",]
    # 127 144 191 194 211 236 237 242 246 248 273 349 352 353 368 489 
    #   5  12   2   1   1   7   3   3   5   9   5   4   5   4   3   4 
    # 502 543 704 708 
    #   5   3   3   1 
    

    【讨论】:

    • 谢谢@MrFlick,这很有帮助!有什么方法可以同时搜索单独的术语吗?前面的示例使用了以下命令,这是我想要与您在上面提供给我的内容合并的内容。 # separate words freq[c("crude", "oil")] crude oil 21 85
    • 您可以使用term_matrix[c("crude", "oil"),](请注意其中的额外逗号)。这将返回每个文档的每个单词的计数。要将它们结合起来,您可以这样做 colSums(term_matrix[c("crude", "oil"),])
    猜你喜欢
    • 1970-01-01
    • 2015-12-31
    • 2020-12-09
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    相关资源
    最近更新 更多