def get_full_conditional(self, sentence, m, z, n_z, n_m_z):
prod_nom, prod_den = [] , []
words = Counter(sentence)
for key, val in words.iteritems():
for x in range(val):
quantity = self.n_z_t[:,key] + self.beta + x
prod_nom.append(quantity)
# prod_nom *= (quantity)
prod_nom = np.array(prod_nom, dtype=np.float128)
left_denominator = n_z + self.beta*self.V
for x in range(len(sentence)):
quantity = left_denominator + x
prod_den.append(quantity)
# prod_den *= (quantity)
prod_den = np.array(prod_den, dtype=np.float128)
# print "Shapes of interest:", prod_den.shape, prod_nom.shape
prodall1 = np.divide(prod_nom,prod_den)
# print "After division:", prodall.shape
prodall = np.prod(prodall1, axis=0)
# print "After multiplication", prodall.shape
# prod_nom = np.prod(prod_nom, axis=0, dtype=np.float128)
# prod_den = np.prod(prod_den, axis=0, dtype=np.float128)
# left = prod_nom/prod_den
right = (n_m_z[m,:] + self.alpha)
p_z = prodall*right
# try:
# p_z /= np.sum(p_z)
# except:
# print p_z
# print prodall1
# print prodall
p_z /= np.sum(p_z)
# except RuntimeWarning:
# print 'Exception'
# print prodall
# print right
# print self.n_z_t[:,key]
return p_z.astype(np.float64)
评论列表
文章目录