R: Quanteda: могу ли я использовать texttat_keyness на двух отдельных корпусах?

Использование "texttat_keyness" следующее:

    textstat_keyness(x, target = 1L, measure = c("chi2", "exact", "lr", "pmi"), sort = TRUE, correction = c("default", "yates", "williams", "none"))

"target" - это "индекс документа (числовой, символьный или логический), идентифицирующий документ, образующий" цель "для вычисления ключевости; все характеристики других документов будут объединены для использования в качестве ссылки" ([ https://rdrr.io/cran/quanteda/man/textstat_keyness.html])

Из примеров, приведенных в документации, я понимаю, что texttat_keyness может применяться только к частям одного корпуса (т. Е. К одному файлу), в то время как мне нужно измерить ключевость в двух отдельных корпусах (т. Е. В двух файлах).

По сути, я хотел бы измерить степень соответствия между эталонным корпусом ("x") и специализированным корпусом ("target"). Эталонный корпус и специализированный корпус - это два разных физических объекта (два файла одного формата). Можно ли применить для этой задачи texttat_keyness?

Заранее спасибо за ваш ответ. С наилучшими пожеланиями, Марина

1 ответ

textstat_keyness() сравнивает два раздела корпуса, чтобы определить слова, которые являются "ключевыми" или по-разному встречаются между двумя разделами. Таким образом, для сравнения любого целевого корпуса с базовым корпусом вам необходимо объединить два в один dfm, а затем указать цель соответствующим образом.

Если ваш вопрос не будет более конкретным, я постараюсь привести пример, который, как мне кажется, дает то, что вы хотите. Здесь я сравниваю ключевые слова из ирландского Бюджетного корпуса 2010 года со вступительным корпусом президентов США (оба встроены в quanteda).

library("quanteda")
# Package version: 1.1.1

combinedcorp <- 
    corpus(c(texts(data_corpus_irishbudget2010), texts(data_corpus_inaugural)),
           docvars = data.frame(source = c(rep("irishbudget", ndoc(data_corpus_irishbudget2010)),
                                           rep("inaugural", ndoc(data_corpus_inaugural)))))
combinedcorp
# Corpus consisting of 72 documents and 1 docvar.

combineddfm <- dfm(combinedcorp, remove = stopwords("english"), remove_punct = TRUE)

На следующем этапе я использовал dfm_group() объединить документы в dfm с двумя "документами" перед вызовом textstat_keyness(), Это не действительно необходимо, так как textstat_keyness() Можно также автоматически объединять документы для целевого индекса (и объединяет все остальные для справки), но это дает вам немного больше контроля, если вы хотите выбрать отдельные документы из целевой категории. (Вы можете сделать это с помощью матричной индексации [ на дфм, или dfm_select(), так далее.)

keyn <- dfm_group(combineddfm, groups = "source") %>%
    textstat_keyness(target = "irishbudget") 

Затем мы можем ясно увидеть, какие слова были связаны с речами по бюджету, а какие были связаны с инаугурационными выступлениями.

rbind(head(keyn), tail(keyn))
#       feature       chi2 p n_target n_reference
# 1       budget  647.57319 0      260           6
# 2     minister  427.03308 0      170           3
# 3          tax  341.44085 0      163          20
# 4      billion  303.65819 0      119           1
# 5         jobs  264.91216 0      120          11
# 6      economy  236.90627 0      160          53
# 11377   nation  -89.30903 0       11         293
# 11378    peace  -93.77363 0        2         254
# 11379    great -103.21197 0       13         340
# 11380   states -113.18403 0        7         333
# 11381    shall -121.82532 0        0         314
# 11382     upon -136.96721 0        3         371
Другие вопросы по тегам