Apa itu CBOW (continuous bag of words)?
CBOW, atau continuous bag of words, adalah arsitektur Word2Vec yang memprediksi sebuah kata dari kata-kata di sekitarnya. CBOW mengambil embedding setiap kata konteks, merata-ratakannya menjadi satu vector, lalu memakai vector itu untuk memberi skor pada setiap kata kosakata sebagai calon kata pusat yang hilang. Training menyesuaikan embedding sampai kata yang benar mendapat skor tinggi.
CBOW adalah yang lebih cepat dari dua arsitektur Word2Vec, sehingga sering dipilih untuk melatih word vector pada korpus yang sangat besar. CBOW adalah mode bawaan di alat seperti Word2Vec milik gensim, dan ide perata-rataannya muncul lagi di classifier teks fastText, yang merata-ratakan vector kata dan n-gram untuk memberi label pada dokumen. Tugas mengisi bagian tengah yang dipakainya juga merupakan bentuk awal dari prediksi kata tersembunyi (masked word prediction) yang kemudian dibawa BERT ke skala lebih besar.
Ide utama
- CBOW memprediksi kata pusat dari rata-rata embedding kata konteksnya.
- Perata-rataan membuat konteks menjadi bag: urutan kata di dalam window diabaikan.
- Skor untuk setiap kata kosakata berasal dari satu perkalian matriks dengan vector rata-rata.
- Training meminimalkan cross-entropy pada kata pusat yang benar.
- Hierarchical softmax atau negative sampling menghindari normalisasi atas seluruh kosakata.
- CBOW lebih cepat dilatih daripada skip-gram, tetapi vector untuk kata langkanya lebih lemah.
Pertanyaan umum
Apakah CBOW termasuk supervised atau unsupervised?
CBOW termasuk self-supervised. Labelnya berasal dari teks itu sendiri: setiap posisi di korpus menyediakan konteks dan kata yang seharusnya ada di tengah, jadi tidak perlu anotasi manusia. Tugas prediksinya hanya alat untuk mencapai tujuan, karena hasil yang berguna adalah matriks embedding.
Bagaimana cara melatih model CBOW di Python?
Di gensim, Word2Vec(sentences, sg=0) melatih CBOW, dan sg=0 adalah nilai bawaannya. Pengaturan utamanya adalah vector_size (dimensi), window (ukuran konteks di tiap sisi), min_count (membuang kata langka), dan negative (jumlah negative sample). Opsi cbow_mean memilih antara merata-ratakan dan menjumlahkan context vector.
Apakah CBOW bisa dipakai sebagai model bahasa?
Tidak secara langsung. CBOW memprediksi kata yang hilang dari kata di kedua sisinya, jadi tidak bisa membuat teks dari kiri ke kanan, dan urutan di dalam window diabaikan. CBOW adalah trik training untuk embedding, bukan model probabilitas kalimat.
Apa bedanya CBOW dan bag-of-words?
Bag-of-words merepresentasikan seluruh dokumen sebagai jumlah kata yang sparse dan tidak melibatkan proses belajar. CBOW mempelajari dense vector untuk setiap kata dengan memprediksinya dari window kecil berisi tetangganya. Keduanya mengabaikan urutan, tetapi hanya CBOW yang menempatkan kata-kata terkait saling berdekatan.
Penjelasan terkait
- Word2Vec & Word Embedding · Mempelajari representasi dense vector, dengan kata yang mirip saling berdekatan di dalam ruang
- Skip-gram · Memprediksi kata konteks dari kata pusat: arsitektur Word2Vec yang dilatih dengan negative sampling
- Softmax, Logit, dan Temperature · Mengubah skor mentah menjadi probabilitas
- Embedding · Mengubah kata dan kategori menjadi vector
- Bag of Words · Mengubah teks menjadi angka: hitung kemunculan kata untuk membuat representasi dokumen paling sederhana di NLP
- Loss Function · Cara network mengukur kesalahannya
Referensi
- Mikolov et al. (2013), "Efficient Estimation of Word Representations in Vector Space"
- Mikolov et al. (2013), "Distributed Representations of Words and Phrases and their Compositionality", NeurIPS
- Rong (2014), "word2vec Parameter Learning Explained"
- Joulin et al. (2016), "Bag of Tricks for Efficient Text Classification"
Terakhir diperbarui