def plsa_model(title, lda_model, lda_dict, num_topics): title = np.array([lda_dict.token2id[x] for x in title.split() if x in lda_dict.token2id]) F = lda_model.state.sstats.T Nt, Nd = np.zeros(num_topics), 0.0 for w in title: ndwt = F[w] * 0.01 q = ndwt.sum() ndwt /= q Nd += q Nt += ndwt return np.argmax(Nt) plsa_model = functools.partial(plsa_model, lda_model=lda_model, lda_dict=lda_dict, num_topics=100) def new_ldazation(title, lda_model, lda_dict): title = np.array([lda_dict.token2id[x] for x in title.split() if x in lda_dict.token2id]) if title.any(): q = lda_model.state.sstats.T[title] q = (q.T / q.sum(axis=1)).T return np.argmax(q.sum(axis=0)) return -1 new_ldazation = functools.partial(new_ldazation, lda_model=lda_model, lda_dict=lda_dict)