บทความ

กำลังแสดงโพสต์จาก สิงหาคม, 2017

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

nlpnet เป็นเครื่องมือสำหรับใช้ทำ part-of-speech tagging, semantic role labeling และ dependency parsing โดยใช้ Neural Network โดยรันบน Python 2.7 (ไม่รองรับ Windows) และเป็น MIT License

การติดตั้ง
ใช้คำสั่ง $ 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    _    DONM column แรกเป็นลำดับประโยค 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 po…

แยกคำนามเฉพาะภาษาไทยโดยใช้ RegexpParser ด้วย NLTK

เนื่องจากภาษาไทย ยังไม่มีใครทำ ne_chunk แต่เรายังสามารถแยกคำนามเฉพาะ (Proper Noun) ออกได้ด้วย part-of-speech tagger ที่มีคนทำไว้ได้ครับ โดยใช้ RegexpParser

ทดลองตัดคำภาษาไทยด้วย 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…