liguoyu1/python

关于btm的问题

ccluqh opened this issue · 4 comments

def reset_biterm(self, bit):
	k = bit.getTopic()
	w1 = int(bit.get_word())-1
	w2 = int(bit.get_word(2))-1

请问,下面更新的时候为什么要先减去1哪?
self.nb_z[k] -= 1
self.nwz[k][w1] -= 1
self.nwz[k][w2] -= 1
min_val = -(10**(-7))
请问,下面这个函数体应该是个空的吧?
bit.resetTopic()
谢谢!

首先减1是为了将相关词上次相关bit的频率值恢复,避免值的无限增加,主要由于bit被赋予新的topic,原来topic下的 频率值计数就不应该再包含该bit的计数。
如果没能理解还请多多交流!
def resetTopic(self):
self.word_z = -1
非空!定义如上!
以上是我个人对于算法的一点理解!如果还有什么问题,多多交流,相互学习!感谢关注!

非常感谢您的解答,还想请问您一下,得到模型后,可以算出一个词的主题分布吗(不是一个词对的主题分布,因为这个通过pzb可以求出)?

计算出来的就是单个词的主题分布,biterm 词对计算时时假设独立分布的,其联合分布即是词对word概率的乘积,算法是这样讲的。

非常感谢您的解答!学习到了!