Меченый LDA(скрытое распределение дирихле) в PyMC3

Я пытаюсь создать модель с меткой LDA, как описано в этой статье (раздел 3.2).

То, что я до сих пор это:

# settings
entityTypesSize = 100
minibatchSize = 10
entityStringsSize = 100

model = pm.Model()
with pm.Model() as model:
   alpha = pm.Gamma(alpha=0.1, beta=1, name='alpha')
   eta = pm.Gamma(alpha=0.1, beta=1, name='eta') 


   beta = pm.Dirichlet('beta', a=eta * np.ones((entityTypesSize, entityStringsSize)),
                    shape=(entityTypesSize, entityStringsSize), transform=t_stick_breaking(1e-9))

   theta = pm.Dirichlet('theta', a=alpha * np.ones((minibatchSize, entityTypesSize)),
                     shape=(minibatchSize, entityTypesSize), transform=t_stick_breaking(1e-9))


   z = pm.Multinomial('z', n=, p=)

   w = pm.Multinomial('w', n=, p=)

Задача, с которой я сталкиваюсь, связана с z а также w случайные переменные. Как указано в документе, количество розыгрышей (n-параметр) не должно быть фиксированным, а зависит от количества слов в строке сущности. Кроме того, мне нужно разместить разные вероятности (p-param), поскольку они выбираются из бета- и тета-распределений. Можно ли их как-то приковать? Если да, может кто-нибудь помочь с этим, пожалуйста?

Эта же модель имеет альтернативную реализацию в HBC, которую можно найти здесь.

Спасибо!!!

0 ответов

Другие вопросы по тегам