我正在使用gensim.models.ldamodel.LdaModel
来执行LDA,但我不了解某些参数,并且无法在文档中找到解释。如果有人有使用这方面的经验,我希望进一步了解这些参数的含义。
具体来说,我不明白:
random_state
update_every
chunksize
passes
alpha
per_word_topics
我正在处理500个文档的语料库,每个文档大约3-5页(由于保密原因,我很遗憾无法共享数据的快照)。目前我已经设置了
num_topics = 10
random_state = 100
update_every = 1
chunksize = 50
passes = 10
alpha = 'auto'
per_word_topics = True
但这完全基于我看到的一个例子,我不确定这对我的数据有多普遍。
答案 0 :(得分:4)
我想知道你是否见过this page?
无论哪种方式,让我为你解释一些事情。您使用的文档数量很少(在维基百科大小的数据源上训练时,它的效果会更好)。因此,结果将相当粗糙,你必须意识到这一点。这就是为什么你不应该针对大量的主题(你选择10个,在你的情况下可能合理地达到20个)。
至于其他参数:
random_state
- 这可以作为种子(如果您想要完全重复培训过程)
chunksize
- 一次考虑的文件数量(影响内存消耗)
update_every
- 每个update_every
chunksize
块更新模型(基本上,这是为了优化内存消耗)
passes
- 算法应该在整个语料库中传递多少次
alpha
- 引用文档:
可以设置为您选择的显式数组=先前。它也是 支持''不对称'和'自动'的特殊值:前者使用a 固定归一化非对称1.0 / topicno事先,后者学习了 直接来自您的数据的非对称先验。
per_word_topics
- 将此设置为True
可以提取给定单词的最可能主题。训练过程的设置方式是将每个单词分配给一个主题。否则,将省略未指示的单词。 phi_value
是另一个引导此过程的参数 - 它是一个被视为指示性的词的阈值。
最佳训练过程参数在M. Hoffman et al., Online Learning for Latent Dirichlet Allocation中得到了很好的描述。
对于培训过程或模型的内存优化,请参阅this blog post。