### CBOW Skip-gram

Gambar 12.8: CBOW ( _Continous bag of words_ ) vs Skip-gram, rekonstruksi
[49].

```
Si Kucingduduk ...tiker
```
```
Projection
(Embedding)
```
```
beralaskan
```
```
Gambar 12.9: CBOW.
```

```
12.5 Representing Context: Word Embedding 177
```
level abstrak, yaitu merepresentasikan kata dan konteksnya menjadi bentuk
_vektor_. Apabila kamu tertarik untuk memahami detilnya secara matematis,
kamu dapat membaca berbagai penelitian terkait.^14 Silahkan baca _paper_ oleh
Mikolov [48, 49] untuk detil implementasi _word embedding_.

12.5.4 Distributed Sentence Representation

Kita sudah dapat merepresentasikan kata menjadi vektor, selanjutnya kita
ingin mengonversi unit lebih besar (kalimat) menjadi vektor. Salah satu cara
paling mudah adalah menggunakan nilai rata-rata representasi _word embedding_ untuk
semua kata yang ada pada kalimat tersebut ( _average_ of its individual
_word embedding_ s). Cara ini sering digunakan pada bidang NLP dan cukup
_powerful_, sebagai contoh pada _paper_ oleh Putra dan Tokunaga [75]. Pada NLP,
sering kali kalimat diubah terlebih dahulu menjadi vektor sebelum dilewatkan
pada algoritma _machine learning_, misalnya untuk analisis sen _time_ n (kalimat
bersen _time_ n positif atau negatif). Vektor ini yang nantinya menjadifeature
vectorbagi algoritma _machine learning_.
Kamu sudah tahu bagaimana cara mengonversi kata menjadi vektor, untuk
mengonversi kalimat menjadi vektor cara sederhananya adalah merataratakan
nilai vektor kata-kata pada kalimat tersebut. Tetapi dengan cara
sederhana ini, sifat sekuensial dan _compositional_ pada kalimat tidak terpenuhi.
Sebagai contoh, kalimat “anjing menggigit Budi” dan “Budi menggigit
anjing” akan direpresentasikan sebagai vektor yang sama karena terdiri
dari kata-kata yang sama. Dengan demikian, representasi kalimat sederhana
dengan merata-ratakan vektor kata-katanya juga tidaklah sensitif terhadap
urutan.^15 Selain itu, rata-rata tidak sensitif terhadap _compositionality_. Misal
frase “bukan sebuah pengalaman baik” tersusun atas frase “bukan” yang diikuti
oleh “sebuah pengalaman baik”. Rata-rata tidak mengetahui bahwa
“bukan” adalah sebuah _modifier_ untuk sebuah frase dibelakangnya. Sen _time_ n
dapat berubah bergantung pada komposisi kata-katanya (contoh pada
Gambar 12.10).
Cara lainnya adalah meng- _encode_ kalimat sebagai _vektor_ menggunakan
_recursive autoencoder_. _Recursive_ berarti suatu bagian adalah komposisi dari
bagian lainnya. Penggunaan _recursive autoencoder_ sangat rasional berhubung
_data_  memenuhi sifat _compositionality_ yang direpresentasikan dengan baik oleh
topologi _recursive neural network_. Selain itu, urutan susunan kata-kata juga
tidak hilang. Untuk melatih _recursive autoencoder_, _output_ dari suatu layer
adalah rekonstruksi _input_, ilustrasi dapat dilihat pada Gambar 12.11. Pada
setiap langkah _recursive_, _hidden layer/coding layer_ berusaha men- _decode_ atau
merekonstruksi kembali vektor _input_.
Lebih jauh, untuk sen _time_ n analisis pada kata, kita dapat menambahkan
_output_  pada setiap _hidden layer_, yaitu sen _time_ n unit gabungan, seperti pada

(^14) Beberapa orang berpendapat bahwa _evil is in the detail_.
(^15) Karena ini _recurrent neural network_ bagus untuk _language modelling_.
(^16) [http://nlp.stanford.edu:8080/sen _time_ nt/rntnDemo.html](http://nlp.stanford.edu:8080/sen _time_ nt/rntnDemo.html)


178 12 Auto _encoder_

```
Gambar 12.10: Contoh analisis sen _time_ n (Stanford).^16
```
```
Gambar 12.11: Contoh recursive auto _encoder_.
```
Gambar 12.12. Selain menggunakan _recursive autoencoder_, kamu juga dapat
menggunakan _recurrent autoencoder_. Kami silahkan pada pembaca untuk
memahami _recurrent autoencoder_. Prinsipnya mirip dengan _recursive_ autoen-
coder.
Teknik yang disampaikan mampu mengonversi kalimat menjadi vektor,
lalu bagaimana dengan paragraf, satu dokumen, atau satu frasa saja? Teknik
umum untuk mengonversi teks menjadi vektor dapat dibaca pada [69] yang
lebih dikenal dengan nama _paragraph vector_ atau _doc2vec_.


```
12.6 Tips 179
```
```
Gambar 12.12: Contoh recursive auto _encoder_ dengan sen _time_ nt[67].
```
