quanteda: ошибка с textmodel_wordscores: ошибка в t (as (x, "dgCMatrix")) - PullRequest
0 голосов
/ 10 марта 2020

после нового обновления 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. Ошибка по-прежнему возникает

1 Ответ

1 голос
/ 10 марта 2020

Кажется, проблема в кодировке данных MigParl.

period <-   partition(
  "MIGPARL",
  date = days,
  regional_state = "BW",
  interjection = FALSE,
  encoding = "UTF-8"
)

При создании раздела добавление следующей спецификации решило мою проблему.

encoding = "UTF-8"

...