Word Embedding และ Word2Vec คืออะไร

lukkiddd
lukkiddd
Published in
3 min readMay 7, 2018
Photo by Antoine Dautry on Unsplash

สวัสดีครับผู้อ่านทุกท่าน บทความนี้ผมจะมาลองสรุปเนื้อหาเกี่ยวกับ Word embedding และ word2vec ที่ได้อ่านๆ มาให้ได้อ่านกันนะครับ โดยเนื้อหาส่วนใหญ่จะมาจาก วิดีโอ tech talk เรื่อง Word2Vec ของพี่อาร์ม, blog post ของ the morning paper, และ Course NLP ใน Cousera ใครสนใจอ่านและดูแบบฉบับเต็ม ผมได้แปะลิ้งไว้ด้านล่างบทความแล้วนะครับ ถ้าพร้อมแล้วก็ ไปอ่านกันเล้ย!

ขอขอบคุณ

คุณ Surasak Lhuengusakul ที่ช่วยแก้ไขข้อมูลที่ผิดพลาดเกี่ยวกับ Word embedding ด้วยครับ (8 May 2018–17:10)

คุณ Kitti Mortin ที่ช่วยแก้ไขข้อมูลด้วยครับ (9 May 2018–22:00)

Outline

  1. One-hot คืออะไร
  2. Word Embedding คืออะไร
  3. Word2Vec คืออะไร

One-hot คืออะไร

One-hot คือชุดของ bits (1 หรือ 0) ของข้อมูลประเภทต่าง ๆ โดยที่มี 1 แค่ตัวเดียวและที่เหลือจะเป็น 0

ยกตัวอย่างเช่น การแปลงประโยค “I am a student” มาแสดงในรูป “one-hot” คำที่เราสนใจ จะมีค่าเป็น 1 ที่เหลือจะมีค่าเป็น 0

จะเห็นได้ว่าการใช้ “one-hot encoding” จะไม่สนลำดับคำ หรือคำอื่นๆ ที่อยู่รอบข้างเลย จะได้ข้อมูลแค่ว่ามีคำนั้นๆอยู่หรือไม่เท่านั้น

Word Embedding คืออะไร

Word embedding คือการแปลง “คำ” เป็น “ตัวเลข” ถือเป็นหนึ่งในวิธีในการสร้าง feature จาก คำ วิธีหนึ่ง โดยจะทำการลดขนาด vector space ลงด้วย

ยกตัวอย่างเช่นหากเราทำ word embedding กับคำ I,liked,the,hotel,model เราก็จะได้ vector ตามภาพด้านล่างครับ

Word2Vec คืออะไร

Word2Vec คือ โมเดลที่ใช้สร้าง word embedding พัฒนาโดยทีมนักวิจัยของ Google นำโดย Tomas Mikolov ซึ่งโมเดลนี้สามารถทำงานได้ดีกว่าวิธีแบบเดิม ๆ (Latent Semantic Analysis)

ซึ่งเจ้า word2vec ก็คือการแสดง “คำ” ให้อยู่ในรูปของ “vector” นั่นแหละ แต่จะไม่ได้ใช้ one-hot encoding ในการสร้างตัวเลข vector แบบเดิมแล้ว

word2vec จะใช้วิธีการคำนวนตัวเลขของคำนั้น ๆ จาก context รอบๆ คำนั้น (ไอเดียมาจาก language model)

และถ้าหากเราเอา vector เหล่านั้นมา plot ก็จะได้ดังนี้

แกน y(แนวตั้ง) คือคำว่า ripe ส่วนแกน x (แนวนอน) คือคำว่า strong

และเนื่องจากการนำ vector 2 ตัวมา ดอทกัน มันคือการหาค่าความคล้ายกันของ 2 vector หรือที่เรียกว่า PMI(point-wise mutual information) ดังนั้นเราเลยสามารถหาค่าความคล้ายกันของคำ(Word similarity) ได้ด้วยวิธีนี้

ถ้าหากใครยังอยากรู้ต่อว่า vector ของแต่ละคำมันคิดยังไง ก็ตามไปอ่านกันต่อกันได้ที่

ซึ่งเราก็ไม่ต้องมานั่งทำเองแล้วครับสามารถนำ Pre-trained weight model มากมายในปัจจุบันไปใช้กันได้เลย

Pre-trained weight model ที่น่าสนใจ

นำมันไปใช้ทำอะไรได้บ้าง

โอ้โห สามารถนำไปใช้ได้สารพัดเลยละครับ เช่น

  • Machine Translation: Google Translate — แปลภาษาหนึ่งเป็นอีกภาษาหนึ่ง
  • Sentiment Analysis: ดูว่าข่าวมีแนวโน้มไปในทางบวก หรือ ลบ
  • Text Classification แยกแยะข้อความ
  • และอีกมากมาย

Summary

  • Word embedding คือ การแปลง “คำ” เป็น “ตัวเลข” ในรูปของ vector
  • การนำ word vector 2 ตัวมา dot กันคือการหาค่าความคล้ายกันของคำ (Word similarity)
  • Word2Vec คือ โมเดลที่ใช้สร้าง word embedding สร้างโดยทีมนักวิจัย Google
  • FastText, Word2Vec, Thai2Vec คือ Pre-trained weight model ที่น่าสนใจ

ถ้าใครอยากเห็นหน้าตาของ Word embedding แบบที่ใช้ neural network ก็ไปเล่นกันได้ที่ลิ้งด้านล่างครับ

หวังว่าหลายๆ คนคงเห็นภาพมากขึ้นนะครับว่า Word2Vec คืออะไร, จะเอามันมาจากไหนและจะใช้มันยังไง สำหรับบทความนี้ก็ขอจบลงเพียงเท่านี้นะคร้าบ หากใครสนใจเรื่อง Natural Language Processing ภาษาไทยก็เข้ามาพูดคุยแลกเปลี่ยนความรู้กันได้ที่ Thai NLP นะครับ แล้วพบกันใหม่บทความหน้า สวัสดีครับ :D

https://www.facebook.com/groups/408004796247683/

--

--