P11 Word Vector .pdf Official Site of REZA CHANDRA Gunadarma University P11 Word Vector

WORD VECTOR REPRESENTATION
Pengantar Deep Learning

Apa itu Word Vector Representation?
Umumnya, pekerjaan machine learning yang
seringkali
digunakan
adalah
untuk
mengklasifikasikan
satu
permasalahan
menjadi beberapa kelompok.

Ketika komputer diberikan pembelajaran
maka komputer akan semakin cerdas dan
bisa membedakan antara kelas yang satu
dengan yang lainnya.

Apa itu Word Vector Representation?
Contoh task paling sederhananya adalah sentiment

analysis.
Sentiment analysis adalah satu usaha di bidang machine
learning untuk menilai bagaimana penilaian publik atau
kelompok orang tertentu terhadap objek yang diobservasi.
Biasanya, klasifikasinya dibagi menjadi 2, yaitu positif dan
negatif.

Word Vector Representation
Komputer bisa mempelajari karakter dari data melalui feature extraction.

Bebagai jenis feature diambil dari data, kemudian dilakukan pembelajaran
secara khusus pada feature tersebut.
Word vector representation merupakan hasil pembelajaran dari algoritma
deep learning.
Setiap kata memiliki vektor yang mewakili makna dari kata tersebut.
Bentuk vektornya bervariasi dalam hal dimensinya.
Word vector representation akrab juga disebut dengan terminologi: “word
embeddings”

Word Vector Representation

