我正在关注https://radimrehurek.com/gensim/wiki.html#latent-dirichlet-allocation上的'英语维基百科'gensim教程
其中解释了在训练期间使用tf-idf(至少对于LSA,LDA不太清楚).
我希望将tf-idf转换器应用于新文档,但是,在tut结束时,它建议只输入一个词袋.
doc_lda = lda[doc_bow]
Run Code Online (Sandbox Code Playgroud)
LDA是否仅需要词袋矢量?
Jér*_*Bau 10
在契约中,在gensim教程的维基百科示例中,Radim Rehurek使用在预处理步骤中生成的tfidf语料库.
mm = gensim.corpora.MmCorpus('wiki_en_tfidf.mm')
Run Code Online (Sandbox Code Playgroud)
我认为其原因仅在于该矩阵稀疏且易于处理(并且由于预处理步骤已经存在).
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)
Run Code Online (Sandbox Code Playgroud)
请注意,"文本"是一个词袋矢量.正如您所指出的那样,这是LDA模型的核心部分.TF-IDF根本不起任何作用.实际上,Blei(他开发了LDA)在2003年的论文(题为"潜在Dirichlet分配")的引言中指出,LDA解决了TF-IDF模型的缺点并使这种方法落后.LSA是强有力的代数,并且通常(但不一定)使用TF-IDF矩阵,而LDA是概率模型,其试图估计文档中的主题和主题中的单词的概率分布.TF-IDF的加权对此不是必需的.
TL; DR:是的,LDA只需要一个词袋矢量.
不必不同意耶罗姆的回答,在某种程度上,tf-idf用于潜在的狄利克雷分配中。可以在Blei和Lafferty的主题模型(egp6-可视化主题和第12页)一文中看到,tf-idf分数对于LDA可能非常有用。它可以用于可视化主题或选择词汇表。“使用整个词汇表通常在计算上是昂贵的。通过TFIDF选择前V个单词是修剪词汇表的有效方法”。
这就是说,LDA不需要tf-idf来推断主题,但是它可以很有用,并且可以改善您的结果。
| 归档时间: |
|
| 查看次数: |
5340 次 |
| 最近记录: |