บทความ

HPLT/hplt_bert_base_th: LTG-BERT ภาษาไทย!

รูปภาพ
ปัจจุบัน แม้ว่า masked language model จะถูก LLM กลบไป แต่ฝั่ง masked language model ยังคงมีการพัฒนาต่อเนื่องอยู่ หนึ่งในนั้นคือ LTG-BERT ที่เป็น data-efficient masked language model เทรนด้วยข้อมูลจำกัด (ทดสอบด้วย British National Corpus ที่มี 100M tokens) แต่ประสิทธิภาพดีกว่า BERT ตัวหลัก ไม่จำเป็นต้องเทรนด้วยข้อมูลจำนวนมาก งานนี้ได้ตีพิมพ์ที่ EACL2023 ที่ผ่านมา อ่านได้ที่ https://aclanthology.org/2023.findings-eacl.146/ สำหรับ LTG-BERT ภาษาไทย ทาง HPLT ที่เป็นโครงการรวบรวมข้อมูลหน้าเว็บกับชุดข้อมูลของฝั่งยุโรป ได้เทรนโมเดล LTG-BERT หลายภาษาแบบ monolingual รวมถึงภาษาไทย ปล่อยออกมาเป็นสาธารณะบน HuggingFace HPLT/hplt_bert_base_th สามารถใช้งานได้ผ่าน HuggingFace อ่านรายละเอียดได้ที่ https://huggingface.co/HPLT/hplt_bert_base_th  

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

รูปภาพ
ปัจจุบันนี้กระแส  LLM กำลังมา transformer จำพวก decoder model กลายเป็นกระแสหลัก  ด้วยความสามารถหลายด้านที่มาพร้อมกับขนาดโมเดลที่ใหญ่ขึ้น  แต่ด้วยขนาดกับสถาปัตยกรรม transformer จึงต้องการ resource  ที่ค่อนข้างโหดทั้ง GPU กับ CPU รวมถึงฮาร์ดแวร์เร่งความเร็ว กับเทคนิคต่าง  ๆ ในการย่อขนาดกับเร่งความเร็วแต่แลกมาด้วยประสิทธิภาพที่ลดลงไปด้วย  ทำให้ผู้คนบางส่วนหันไปมอง ออกแบบสถาปัตยกรรมอื่น ๆ หนึ่งในนั้น คือ RWKV  ที่นำข้อดี RNN กับ transformer (parallelizable) มารวมกัน Receptance  Weighted Key Value (RWKV) เป็นโมเดลที่นำความสามารถเทรนแบบขนาน  (parallelizable) ของ transformer เมื่อตอนเทรนโมเดล  และประสิทธิภาพในการใช้งานแบบ RNN มารวมกัน อย่างที่เรารู้กันว่า RNN  ไม่สามารถเทรนแบบขนาน (parallelizable) ได้ โดย RWKV แก้ไขจุดนี้ไป  โดยมีการพัฒนามาสองปีกว่า และได้รับการตีพิมพ์ใน EMNLP 2023 แบบ findings  ซึ่งใน paper นี้เป็น RWKV-4 แต่ปัจจุบัน RWKV พัฒนามาจนถึง RWKV-6 แล้ว RWKV-6  เป็นโมเดล RWKV รุ่นที่ 6 เป็น Open source (Apache 2.0 license)  รองรับทั้งภาษาไทย ภาษาอังกฤษและอีกว่า 100+ ภาษา  ส่วนประสิ

ลองทำ Text classification สำหรับงานด้าน Quantum Natural Language Processing

รูปภาพ
จากบทความ " เขียน Quantum Machine Learning ได้ด้วย PennyLane " และอบรม Natural Language Processingand Its Relation to Quantum Computing ของดร. ปรัชญา บุญขวัญ ผมได้ไปเจอบทความ "Classifying Documents with Quantum-enhanced Transfer Learning" ของ Riccardo Di Sipio ซึ่งนำ PennyLane มาทำ Text classification ซึ่งเป็นงานด้าน Quantum Natural Language Processing ด้วย Quantum Machine Learning ผมนำโค้ดจาก https://github.com/rdisipio/qnlp ของบทความดังกล่าว มาปรับแต่งโค้ดให้รองรับภาษาไทย และทดลองด้วยจำนวน layers ที่มากขึ้นเปรียบเทียบกัน นำมาใช้ลองกับ ชุดข้อมูล truevoice-intent เปลี่ยนอะไรบ้างจากโค้ดต้นฉบับ? เปลี่ยนชุดข้อมูลมาใช้  ชุดข้อมูล truevoice-intent เปลี่ยนจาก Universal Sentence Encoder (USE) มาใช้ Multilingual Universal Sentence Encoder แทน ปรับ lr มาเป็น 0.01 เปลี่ยนจำนวนคิวบิตที่ใช้ทดสอบ  โดยทั้งหมด Train จำนวน 20 ep แบ่ง valid 0.15 และ test ด้วยชุด test ของชุดข้อมูล truevoice-intent เรามาลองทำ Text classification สำหรับงานด้าน Quantum Natural Language

Build CRF++ ใน Windows

CRF++ เป็นเครื่องมือสำหรับใช้ในงาน NLP ที่เป็นที่นิยมกัน เราสามารถ Build CRF++ ใน Windows ได้โดยใช้โค้ดจาก GitHub  : https://github.com/DjangoPeng/CRF

ทำ 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

แยกคำนามเฉพาะภาษาไทยโดยใช้ 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 (ค่