如何从 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.
我使用 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.