📝 NLP: Teks Menjadi Angka

Tokenisasi, Bag-of-Words, TF-IDF — fondasi klasik sebelum era embedding & transformer.

🎬 Animasi: NLP: Teks Menjadi Vektor

Kalimat di-tokenize, frekuensi tiap kata dihitung, lalu menjadi vektor angka (bag of words).

📌 1. Pipeline: Dari Kata ke Vektor

Model ML hanya paham ANGKA. Teks harus diubah dulu: "Film bagus dan seru" │ 1. TOKENIZE (pecah per kata, lowercase) ▼ ["film", "bagus", "dan", "seru"] │ 2. BANGUN VOCABULARY (daftar kata unik dari semua dokumen) ▼ vocab = [bagus, dan, film, seru] │ 3. BAG-OF-WORDS (hitung frekuensi tiap kata) ▼ [1, 1, 1, 1] ← vektor! (urutan sesuai vocab) Bag-of-Words = vektor frekuensi kata. Urutan kata DIABAIKAN ("bagus film" = "film bagus") — itu kelemahan utamanya. TF-IDF = perbaikan: kata yang muncul di SEMUA dokumen ("dan", "di") diberi bobot KECIL; kata langka & khas diberi bobot BESAR. TF = frekuensi kata di dokumen IDF = ln((N+1)/(df+1)) + 1 (df = jumlah dokumen yang mengandung kata itu) bobot = TF × IDF

📌 2. Contoh: Analisis Sentimen (BoW + Logistic Regression)

Output:

Perhatikan: kata "sangat" bisa menjadi positif ATAU negatif tergantung konteks ("sangat recommended" vs "sangat kecewa") — BoW tidak bisa menangkap itu. Inilah yang dipecahkan word embedding dan transformer (era modern).

📌 3. Contoh: Pencarian Dokumen (TF-IDF + Cosine Similarity)

Output:
💡 Evolution NLP: BoW/TF-IDF (klasik) → word2vec/GloVe (embedding: kata jadi vektor bermakna, "raja - laki + perempuan ≈ ratu") → BERT/GPT (transformer: konteks dinamis). Prinsip "teks → vektor → model" tetap sama — hanya cara pembuatannya yang makin pintar.

🧠 Latihan

  1. Tambahkan 4 kalimat training sentimen baru. Apakah bobot kata "sangat" berubah?
  2. Ganti logistic regression dengan Naive Bayes (bab 8). Bandingkan hasilnya.
  3. Buat query "resep telur bawang" di contoh TF-IDF. Dokumen mana yang menang?
  4. Jelaskan kenapa BoW gagal pada kalimat "film ini tidak jelek". (Petunjuk: kata "tidak" kehilangan makna negasi.)