在新的 quanteda 更新之后,我的代码出现了一些问题。我正在使用 MigParl 数据从议会演讲中生成 dfm。
(1) 当切换到 quanteda 进行 wordcores 分析时,我在将 dfm 从 MigParl 矩阵转换为 quanteda:dfm 时丢失了行名。但是,根据代码,应该注意这一点。我通过手动添加行名解决了这个问题。这有点烦人,但可以管理。
(2) 现在,当我想计算我的 wordcores 模型时出现错误。我的dfm的数据格式似乎有问题。
如果您知道发生了什么,我将非常高兴。谢谢你。
达纳
library(polmineR)
use("MigParl")
pb <- partition("MIGPARL", interjection = FALSE, regional_state = "BW", year = 2013:2018) %>%
partition_bundle(s_attribute = "party")
pb <- pb[[names(pb)[!names(pb) %in% c("", "fraktionslos")] ]]
pb <- enrich(pb, p_attribute = "lemma")
dtm <- polmineR::as.sparseMatrix(pb, col = "count")
dtm <- Matrix::t(dtm)
pg_dfm <- new(
"dfm",
i = dtm@i,
p = dtm@p,
x = dtm@x,
Dim = dtm@Dim,
Dimnames = list(
docs = dtm@Dimnames$Docs,
features = dtm@Dimnames$Terms
)
)
detach("package:polmineR", unload = TRUE)
library(quanteda)
library(quanteda.textmodels)
pg_dfm_red <- quanteda::dfm(pg_dfm)
pg_dfm_trim <- dfm_trim(pg_dfm_red, min_termfreq = 20)
row.names(pg_dfm_trim) <- c("AfD","CDU","FDP","GRUENE","NA","SPD")
现在这是我以前做的:
tmod <- textmodel_wordscores(pg_dfm_trim, c(-1,NA,NA,1,NA, NA))
predict(tmod)
这是我在更新后尝试更改的内容:
textmodel_wordscores(x=pg_dfm_trim, y= c(-1,NA,NA,1,NA, NA), scale = "linear", smooth = 0)
predict(tmod)
两者都产生此错误消息:
t(as(x, "dgCMatrix")) 中的错误:尝试在 SET_VECTOR_ELT 中设置索引 1/1
我确信问题来自dfm的生成。如果您希望我在这里提供更多信息,我很乐意添加。
出于某种原因,wordfish 模型可以正常工作。
wordfish <- textmodel_wordfish(pg_dfm_trim, c(4,1))
textplot_scale1d(wordfish, doclabels = pg_dfm_trim@Dimnames$docs)
编辑:我安装了较旧的 quanteda 版本。错误仍然出现