ทดลองตัดคำภาษาไทยด้วย Unsupervised Learning จากกูเกิล

เมื่อ 2 เดือนที่ผ่านมา กูเกิลได้แอบเปิด Unsupervised Learning สำหรับตัดคำและ detokenizer สำหรับข้อความที่ใช้ Neural Network สร้างระบบ ชื่อว่า SentencePiece โดยเป็นผลิตภัณฑ์อย่างไม่เป็นทางการของกูเกิล

ข้อดีของ Unsupervised Learning คือ ไม่ต้องเตรียมข้อมูลสำหรับใช้ฝึกและไม่ต้องกำหนดหลักเกณฑ์ในการเรียนรู้
ข้อเสีย ต้องใช้ข้อมูลจำนวนมากในการ train

ทำการติดตั้ง SentencePiece โดยทำตาม https://github.com/google/sentencepiece#build-and-install-sentencepiece

ในการทดลองตัดคำภาษาไทยโดยใช้ SentencePiece นั้น เราได้นำข้อมูลชุดทดสอบ สำหรับการคำนวนหาค่าประสิทธิภาพของโปรแกรมแบ่งคำ (500,000 คำ) โหลดได้จาก http://thailang.nectec.or.th/downloadcenter/index.php?option=com_docman&task=cat_view&gid=39&Itemid=61 มาใช้งานทดสอบ

แตกไฟล์ TEST_500K.txt ออกมา

สั่ง $ spm_train --input=/home/wannaphong/thainlp/data/TEST_500K.txt --model_prefix=thai1 --model_type=unigram

--input คือ ที่ตั้งไฟล์ txt สำหรับใช้ในการ train
--model_prefix ชื่อ model
--model_type ชนิดของ model มีทั้ง unigram (ค่าเริ่มต้น), bpe, char, หรือ word
จะได้ไฟล์  thai1.model และไฟล์ thai1.vocab ออกมา โดยไฟล์ thai1.vocab เก็บคำศัพท์ ส่วน thai1.model เก็บ model ที่ผ่านการ train

ทดลองตัดคำภาษาไทยด้วย Unsupervised Learning ชื่อ SentencePiece
สั่ง
$ echo "คนเดินเล่น" | spm_encode --model=thai1.model
▁คน เดิน เล่น
$ echo "คุณบ็อตบอกว่าวันนี้พิมพ์ไม่ผิดแต่ตัดแบบนี้จะดีเหรอ คณะกรรมการการเลือกตั้งกรมวิทยาศาสตร์การแพทย์ เขานอนตากลมตากลมไปมา" | spm_encode --model=thai1.model
▁คุณ บ ็ อ ต บอกว่า วันนี้ พิมพ์ ไม่ ผิด แต่ ตัด แบบนี้ จะ ดี เหรอ ▁ คณะกรรมการ การเลือกตั้ง กรม วิทยาศาสตร์ การ แพทย์ ▁เขา นอน ตา กลม ตา กลม ไป มา
$ echo "มหาวิทยาลัยขอนแก่นเป็นสถาบันอุดมศึกษาแห่งแรกในภาคอีสาน" | spm_encode --model=thai1.model
▁มหาวิทยาลัย ขอนแก่น เป็น สถาบัน อุดมศึกษา แห่ง แรก ใน ภาคอีสาน

จะเห็นได้ว่า ยังมีการตัดคำผิดอยู่บ้างส่วน แต่สิ่งนี้อาจแก้ไขได้ด้วยข้อมูลที่ใช้ในการ train มากขึ้น , จำนวนคำที่มากขึ้น , เตรียมไฟล์ข้อมูลให้เหมาะสม และเลือก model ให้เหมาะสม

นอกจากภาษาไทยแล้ว Unsupervised Learning ชื่อ SentencePiece สามารถนำไปใช้ตัดคำในภาษาที่ไม่มีเครื่องมือสำหรับตัดคำได้

อ่านเอกสาร SentencePiece ได้ที่ https://github.com/google/sentencepiece

เขียนโดย นาย วรรณพงษ์  ภัททิยไพบูลย์

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

สร้าง Corpus ใหม่ที่เหมือน BEST I Corpus

RWKV: เมื่อ transformer ยังช้าเกินไป

ทำ POS tagging ภาษาไทยโดยใช้ Neural Network ด้วย nlpnet