Implementando el modelo de tema con Python (numpy)

Recientemente, implementé el modelo Gibbs de muestreo para LDA en Python usando numpy, tomando como referencia algún código de un sitio. En cada iteración del muestreo de Gibbs, eliminamos una palabra (actual), muestreamos un nuevo tema para esa palabra de acuerdo con una distribución de probabilidad condicional posterior deducida del modelo LDA y actualizamos los conteos de palabra-tema, de la siguiente manera:

<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>

En el código anterior, muestreamos una nueva (única) z con la función de scipy multinomial.

Ahora, quiero implementar un modelo de Tema de Sentimiento Conjunto deeste papel. Ahora, necesitaría las siguientes estructuras para realizar un seguimiento de los conteos necesarios:

<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>

Y ahora viene el problema: en esta muestra de Gibbs, para cada palabra vista en un documento, tanto un tema nuevo como una etiqueta de sentimiento ahora se muestrean desde un condicional posterior (página 4, ecuación 5 del documento). ¿Cómo podría "muestrear esos 2 valores" en Python ahora?

Gracias por adelantado...

Respuestas a la pregunta(1)

Su respuesta a la pregunta