将TF-IDF应用于Gensim LDA模型中的新文档所必需的



我正在关注https://radimrearrek.com/gensim/wiki.html#latent-dirichlet-dirichlet-allocation-dirichlet-dirichlet-allocation

它解释了训练期间使用TF-IDF(至少对于LSA,LDA不太清楚(。

我希望将TF-IDF变压器应用于新文档,但是,在TUT的末尾,它建议简单地输入一个单词。

doc_lda = lda[doc_bow]

LDA是否仅需要字载体?

tl; dr:是的,lda只需要一个单词矢量。

的确,在Gensim教程的Wikipedia示例中,Radim Rehurek使用预处理步骤中生成的TF-IDF语料库。

mm = gensim.corpora.MmCorpus('wiki_en_tfidf.mm')

我相信这样做的原因仅仅是此矩阵稀疏且易于处理(并且由于预处理步骤已经存在(。

LDA不一定需要在TF-IDF语料库上接受培训。如果您使用Gensim教程Corpora和向量空间中显示的语料库,则该模型可以正常工作:

from gensim import corpora, models
texts = [['human', 'interface', 'computer'],
         ['survey', 'user', 'computer', 'system', 'response', 'time'],
         ['eps', 'user', 'interface', 'system'],
         ['system', 'human', 'system', 'eps'],
         ['user', 'response', 'time'],
         ['trees'],
         ['graph', 'trees'],
         ['graph', 'minors', 'trees'],
         ['graph', 'minors', 'survey']]
dictionary = corpora.Dictionary(texts)
corpus = [dictionary.doc2bow(text) for text in texts]
lda = models.ldamodel.LdaModel(corpus=corpus, id2word=dictionary, num_topics=10, update_every=1, chunksize =10000, passes=1)

请注意,texts是一个单词袋矢量。正如您正确指出的那样,这是LDA型号的中心部分。TF-IDF根本不起任何作用。

实际上,Blei(开发了LDA(在2003年的论文引入(标题为"潜在的Dirichlet分配"(中指出,LDA解决了TF-IDF模型的缺点,并抛弃了这种方法。LSA是代数,通常(但不一定(使用TF-IDF矩阵,而LDA是一个概率模型,试图估算文档和单词中主题的概率分布。TF-IDF的加权是不需要的。

不要不同意Jérôme的回答,TF-IDF在某种程度上用于潜在的Dirichlet分配中。正如Blei和Lafferty的论文主题模型中可以读取的那样(例如P.6-可视化主题和第12页(,TF -IDF分数对于LDA可能非常有用。它可用于可视化主题或选择词汇。"使用整个词汇量通常在计算上很昂贵。选择TFIDF的顶部V单词是修剪词汇的有效方法"。

这就是说,LDA不需要TF-IDF来推断主题,但它可以有用,并且可以改善您的结果。

最新更新