调试Latent Dirichlet分配实现

时间:2017-03-20 18:48:28

标签: python lda topic-modeling

我实施了自己的Python LDA;一个非常教学的实现。 我想知道如何调试我的代码;由于LDA的统计特性,每次执行都会返回不同的结果,出于同样的原因,我无法直接将此结果与其他库进行比较。

那么,我该如何调试我的实现呢? 是否有任何[语料库,文档]数据集,我可以使用它来提取某些目标主题(在某种程度上)?

2 个答案:

答案 0 :(得分:1)

您的代码中有两个对随机库的调用,第221行为randint,第336行为random.choice。在开头设置随机种子:

random.seed(666) # The most metal of random seeds

应该为您提供可重复的调试结果。

一般来说,调试的另一个方便方法是添加

import ipdb; ipdb.settrace()

到你的一个循环。这将停止执行并在那时启动一个控制台提示,让我们四处寻找并确保一切都按照预期进行。

最后,如果有疑问,print()出来......

答案 1 :(得分:1)

您可以采取两项措施来测试您的实施:

1)从一组已知的主题分布中生成一些合成数据,即实际使用LDA模型,并确保您能够恢复接近该数据的内容。

2)在每次迭代时计算当前主题分配下的数据的logliklihood,并确保每次迭代时这逐渐增加。 (不是单调的)。

这并不能保证您的实施是正确的,但它应该可以帮助您发现任何明显错误的信息。