Word2Vec: Skip-gram และ CBOW
ทฤษฎี Word2Vec การใช้งานด้วย gensim และการคำนวณเลขคณิตของเวกเตอร์ (king - man + woman = queen)
Word2Vec: Skip-gram และ CBOW เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
จากคำสู่เวกเตอร์
การเรียนรู้ของเครื่องต้องใช้ตัวเลข แต่คำเป็นสัญลักษณ์ การฝังคำ จะแปลงแต่ละคำให้เป็นเวกเตอร์หนาแน่น เพื่อให้คำที่มีความหมายคล้ายกันอยู่ใกล้กันในปริภูมิเวกเตอร์
สมมติฐานเชิงการกระจาย
Word2Vec ตั้งอยู่บนแนวคิดที่ว่า คำที่ปรากฏในบริบทคล้ายกันย่อมมีความหมายคล้ายกัน โมเดลจะเรียนรู้ความหมายในเวกเตอร์ผ่านการฝึกทำนายบริบท
สถาปัตยกรรมสองรูปแบบ
Word2Vec มีรูปแบบการฝึกสองแบบ:
- CBOW ทำนายคำเป้าหมายจากบริบทโดยรอบ
- สกิปแกรม ทำนายบริบทโดยรอบจากคำเป้าหมาย
CBOW เทียบกับสกิปแกรม
CBOW ทำงานเร็วกว่าและเหมาะกับคำที่พบบ่อย สกิปแกรม ทำงานช้ากว่า แต่จัดการคำที่พบได้น้อยและชุดข้อมูลขนาดเล็กได้ดีกว่า โดยมักเลือกสกิปแกรมเป็นค่าเริ่มต้นเมื่อต้องการคุณภาพ
การฝึกด้วย gensim
ไลบรารี gensim ช่วยให้ใช้ Word2Vec ได้ง่าย เพียงส่ง sentences ที่ผ่านการตัดคำแล้ว (รายการของรายการคำ) และกำหนดการตั้งค่าการฝังคำ
from gensim.models import Word2Vec
sentences = [["the", "cat", "sat"], ["the", "dog", "ran"]]
model = Word2Vec(sentences=sentences, vector_size=100, window=5, min_count=1)พารามิเตอร์สำคัญ
พารามิเตอร์หลักมีดังนี้:
vector_sizeมิติของการฝังคำ (เช่น 100-300)windowความกว้างของบริบทโดยรอบแต่ละคำmin_countไม่สนใจคำที่พบได้น้อยกว่าค่านี้
from gensim.models import Word2Vec
model = Word2Vec(
sentences,
vector_size=200,
window=5,
min_count=5,
)เลือกสกิปแกรมด้วย sg=1
พารามิเตอร์ sg ใช้เลือกสถาปัตยกรรม: sg=0 ใช้ CBOW (ค่าเริ่มต้น) ส่วน sg=1 ใช้สกิปแกรม
from gensim.models import Word2Vec
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, sg=1)
# sg=1 -> skip-gramการเข้าถึงเวกเตอร์คำ
เวกเตอร์ที่ผ่านการฝึกแล้วอยู่ใน model.wv ให้ใช้คำเป็นดัชนีเพื่อรับเวกเตอร์ของคำนั้น
vec = model.wv["cat"]
print(vec.shape) # (vector_size,)
print("dog" in model.wv)การค้นหาคำที่คล้ายกัน
wv.most_similar จะส่งคืนคำที่มีเวกเตอร์อยู่ใกล้ที่สุด ซึ่งเป็นวิธีที่รวดเร็วในการตรวจสอบว่าการฝังคำเรียนรู้อะไรมา
print(model.wv.most_similar("cat", topn=5))
# returns list of (word, similarity) pairsเลขคณิตของคำ
คุณสมบัติที่มีชื่อเสียงคือ คณิตศาสตร์ของเวกเตอร์สามารถจับความสัมพันธ์ได้ โดย ราชา - ผู้ชาย + ผู้หญิง จะได้ผลลัพธ์ใกล้กับ ราชินี แสดงให้เห็นว่าการฝังคำสามารถเข้ารหัสความสัมพันธ์เชิงเปรียบเทียบได้
result = model.wv.most_similar(
positive=["king", "woman"],
negative=["man"],
topn=1,
)
print(result) # often [("queen", 0.7...)]การใช้การฝังคำในขั้นตอนถัดไป
หากต้องการแทนประโยค ให้หาค่าเฉลี่ยของเวกเตอร์คำในประโยคนั้น แล้วส่งผลลัพธ์ให้ตัวจำแนกประเภทใดก็ได้ การฝังคำ Word2Vec ที่ฝึกไว้ล่วงหน้ายังเป็นจุดเริ่มต้นที่ดีเมื่อข้อมูลของคุณมีขนาดเล็ก
import numpy as np
def sentence_vector(words, model):
vecs = [model.wv[w] for w in words if w in model.wv]
return np.mean(vecs, axis=0) if vecs else np.zeros(model.vector_size)ตรวจสอบความเข้าใจ
ทดสอบความรู้เกี่ยวกับ Word2Vec ของคุณ
สรุป
สรุป: Word2Vec เรียนรู้เวกเตอร์คำหนาแน่นจากบริบท CBOW ทำนายคำจากบริบท (ทำงานเร็ว) ส่วน สกิปแกรม (sg=1) ทำนายบริบทจากคำ (เหมาะกับคำที่พบได้น้อยกว่า) ใน gensim ให้กำหนด vector_size, window, min_count จากนั้นใช้ wv.most_similar และความสัมพันธ์เชิงเปรียบเทียบ เช่น ราชา - ผู้ชาย + ผู้หญิง
คำถามที่พบบ่อย
บทเรียน “Word2Vec: Skip-gram และ CBOW” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “Word2Vec: Skip-gram และ CBOW” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “Word2Vec: Skip-gram และ CBOW”
ทฤษฎี Word2Vec การใช้งานด้วย gensim และการคำนวณเลขคณิตของเวกเตอร์ (king - man + woman = queen) คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “Word2Vec: Skip-gram และ CBOW” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม
ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Word2Vec: Skip-gram และ CBOW
- เวกเตอร์ฝัง GloVe และ FastText
- การจำแนกข้อความด้วย BERT
- ความคล้ายคลึงเชิงความหมายและเวกเตอร์ฝังประโยค