0Pricing
Learn AI with Python · บทเรียน

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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. Word2Vec: Skip-gram และ CBOW
  2. เวกเตอร์ฝัง GloVe และ FastText
  3. การจำแนกข้อความด้วย BERT
  4. ความคล้ายคลึงเชิงความหมายและเวกเตอร์ฝังประโยค
← กลับไปที่ Learn AI with Python