Prediksi topik menggunakan alokasi Dirichlet laten

17

Saya telah menggunakan LDA pada kumpulan dokumen dan menemukan beberapa topik. Output dari kode saya adalah dua matriks yang mengandung probabilitas; satu probabilitas doc-topic dan satu lainnya word-topic. Tapi saya sebenarnya tidak tahu bagaimana menggunakan hasil ini untuk memprediksi topik dokumen baru. Saya menggunakan sampling Gibbs. Adakah yang tahu bagaimana caranya? Terima kasih

Hossein
sumber
1
Apa yang Anda maksud dengan "memprediksi topik dokumen baru"? Apakah Anda ingin mencari satu topik tunggal dari dokumen ini? Apakah Anda ingin menemukan campuran topik untuk dokumen? Apakah Anda ingin memberi label pada setiap kata dalam dokumen baru berdasarkan topik asal kata itu?
SheldonCooper
Apakah Anda ingin mencari satu topik tunggal dari dokumen ini? Apakah Anda ingin menemukan campuran topik untuk dokumen? - Saya ingin menjawab kedua pertanyaan ini sebenarnya ... tapi corpus saya sangat besar, jadi saya tidak mampu melatih kembali semua model saya setiap kali dokumen baru diperiksa
Hossein

Jawaban:

21

Saya akan mencoba 'melipat'. Ini mengacu pada mengambil satu dokumen baru, menambahkannya ke corpus, dan kemudian menjalankan Gibbs sampling hanya pada kata-kata dalam dokumen baru itu , menjaga penugasan topik dokumen lama tetap sama. Ini biasanya konvergen cepat (mungkin 5-10-20 iterasi), dan Anda tidak perlu mengambil sampel korpus lama Anda, jadi ini juga berjalan cepat. Pada akhirnya Anda akan memiliki tugas topik untuk setiap kata dalam dokumen baru. Ini akan memberi Anda distribusi topik dalam dokumen itu.

Di sampler Gibbs Anda, Anda mungkin memiliki sesuatu yang mirip dengan kode berikut:

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

Pelipatan sama, kecuali Anda mulai dengan matriks yang ada, tambahkan token dokumen baru ke dalamnya, dan lakukan pengambilan sampel hanya untuk token baru. Yaitu:

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

halwsayawsayajwj

jhalwjsaya
SheldonCooper
sumber
terima kasih atas jawabannya. Saya membaca beberapa hal tentang tetapi masih sedikit bingung tentang "melipat". Anda mengatakan bahwa saya harus menjaga agar penugasan topik dokumen lama tetap sama, ini berarti penugasan kata-topik harus dihitung ulang? Apakah mungkin bagi Anda untuk memberi saya langkah yang lebih rinci tentang apa yang harus dilakukan? atau mungkin merujuk saya ke kertas atau tautan yang benar-benar dapat membantu saya menjelaskan proses "melipat" ini. Pilihan pertama saya adalah melakukan "lipat". Jika gagal saya akan pergi untuk metode kedua yang Anda usulkan (tidak yakin seberapa baik kerjanya comparinfg untuk melipat). Terima kasih.
Hossein
@SheldonCooper: Jika saya mengerti Anda dengan benar, maka saya ragu bahwa ini adalah cara melakukannya: Apa yang Anda lakukan adalah seolah-olah Anda mengukur kinerja SVM pada sampel uji baru dengan memberikan algoritma pengoptimalan beberapa langkah lagi dari solusi saat ini termasuk sampel uji dan kemudian mengevaluasinya pada sampel ini ... tetapi: dalam pembelajaran mesin Anda mungkin tidak pernah menguji pada set pelatihan Anda ... dan dengan memasukkan sampel uji ke dalam model Anda melakukan hal itu: uji pada contoh pelatihan ...
Fabian Werner
@FabianWerner Saya percaya solusi tidak memperbarui matriks kata-topik dari pelatihan aslinya. Itu hanya menjalankan sampler Gibbs mulai dengan matriks topik-kata yang terlatih, dan membuat matriks dokumen-topik baru. Bagaimanapun, apakah Anda tahu cara lain untuk melakukan apa yang diminta OP (diakui beberapa tahun lalu)? Saya melihat masalah yang sama.
thecity2
@ thecity2 Meskipun saya punya masalah tentang masalah ini untuk sementara waktu, saya sedih harus mengatakan bahwa saya belum punya solusi. Jika Anda menemukannya, tolong beri tahu saya !!!
Fabian Werner
@FabianWerner Anda tidak memiliki set kereta dan tes dalam masalah ini - komentar Anda tidak relevan di sini. Ini adalah pembelajaran tanpa pengawasan, seperti halnya pengelompokan.
emem