【问题标题】:How to find term frequency within a DTM in R?如何在 R 中的 DTM 中查找词频?
【发布时间】:2015-02-19 00:54:14
【问题描述】:

我一直在使用 tm 包创建 DocumentTerm 矩阵,如下所示:

library(tm)
library(RWeka)
library(SnowballC)
src <- DataframeSource(data.frame(data3$JobTitle))

# create a corpus and transform data
# Sets the default number of threads to use
options(mc.cores=1)
c_copy <- c <- Corpus(src)
c <- tm_map(c, content_transformer(tolower), mc.cores=1)
c <- tm_map(c,content_transformer(removeNumbers), mc.cores=1)
c <- tm_map(c,removeWords, stopwords("english"), mc.cores=1)
c <- tm_map(c,content_transformer(stripWhitespace), mc.cores=1)

#make DTM
dtm <- DocumentTermMatrix(c, control = list(tokenize = BigramTokenizer))

现在,DTM 的结果很好 - 我想做的是获取 DTM 中频繁项的频率。显然,我可以使用 findFreqTerms 来获取术语本身,但不能获取实际频率。 termFreq 仅适用于 TextDocument,而不适用于 DTM 或 TDM - 有什么想法吗?

str 的输出 - 频繁项以 $ 为单位:

> str(dtm)
List of 6
 $ i       : int [1:190] 1 2 3 4 5 6 7 8 9 10 ...
 $ j       : int [1:190] 1 2 3 4 5 6 7 8 9 10 ...
 $ v       : num [1:190] 1 1 1 1 1 1 1 1 1 1 ...
 $ nrow    : int 119
 $ ncol    : int 146
 $ dimnames:List of 2
  ..$ Docs : chr [1:119] "1" "2" "3" "4" ...
  ..$ Terms: chr [1:146] "account administrator" "account assistant" "account director" "account executive" ...
 - attr(*, "class")= chr [1:2] "DocumentTermMatrix" "simple_triplet_matrix"
 - attr(*, "weighting")= chr [1:2] "term frequency" "tf"

【问题讨论】:

  • 如果您在创建 dtm 时设置weighting=weightTf,然后使用inspect(dtm),您应该会得到每个文档的频率

标签: r text-mining


【解决方案1】:

感谢 NiceE 的建议 - 它运作良好。添加 weighting 参数可以让我在检查 DTM 时找出术语频率。简单的事情就是对每列进行总结。

dtm <- DocumentTermMatrix(c, control = list(tokenize = BigramTokenizer, weighting=weightTf))
freqs <- as.data.frame(inspect(dtm))
colSums(freqs)

【讨论】:

    【解决方案2】:

    您可以使用 Tyler Rinker 出色的 qdap 软件包。 freq_term 函数给出术语及其频率。此示例采用 30 个最常用的术语,如果它们至少有 4 个字母,并使用 qdap 的停用词包之一——它比英语中内置的 tm 停用词更广泛(200 对大约 175) .

    qdap.freq <- freq_terms(dtm, top = 20, at.least = 4, stopwords = Top200Words) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      • 1970-01-01
      • 1970-01-01
      • 2016-04-21
      • 1970-01-01
      相关资源
      最近更新 更多