Как удалить редкие термины из dfm? - PullRequest
1 голос
/ 30 апреля 2020

Я создал dfm, используя tokens () из пакета quanteda. (размер примерно 40 * 2000) Теперь я хочу удалить все токены, появляющиеся менее чем в 15% документов. Я не очень опытен в R, и я не знаю, как поступить. Может быть, есть способ использовать переменную docfreq из texttat_frequency () или мне нужно использовать tokens_select () и ряд операторов If ()?

1 Ответ

1 голос
/ 30 апреля 2020

Да, вы хотите dfm_trim(), который позволяет вам указать порог частоты документа в виде количества (документов) или пропорций документов.

(Примечание: однажды в dfm, измерение слова элементы больше не являются токенами, а скорее «функциями» в терминологии quanteda .)

Используя встроенный пример, код ниже показывает, как использовать 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.
...