Optimize model parameter beta β_{t, n} ∝ \sum_{d=1}^D \sum_{i=1}^{N_d} ϕ_{d, t, n} [ i = n]
(self)
| 72 | return gamma |
| 73 | |
| 74 | def _maximize_beta(self): |
| 75 | """ |
| 76 | Optimize model parameter beta |
| 77 | β_{t, n} ∝ \sum_{d=1}^D \sum_{i=1}^{N_d} ϕ_{d, t, n} [ i = n] |
| 78 | """ |
| 79 | T = self.T |
| 80 | V = self.V |
| 81 | |
| 82 | phi = self.phi |
| 83 | beta = self.beta |
| 84 | corpus = self.corpus |
| 85 | |
| 86 | for n in range(V): |
| 87 | # Construct binary mask [i == n] to be the same shape as phi |
| 88 | mask = [np.tile((doc == n), (T, 1)).T for doc in corpus] |
| 89 | beta[n, :] = np.sum( |
| 90 | np.array(list(map(lambda x: np.sum(x, axis=0), phi * mask))), axis=0 |
| 91 | ) |
| 92 | |
| 93 | # Normalize over words |
| 94 | for t in range(T): |
| 95 | beta[:, t] = beta[:, t] / np.sum(beta[:, t]) |
| 96 | |
| 97 | return beta |
| 98 | |
| 99 | def _maximize_alpha(self, max_iters=1000, tol=0.1): |
| 100 | """ |