【发布时间】:2021-06-15 22:46:08
【问题描述】:
考虑以下示例
library(quanteda)
library(tidyverse)
tibble(text = c('the dog is growing tall',
'the grass is growing as well')) %>%
corpus() %>% dfm()
Document-feature matrix of: 2 documents, 8 features (31.2% sparse).
features
docs the dog is growing tall grass as well
text1 1 1 1 1 1 0 0 0
text2 1 0 1 1 0 1 1 1
我想在每个句子中创建dog 和其他标记之间的交互。也就是说,创建功能the-dog、is-dog、growing-dog、tall-dog 并将它们添加到dfm(在我们已经拥有的之上)。
也就是说,例如,如果the 和dog 都出现在句子中,the-dog 将等于 1(否则为零)。所以the-dog 第一句是一个,第二句是零。
请注意,我只在句子中出现dog 时才创建交互术语,因此此处不需要dog-grass。
如何在quanteda 中有效地做到这一点?
【问题讨论】:
-
你想要什么格式的输出?一个按词狗出现的文档,没有计算其他特征?
-
谢谢@KenBenoit。我认为dfm会很棒。因此,DFM 在我们的示例中将具有以下列
the、dog、is、growing、tall、grass、as、well和 @9876543443@、@9876@4 ,growing-dog,tall-dog。我在想这些变量可以在tokens()级别创建,但我不确定如何(tokens_skipgram()会在这里创建许多不相关的交互) -
所以规则是:如果句子(即 quanteda 文档)包含
dog,则将句子中的所有标记与dog进行交互