STM:从dfm开始估计元数据/主题关系

时间:2017-10-13 15:05:14

标签: r metadata stm dfm

在基于 Quanteda dfm 运行 STM 模型后,我想估计我的协变量对某些主题的影响。

运行STM模型很顺利,产生了预期的主题,但是当使用estimateEffect时(在下面的脚本的最后一步中),R会话被中止,通知存在“致命错误”。 / p>

当从dfm开始时,如何估计我的协变量效应? STM手册建议从dfm运行STM模型,但是在这个阶段之后我找不到如何使用协变量。

以下是代码:

# Read texts with Quanteda
texts <- (readtext("C:/Users/renswilderom/Documents/Stuff Im working on at the moment/Newspaper articles DJ/test data/*.txt",
         docvarsfrom = "filenames", dvsep = "_", 
         docvarnames = c("Date of Publication", "Length LexisNexis", "source"), 
         encoding = "UTF-8-BOM"))  

mycorpus <- corpus(texts)  

tokens <- tokens(mycorpus, remove_punct = TRUE, remove_numbers = TRUE, ngrams = 1)

mydfm <- dfm(tokens, remove = stopwords("english"), stem = TRUE)


# Run the STM model - Metadata is called with 'data = docvars(mycorpus)'
stm_from_dfm <- stm(mydfm, K = 10, prevalence =~ Date.of.Publication + source, gamma.prior='L1', data = docvars(mycorpus)) 

# Estimate effects
prep <- estimateEffect(1:10 ~ Date.of.Publication + source, stm_from_dfm, 
                       meta = docvars(mycorpus), uncertainty = "Global")

或者,我使用STMcorpus <- asSTMCorpus(mydfm)从我的dfm语料库中创建了一个STM语料库。但后来我无法运行STM模型,因为它没有识别我的元数据。遵循这种替代策略会更好吗? (所以我需要在运行STMcorpus <- asSTMCorpus(mydfm)之后以某种方式将元数据与STMcorpus相关联)。

1 个答案:

答案 0 :(得分:2)

我们通过电子邮件完成了这项工作 - 但我会在这里为可能遇到某种形式问题的其他人添加答案。

matrixStats包中存在一个错误,导致R仅在Windows上使用大型矩阵崩溃。错误和解决方案详述如下:https://github.com/HenrikBengtsson/matrixStats/issues/104。此问题包含对问题的简单测试以及如何安装修复它的matrixStats开发版本的说明。这是版本matrixStats 0.52.2中的问题,可能会在下一个CRAN版本中得到解决。