是否可以为scikit-learn LDA设置初始主题分配?

问题描述 投票:0回答:1

我不想将topic_word_prior设置为参数,而是根据预定义的文字分布来初始化主题。如何在sklearn的实现中设置这个初始主题分布?如果不可能,是否有更好的实施需要考虑?

machine-learning scikit-learn lda latent-semantic-analysis
1个回答
1
投票

如果您在预先训练的模型中有预定义的单词分布,则可以将bow_corpus作为函数传递给该分布。 Gensims LDA和LDAMallet都可以进行一次训练,然后您可以通过新的数据集进行分配,而无需更改主题。

脚步:

  1. 导入您的数据
  2. 清理你的数据:nix标点符号,数字,lemmatize,删除停用词和词干
  3. 创建一个字典 dictionary = gensim.corpora.Dictionary(processed_docs[:]) dictionary.filter_extremes(no_below=15, no_above=0.5, keep_n=100000)
  4. 定义弓语料库 bow_corpus = [dictionary.doc2bow(doc) for doc in processed_docs]
  5. 训练你的模型 - 如果它已经训练过,请跳过 ldamallet = gensim.models.wrappers.LdaMallet(mallet_path, corpus=bow_corpus, num_topics=15, id2word=dictionary)
  6. 导入新数据并按照步骤1-4进行操作
  7. 通过您的模型传递您的新数据,如下所示: ldamallet[bow_corpus_new[:len(bow_corpus_new)]]
  8. 您的新数据现在已分配,您可以将其放入CSV格式
© www.soinside.com 2019 - 2024. All rights reserved.