Я б спробував "скласти". Це стосується взяття одного нового документа, додавання його до корпусу, а потім запуску вибірки Гіббса лише на словах у цьому новому документі , зберігаючи однакові тематичні завдання старих документів. Зазвичай це швидко сходиться (можливо, 5-10-20 ітерацій), і вам не потрібно брати старий корпус, тому він також працює швидко. Зрештою, у новому документі ви будете мати тему для кожного слова. Це дасть вам можливість розповсюдження тем у цьому документі.
У вашому вибірці Gibbs, напевно, є щось подібне до наступного коду:
// This will initialize the matrices of counts, N_tw (topic-word matrix) and N_dt (document-topic matrix)
for doc = 1 to N_Documents
for token = 1 to N_Tokens_In_Document
Assign current token to a random topic, updating the count matrices
end
end
// This will do the Gibbs sampling
for doc = 1 to N_Documents
for token = 1 to N_Tokens_In_Document
Compute probability of current token being assigned to each topic
Sample a topic from this distribution
Assign the token to the new topic, updating the count matrices
end
end
Складання те саме, за винятком того, що ви починаєте з існуючих матриць, додайте до них жетони нового документа та робіть вибірку лише для нових маркерів. Тобто:
Start with the N_tw and N_dt matrices from the previous step
// This will update the count matrices for folding-in
for token = 1 to N_Tokens_In_New_Document
Assign current token to a random topic, updating the count matrices
end
// This will do the folding-in by Gibbs sampling
for token = 1 to N_Tokens_In_New_Document
Compute probability of current token being assigned to each topic
Sample a topic from this distribution
Assign the token to the new topic, updating the count matrices
end
piшшijшj
∏jpiшj