Judul pertanyaan ini adalah pertanyaan yang terpisah untuk teksnya sehingga saya akan menjawab keduanya secara terpisah (mengingat bahwa yang satu mengarah ke yang lain).
- Bagaimana saya bisa menyimpulkan kalimat yang tidak terlihat:
# ... trained model stored in var model
list_of_words = ["this", "is", "a", "new","unseen", "sentence"]
inferred_embedding = model.infer_vector(list_of_words)
Bagaimana cara kerjanya? Sesuai dengan makalah aslinya ( https://cs.stanford.edu/~quocle/paragraph_vector.pdf ) kami memiliki dua matriks bobot yang diinisialisasi secara acak yang sama matriks dari Word2Vec di mana setiap kolom atau baris memetakan ke vektor kata dan yang merupakan matriks dokumen di mana setiap kolom atau baris memetakan ke kalimat / dokumen. Selama pelatihan, sebuah softmax classifier bergerak ukuran window tetap (dalam jendela bergerak seperti mode) meminimalkan kemungkinan log berikut (multi-class cross-entropy): D ∈ R M × R kW∈ RN× PD ∈ RM.× Rk
1M.∑i = 1M.1| Dsaya|∑t = k| Di - 1| -kl o g( p ( wsayat| wsayat - k, . . . , wsayat + k, Dsaya) )
Di mana sesuai dengan vektor yang mewakili kalimat ,jumlah kata dalam dokumen itu dan adalah kata dalam dokumen . Semua ingat kembali-propagasi adalah dokumen yang saat ini kami pindahkan softmax windowed kami dan hanya pembaruan yang baris dalam matriks bersama dengan kata-kata di jendela itu.Dsayasayat h| Dsaya|wsayattt hsayat hD
Terlebih lagi ketika kita ingin menyimpulkan sesuatu yang tidak ada dalam set pelatihan, kita memperbaiki sehingga tidak diperbarui dan menambah matriks dengan baris yang baru diinisialisasi secara acak dan hanya melatih untuk beberapa iterasi (dengan baris baru memegang embedding untuk vektor yang disimpulkan) . Ini mengarah ke pertanyaan 2.WD
- Bisakah kita menyimpulkan bahwa kalimat yang mungkin tidak terlihat persis sama dengan kalimat dalam set pelatihan?
Jawaban singkatnya adalah tidak dan ini bukan untuk apa Doc2Vec. Karena inisialisasi acak + kompleksitas konvergensi dan pelatihan vektor tereka Anda tidak akan pernah sama persis dengan vektor yang bersesuaian dalam inilah mengapa Gensim belum membangun fungsi untuk mendukung ini, bagaimana pun mengingat bahwa modelnya telah baik terlatih kedua vektor ini harus dekat secara sewenang-wenang sehingga Anda dapat menyimpulkan bahwa keduanya sangat mirip.D
Meskipun memperbaiki benih acak mungkin tidak berfungsi, ada begitu banyak variabel lain yang dapat memengaruhi konvergensinya, silakan lihat jawaban pertama di https://github.com/RaRe-Technologies/gensim/issues/374 .
Dalam kasus apa pun, Anda dapat menemukan label paling mirip dalam kumpulan data Anda ke kalimat yang disimpulkan hanya dengan mengulangi set pelatihan Anda dan membandingkan kesamaan dengan vektor yang disimpulkan. Tetapi mengapa Anda ingin melakukan pertandingan yang tepat dengan sesuatu di set pelatihan? itulah ekspresi reguler untuk tujuan penyematan dokumen ini untuk tugas belajar yang diawasi atau tidak diawasi (yaitu klasifikasi dan pengelompokan).