是否可以为 scikit-learn LDA 设置初始主题分配?
Is it possible to set the initial topic assignments for scikit-learn LDA?
我不想将 topic_word_prior 设置为参数,而是想根据预定义的单词分布来初始化主题。我将如何在 sklearn 的实现中设置这个初始主题分布?如果不可能,是否有更好的实施方案可供考虑?
如果您在预训练模型中有预定义的单词分布,您只需将 bow_corpus 作为函数传递给该分布即可。 Gensims LDA 和 LDAMallet 都可以训练一次,然后你可以在不改变主题的情况下传递一个新的数据集进行分配。
步骤:
- 导入您的数据
- 清理您的数据:去除标点符号、数字、词形还原、删除停用词和词干
创建字典
dictionary = gensim.corpora.Dictionary(processed_docs[:])
dictionary.filter_extremes(no_below=15, no_above=0.5, keep_n=100000)
定义弓语料库
bow_corpus = [dictionary.doc2bow(doc) for doc in processed_docs]
训练您的模型 - 如果已经训练,请跳过
ldamallet = gensim.models.wrappers.LdaMallet(mallet_path,
corpus=bow_corpus, num_topics=15, id2word=dictionary)
导入您的新数据并执行步骤 1-4
像这样通过模型传递新数据:
ldamallet[bow_corpus_new[:len(bow_corpus_new)]]
您的新数据现已分配完毕,您可以将其放入 CSV 文件中
我不想将 topic_word_prior 设置为参数,而是想根据预定义的单词分布来初始化主题。我将如何在 sklearn 的实现中设置这个初始主题分布?如果不可能,是否有更好的实施方案可供考虑?
如果您在预训练模型中有预定义的单词分布,您只需将 bow_corpus 作为函数传递给该分布即可。 Gensims LDA 和 LDAMallet 都可以训练一次,然后你可以在不改变主题的情况下传递一个新的数据集进行分配。
步骤:
- 导入您的数据
- 清理您的数据:去除标点符号、数字、词形还原、删除停用词和词干
创建字典
dictionary = gensim.corpora.Dictionary(processed_docs[:]) dictionary.filter_extremes(no_below=15, no_above=0.5, keep_n=100000)
定义弓语料库
bow_corpus = [dictionary.doc2bow(doc) for doc in processed_docs]
训练您的模型 - 如果已经训练,请跳过
ldamallet = gensim.models.wrappers.LdaMallet(mallet_path, corpus=bow_corpus, num_topics=15, id2word=dictionary)
导入您的新数据并执行步骤 1-4
像这样通过模型传递新数据:
ldamallet[bow_corpus_new[:len(bow_corpus_new)]]
您的新数据现已分配完毕,您可以将其放入 CSV 文件中