我实施了自己的Python LDA;一个非常教学的实现。 我想知道如何调试我的代码;由于LDA的统计特性,每次执行都会返回不同的结果,出于同样的原因,我无法直接将此结果与其他库进行比较。
那么,我该如何调试我的实现呢? 是否有任何[语料库,文档]数据集,我可以使用它来提取某些目标主题(在某种程度上)?
答案 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,并确保每次迭代时这逐渐增加。 (不是单调的)。
这并不能保证您的实施是正确的,但它应该可以帮助您发现任何明显错误的信息。