如何从 dfm 中删除稀有术语?

How do I delete rare terms from a dfm?

我使用 quanteda 包中的 tokens() 创建了一个 dfm。 (尺寸大概是40*2000) 我现在想删除出现在不到 15% 的文档中的所有标记。 我在 R 方面并没有真正的经验,我不知道如何进行。 有没有办法利用 textstat_frequency() 中的 docfreq 变量,或者我是否必须使用 tokens_select() 和一行 If() 语句?

是的,您需要 dfm_trim(),它允许您根据(文档的)计数或文档的比例指定文档频率阈值。

(注意:在 dfm 中,单词维度元素不再是标记,而是 quanteda 术语中的 "features"。)

使用内置示例,下面的代码显示了如何使用 dfm_trim(),最小文档频率阈值为 0.15,文档频率类型为 "prop",它处理您提供的阈值作为比例。从特征数量的变化可以看出有明显的裁剪。

library("quanteda")
## Package version: 2.0.1

dfmat <- dfm(data_corpus_inaugural)
print(dfmat, max_ndoc = 0, max_nfeat = 0)
## Document-feature matrix of: 58 documents, 9,360 features (91.8% sparse) and 4 docvars.

dfm_trim(dfmat, min_docfreq = 0.15, docfreq_type = "prop") %>%
  print(max_ndoc = 0, max_nfeat = 0)
## Document-feature matrix of: 58 documents, 1,304 features (65.3% sparse) and 4 docvars.