Lewati ke konten
Representasi Teks18 menit baca

Dari Kata ke Vektor

Pelajaran gratisinteraktif

Model tidak bisa menghitung dengan kata. Cara kita mengubah kata menjadi angka menentukan apa yang bisa dipelajari model — dan apa yang tidak akan pernah bisa.

Yang akan Anda bisa

  • Menjelaskan kelemahan representasi one-hot
  • Menjelaskan hipotesis distribusional dan word embedding
  • Membedakan embedding statis dan kontekstual

Setiap model NLP dimulai dengan masalah yang sama: model bekerja dengan angka, dan bahasa terdiri dari kata. Pilihan cara mengubah kata menjadi angka bukan detail teknis — pilihan itulah yang menentukan apakah model bisa tahu bahwa "mobil" dan "kendaraan" hampir bermakna sama.

Percobaan pertama: one-hot#

Cara paling sederhana: beri setiap kata di kosakata sebuah posisi, lalu wakili kata dengan vektor yang bernilai 1 di posisinya dan 0 di tempat lain. Dengan 50.000 kata, setiap kata adalah vektor 50.000 dimensi dengan satu angka 1.

python
import numpy as np # kosakata: [kucing, anjing, saham]kucing = np.array([1, 0, 0])anjing = np.array([0, 1, 0])saham  = np.array([0, 0, 1]) print(kucing @ anjing)   # hasil kali titikprint(kucing @ saham)
Output
0
0

Kata dikenal dari tetangganya#

Hipotesis distribusional (Firth, 1957): kata yang muncul di konteks yang mirip cenderung punya makna yang mirip. "Kucing" dan "anjing" sama-sama muncul di dekat "memberi makan", "dokter hewan", dan "bulu". Word2vec (Mikolov dkk., 2013) memanfaatkan ide ini: latih vektor kecil — misalnya 300 dimensi — untuk setiap kata sehingga vektor itu pandai menebak kata-kata di sekitarnya. Kata dengan tetangga yang mirip akhirnya punya vektor yang mirip.

Loading simulation…

Satu kata, banyak makna#

Word2vec memberi setiap kata satu vektor. Tapi "bisa" di "ular itu bisa-nya mematikan" dan di "saya bisa datang" adalah dua kata yang berbeda yang kebetulan ditulis sama. Embedding statis mencampur keduanya menjadi satu titik di antara dua makna.

Model berbasis transformer seperti BERT (Devlin dkk., 2018) memperbaikinya dengan embedding kontekstual: vektor sebuah kata dihitung ulang di setiap kalimat lewat attention, sehingga kata yang sama mendapat vektor yang berbeda tergantung kata-kata di sekitarnya.

Loading simulation…
RepresentasiSatu kata =Tahu kemiripan?Tahu konteks?
One-hot / bag-of-wordsSatu posisi di kosakataTidakTidak
TF-IDFBobot berdasarkan frekuensiTidakTidak
Word2vec, GloVeSatu vektor padat per kataYaTidak
BERT, LLMVektor baru di setiap kalimatYaYa
Checkpoint

Dengan representasi one-hot, berapa kemiripan kosinus antara "mobil" dan "kendaraan"?

Checkpoint

Apa yang dimiliki embedding kontekstual yang tidak dimiliki word2vec?