Word2Vec merupakan nama word vector representation yang dibuat
oleh Google (https://code.google.com/archive/p/word2vec/).
Sebagai gambaran bahwa vektor dari Word2Vec ini bisa mewakili
makna dari sebuah kata, kita bisa mengukur beberapa vektor
sebagai perbandingan.
Apabila kita mengukur jarak antara vektor kata “France” dengan
“Paris” dan vektor kata “Italy” dengan “Rome”, maka akan ditemukan
bahwa jaraknya akan muncul pada angka yang berdekatan.
• Hal ini dikarenakan secara mendasar kedua kata tersebut sama-sama merupakan
nama negara dan ibukotanya.
• Karena maknanya berdekatan, maka nilai vektornya pun akan berdekatan.

Word Vector Representation

Word Vector Representation
Word embeddings yang dihasilkan oleh Stanford ini dinamakan dengan Glove
Jika pada Word2Vec dimensi vektornya adalah 300, pada Glove memiliki beberapa
variasi dimensi vektornya yaitu 50, 100, 200 hingga 300.

Untuk lebih memperjelas bentuk vektor dalam word vector representation, berikut ini contoh

vektor yang terdapat pada Glove dengan dimensi 50:

Word Vector Representation




Setiap kata dicirikan dengan 50 angka yang
merupakan hasil pelatihan dengan menggunakan
algoritma deep learning.
Karena keunikannya dalam mendefinisikan arti dari
kata, beberapa literatur menyebutkan bahwa word
embeddings ini merupakan universal feature
extractor

Word Vector Representation dengan
Gensim
Model CBOW mencoba untuk memproyeksikan vektor kata-kata konteks untuk
memprediksi vektor kata target , sedangkan, model Skip-Gram adalah kebalikannya,
yaitu mencoba memprediksi vektor kata-kata yang ada di konteks diberikan vektor

kata tertentu .
Dari sini, model CBOW cenderung lebih mudah smooth terhadap informasi
distribusional karena semua kata-kata konteks langsung diproses menjadi satu vektor
sebelum akhirnya digunakan untuk memprediksi vektor kata target.
Oleh karena itu, untuk corpus yang lebih kecil ukurannya, model CBOW cenderung
lebih baik. Sebaliknya, model Skip-Gram membuat sepasang kata target dan konteks
sebagai sebuah instance sehingga Skip-Gram cenderung lebih baik ketika ukuran
corpus sangat besar.

Kali ini, kita akan menggunakan Gensim untuk implementasi dari Word2Vec.

Word Vector Representation dengan
Gensim






Pertama-tama, kita perlu import terlebih dahulu berbagai macam

library untuk pekerjaan kita kali ini.
Perhatikan bahwa PCA (Principal Component Analysis) dan
matplotlib akan digunakan untuk melakukan plotting vektor kata ke
bidang 2 dimensi.
Kita akan memvisualisasikan beberapa kata dan melihat
kedekatannya satu sama lain.

import
import
import
import

gensim
numpy as np
os
matplotlib.pyplot as plt

from sklearn.decomposition import PCA, KernelPCA

Word Vector Representation dengan

Gensim






Kemudian, kita akan membuat wrapper class untuk membaca setiap
file teks pada korpus, dan juga membaca baris demi baris pada
file teks secara efisien.
Hal ini dapat dicapai dengan penggunaan generator yield pada
python.
Dengan fitur ini, kita tidak perlu memuat seluruh teks pada korpus di
memori sebelum melatih model Word2Vec kita.

class MySentences(object):
def __init__(self, dirname):
self.dirname = dirname
def __iter__(self):
#untuk setiap file


for fname in os.listdir(self.dirname):
#untuk setiap baris
for line in open(os.path.join(self.dirname, fname)):
yield line.split()

Word Vector Representation dengan
Gensim






Berikutnya adalah menghidupkan object dari kelas iterator
corpus tersebut.
Perhatikan bahwa corpus Anda harus diletakkan di dalam
sebuah folder yang didefinisikan pada argumen berikut
(misal, folder corpus).
Letakkan semua file teks corpus di dalam folder tersebut.


sentences = MySentences('./corpus') # a memory-friendly iterator

Word Vector Representation dengan
Gensim




Kemudian, bagian berikut adalah intinya, yaitu melatih
model Word2Vec kita menggunakan corpus dan juga
corpus iterator yang sudah kita definisikan sebelumnya.
Penjelasan argumen yang penting ada di bagian
komentar.

# sg = 0 -> CBOW, sg = 1 -> skip-gram
# size: dimensionality dari vektor kata yang dihasilkan
#

min_count: banyaknya frekuensi

dipertimbangkan dalam proses

miminal

sebuah

kata,

jika

ingin

# window: range antara kata-kata konteks dengan posisi current word

model = gensim.models.Word2Vec(sentences, size=32, sg = 0, min_count = 1,
window = 5, iter = 10)

Word Vector Representation dengan
Gensim



Jika ingin menyimpan model yang sudah di latih,
serta memuat model yang sebelumnya disimpan,
dapat menggunakan potongan kode berikut.

# save model

model.save('./mymodel')
# load model
new_model = gensim.models.Word2Vec.load('./mymodel')

Word Vector Representation dengan
Gensim


Potongan kode berikut adalah beberapa API yang
disediakan oleh gensim untuk kebutuhan operasi
vektor, seperti menghitung kemiripan vektor antara
2 kata, dan yang lainnya.


# mendapatkan representasi vektor dari sebuah kata
print (model.wv['dia'])
# menghitung similarity vektor antara dua kata
print (model.wv.similarity('dia', 'kita'))
# mencari top-N similar words

print (model.wv.similar_by_word('kita', topn=10, restrict_vocab=None))

Plotting Word Vectors




Sekarang, kita coba plot vektor dari beberapa kata
untuk melihat visualisasi kedakatan vektor dari
beberapa kata.
Kata-kata yang ingin ditampilkan plot vektornya dapat
diletakkan pada variable word_list berikut.

# kata-kata yang ingin kita plot vektornya
word_list = ['kita', 'dia', 'Anda', 'operasi', 'katarak']
# daftar vektor dari kata-kata tersebut

word_vectors = np.array([model.wv[w] for w in word_list])

Plotting Word Vectors




Selanjutnya, agar bisa di-plot di bidang 2 dimensi, kita
perlu melakukan reduksi dimensi vektor kata ke vektor
2 dimensi.
Kita dapat menggunakan berbagai macam teknik
seperti PCA (Principal Component Analysis) dan t-SNE.

# reduksi dimensi vektor ke 2D agar bisa di-plot pada bidang 2D
dimred = PCA(n_components=2, copy=False, whiten=True)

red_word_vectors = dimred.fit_transform(word_vectors)

Plotting Word Vectors


Terakhir, kita buat fungsi untuk melakukan plot vektor dari kata-kata
tersebut (yang sudah direduksi ke dimensi 2).

def plot(datas, labels, fc='yellow'):

# plot the dots
plt.subplots_adjust(bottom = 0.1)
plt.scatter(datas[:, 0], datas[:, 1], marker='o')

# annotate labels
for label, x, y in zip(labels, datas[:, 0], datas[:, 1]):

plt.annotate( \
label, \
xy=(x, y), xytext=(-15, 15), \
textcoords='offset points', ha='right', va='bottom', \
bbox=dict(boxstyle='round,pad=0.3', fc=fc, alpha=0.5), \

arrowprops=dict(arrowstyle = '->', connectionstyle='arc3,rad=0'))
plt.show()
# kita plot !
plot(word_vectors, word_list)

Plotting Word Vectors

Referensi




https://socs.binus.ac.id/2016/12/22/word-vectorrepresentation-word2vec-glove/
http://ir.cs.ui.ac.id/alfan/tutorial/gensim_w2v.html

TERIMA KASIH