Основной ответ заключается в том, что вы не можете поднастроить dfm, используя словарь или любой другой тип сопоставления с образцом, потому что dfm_subset()
требует логического значения для его сопоставления подмножества, которое соответствует 1: 1 с документами .Словарь будет соответствовать функциям, а не документам.
Если вы хотите соответствовать функциям , не выбирая при этом документы - что, я думаю, то, что вы хотели - тогда вы можете использовать dfm_select()
, а словарь quanteda является допустимым входным параметром для аргумента pattern
этой команды.С аргументом valuetype = "glob"
, кроме того, вы можете указать, что ваше сопоставление с шаблоном является глобусом, а не регулярным выражением.
library("quanteda")
subdfm <- dfm(data_corpus_inaugural) %>%
dfm_select(pattern = dict, valuetype = "glob")
head(subdfm)
## Document-feature matrix of: 6 documents, 5 features (66.7% sparse).
## 6 x 5 sparse Matrix of class "dfm"
## features
## docs constitutional constitution constitutions constitutionally unconstitutional
## 1789-Washington 1 1 0 0 0
## 1793-Washington 1 1 0 0 0
## 1797-Adams 0 8 1 0 0
## 1801-Jefferson 1 2 0 0 0
## 1805-Jefferson 0 6 0 0 0
## 1809-Madison 0 1 0 0 0
textstat_frequency(subdfm)
## feature frequency rank docfreq group
## 1 constitution 206 1 37 all
## 2 constitutional 53 2 24 all
## 3 constitutions 4 3 3 all
## 4 constitutionally 4 4 3 all
## 5 unconstitutional 3 5 3 all
Если у вас есть документы для корпуса, из которого вы создаете dfm, вы также можетепередать их на вызов textstat_frequency()
- они будут присоединены к dfm.