word vector representation -...

21
WORD VECTOR REPRESENTATION Pengantar Deep Learning

Upload: others

Post on 05-Sep-2019

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: WORD VECTOR REPRESENTATION - …reza_chan.staff.gunadarma.ac.id/Downloads/files/62711/P11+-+Word...Komputer bisa mempelajari karakter dari data melalui feature extraction. Bebagai

WORD VECTOR REPRESENTATION

Pengantar Deep Learning

Page 2: WORD VECTOR REPRESENTATION - …reza_chan.staff.gunadarma.ac.id/Downloads/files/62711/P11+-+Word...Komputer bisa mempelajari karakter dari data melalui feature extraction. Bebagai

Apa itu Word Vector Representation?

Umumnya, pekerjaan machine learning yangseringkali digunakan adalah untukmengklasifikasikan satu permasalahanmenjadi beberapa kelompok.

Ketika komputer diberikan pembelajaranmaka komputer akan semakin cerdas danbisa membedakan antara kelas yang satudengan yang lainnya.

Page 3: WORD VECTOR REPRESENTATION - …reza_chan.staff.gunadarma.ac.id/Downloads/files/62711/P11+-+Word...Komputer bisa mempelajari karakter dari data melalui feature extraction. Bebagai

Apa itu Word Vector Representation?

Contoh task paling sederhananya adalah sentimentanalysis.

Sentiment analysis adalah satu usaha di bidang machinelearning untuk menilai bagaimana penilaian publik ataukelompok orang tertentu terhadap objek yang diobservasi.

Biasanya, klasifikasinya dibagi menjadi 2, yaitu positif dannegatif.

Page 4: WORD VECTOR REPRESENTATION - …reza_chan.staff.gunadarma.ac.id/Downloads/files/62711/P11+-+Word...Komputer bisa mempelajari karakter dari data melalui feature extraction. Bebagai

Word Vector Representation

Komputer bisa mempelajari karakter dari data melalui feature extraction.

Bebagai jenis feature diambil dari data, kemudian dilakukan pembelajaransecara khusus pada feature tersebut.

Word vector representation merupakan hasil pembelajaran dari algoritmadeep 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: “wordembeddings”

Page 5: WORD VECTOR REPRESENTATION - …reza_chan.staff.gunadarma.ac.id/Downloads/files/62711/P11+-+Word...Komputer bisa mempelajari karakter dari data melalui feature extraction. Bebagai

Word Vector Representation

