Implementando Modelo de Tópico com Python (numpy)

Recentemente, eu implementei a amostragem de Gibbs para o modelo de tópico do LDA no Python usando numpy, tomando como referência algum código de um site. Em cada iteração da amostragem de Gibbs, removemos uma palavra (atual), mostramos um novo tópico para essa palavra de acordo com uma distribuição de probabilidade condicional posterior inferida do modelo LDA e atualizamos as contagens de tópicos de palavras, como segue:

<code>for m, doc in enumerate(docs): #m: doc id
  for n, t in enumerate(doc): #n: id of word inside document, t: id of the word globally
    # discount counts for word t with associated topic z
    z = z_m_n[m][n]
    n_m_z[m][z] -= 1
    n_z_t[z, t] -= 1 
    n_z[z] -= 1
    n_m[m] -= 1

    # sample new topic for multinomial                
    p_z_left = (n_z_t[:, t] + beta) / (n_z + V * beta)
    p_z_right = (n_m_z[m] + alpha) / ( n_m[m] + alpha * K)
    p_z = p_z_left * p_z_right
    p_z /= numpy.sum(p_z)
    new_z = numpy.random.multinomial(1, p_z).argmax() 

    # set z as the new topic and increment counts
    z_m_n[m][n] = new_z
    n_m_z[m][new_z] += 1
    n_z_t[new_z, t] += 1
    n_z[new_z] += 1
    n_m[m] += 1
</code>

No código acima, nós amostramos um novo (único) z com a função scipy multinomial.

Agora, quero implementar um modelo de tópico de opinião comumeste papel. Agora, eu precisaria das seguintes estruturas para acompanhar as contagens necessárias:

<code>3D matrix containing # occurrences for a word for each topic, for each sentiment
3D matrix containing # occurrences for a topic, for each sentiment, for each document
2D matrix containing # occurrences for a topic, for each sentiment
2D matrix containing # occurrences for a sentiment for each document
</code>

E agora vem o problema: neste amostrador de Gibbs, para cada palavra vista em um documento, um novo tópico e um rótulo de sentimento são agora amostrados a partir de um posterior condicional (página 4, equação 5 do artigo). Como eu poderia "experimentar esses 2 valores" no Python agora?

Desde já, obrigado...

questionAnswers(1)

yourAnswerToTheQuestion