Gizli Dirichlet tahsisini kullanarak konu tahmini


17

LDA'yı bir belge topluluğunda kullandım ve bazı konular buldum. Kodumun çıktısı olasılıkları içeren iki matristir; bir doc-konu olasılıkları ve diğer word-konu olasılıkları. Ancak aslında bu sonuçların yeni bir belgenin konusunu tahmin etmek için nasıl kullanılacağını bilmiyorum. Gibbs örneklemesi kullanıyorum. Nasıl olduğunu bilen var mı? Teşekkürler


1
"Yeni bir dokümanın konusunu tahmin etmek" ile ne demek istiyorsun? Bu dokümanın hangi tek bir konuyla oluşturulduğunu bulmak ister misiniz? Belge için konuların bir karışımını bulmak istiyor musunuz? Yeni belgedeki her kelimeyi, kelimenin geldiği konuya göre etiketlemek ister misiniz?
SheldonCooper

Bu dokümanın hangi tek bir konuyla oluşturulduğunu bulmak ister misiniz? Doküman için konuların bir karışımını bulmak ister misiniz? - Aslında bu soruların her ikisine de cevap vermek istiyorum ... ama cesetim gerçekten büyük, bu yüzden her yeni belgemde tüm modelimi yeniden eğitmeyi göze alamıyorum inceleniyor
Hossein

Yanıtlar:


21

'Katlanmayı' denerdim. Bu, yeni bir belgenin alınması, topluluğa eklenmesi ve daha sonra eski belgelerin konu atamalarının aynı kalmasını sağlayarak Gibbs örneklemesini yalnızca bu yeni belgedeki kelimeler üzerinde çalıştırma anlamına gelir . Bu genellikle hızlı birleşir (belki 5-10-20 iterasyon) ve eski korpusunuzu örneklemenize gerek yoktur, bu yüzden hızlı çalışır. Sonunda yeni belgedeki her kelime için konu ödevi alacaksınız. Bu size bu belgedeki konuların dağıtımını verecektir.

Gibbs örnekleyicinizde, muhtemelen aşağıdaki koda benzer bir şey var:

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

Katlama aynıdır, ancak mevcut matrislerle başlamanız, yeni belgenin jetonlarını bunlara eklemeniz ve yalnızca yeni jetonlar için örnekleme yapmanız gerekir. yani:

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

pwbenwbenjwj

Πjpwjben

cevap verdiğin için teşekkürler. Hakkında bazı şeyler okumak ama yine de "katlama" hakkında biraz karışık. Eski belgelerin konu ödevlerini aynı tutmam gerektiğini söylüyorsunuz, bu da kelime-konu ödevlerinin yeniden hesaplanması gerektiği anlamına mı geliyor? Bana ne yapılması gerektiği konusunda daha ayrıntılı adımlar atmanız mümkün mü? veya belki de beni bu "katlama" sürecini netleştirmeme yardımcı olabilecek bir makaleye veya bağlantıya yönlendirmek. İlk seçeneğim "katlama" yapmak. Başarısız olursa, önerdiğiniz ikinci yöntem için gideceğim (katlama ile karşılaştırmak ne kadar iyi çalıştığından emin değilim). Teşekkürler.
Hossein

@SheldonCooper: Eğer seni doğru anlıyorsam, o zaman bunun nasıl yapılacağından şüphe ediyorum: Yaptığın şey optimizasyon algoritmasına birkaç adım daha vererek yeni bir test örneğindeki bir SVM'nin performansını ölçmek gibi test örneğini içeren mevcut çözüm ve daha sonra bu örnek üzerinde değerlendirme yapın ... ancak: makine öğreniminde asla eğitim setinizi test edemezsiniz ... ve test örneğini modele dahil ederek tam olarak bunu yaparsınız: eğitim örneği ...
Fabian Werner

@FabianWerner Çözümün kelime eğitim matrisini orijinal eğitimden güncellemediğine inanıyorum. Sadece eğitilmiş kelime-konu matrisi ile başlayarak bir Gibbs örnekleyiciyi yeniden çalıştırır ve yeni bir belge-konu matrisi oluşturur. Her halükarda, OP'nin (kuşkusuz birkaç yıl önce) sorduğunu yapmanın başka bir yolunu biliyor musunuz? Aynı soruna bakıyorum.
thecity2

@ thecity2 Bu sorun hakkında bir süredir düşünmeme rağmen, ne yazık ki henüz bir çözümüm olmadığını söylemeliyim. Bir tane bulursanız, lütfen bana bildirin !!!
Fabian Werner

@FabianWerner Bu problemde tren ve test seti yok - yorumunuz burada alakasız. Bu aynı kümelenme gibi denetimsiz öğrenmedir.
emem
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.