Я новичок, использующий R и Quanteda, и не могу решить следующую проблему, даже прочитав похожие темы.
У меня есть набор данных, импортированный из Stata, где столбец "text" содержит твиты Из разных групп людей идентифицируется переменная «группа». Я хочу подсчитать вхождения слов, идентифицированных моим словарем на уровне группы, следующим образом:
Вот воспроизводимый пример:
dput(tweets[1:4, ])
structure(list(tweet_id = c("174457180812_10156824364270813",
"174457180812_10156824136360813", "174457180812_10156823535820813",
"174457180812_10156823868565813"), tweet_message = c("Climate change is a big issue",
"We should care about the environment", "Let's rethink environmental policies",
"#Davos WEF"
), date = c("2019-03-25T23:03:56+0000", "2019-03-25T21:10:36+0000",
"2019-03-25T21:00:03+0000", "2019-03-25T20:00:03+0000"), group = c("1",
"2", "3", "4")), row.names = c(NA, -4L), class = c("tbl_df",
"tbl", "data.frame"))
Сначала я создаю свой словарь:
climatechange_dict <- dictionary(list(
climate = c(
"environment*",
"climate change")))
Затем я указываю корпус
climate_corpus <- corpus(tweets$tweet_message)
Я создаю dfm для каждой группы:
group1_dfm <- dfm(corpus_subset(climate_corpus, tweets$group == "1"))
И затем я пытаюсь вычислить частоту слов в словаре для каждой группы:
group1_climate <- dfm_lookup(group1_dfm, dictionary = climatechange_dict)
group1 <- subset(tweets, tweets$group == "1")
group1$climatescore <- as.numeric(group1_climate[,1])
group1$climate <- "normal"
group1$climate[group1$climatescore > 0] <- "climate"
table(group1$climate)
Моя проблема заключается в том, что таким образом словарные словари, такие как «изменение климата», не учитываются. Я прочитал онлайн, мне нужно применить tokens_lookup () к токенам, а затем создать dfm, но я не знаю, как это сделать в этом случае. Я был бы очень признателен, если бы вы могли помочь мне в этом. Большое спасибо!