Catatan pendalaman Word Representation (dari materi HAL_LDA_GloVe_Word_Representation.pdf), melanjutkan topik yang sudah dibuka di Klasifikasi Teks. Taksonomi dasar (one-hot vs distributed representation, count-based vs predict-based) serta detail SVD/Latent Semantic Indexing (LSI) sudah dibahas di catatan sebelumnya dan tidak diulang di sini — catatan ini fokus pada tiga metode yang hanya disebut sekilas sebelumnya tapi belum dijelaskan detailnya: HAL, LDA, dan GloVe, termasuk contoh perhitungan numerik lengkap untuk masing-masing, serta cara memposisikan ketiganya di antara metode word representation lain.
Peta Metode Word Representation
Materi ini membingkai enam metode word representation dalam satu garis waktu konseptual, dari yang paling sederhana (berbasis hitungan langsung) hingga yang paling kompleks (neural/predictive):
graph LR A["TF-IDF<br/>bobot term per dokumen"] --> B["LSI<br/>SVD pada matriks Term-Dokumen"] B --> C["HAL<br/>local window counts,<br/>dibaca langsung"] C --> D["LDA<br/>generative probabilistic<br/>topic model"] D --> E["GloVe<br/>global counts + trained<br/>(learned vectors)"] E --> F["Word2Vec<br/>purely predictive,<br/>neural network"]
Cara membaca posisi tiap metode (sudut pandang/point of view-nya):
- TF-IDF & LSI → menangkap relasi langsung word–document (berbasis hitungan/count-based, deterministik) — sudah dibahas mendalam di Klasifikasi Teks.
- HAL → menangkap relasi word–word secara langsung: kata mana yang cenderung muncul berdekatan dengan kata lain (window-based, deterministik) — ide lokal ini persis yang kelak diotomasi Word2Vec lewat neural network.
- LDA → membentuk ruang laten baru berupa Topic, memakai pendekatan generatif dan probabilistik (bukan lagi deterministik).
- GloVe → pendekatan hybrid: dibangun dari statistik global corpus (seperti TF-IDF/LSI), tapi mengambil sumber statistiknya dari co-occurrence word-word (seperti HAL), dan vektor akhirnya dipelajari lewat training dengan optimisasi berbasis gradient (seperti Word2Vec) — bukan dibaca langsung dari matriks.
- Word2Vec → murni predictive, neural network (sudah diperkenalkan di Klasifikasi Teks).
HAL (Hyperspace Analogue to Language)
HAL adalah word representation berbasis co-occurrence yang dibangun dari sliding window yang digeser di sepanjang korpus teks. Setiap kali dua kata jatuh dalam window yang sama, kekuatan co-occurrence keduanya bertambah — dengan bobot yang makin kecil semakin jauh jaraknya (distance-weighted).
Tiga sifat kunci HAL:
- Local context — hanya kata-kata di sekitar (dalam window) yang diperhitungkan, bukan seluruh dokumen seperti TF-IDF/LSI.
- Distance-weighted — kata yang lebih dekat berkontribusi lebih besar terhadap skor co-occurrence dibanding yang lebih jauh.
- Direction-sensitive — kata yang muncul SEBELUM dan SESUDAH kata target dilacak secara terpisah (tidak digabung).
Fungsi Bobot Berdasarkan Jarak
di mana = ukuran window, = jarak antar dua kata (dalam token). Contoh dengan : (kata bersebelahan, sinyal terkuat); (berjarak dua kata, sinyal lebih lemah). Fungsi bobot yang sama dipakai baik untuk arah “sebelum” maupun “sesudah” — yang beda hanya matriks tujuan penambahan kontribusinya.
Contoh Perhitungan Lengkap
Korpus (digabung jadi satu stream token, window ): D1 = “ball player goal ball”, D2 = “president player” → stream: ball(1) player(2) goal(3) ball(4) president(5) player(6). Vocabulary (): ball, player, goal, president.
Membangun matriks R (konteks sesudah/kanan): untuk tiap kemunculan kata target, lihat token-token yang mengikutinya di dalam window dan tambahkan ke R[target][context]. Contoh pada posisi 1 (“ball”): → player () dan → goal (), sehingga R[ball][player] += 2 dan R[ball][goal] += 1. Pada posisi 4 (“ball” lagi): → president () dan → player (). Dijumlahkan dari kedua kemunculan “ball”: R[ball][player] = 2 + 1 = 3.
Matriks R lengkap (baris = target, kolom = konteks sesudahnya):
| ball | player | goal | president | |
|---|---|---|---|---|
| ball | 0 | 3 | 1 | 2 |
| player | 1 | 0 | 2 | 0 |
| goal | 2 | 0 | 0 | 1 |
| president | 0 | 2 | 0 | 0 |
Matriks L (konteks sebelum/kiri): karena “X mengikuti Y” adalah kejadian yang sama dengan “Y mendahului X”, maka (transpose dari R):
| ball | player | goal | president | |
|---|---|---|---|---|
| ball | 0 | 1 | 2 | 0 |
| player | 3 | 0 | 0 | 2 |
| goal | 1 | 2 | 0 | 0 |
| president | 2 | 0 | 1 | 0 |
Membangun vektor kata: baris R (konteks-sesudah) dan baris L (konteks-sebelum) tiap kata digabung (concatenate) menjadi satu vektor berdimensi : . Contoh: , .
Dimensionality Reduction & Membentuk Vektor Dokumen
Pada korpus nyata, bisa mencapai puluhan ribu kata, sehingga vektor HAL mentah ( dimensi) sangat sparse (mayoritas nol). Dua cara mengatasinya:
- Variance-based selection — hanya menyisakan kolom (kata konteks) dengan varians tertinggi di seluruh vocabulary (paling diskriminatif).
- SVD — menerapkan Singular Value Decomposition ke matriks co-occurrence -dimensi, semangatnya sama seperti LSI, tapi diterapkan ke hitungan word-word, bukan word-document.
HAL sendiri hanya menghasilkan vektor kata. Vektor dokumen diperoleh dengan mengagregasi (rata-rata berbobot) vektor kata-kata penyusunnya: . Contoh D1 = “ball player goal ball” (4 token: ball×2, player×1, goal×1): , dibagi 4 token → .
Pipeline HAL secara ringkas: token stream (seluruh korpus) → slide window (ukuran ) → bobot berdasar jarak → bangun matriks R & L () → concatenate baris → vektor kata → agregasi kata → vektor dokumen. Baik vektor kata maupun vektor dokumen berada dalam ruang numerik yang sama, siap dibandingkan dengan cosine similarity.
LDA (Latent Dirichlet Allocation)
LDA adalah model probabilistik generatif untuk representasi teks — berbeda secara filosofis dari TF-IDF/LSI (count-based langsung) maupun HAL (window-based langsung, tetap deterministik): LDA membentuk ruang laten baru berupa Topic, dan mengasumsikan data (kata dalam dokumen) dihasilkan oleh sebuah proses probabilistik yang melibatkan topic tersebut.
Dua Asumsi Inti
- Dokumen = campuran topik. Contoh: dokumen “bola presiden pemain” bukan murni satu topik, melainkan campuran — mis. 55% Olahraga, 45% Politik. Direpresentasikan sebagai (theta), vektor proporsi topik untuk dokumen .
- Topik = distribusi atas kata. Contoh: topik “Olahraga” punya probabilitas tinggi untuk kata “bola” (0.40), “pemain” (0.35), “gol” (0.20), dan rendah untuk kata-kata politik. Direpresentasikan sebagai (phi), vektor probabilitas kata untuk topik .
Proses Generatif
Gambaran LDA tentang bagaimana sebuah dokumen “dibangun” (plate notation: = prior Dirichlet; kotak putus-putus/plate diulang sebanyak // kali; node abu-abu = kata yang teramati):
Untuk tiap dokumen : ambil → untuk tiap kata dalam dokumen: ambil topik → ambil kata .
Distribusi Dirichlet adalah “mesin” yang menghasilkan vektor proporsi (jumlah seluruh proporsi = 1). Parameter mengatur seberapa “terkonsentrasi” hasilnya:
- → sparse, sampel terdorong ke sudut simplex (didominasi satu topik) — inilah pengaturan yang dipakai LDA.
- → neutral, sampel tersebar merata di seluruh area.
- → terkonsentrasi di tengah, dokumen jadi campuran merata semua topik.
Contoh Numerik
(proporsi topik per dokumen), (Sport, Politics): D1 “ball player goal ball” → ; D2 “president party election” → ; D3 “ball president player” → .
(distribusi kata per topik), kata (ball, player, goal, president, party, election): (Sport) ; (Politics) .
Inferensi: Collapsed Gibbs Sampling
Pada data riil, , , dan tidak diketahui — hanya kata yang teramati. Gibbs Sampling menebak topik tiap kata secara iteratif:
- = jumlah kata dalam dokumen yang saat ini di-assign ke topik (seberapa dominan topik di dokumen ).
- = jumlah kemunculan kata di seluruh korpus yang di-assign ke topik (seberapa cocok kata ini dengan topik , dibanding topik lain).
- Diulang ribuan kali untuk setiap kata di setiap dokumen, sampai assignment topik konvergen (stabil).
Ekstraksi Vektor dari Matriks φ dan θ
Matriks berukuran — setiap kolom adalah vektor representasi sebuah kata, berdimensi (jumlah topik). Contoh: , diambil langsung dari kolom “ball” pada dan .
Matriks berukuran — setiap baris adalah vektor representasi satu dokumen, berdimensi . Contoh: , diambil langsung dari baris D3 pada .
Cosine Similarity
- → sangat mirip (satu domain/topik yang sama, Sport).
- → sangat berbeda (domain berbeda).
Prinsip yang sama berlaku untuk perbandingan antar dokumen: (D3 punya muatan pembahasan olahraga, mirip D1), sedangkan (topik sangat berbeda).
Pipeline LDA secara ringkas: korpus dokumen (bag-of-words) → tentukan + prior → proses generatif () → inferensi (Gibbs Sampling) → matriks () & () → vektor kata & vektor dokumen → cosine similarity.
GloVe (Global Vectors for Word Representation)
GloVe adalah pendekatan hybrid: menggabungkan gagasan statistik global (seperti TF-IDF/LSI) dengan sumber statistik co-occurrence word-word (seperti HAL), tapi vektor akhirnya tidak dibaca langsung dari matriks — melainkan dipelajari lewat training dengan optimisasi berbasis gradient (mirip Word2Vec).
Langkah 1: Matriks Co-occurrence Simetris
Berbeda dari HAL, GloVe memakai window simetris — tidak memisahkan “sebelum” vs “sesudah”. Setiap kata yang jatuh dalam window (di sisi mana pun) menambah satu hitungan bersama:
- = entri matriks co-occurrence: seberapa sering kata muncul dekat kata , di seluruh korpus.
- Simetris: karena “dekat” tidak mempedulikan arah, — berbeda dari HAL yang punya matriks R dan L terpisah.
- Sebagian implementasi tetap memberi bobot berdasar jarak (menambahkan , bukan , per kemunculan) — semangatnya sama seperti pada HAL.
Contoh: memakai ulang token stream HAL di atas, . Sebagai contoh: ; ; . Matriks akhirnya simetris (diagonal tidak dipakai) dan tetap sparse & besar pada korpus nyata — matriks inilah yang kemudian menjadi target yang harus direproduksi oleh sekumpulan vektor yang bisa dilatih (bukan dibaca langsung seperti HAL).
Mengapa Rasio Co-occurrence Penting
Penulis GloVe mengamati bahwa rasio probabilitas co-occurrence membawa makna lebih kaya dibanding probabilitas mentahnya. Contoh klasik membedakan “ice” vs “steam” memakai probe word:
| Probe word | P(k|ice) | P(k|steam) | Rasio |
|---|---|---|---|
| solid | tinggi | rendah | besar (≫1) |
| gas | rendah | tinggi | kecil (≪1) |
| water | tinggi | tinggi | ≈1 |
| fashion | rendah | rendah | ≈1 |
“Solid” dan “gas” mampu membedakan ice/steam (rasio jauh dari 1), sedangkan “water” dan “fashion” tidak diskriminatif (rasio ≈1). Model GloVe dirancang untuk mereproduksi persis pola rasio semacam ini.
Langkah 2: Model — Dot Product Mendekati Log Co-occurrence
- = vektor trainable kata sebagai kata TARGET.
- = vektor trainable kata sebagai kata KONTEKS.
- = bias skalar — menyerap frekuensi keseluruhan tiap kata.
- = nilai target (log dari hitungan co-occurrence).
Vektor-vektor ini mulai dari nilai acak (random) dan disesuaikan bertahap supaya persamaan ini berlaku sedekat mungkin untuk setiap pasangan kata yang teramati — proses penyesuaian inilah yang disebut training.
Fungsi Bobot f(Xᵢⱼ)
Tanpa koreksi, pasangan kata yang sangat sering muncul bersama (mis. “the” + hampir semua kata) akan mendominasi training secara tidak proporsional. Fungsi men-downweight hitungan ekstrem:
Contoh pada korpus mini di atas, hitungan terbesar : — kontribusi pasangan ini ke loss jadi relatif kecil (pada korpus nyata dengan hitungan jauh lebih besar, batas atas jauh lebih berperan).
Langkah 3: Fungsi Loss J
- : bobot yang membatasi pengaruh pasangan kata yang sangat sering muncul.
- : squared error standar (least squares) antara prediksi model dan log-count sebenarnya.
- : dijumlahkan atas semua pasangan kata yang pernah muncul bersama ().
Training berarti mencari nilai yang meminimalkan , dilakukan lewat optimisasi berbasis gradient (SGD atau AdaGrad) — bukan solusi closed-form seperti SVD. Ini kontras dengan LDA yang parameternya diestimasi lewat Gibbs Sampling/variational inference atas model probabilistik: GloVe dan LDA sama-sama berangkat dari data hitungan, tapi lewat filosofi estimasi yang sepenuhnya berbeda.
Rincian praktik training: setiap kata sebenarnya punya dua vektor ( sebagai TARGET dan sebagai KONTEKS — dilatih bersamaan tapi tetap terpisah sampai akhir), bias juga trainable (mulai acak, diupdate tiap langkah gradient descent), dan satu epoch = satu putaran melewati seluruh pasangan kata dengan , diulang berkali-kali sampai loss berhenti mengecil (konvergen).
Contoh Satu Update Gradient Descent (Manual)
Ambil pasangan (ball, player) dengan , vektor 2 dimensi untuk ilustrasi. Nilai awal (inisialisasi acak): , ; , .
- Dot product + bias: .
- Target: .
- Error: .
- Bobot: .
- Gradient terhadap : .
- Update (learning rate 0.05): .
Ini adalah satu update untuk satu pasangan kata. Pasangan yang sama akan di-update lagi di epoch berikutnya memakai nilai baru ini, begitu juga seluruh pasangan lain, setiap epoch, sampai konvergen.
Hasil Akhir: Vektor Kata Final
Setelah training konvergen, tiap kata punya dua vektor terlatih (sebagai target dan sebagai konteks ). GloVe menggabungkan keduanya jadi satu vektor final:
Ilustrasi dengan vektor 2D toy (nilai hipotetis setelah konvergen):
| word | w (target) | c (context) | v = w + c |
|---|---|---|---|
| ball | (0.82, -0.14) | (0.35, 0.41) | (1.17, 0.27) |
| player | (0.77, -0.09) | (0.40, 0.36) | (1.17, 0.27) |
Kedua kata berakhir dengan vektor final yang sangat mirip — konsisten dengan fakta bahwa “ball” dan “player” berco-occurrence sangat kuat (, hitungan terbesar di korpus mini ini). Menumpuk untuk seluruh vocabulary menghasilkan matriks vektor kata final berukuran ( = dimensi embedding pilihan, mis. 100 atau 300 pada praktiknya) — siap dipakai untuk cosine similarity, persis seperti vektor dari HAL atau LDA.
Pipeline GloVe secara ringkas: korpus (text stream) → window simetris → hitung → matriks co-occurrence () → model → minimalkan loss via SGD/AdaGrad → vektor final .
Perbandingan Filosofi Estimasi
| Metode | Sumber statistik | Cara memperoleh vektor |
|---|---|---|
| LSI | Word–document (global) | Dibaca langsung dari hasil SVD (closed-form) |
| HAL | Word–word dalam window (lokal) | Dibaca langsung dari matriks R/L (deterministik) |
| LDA | Word–document (global) | Diestimasi lewat inferensi probabilistik (Gibbs Sampling / variational) |
| GloVe | Word–word (global, dari seluruh korpus) | Dipelajari lewat optimisasi gradient (SGD/AdaGrad) atas loss numerik |
| Word2Vec | Word–word dalam window (lokal, tapi via neural net) | Dipelajari lewat neural network (prediktif murni) |
Sumber
- Materi kuliah IF5153 Advanced Natural Language Processing, deck “Word Representation Methods: HAL, LDA, GloVe” (Ayu Purwarianti).
- Mikolov, T., et al. (2013), “Efficient Estimation of Word Representations in Vector Space”, arXiv:1301.3781.
- Pennington, J., Socher, R., Manning, C. (2014), “GloVe: Global Vectors for Word Representation”.
Flashcard
flashcards Sebutkan tiga sifat kunci yang membedakan HAL dari TF-IDF/LSI :: Local context (hanya kata di sekitar dalam window yang diperhitungkan, bukan seluruh dokumen), distance-weighted (kata lebih dekat berkontribusi lebih besar), dan direction-sensitive (kata sebelum dan sesudah target dilacak terpisah, dalam matriks R dan L berbeda). Tuliskan rumus bobot berdasar jarak pada HAL, dan hitung w(1) serta w(2) untuk window size W=2 :: w(d) = W - d + 1. Untuk W=2: w(1) = 2-1+1 = 2 (kata bersebelahan, sinyal terkuat), w(2) = 2-2+1 = 1 (berjarak dua kata, sinyal lebih lemah). Mengapa matriks L pada HAL selalu sama dengan transpose dari matriks R (L = R^T)? :: Karena “kata X mengikuti kata Y” adalah kejadian yang sama persis dengan “kata Y mendahului kata X” - jadi nilai yang sama hanya dilihat dari sisi berlawanan, sehingga L[w][c] = R[c][w]. Bagaimana cara membangun vektor kata tunggal dari matriks R dan L pada HAL? :: Baris R (konteks sesudah) dan baris L (konteks sebelum) milik kata tersebut digabung (concatenate) menjadi satu vektor berdimensi 2V: v(w) = [R[w,:] || L[w,:]]. Sebutkan dua asumsi inti Latent Dirichlet Allocation (LDA) :: (1) Dokumen adalah campuran topik, direpresentasikan sebagai vektor proporsi topik theta_d. (2) Topik adalah distribusi atas kata, direpresentasikan sebagai vektor probabilitas kata phi_k. Pada LDA, bagaimana parameter alpha pada distribusi Dirichlet mempengaruhi hasil sampling proporsi topik? :: Alpha kecil (misal 0.3,0.3,0.3) menghasilkan sampel sparse/terdorong ke sudut simplex (didominasi satu topik) - ini yang dipakai LDA. Alpha=1 menghasilkan sebaran merata (neutral). Alpha besar (misal 8,8,8) menghasilkan sampel terkonsentrasi di tengah (dokumen jadi campuran merata semua topik). Tuliskan rumus proporsional untuk collapsed Gibbs Sampling pada LDA dan jelaskan arti n_d,k serta n_k,w :: P(z_d,n=k | …) proporsional dengan (n_d,k + alpha) x (n_k,w + beta). n_d,k = jumlah kata dalam dokumen d yang saat ini di-assign topik k (seberapa dominan topik k di dokumen itu). n_k,w = jumlah kemunculan kata w di seluruh korpus yang di-assign topik k (seberapa cocok kata itu dengan topik k). Bagaimana cara mengekstrak vektor kata dan vektor dokumen dari matriks phi dan theta hasil LDA? :: Vektor kata diambil dari KOLOM matriks phi (ukuran KxV) untuk kata tersebut, berdimensi K (jumlah topik). Vektor dokumen diambil dari BARIS matriks theta (ukuran DxK) untuk dokumen tersebut, juga berdimensi K. Apa perbedaan utama cara GloVe membangun matriks co-occurrence dibanding HAL? :: GloVe memakai window SIMETRIS - tidak memisahkan arah sebelum/sesudah seperti HAL (yang punya matriks R dan L terpisah). Setiap kata dalam window (sisi mana pun) menambah satu hitungan bersama, sehingga matriks X GloVe simetris (X_ij = X_ji), berbeda dari HAL yang R dan L-nya tidak simetris satu sama lain. Mengapa GloVe disebut sebagai pendekatan hybrid di antara metode word representation lain? :: Karena GloVe dibangun dari statistik GLOBAL seluruh korpus (seperti TF-IDF/LSI), memakai sumber statistik co-occurrence word-word (seperti HAL), tapi vektor akhirnya tidak dibaca langsung dari matriks melainkan DIPELAJARI lewat optimisasi gradient (seperti Word2Vec) - menggabungkan tiga karakteristik dari tiga pendekatan berbeda. Tuliskan persamaan inti model GloVe yang menghubungkan vektor kata dengan co-occurrence count :: w_i . c_j + b_i + bc_j = log(X_ij), di mana w_i adalah vektor trainable kata i sebagai target, c_j vektor trainable kata j sebagai konteks, b_i dan bc_j adalah bias skalar, dan log(X_ij) adalah nilai target yang harus didekati. Apa fungsi f(X_ij) pada loss function GloVe, dan mengapa dibutuhkan? :: f(X_ij) adalah fungsi bobot yang men-downweight pasangan kata dengan hitungan co-occurrence sangat besar (misal “the” + hampir semua kata), supaya pasangan-pasangan tersebut tidak mendominasi training secara tidak proporsional. Rumusnya f(x) = (x/xmax)^alpha jika x < xmax, selain itu f(x)=1. Bagaimana vektor kata final pada GloVe diperoleh setelah training selesai? :: Setiap kata punya dua vektor terlatih terpisah: w_i (sebagai kata target) dan c_i (sebagai kata konteks). Vektor final diperoleh dengan menjumlahkan keduanya: v(word_i) = w_i + c_i. Bandingkan filosofi estimasi vektor kata pada LSI, HAL, LDA, GloVe, dan Word2Vec :: LSI: dibaca langsung dari hasil SVD (closed-form). HAL: dibaca langsung dari matriks co-occurrence R/L (deterministik). LDA: diestimasi lewat inferensi probabilistik (Gibbs Sampling/variational). GloVe: dipelajari lewat optimisasi gradient (SGD/AdaGrad) atas loss numerik dari matriks co-occurrence. Word2Vec: dipelajari lewat neural network secara prediktif murni.