是否需要将TF-IDF应用于gensim LDA模型中的新文档?

时间:2017-06-27 13:04:52

标签: gensim

我正在关注英语维基百科' https://radimrehurek.com/gensim/wiki.html#latent-dirichlet-allocation

的gensim教程

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

我希望将tf-idf转换器应用于新文档,但是,在tut结束时,它建议只输入一个词袋。

doc_lda = lda[doc_bow]

LDA是否只需要词袋矢量?

2 个答案:

答案 0 :(得分:7)

在契约中,在gensim教程的Wikipedia示例中,Radim Rehurek使用在预处理步骤中生成的tfidf语料库。

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

我认为原因只是这个矩阵稀疏且易于处理(并且由于预处理步骤已经存在)。

LDA不一定需要在tfidf语料库上进行培训。如果您使用gensim教程“Corpora和Vector Spaces”中显示的语料库,该模型可以正常工作:

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)

请注意,“文本”是一个词袋矢量。正如您所指出的那样,这是LDA模型的核心部分。 TF-IDF根本不起任何作用。实际上,Blei(他开发了LDA)在2003年的论文(题为“潜在Dirichlet分配”)的引言中指出,LDA解决了TF-IDF模型的缺点并使这种方法落后。 LSA是强有力的代数,并且通常(但不一定)使用TF-IDF矩阵,而LDA是概率模型,其试图估计文档中的主题和主题中的单词的概率分布。 TF-IDF的加权对此不是必需的。

TL; DR:是的,LDA只需要一个词袋矢量。

答案 1 :(得分:4)

不要不同意Jérôme的回答,在某种程度上,tf-idf用于潜在的狄利克雷分配中。如论文Topic Models by Blei and Lafferty中所读(例如第6页-可视化主题和第12页),tf-idf分数对于LDA可能非常有用。它可以用于可视化主题或选择词汇表。 “使用整个词汇表通常在计算上是昂贵的。通过TFIDF选择前V个单词是修剪词汇表的有效方法”。

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