首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >quanteda: error with textmodel_wordscores: Error in t(as(x,"dgCMatrix"))

quanteda: error with textmodel_wordscores: Error in t(as(x,"dgCMatrix"))
EN

Stack Overflow用户
提问于 2020-03-10 11:05:35
回答 1查看 89关注 0票数 0

在新的quanteda更新之后,我的代码出现了一些问题。我正在使用MigParl数据从议会演讲中生成一个dfm。

(1)当切换到quanteda进行字得分分析时,当将dfm从MigParl矩阵转换为quanteda:dfm时,我失去了行名。但是,根据代码,这应该得到解决。我通过手动添加行名来解决这个问题。有点烦人,但可以管理。

(2)当我想要计算我的写字楼模型时,我得到了一个错误。这似乎是我的dfm数据格式的一个问题。

如果你知道发生了什么,我会很高兴的。谢谢。

达纳

代码语言:javascript
复制
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")

现在这就是我以前做的事:

代码语言:javascript
复制
tmod <- textmodel_wordscores(pg_dfm_trim, c(-1,NA,NA,1,NA, NA))
predict(tmod)

这是我在更新后试图更改的内容:

代码语言:javascript
复制
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产生的。如果你想让我在这里提供更多的信息,我很乐意补充这一点。

因为某种原因,字鱼模型工作得很好。

代码语言:javascript
复制
wordfish <- textmodel_wordfish(pg_dfm_trim, c(4,1))
textplot_scale1d(wordfish, doclabels = pg_dfm_trim@Dimnames$docs)

编辑:我安装了较旧的quanteda版本。错误仍然发生。

EN

回答 1

Stack Overflow用户

发布于 2020-03-10 13:23:08

问题似乎是MigParl数据的编码。

代码语言:javascript
复制
period <-   partition(
  "MIGPARL",
  date = days,
  regional_state = "BW",
  interjection = FALSE,
  encoding = "UTF-8"
)

在创建分区时,添加以下规范解决了我的问题。

编码= "UTF-8“

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60616345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档