LDA 主题建模:从庞大的语料库中预测的主题毫无意义

LDA Topic Modelling : Topics predicted from huge corpus make no sense

我正在将 LDA 用于主题建模任务。正如各种在线论坛所建议的那样,我在一个相当大的语料库上训练了我的模型:NYTimes 新闻数据集(约 200 MB csv 文件),其中包含关于各种新闻主题的报道。 令人惊讶的是,从中预测出的主题大多与美国政治有关,当我在一份关于 'how to educate children and parenting stuff' 的新文档上对其进行测试时,它预测最有可能的主题是这样的:

['two', 'may', 'make', 'company', 'house', 'things', 'case', 'use']

请看我的模型:

def ldamodel_english(filepath, data):
  data_words = simple_preprocess(str(data), deacc=True)

  # Building the bigram model and removing stopwords
  bigram = Phrases(data_words, min_count=5, threshold=100)
  bigram_mod = Phraser(bigram)
  stop_words_english = stopwords.words('english')
  data_nostops = [[word for word in simple_preprocess(str(doc)) if word not in stop_words_english] 
for doc in data_words]
  data_bigrams = [bigram_mod[doc] for doc in data_nostops]
  data_bigrams = [x for x in data_bigrams if x != []]

  # Mapping indices to words for computation purpose
  id2word = corpora.Dictionary(data_bigrams)
  corpus = [id2word.doc2bow(text) for text in data_bigrams]

  # Building the LDA model. The parameters 'alpha' and 'eta' handle the number of topics per document and words per topic respectively
  lda_model = gensim.models.ldamodel.LdaModel(corpus=corpus, id2word=id2word, num_topics=20, random_state=10, iterations=100,
                                            update_every=1, chunksize=1000, passes=8, alpha=0.09, per_word_topics=True, eta=0.8)
  print('\nPerplexity Score: ' + str(lda_model.log_perplexity(corpus)) + '\n')
  for i, topic in lda_model.show_topics(formatted=True, num_topics=20, num_words=10):
      print('TOPIC #' + str(i) + ': ' + topic + '\n')
  coherence_model_lda = CoherenceModel(model=lda_model, texts=data_bigrams, dictionary=id2word, coherence='c_v')
  print('\nCoherence Score: ', coherence_model_lda.get_coherence())
  saved_model_path = os.path.join(filepath, 'ldamodel_english')
  lda_model.save(saved_model_path)

return saved_model_path, corpus, id2word

'data' 部分来自纽约时报新闻数据集的 'Content' 部分,我为 LDA 使用了 GENSIM 库。

我的问题是,如果一个训练有素的 LDA 模型预测得如此糟糕,为什么会有这样的炒作,什么是有效的替代方法?

它可以是模型的完美有效输出。鉴于与 "children education and parenting" 没有必要相关的源文本,发现最相似的主题可能与文章非常相似。纽约时报文章和您的文章之间可能没有太多共同的词汇。因此,使该主题在《纽约时报》典型主题中与众不同的词语可能与您的文章没有什么共同之处。事实上,唯一共享的词可能真的很典型,就像你的情况一样。

当用于训练LDA模型的语料与后来应用它的文档关系不大时,这种情况经常发生。所以这里真的没有太多惊喜。 语料库的大小没有帮助,因为重要的是 vocabulary/topical 重叠。

我建议您要么更改主题数量和语料库,要么找到合适的语料库来训练 LDA(包含与您打算分类的文档相关的文本)。