我正在使用一个 1M 的大型文档语料库,并在从中创建文档频率矩阵时应用了几种转换:
library(quanteda)
corpus_dfm <- dfm(tokens(corpus1M), # where corpus1M is already a corpus via quanteda::corpus()
remove = stopwords("english"),
#what = "word", #experimented if adding this made a difference
remove_punct = T,
remove_numbers = T,
remove_symbols = T,
ngrams = 1:2,
dictionary = lut_dict,
stem = TRUE)
然后查看生成的功能:
dimnames(corpus_dfm)$features
[1] "abandon"
[2] "abandoned auto"
[3] "abandoned vehicl"
...
[8] "accident hit and run"
...
[60] "assault no weapon aggravated injuri"
为什么这些特征的长度超过 1:2 bigrams?词干提取似乎已经成功,但标记似乎是句子而不是单词。
我尝试将我的代码调整为:dfm(tokens(corpus1M, what = "word")
但没有任何变化。
我试图制作一个可重复的小例子:
library(tidyverse) # just for the pipe here
example_text <- c("the quick brown fox",
"I like carrots",
"the there that etc cats dogs") %>% corpus
然后,如果我应用与上面相同的 dfm:
> dimnames(corpus_dfm)$features
[1] "etc."
这很令人惊讶,因为几乎所有单词都被删除了?甚至停用词都不像以前,所以我更困惑!尽管只是尝试,我现在也无法创建可重现的示例。也许我误解了这个功能是如何工作的?
如何在 quanteda 中创建一个 dfm,其中只有 1:2 的单词标记并且删除了停用词?