ทำ POS tagging ภาษาไทยโดยใช้ Neural Network ด้วย nlpnet
nlpnet เป็นเครื่องมือสำหรับใช้ทำ part-of-speech tagging, semantic role labeling และ dependency parsing โดยใช้ Neural Network โดยรันบน Python 2.7 (ไม่รองรับ Windows) และเป็น MIT License
การติดตั้ง
ใช้คำสั่ง
การเตรียมข้อมูลภาษาไทย
เราใช้ข้อมูล orchid มาทำเป็น CoNLL format ตั้งชื่อว่า thaipostag.txt ที่มี 4 column ตามตัวอย่างนี้
โหลดไฟล์ข้อมูลที่จัดทำไว้ได้จาก https://gist.github.com/wannaphongcom/a8224d8fb19eb32c3c86335e180bcc9e
จากนั้น ทำการโหลดไฟล์ nlpnet-train.py จาก https://github.com/erickrf/nlpnet/raw/master/bin/nlpnet-train.py มาไว้
แล้วเปิดคอมมาไลน์ ใช้คำสั่ง $ python nlpnet-train.py pos --gold ที่ตั้งไฟล์thaipostag.txt -e จำนวนที่ต้องการtrain(ค่าเริ่มต้นคือ15)
โดยเมื่อสั่ง
$ python nlpnet-train.py pos --gold /home/wannaphong/thainlp/nlpnet/thaipostag.txt
จะได้ไฟล์ metadata-pos.pickle , pos-network.hdf5 , pos-tags.txt และ vocabulary-pos.txt นี่คือ ไฟล์ model ของ POS tagging ที่ผ่านการ Training
แต่เมื่อลอง train 30 epochs ดู
ลองใช้งาน
จะเห็นข้อผิดพลาดที่เกิดขึ้น สิ่งนี้แก้ไขได้ด้วยเพิ่มจำนวนการ train เข้าไป ความแม่นยำจะเพิ่มขึ้น
เขียนโดย นาย วรรณพงษ์ ภัททิยไพบูลย์
นักศึกษาชั้นปีที่ 1 สาขาวิทยาการคอมพิวเตอร์และสารสนเทศ คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย
การติดตั้ง
ใช้คำสั่ง
$ pip install nlpnet
การเตรียมข้อมูลภาษาไทย
เราใช้ข้อมูล orchid มาทำเป็น CoNLL format ตั้งชื่อว่า thaipostag.txt ที่มี 4 column ตามตัวอย่างนี้
1 การ _ FIXN 2 ประชุม _ VACT 3 ทาง _ NCMN 4 วิชาการ _ NCMN 5 <space> _ PUNC 6 ครั้ง _ CFQC 7 ที่1 _ DONMcolumn แรกเป็นลำดับประโยค column ที่ 2 เป็นคำ และอันสุดท้ายเป็น POS tagging กำกับแต่ละคำ
โหลดไฟล์ข้อมูลที่จัดทำไว้ได้จาก https://gist.github.com/wannaphongcom/a8224d8fb19eb32c3c86335e180bcc9e
จากนั้น ทำการโหลดไฟล์ nlpnet-train.py จาก https://github.com/erickrf/nlpnet/raw/master/bin/nlpnet-train.py มาไว้
แล้วเปิดคอมมาไลน์ ใช้คำสั่ง $ python nlpnet-train.py pos --gold ที่ตั้งไฟล์thaipostag.txt -e จำนวนที่ต้องการtrain(ค่าเริ่มต้นคือ15)
โดยเมื่อสั่ง
$ python nlpnet-train.py pos --gold /home/wannaphong/thainlp/nlpnet/thaipostag.txt
Reading training data... Loading vocabulary Created dictionary with 7394 types Dictionary saved in ./vocabulary-pos.txt Creating new network... Generating word type features... Created new network with the following layer sizes: 250, 100, 46 Training for up to 15 epochs 1 epochs Error: 1.817773 Accuracy: 0.599158 0 corrections skipped learning rate: 0.001000 2 epochs Error: 1.415986 Accuracy: 0.662283 0 corrections skipped learning rate: 0.001000 3 epochs Error: 1.256999 Accuracy: 0.684470 0 corrections skipped learning rate: 0.001000 4 epochs Error: 1.167212 Accuracy: 0.701549 0 corrections skipped learning rate: 0.001000 5 epochs Error: 1.107231 Accuracy: 0.711078 0 corrections skipped learning rate: 0.001000 6 epochs Error: 1.062287 Accuracy: 0.719276 0 corrections skipped learning rate: 0.001000 7 epochs Error: 1.025902 Accuracy: 0.727907 0 corrections skipped learning rate: 0.001000 8 epochs Error: 0.995274 Accuracy: 0.734762 0 corrections skipped learning rate: 0.001000 9 epochs Error: 0.968602 Accuracy: 0.739940 0 corrections skipped learning rate: 0.001000 10 epochs Error: 0.945042 Accuracy: 0.748870 0 corrections skipped learning rate: 0.001000 11 epochs Error: 0.923928 Accuracy: 0.753975 0 corrections skipped learning rate: 0.001000 12 epochs Error: 0.904769 Accuracy: 0.758639 0 corrections skipped learning rate: 0.001000 13 epochs Error: 0.887420 Accuracy: 0.762363 0 corrections skipped learning rate: 0.001000 14 epochs Error: 0.871517 Accuracy: 0.768334 0 corrections skipped learning rate: 0.001000 15 epochs Error: 0.856865 Accuracy: 0.772651 0 corrections skipped learning rate: 0.001000 Finished trainingพบว่ายังมีข้อผิดพลาดอยู่มาก และไม่มีถูกเลย
จะได้ไฟล์ metadata-pos.pickle , pos-network.hdf5 , pos-tags.txt และ vocabulary-pos.txt นี่คือ ไฟล์ model ของ POS tagging ที่ผ่านการ Training
แต่เมื่อลอง train 30 epochs ดู
Reading training data... Loading vocabulary Created dictionary with 7394 types Dictionary saved in ./vocabulary-pos.txt Creating new network... Generating word type features... Created new network with the following layer sizes: 250, 100, 46 Training for up to 30 epochs 1 epochs Error: 1.778611 Accuracy: 0.613756 0 corrections skipped learning rate: 0.001000 2 epochs Error: 1.381480 Accuracy: 0.674118 0 corrections skipped learning rate: 0.001000 3 epochs Error: 1.231589 Accuracy: 0.692636 0 corrections skipped learning rate: 0.001000 4 epochs Error: 1.146607 Accuracy: 0.705944 0 corrections skipped learning rate: 0.001000 5 epochs Error: 1.088973 Accuracy: 0.719203 0 corrections skipped learning rate: 0.001000 6 epochs Error: 1.045459 Accuracy: 0.726246 0 corrections skipped learning rate: 0.001000 7 epochs Error: 1.010350 Accuracy: 0.734053 0 corrections skipped learning rate: 0.001000 8 epochs Error: 0.980895 Accuracy: 0.741230 0 corrections skipped learning rate: 0.001000 9 epochs Error: 0.955466 Accuracy: 0.747642 0 corrections skipped learning rate: 0.001000 10 epochs Error: 0.933105 Accuracy: 0.751124 0 corrections skipped learning rate: 0.001000 11 epochs Error: 0.913082 Accuracy: 0.755825 0 corrections skipped learning rate: 0.001000 12 epochs Error: 0.895173 Accuracy: 0.759871 0 corrections skipped learning rate: 0.001000 13 epochs Error: 0.878771 Accuracy: 0.765824 0 corrections skipped learning rate: 0.001000 14 epochs Error: 0.863766 Accuracy: 0.769519 0 corrections skipped learning rate: 0.001000 15 epochs Error: 0.849873 Accuracy: 0.772884 0 corrections skipped learning rate: 0.001000 16 epochs Error: 0.837107 Accuracy: 0.777601 0 corrections skipped learning rate: 0.001000 17 epochs Error: 0.825161 Accuracy: 0.781407 0 corrections skipped learning rate: 0.001000 18 epochs Error: 0.814009 Accuracy: 0.782667 0 corrections skipped learning rate: 0.001000 19 epochs Error: 0.803533 Accuracy: 0.785799 3 corrections skipped learning rate: 0.001000 20 epochs Error: 0.793727 Accuracy: 0.789727 15 corrections skipped learning rate: 0.001000 21 epochs Error: 0.784474 Accuracy: 0.791563 16 corrections skipped learning rate: 0.001000 22 epochs Error: 0.775705 Accuracy: 0.793661 16 corrections skipped learning rate: 0.001000 23 epochs Error: 0.767374 Accuracy: 0.797280 16 corrections skipped learning rate: 0.001000 24 epochs Error: 0.759514 Accuracy: 0.800532 16 corrections skipped learning rate: 0.001000 25 epochs Error: 0.752024 Accuracy: 0.800832 16 corrections skipped learning rate: 0.001000 26 epochs Error: 0.744931 Accuracy: 0.803345 16 corrections skipped learning rate: 0.001000 27 epochs Error: 0.738133 Accuracy: 0.805814 16 corrections skipped learning rate: 0.001000 28 epochs Error: 0.731620 Accuracy: 0.805718 16 corrections skipped learning rate: 0.001000 29 epochs Error: 0.725466 Accuracy: 0.808406 16 corrections skipped learning rate: 0.001000 30 epochs Error: 0.719511 Accuracy: 0.810718 16 corrections skipped learning rate: 0.001000 Finished trainingสามารถทำถูก 16 อัน
ลองใช้งาน
จะเห็นข้อผิดพลาดที่เกิดขึ้น สิ่งนี้แก้ไขได้ด้วยเพิ่มจำนวนการ train เข้าไป ความแม่นยำจะเพิ่มขึ้น
เขียนโดย นาย วรรณพงษ์ ภัททิยไพบูลย์
นักศึกษาชั้นปีที่ 1 สาขาวิทยาการคอมพิวเตอร์และสารสนเทศ คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย
โหลดไฟล์ model ได้จาก https://drive.google.com/drive/folders/0B4OpNSoUT1G4X0NyVzEySllVUjA?usp=sharing
ตอบลบแต่ละ POStag คืออะไรครับ ผมมี data คล้ายๆกันแต่ไม่ได้ทำด้วย NN นะแต่สร้าง tag จากคำข้างเคียง
ตอบลบปัญหาที่เจอคือ 1 คำมีหลาย tag มากขึ้นอยุ่กับคำข้างเคียง แนะนำว่าเอาประโยคหน้าและประโยคหลังมาวิเคราะห์ด้วยครับ
titanium wedding band | Steve Porcaro | Tombola
ตอบลบ› Tombola-Bour iron titanium token › Tombola-Bour The band's tombola ring. blue titanium As titanium bolt you titanium earrings sensitive ears will see in our tombola titanium wood stoves ring
Wynn casino opens in Las Vegas - FilmfileEurope
ตอบลบWynn's first hotel casino in Las 출장안마 Vegas since opening its doors in 1996, Wynn Las Vegas kadangpintar is the 출장샵 first hotel nba매니아 on the Strip to septcasino offer such a large selection of