textstat_keyness()
определяет ключевые слова, наиболее связанные с целевым «документом» из dfm, по сравнению со всеми другими документами. Таким образом, для сравнения комбинаций вам необходимо сначала создать сгруппированный dfm в соответствии с комбинацией ваших групп. Затем вы можете l oop через dfm и создать сравнение для каждой группы со всеми остальными.
Вот как это сделать:
library("quanteda")
## Package version: 1.5.2
docvars(data_corpus_irishbudget2010, "govopp") <-
ifelse(docvars(data_corpus_irishbudget2010, "party") %in% c("FF", "Green"),
"Government", "Opposition"
)
dfmatgr <- dfm(data_corpus_irishbudget2010, groups = c("govopp", "party"))
head(dfmatgr, nf = 5)
## Document-feature matrix of: 5 documents, 5 features (16.0% sparse) and 4 docvars.
## features
## docs when i presented the supplementary
## Government.FF 9 90 1 933 7
## Opposition.FG 19 42 1 802 1
## Government.Green 9 33 0 224 0
## Opposition.LAB 25 76 0 856 0
## Opposition.SF 28 31 1 783 2
Это создает группы, которые в это дело правительства, оппозиции и партии. (Ваш пример может иметь перекрывающиеся группы, но, поскольку я не могу воспроизвести его, я использовал пример от одной из встроенных корпораций.)
Теперь мы создаем data.frame и l oop через цели , Для презентации я записал только 2 верхних ключевых слова, но вы можете изменить это значение на 20 или любое другое.
df <- data.frame()
for (g in docnames(dfmatgr)) {
df_temp <- head(textstat_keyness(dfmatgr, target = g), 2)
df_temp[["target"]] <- g
df <- rbind(df, df_temp)
}
df
## feature chi2 p n_target n_reference target
## 1 2010 59.14626 1.465494e-14 41 14 Government.FF
## 2 scheme 51.30431 7.910339e-13 31 8 Government.FF
## 11 taoiseach 116.89154 0.000000e+00 49 18 Opposition.FG
## 21 not 39.15371 3.917181e-10 127 259 Opposition.FG
## 12 enterprising 102.69108 0.000000e+00 9 0 Government.Green
## 22 we 67.76028 2.220446e-16 97 521 Government.Green
## 13 fianna 66.59467 3.330669e-16 47 25 Opposition.LAB
## 23 fáil 65.23011 6.661338e-16 44 22 Opposition.LAB
## 14 state 59.81864 1.043610e-14 42 32 Opposition.SF
## 24 care 32.97959 9.313121e-09 18 10 Opposition.SF
Примечание: Я настоятельно не рекомендую обращаться к документам, используя, например, data_trim@docvars$focus
- используйте docvars()
вместо этого, так как это всегда будет работать. Если мы изменим структуру объекта, ваш код сломается. (А в готовящейся версии 2 мы предоставляем доступ к документам, используя $
.)