查找多个单词组合为一个的频率?

问题描述

我试图找出几个单词的总频率。

例如,我正在使用此代码来查找某些单词的出现频率

keyterms <- c("canadian","american","british")
dict <- dictionary(list(keyterms2 = c("canadian","british"))))


dfm <- dfm(toks) %>%
  dfm_group(groups = "Organization") %>%
  dfm_select(pattern = keyterms)

当我使用关键字和字典运行上述程序时,我会分别获得每个单词的频率。

一个标题 加拿大 美国人 英国
组织 10 10 10

有没有办法编写脚本,使其返回总计的频率,使其看起来像这样:

一个标题 条款
组织 30

谢谢

解决方法

字典方法是最优雅的解决方案,因为它结合了您的关键字词。

在这里,我已经说明了如何使用内置的就职语料库来做到这一点,其中您的小组(类似于您的“组织”)是总统的名字。

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() 会返回一个数据帧。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...