Word2Vec merupakan nama word vector representation yang dibuatoleh Google (https://code.google.com/archive/p/word2vec/).

Sebagai gambaran bahwa vektor dari Word2Vec ini bisa mewakilimakna dari sebuah kata, kita bisa mengukur beberapa vektorsebagai perbandingan.

Apabila kita mengukur jarak antara vektor kata “France” dengan“Paris” dan vektor kata “Italy” dengan “Rome”, maka akan ditemukanbahwa jaraknya akan muncul pada angka yang berdekatan.

• Hal ini dikarenakan secara mendasar kedua kata tersebut sama-sama merupakannama negara dan ibukotanya.

• Karena maknanya berdekatan, maka nilai vektornya pun akan berdekatan.

Page 6: WORD VECTOR REPRESENTATION - …reza_chan.staff.gunadarma.ac.id/Downloads/files/62711/P11+-+Word...Komputer bisa mempelajari karakter dari data melalui feature extraction. Bebagai

Word Vector Representation

Page 7: WORD VECTOR REPRESENTATION - …reza_chan.staff.gunadarma.ac.id/Downloads/files/62711/P11+-+Word...Komputer bisa mempelajari karakter dari data melalui feature extraction. Bebagai

Word Vector Representation

Word embeddings yang dihasilkan oleh Stanford ini dinamakan dengan Glove

Jika pada Word2Vec dimensi vektornya adalah 300, pada Glove memiliki beberapavariasi dimensi vektornya yaitu 50, 100, 200 hingga 300.

Untuk lebih memperjelas bentuk vektor dalam word vector representation, berikut ini contohvektor yang terdapat pada Glove dengan dimensi 50:

Page 8: WORD VECTOR REPRESENTATION - …reza_chan.staff.gunadarma.ac.id/Downloads/files/62711/P11+-+Word...Komputer bisa mempelajari karakter dari data melalui feature extraction. Bebagai

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

Page 9: WORD VECTOR REPRESENTATION - …reza_chan.staff.gunadarma.ac.id/Downloads/files/62711/P11+-+Word...Komputer bisa mempelajari karakter dari data melalui feature extraction. Bebagai

Word Vector Representation dengan

Gensim

Model CBOW mencoba untuk memproyeksikan vektor kata-kata konteks untukmemprediksi vektor kata target , sedangkan, model Skip-Gram adalah kebalikannya,yaitu mencoba memprediksi vektor kata-kata yang ada di konteks diberikan vektorkata tertentu .

Dari sini, model CBOW cenderung lebih mudah smooth terhadap informasidistribusional karena semua kata-kata konteks langsung diproses menjadi satu vektorsebelum akhirnya digunakan untuk memprediksi vektor kata target.

Oleh karena itu, untuk corpus yang lebih kecil ukurannya, model CBOW cenderunglebih baik. Sebaliknya, model Skip-Gram membuat sepasang kata target dan kontekssebagai sebuah instance sehingga Skip-Gram cenderung lebih baik ketika ukurancorpus sangat besar.

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

Page 10: WORD VECTOR REPRESENTATION - …reza_chan.staff.gunadarma.ac.id/Downloads/files/62711/P11+-+Word...Komputer bisa mempelajari karakter dari data melalui feature extraction. Bebagai

Word Vector Representation dengan

Gensim

Pertama-tama, kita perlu import terlebih dahulu berbagai macamlibrary untuk pekerjaan kita kali ini.

Perhatikan bahwa PCA (Principal Component Analysis) danmatplotlib akan digunakan untuk melakukan plotting vektor kata kebidang 2 dimensi.

Kita akan memvisualisasikan beberapa kata dan melihatkedekatannya satu sama lain.

import gensim

import numpy as np

import os

import matplotlib.pyplot as plt

from sklearn.decomposition import PCA, KernelPCA

Page 11: WORD VECTOR REPRESENTATION - …reza_chan.staff.gunadarma.ac.id/Downloads/files/62711/P11+-+Word...Komputer bisa mempelajari karakter dari data melalui feature extraction. Bebagai

Word Vector Representation dengan

Gensim

Kemudian, kita akan membuat wrapper class untuk membaca setiapfile teks pada korpus, dan juga membaca baris demi baris padafile teks secara efisien.

Hal ini dapat dicapai dengan penggunaan generator yield padapython.

Dengan fitur ini, kita tidak perlu memuat seluruh teks pada korpus dimemori 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()

Page 12: WORD VECTOR REPRESENTATION - …reza_chan.staff.gunadarma.ac.id/Downloads/files/62711/P11+-+Word...Komputer bisa mempelajari karakter dari data melalui feature extraction. Bebagai

Word Vector Representation dengan

Gensim

Berikutnya adalah menghidupkan object dari kelas iteratorcorpus tersebut.

Perhatikan bahwa corpus Anda harus diletakkan di dalamsebuah 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

Page 13: WORD VECTOR REPRESENTATION - …reza_chan.staff.gunadarma.ac.id/Downloads/files/62711/P11+-+Word...Komputer bisa mempelajari karakter dari data melalui feature extraction. Bebagai

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 miminal sebuah kata, jika ingin

dipertimbangkan dalam proses

# 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)

Page 14: WORD VECTOR REPRESENTATION - …reza_chan.staff.gunadarma.ac.id/Downloads/files/62711/P11+-+Word...Komputer bisa mempelajari karakter dari data melalui feature extraction. Bebagai

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')

Page 15: WORD VECTOR REPRESENTATION - …reza_chan.staff.gunadarma.ac.id/Downloads/files/62711/P11+-+Word...Komputer bisa mempelajari karakter dari data melalui feature extraction. Bebagai

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))

Page 16: WORD VECTOR REPRESENTATION - …reza_chan.staff.gunadarma.ac.id/Downloads/files/62711/P11+-+Word...Komputer bisa mempelajari karakter dari data melalui feature extraction. Bebagai

Plotting Word Vectors

Sekarang, kita coba plot vektor dari beberapa katauntuk melihat visualisasi kedakatan vektor daribeberapa kata.

Kata-kata yang ingin ditampilkan plot vektornya dapatdiletakkan 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])

Page 17: WORD VECTOR REPRESENTATION - …reza_chan.staff.gunadarma.ac.id/Downloads/files/62711/P11+-+Word...Komputer bisa mempelajari karakter dari data melalui feature extraction. Bebagai

Plotting Word Vectors

Selanjutnya, agar bisa di-plot di bidang 2 dimensi, kitaperlu melakukan reduksi dimensi vektor kata ke vektor2 dimensi.

Kita dapat menggunakan berbagai macam teknikseperti 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)

Page 18: WORD VECTOR REPRESENTATION - …reza_chan.staff.gunadarma.ac.id/Downloads/files/62711/P11+-+Word...Komputer bisa mempelajari karakter dari data melalui feature extraction. Bebagai

Plotting Word Vectors

Terakhir, kita buat fungsi untuk melakukan plot vektor dari kata-katatersebut (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)

Page 19: WORD VECTOR REPRESENTATION - …reza_chan.staff.gunadarma.ac.id/Downloads/files/62711/P11+-+Word...Komputer bisa mempelajari karakter dari data melalui feature extraction. Bebagai

Plotting Word Vectors

Page 20: WORD VECTOR REPRESENTATION - …reza_chan.staff.gunadarma.ac.id/Downloads/files/62711/P11+-+Word...Komputer bisa mempelajari karakter dari data melalui feature extraction. Bebagai

Referensi

https://socs.binus.ac.id/2016/12/22/word-vector-

representation-word2vec-glove/

http://ir.cs.ui.ac.id/alfan/tutorial/gensim_w2v.html

Page 21: WORD VECTOR REPRESENTATION - …reza_chan.staff.gunadarma.ac.id/Downloads/files/62711/P11+-+Word...Komputer bisa mempelajari karakter dari data melalui feature extraction. Bebagai

TERIMA KASIH