после нового обновления Quanteda у меня есть некоторые проблемы с моим кодом. Я использую данные MigParl для генерации dfm из парламентских речей.
(1) При переключении в quanteda для анализа словосочетаний я теряю имена строк при преобразовании dfm из матрицы MigParl в quanteda: dfm. Однако, согласно кодексу, об этом нужно позаботиться. Я решил это, вручную добавив имена строк обратно. Это немного раздражает, но управляемо.
(2) Теперь я получаю сообщение об ошибке, когда хочу вычислить свою модель баллов. Кажется, это проблема с форматом данных моего 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 (как (x, "dgCMatrix")): попытка установить индекс 1/1 в SET_VECTOR_ELT
Я уверен, что проблема возникает из-за генерации dfm. Если вы хотите, чтобы я предоставил больше информации здесь, я с удовольствием добавлю это.
Модель wordfi sh по какой-то причине работает нормально.
wordfish <- textmodel_wordfish(pg_dfm_trim, c(4,1))
textplot_scale1d(wordfish, doclabels = pg_dfm_trim@Dimnames$docs)
Редактировать: Я установил более старые версии Quanteda. Ошибка по-прежнему возникает