Реализация тематической модели с помощью Python (numpy)

Недавно я реализовал выборку Гиббса для тематической модели LDA на Python, используя numpy, взяв за основу некоторый код с сайта. В каждой итерации выборки Гиббса мы удаляем одно (текущее) слово, выбираем новую тему для этого слова в соответствии с апостериорным условным распределением вероятностей, выведенным из модели LDA, и обновляем подсчет слов-тем следующим образом:

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

В приведенном выше коде мы сэмплируем новый (одиночный) z с полиномиальной функцией scipy.

Теперь я хочу реализовать модель «Совместная тема мнений»Эта бумага, Теперь мне понадобятся следующие структуры для отслеживания необходимого количества:

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

И теперь возникает проблема: в этом образце Гиббса для каждого слова, встречающегося в документе, и новая тема, и метка настроения теперь отбираются из условного апостериора (уравнение 5 статьи 5). Как я могу "отобрать эти 2 значения"? в Python сейчас?

Заранее спасибо...

Ответы на вопрос(1)

Ваш ответ на вопрос