问题描述
我试图找出几个单词的总频率。
例如,我正在使用此代码来查找某些单词的出现频率
keyterms <- c("canadian","american","british")
dict <- dictionary(list(keyterms2 = c("canadian","british"))))
dfm <- dfm(toks) %>%
dfm_group(groups = "Organization") %>%
dfm_select(pattern = keyterms)
当我使用关键字和字典运行上述程序时,我会分别获得每个单词的频率。
有没有办法编写脚本,使其返回总计的频率,使其看起来像这样:
谢谢
解决方法
字典方法是最优雅的解决方案,因为它结合了您的关键字词。
在这里,我已经说明了如何使用内置的就职语料库来做到这一点,其中您的小组(类似于您的“组织”)是总统的名字。
library("quanteda")
## Package version: 3.1
## Unicode version: 13.0
## ICU version: 69.1
## Parallel computing: 12 of 12 threads used.
## See https://quanteda.io for tutorials and examples.
keyterms <- c("canadian","american","british")
dict <- dictionary(list(terms = keyterms))
toks <- data_corpus_inaugural %>%
corpus_subset(Year > 2000) %>%
tokens() %>%
tokens_lookup(dictionary = dict)
dfm(toks) %>%
dfm_group(groups = President) %>%
convert(to = "data.frame")
## doc_id terms
## 1 Biden 9
## 2 Bush 6
## 3 Obama 8
## 4 Trump 11
(如果您愿意,可以将第一列重命名为“A 标题”。)
请注意,groups
的用法在 quanteda 3.0 中发生了变化,因此现在不应引用其值。
您可以使用 DECODE
-
rowSums
使用 result <- dfm(toks) %>%
dfm_group(groups = "Organization") %>%
dfm_select(pattern = keyterms) %>%
rowSums()
会返回一个数据帧。