将单词植入R中的LDA主题模型中



我有一个新闻文章数据集,这些文章是根据他们使用"欧洲怀疑论"或"欧洲怀疑主义者"一词的标准收集的。我一直在使用lda包运行主题模型(quanteda中内置dfm矩阵),以确定这些文章的主要主题;然而,我感兴趣的单词没有出现在任何一个主题中。因此,我想把这些词植入模型中,但我不确定具体如何做到这一点。

我看到包topicmodels允许一个名为seedwords的参数,它"可以指定为matrixsimple_triplet_matrix的对象类",但没有其他指令。似乎simple_triplet_matrix只接受整数,而不接受字符串——有人知道我会在模型中植入"欧洲怀疑论者"one_answers"欧洲怀疑主义者"这两个词吗?

以下是代码的缩短版本:

library("quanteda")
library("lda")
##Load UK texts/create corpus
UKcorp <- corpus(textfile(file="~Michael/DM6/*"))
##Create document feature matrix 
UKdfm2 <- dfm(UKcorp, ngrams =1, verbose = TRUE, toLower = TRUE,
removeNumbers = TRUE, removePunct = TRUE, removeSeparators = TRUE,
removeTwitter = FALSE, stem = TRUE, ignoredFeatures =     
stopwords(kind="english"), keptFeatures = NULL, language = "english",     
thesaurus = NULL, dictionary = NULL, valuetype = "fixed"))
##Convert to lda model 
UKlda2 <- convert(UKdfm2, to = "lda")
##run model
UKmod2 <- lda.collapsed.gibbs.sampler(UKlda2$documents, K = 15, UKlda2$vocab,  
num.iterations = 1500, alpha = .1,eta = .01, initial = NULL, burnin 
= NULL, compute.log.likelihood = TRUE, trace = 0L, freeze.topics = FALSE)

topicmodels包中的"播种"单词是一个不同的过程,因为它允许您在通过折叠的吉布斯采样器进行估计时为单词附加先前的权重。(例如,见Jagarlamudi,J.、Daumé,H.、III和Udupa,R.(2012)。将词汇先验纳入主题模型(第204–213页)。计算语言学协会但这是主题评估策略的一部分,而不是确保感兴趣的关键词保留在合适的主题中。除非您已经根据稀疏性设置了删除它们的阈值,否则在调用lad::lda.collapsed.gibbs.sampler(), then *every* term in your之前,UKlda2$vocab`vector将被分配跨主题的概率。

可能这里发生的事情是,你的单词频率太低,以至于很难在任何话题的顶部找到。也有可能是词干改变了它们,例如:

quanteda::char_wordstem("euroscepticism")
## [1] "eurosceptic"

我建议你先确保你的单词存在于dfm中,通过:

colSums(UKdfm2)["eurosceptic"]

然后你可以在拟合的主题模型对象中查看这个词和其他词的主题比例的拟合分布。

相关内容

  • 没有找到相关文章

最新更新