【问题标题】:Seeding words into an LDA topic model in R将单词植入 R 中的 LDA 主题模型
【发布时间】:2018-01-28 23:57:50
【问题描述】:

我有一个新闻文章数据集,这些文章是根据他们使用术语“欧洲怀疑论”或“欧洲怀疑论”的标准收集的。我一直在使用lda 包(在quanteda 中内置dfm 矩阵)运行主题模型,以确定这些文章的主要主题;但是,我感兴趣的词没有出现在任何主题中。因此,我想将这些词植入模型中,但我不确定该怎么做。

我看到包topicmodels 允许一个名为seedwords 的参数,它“可以指定为matrixsimple_triplet_matrix 的对象类”,但没有其他说明。似乎simple_triplet_matrix 只接受整数,而不接受字符串——有人知道我会在模型中植入“euroscepticism”和“eurosceptic”这两个词吗?

这是代码的简化版本:

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)

【问题讨论】:

  • 在运行lda 之前,您确定您要查找的单词在dtm 中吗?如果单词相当稀疏,它们可能会被丢弃。此外,您正在使用stem = TRUE。这可能会将“欧洲怀疑论”一词缩小为“欧元”。可能需要检查一下。

标签: r lda quanteda topicmodels


【解决方案1】:

topicmodels 包中的“播种”单词是一个不同的过程,因为它允许您在通过折叠的 Gibbs 采样器进行估计时为单词附加先前的权重。 (例如,参见 Jagarlamudi, J.、Daumé, H., III 和 Udupa, R. (2012)。Incorporating lexical priors into topic models(第 204-213 页)。计算语言学协会。)但这是估计策略的一部分对于主题,不是确保感兴趣的关键词保留在适合的主题中的方法。除非您设置了基于稀疏度删除它们的阈值,否则在调用 lad::lda.collapsed.gibbs.sampler(), then *every* term in yourUKlda2$vocab` 向量之前将分配跨主题的概率。

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

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

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

colSums(UKdfm2)["eurosceptic"]

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

【讨论】:

  • 啊,我明白了。我认为播种是一种围绕某些关键字“构建”模型的方法,方法是给它们分配更高的权重。 Eurosceptic 确实出现在 dfm 中,但不能与生成的主题密切相关。例如,如果我显示某个主题中的前 30 个单词,我可以找到它。有点奇怪的是,作为指导搜索条件的词,它在主题中的出现率并不高。说一些自在的东西。感谢您的回复!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-16
  • 1970-01-01
  • 2019-04-27
  • 2012-03-25
  • 2017-03-09
  • 2021-05-12
相关资源
最近更新 更多