Word embedding 

  • Word2vec ทำ Word embedding ซึ่งจะแสดงคำด้วยเวคเตอร์ ซึ่งเราสามารถใช้เวคเตอร์เหล่านั้นหาความสัมพันธ์ระหว่างคำได้ ตัวอย่าง Word embedding ของคำว่า compilation
  • Word embedding vector of specific word [
  •  2.00855709e-03 -3.21804953e-04 -2.46350025e-03 -2.99357204e-03 -3.11881653e-03 -4.21291776e-03 -3.33137182e-03  3.72275221e-03  2.24800152e-03  1.24061038e-03 -1.34038622e-03 -2.28501321e-03 -2.93607754e-03  4.97596944e-03  3.95735633e-03  2.75119464e-03 -1.02834648e-03  1.95835880e-03  3.25147738e-03  4.91005834e-03 -1.39257195e-03  3.31932423e-03  1.05178042e-03 -2.49711215e-03 -4.96040750e-03  2.06827978e-03  1.83808478e-03  1.67938753e-03 -4.71682195e-03 -1.62529352e-03 -1.81832490e-03  2.51263171e-03  4.16869437e-03 -1.65955385e-03  7.16611394e-05  2.57851975e-03  3.58524057e-03  4.06354759e-03 -3.02072428e-03  4.71638795e-03 -4.34571411e-03  1.27515465e-03  4.49224561e-03  4.90962900e-03 -2.68530613e-03  2.33156607e-03  4.12145490e-03  4.91033262e-03 -2.07173266e-03  2.83858413e-03 -1.49744109e-03  6.74214563e-04  1.50173495e-03 -3.06916446e-03 -4.37041838e-03  2.60650041e-03 -1.72179670e-03 -3.23353149e-03  3.69863398e-03  7.68622675e-04  4.16050898e-03 -3.84247093e-03  2.34231004e-03  2.83982372e-03 -2.55041732e-03  3.29475338e-03 -5.15968597e-04 -3.58476856e-04 -2.70299334e-03 -3.82747524e-03  2.56399740e-03  4.69670724e-03  2.83033610e-03  8.98368424e-04  3.32571263e-03  4.70500818e-04 -2.72163865e-03 -3.14013846e-03  2.51719575e-05  4.84884391e-03 -3.72806774e-03  4.07853024e-03 -3.11341672e-03  1.56537688e-03 -1.31230245e-05  4.82652197e-03  3.33505473e-03  4.58920607e-03 -2.83532823e-03  4.98890411e-03 -4.09269147e-03  4.15697554e-03 -1.98876904e-03  7.42294535e-04 -2.33020110e-04  1.99788046e-04 -1.92575424e-03 -7.15325237e-04 -3.68935475e-03 -1.62470166e-03] 
  • เวคเตอร์เหล่านี้สามารถนำไปหาระยะห่างระหว่างคำได้ด้วยการคำนวณ Euclidean distance 

Learning with Exercise

เรียนรู้ดูวิธีการทำ

Word2vec ด้วย Tensorflow

Word2vec อ่านข้อมูลจาก CSV ด้วย Gensim

Responsive

Demo
Word2vec ด้วย Gensim

Import Word2vec จาก Gensim

from gensim.models import Word2Vec

กำหนดชุดข้อมูลเทรน


sentences = [['compiler', 'interpreter', 'implementation'],
['compilation', 'compiler', 'machine code', 'compilation', 'compiler'],
['Java', 'is', 'compilation'],
['C', 'is', 'compilation'],
['Pascal', 'is', 'compilation', 'program']]

คำสั่งเทรนโมเดลด้วย CBOW technique

model = Word2Vec(sentences, size=100, min_count=1,sg=0)

คำสั่งเพื่อทำงานกับโมเดล

# แสดงสรุปเกี่ยวกับโมเดล
print("Model summary")
print(model)

# แสดงคำศัพท์ทั้งหมด
word = list(model.wv.vocab)
print(word)

# แสดงค่าในเวคเตอร์ที่แสดงคำว่า compilation
print("Word embedding vector of specific word ")
print(model['compilation'])

# แสดงคำที่ใกล้เคียงจำนวนสามอันดับแรก()
result = model.most_similar(positive=['compilation','compiler','implementation'], topn=3)
print(result)
#เปรียบเทียบ Similarity ระหว่าง Compiler และ compilation
print(model.similarity('compiler','compilation'))

คำสั่งบันทึกและโหลดโมเดล

# คำสั่งในการบันทึกโมเดลเพื่อนำไปใช้ต่อโดยไม่ต้องรันใหม่
model.save('model.bin')
# คำสั่งในการโหลดโมเดลที่บันทึกไว้มาใช้งาน
new_model = Word2Vec.load('model.bin')
print(new_model)

ข้อเท็จจริงเกี่ยวกับ Word2vec

การวัดค่าความเหมือนของคำไม่ว่าจะเป็น CBOW และ Skip-gram เป็นเพียงค่าคาดการณ์ซึ่งลำดับของตำแหน่งของคำเป็นอิสระ แต่ในการเรียนรู้ของ Neuron network คงไว้ซึ่งการพิจารณาโดยใช้ตำแหน่งในระหว่างการเรียนรู้