Markov Model คืออะไร

lukkiddd
lukkiddd
Published in
3 min readNov 15, 2017

หากสงสัยว่า Markov model คืออะไร แล้วมันใช้ทำอะไรได้บ้าง วันนี้เราจะมาดูกันครับ (หากผิดพลาดตรงไหนบอกได้เลยนะครับ)

  1. ประโยคตัวอย่าง — สมมติว่าผมมีประโยคอยู่ประโยคนึงว่า
ประโยคตัวอย่าง

เรามาทำความเข้าใจกับประโยคนี้กันก่อนครับ ก่อนอื่นเลยลองตัดคำมันออกมาก่อนจะได้ดังนี้

ประโยคตัวอย่าง (ตัดแล้ว)

2. key ในประโยค — คำที่ตัดแล้วแต่ละคำเราเรียกว่า token, โดยคำที่ไม่ซ้ำกันเลยเราจะเรียกว่า key นะครับ ดังนั้นจะเห็นได้ว่า เรามีทั้งหมด 8 token และ 5 key ครับ

คราวนี้ลองใส่สีให้แต่ละคำโดยแยกตาม key กันหน่อยครับ

ประโยคตัวอย่าง (ใส่สี)

3. key พิเศษ — คราวนี้เรามาเติม key พิเศษที่แอบซ่อนอยู่ในประโยคนี้กันหน่อยครับ นั่นคือ *START* กับ *END* เพื่อบอกว่าตรงไหนคือจุดเริ่มต้นของประโยคแล้วอันไหนคือจุดจบของประโยค

ประโยคตัวอย่าง (key พิเศษ)

เรียบร้อยยย คราวนี้เราก็เข้าใจประโยคตัวอย่างของเราแล้ว มาเริ่มทำความเข้าใจ markov model จากประโยคนี้กันดีกว่าครับ

Markov model คือ model ที่บอกว่า

State ในอนาคต เกิดจาก State ปัจจุบัน ไม่ใช่จากเหตุการณ์ที่เกิดก่อนหน้า

พอเอามาใช้กับประโยคตัวอย่างของเราจะโยงได้ประมาณนี้ครับ

โยงประโยคตัวอย่าง

ดังนั้นแปลว่า คำว่า “ข้าว” คำที่สอง เกิดจากคำว่า “หิว” คำที่หนึ่ง เราลองมาจับคู่คำที่จะเกิดกันหน่อยดีกว่าครับ จะได้เห็นชัดขึ้น

จับคู่การโยงของประโยคตัวอย่าง

อ่าอาจจะดู งง ๆ จัดรูปมันซักหน่อย

จับคู่การโยงของประโยคตัวอย่าง (จัดรูป)

จากรูปด้านบน เราแค่จัดรูปให้มันดูง่ายขึ้น โดยจับกลุ่ม key ที่เหมือนกันไว้ด้วยกัน พอจะเห็นภาพไหมครับว่า จากคู่ key-value ที่เราจัดนี้ เราสามารถสร้างประโยคใหม่ได้

key-array จากประโยคตัวอย่าง

จากรูป เราจะสามารถย้อนรูปกลับไปเป็นประโยคตัวอย่างได้ โดยเริ่มจาก *START* เราก็มองดูว่า *START* มันจะเกิดอะไรต่อได้บ้าง ก็จะเห็นว่ามันมีแค่ตัวเลือกเดียว นั่นคือ *START* → [ หิว ] ต่อมาเราก็ขยับมาดู state ต่อไปครับ

ต่อมาคำว่า หิว จะเกิดคำไหนต่อได้บ้าง จะเห็นว่า หิว → [ ข้าว, น้ำ, ขนม, ผลไม้ ] เป็นได้ตั้ง 4 คำ นี่แหละครับที่น่าสนใจ เพราะว่าเราจะเลือกคำไหนก็ได้ใน 4 คำ แบบสุ่ม ซึ่งแน่นอนว่าเราอาจจะเลือกคำว่า ผลไม้ ที่จะไปจบที่ *END* เลยก็ได้ โดยโอกาสการเกิดที่ 25% หรือ 1/4 นั่นเองครับ ถ้าหากว่าเราสุ่มแล้วไม่ได้เลือกคำที่เหมือนกับประโยคเดิม นั่นแปลว่า เราได้สร้างประโยคใหม่จากโครงสร้างของประโยคเดิมขึ้นมาด้วย Markov model แล้ว บร๊ะ เยี่ยมไปเลย

Markov Model กับ เลขความน่าจะเป็นที่จะเกิดของแต่ละคำ

เรียบร้อย เราได้เรียนรู้วิธีการสร้าง markov model ไปแล้ว นั่นคือ state ในอนาคตจะขึ้นอยู่กับ state ปัจจุบันเท่านั้น แล้วจริง ๆ ไอข้อความที่เราเอามาใช้ในการสร้าง model เราก็จะเรียกมันว่า corpus

ตัวอย่างโค้ด

code ส่วนของการสร้าง dictionary
code ส่วนของการสร้างประโยคใหม่

Code แบบเต็ม ๆ

ส่งท้าย

ลองจินตนาการดูซิครับว่าถ้าเรามี corpus ขนาดใหญ่กับ markov model เราจะสามารถสร้างประโยคโต้ตอบอย่างง่าย ๆ ได้ด้วย

สำหรับบทความนี้ก็คงจะจบลงเพียงเท่านี้ก่อนนะครับ บทความหน้าอาจจะหยิบเรื่อง markov model พร้อมตัวอย่าง code มาเล่าสู่กันฟังนะครับ สำหรับวันนี้ สวัสดีคร้าบบ

เข้าร่วมกลุ่ม Thai Bot Maker

--

--