r语言 - Quanteda:如何在 FCM 中选择和检查特定功能?



我有一个特征共现矩阵 8,347 x 8,347,tri = FALSE。我希望能够单独选择一个功能,以便我可以看到哪些术语经常与它同时出现。这似乎需要为要素选择列并按降序对关联的行进行排序。

fcm_select不起作用,因为它将术语隔离在列和行中:

>SELECT_FROM_FCM = fcm_select(
MY_FCM,
pattern = c("FEATURE"),
selection = c("keep"),
valuetype = c("glob"),
case_insensitive = TRUE
)
>View(SELECT_FROM_FCM)
--------------------
|         | FEATURE |
--------------------
| FEATURE | 667     |
--------------------

dfm_subset似乎也不起作用。我这样做的方式是错误的吗?

您可以形成 fcm,然后使用常规矩阵索引操作选择它。 在此示例中,我从最后 10 个就职演说中形成了一个文档上下文特征共现矩阵,并搜索与特征"战争"和"恐怖"共存的特征。

library("quanteda")
## Package version: 2.0.1
fcmat <- data_corpus_inaugural %>%
tail(10) %>%
tokens(remove_punct = TRUE) %>%
fcm()
# select a specific feature
fcmat[, c("war", "terror")]
## Feature co-occurrence matrix of: 3,467 by 2 features.
##            features
## features    war terror
##   Senator    10      2
##   Hatfield    1      1
##   Mr         18      3
##   Chief       7      1
##   Justice     7      1
##   President  32      8
##   Vice        9      2
##   Bush        4      2
##   Mondale     1      1
##   Baker       1      1
## [ reached max_feat ... 3,457 more features ]

在即将发布的 2.1.0 版本中(仅在 2020 年 6 月 5 日起在 GitHub 上提供(,您可以使用char_select()来获取功能上的模式匹配,例如:

# only in forthcoming 2.1.0 (currently on GitHub)
fcmat[, char_select(featnames(fcmat), "terror*")]
## Feature co-occurrence matrix of: 3,467 by 2 features.
##            features
## features    terror terrorism
##   Senator        2         2
##   Hatfield       1         1
##   Mr             3         3
##   Chief          1         2
##   Justice        1         2
##   President      8        10
##   Vice           2         2
##   Bush           2         2
##   Mondale        1         1
##   Baker          1         1
## [ reached max_feat ... 3,457 more features ]

最后,这些 fcm 结果很容易转换为 data.frame 或常规矩阵,以便在其他系统中输出和使用,如果这是您最终需要的。

最新更新