🧤Thai Natural Language Processing with Python

หลายคนคงเคยได้ยินการนำ Machine Learning มาใช้ในการทำ Text Analysis, Text Mining และ Text Analytics ซึ่งจะใช้ Natural Language Processing ( NLP ) ในการเรียนรู้ภาษาของมนุษย์ มาใช้กับงานประเภท Speech-to-Text, Text-to-Speech, Speech Recognition, Text Categorization, Text Generation, Machine Translation, Question Answering นอกจากนี้ยังสามารถนำมาใช้ในการวิเคราะห์อารมณ์ Text Sentiment ได้อีกด้วย

Thai NLP

Corpus ( corpus )

เป็นฐานข้อมูลภาษาไทยที่มีการแยกเป็นหมวดหมู่ไว้ โดยจะทำการดาวน์โหลด Corpus ที่พร้อมใช้งานแล้ว ซึ่งเราสามารถทำการเรียกใช้งานพร้อมทั้ง Return ค่าในลักษณะของ frozenset

Soundex ( soundex )

เป็นวิธีการที่ใช้ในการทำ Word Similarity Matching สำหรับหาคำที่ออกเสียงคล้ายกันระหว่างคำ 2 คำด้วย Soundex Algorithm จากเสียงพูดของมนุษย์ Phonetic Type 6 แบบ ซึ่งเป็นส่วนหนึ่งของการทำ Text Analysis

Spelling ( spell )

เป็นวิธีการที่ใช้ในการทำ Spelling Correction สำหรับตรวจสอบคำสะกดในภาษาไทย โดยมีความแม่นยำ Accuracy อยู่ที่ 80-90 และมีความเร็วในการประมวลผลอยู่ที่ 10 Word / Second

Summarization ( summarize )

เป็นวิธีการที่ใช้ในการทำ Text Summarization สำหรับนับจำนวนคำ โดยทำการแปลงข้อความที่อยู่ในลักษณะ Paragraph ให้อยูในลักษณะ Sentence แล้วใช้วิธีการตัดคำ Word Tokenization เพื่อทำการหา Frequency ของ Word

Part-of-Speech ( tag )

เป็นวิธีการที่ใช้ในการทำ POS Tagging สำหรับกำหนดประเภทของคำใน Sentence ในลักษณะของ Word Class หรือ Lexical Category โดยสามารถนำไปใช้ในการหา Custom Keyword ของ Sentence ซึ่งประกอบไปด้วย Engine ได้แก่ perceptron ( default ), unigram และ artagger

Tokenization ( tokenize )

เป็นวิธีการที่ใช้ในการทำ Word Tokenization สำหรับการตัดคำจาก Sentence ซึ่งประกอบไปด้วย Engine ได้แก่ newmm ( default ), longest, multi_cut, pyicu, deepcut, tcc และ etcc

Transliteration ( transliterate )

เป็นวิธีการที่ใช้ในการทำ Romanization, Transliteration, and Transcription ถอดเสียงภาษาไทยเป็นตัวอักษรละติน ซึ่งประกอบไปด้วย Engine ได้แก่ royin ( default ) และ thai2rom

ULMFit ( ulmfit )

เป็นวิธีการที่ใช้ในการทำ Transfer Learning สำหรับหาค่าเฉลี่ยของ Vocab ที่ไม่ได้อยู่ใน Pretrained Vocab ด้วยเทคนิค Universal Language Model Fine-tuning for Text Classification ซึ่งจะช่วยลดความผิดพลาดได้ถึง 18-24%

Word Vector ( word_vector )

เป็นวิธีการที่ใช้ในการทำ Word Embedding แปลงข้อความเป็นตัวเลขในลักษณะของ Vector สำหรับหาคำที่มีความสัมพันธ์คล้ายกันระหว่างคำ 2 คำด้วยการ Multiplication Combination Objective ซึ่งได้มาจากผลคูณด้วยวิธี Omer Levy & Yoav Goldberg ซึ่งจะได้ List of Word ที่แบ่ง Label ออกเป็น Positive และ Negative โดยสามารถนำไปประยุกต์ใช้ในการหาว่าคำใดไม่เข้าพวก

Tokenization Engine

Get Started

  • ทำการสร้าง Virtual Environment

C:\>
mkvirtualenv thai-nlp
C:\>
workon thai-nlp
  • ทำการติดตั้ง Package

(thai-nlp) C:\>
pip install pythainlp[full]
  • ทำการสร้างไฟล์ thai_nlp.py

thai_nlp.py
from pythainlp.tokenize import word_tokenize

text = "สถาบันบัณฑิตพัฒนบริศาสตร์"
print(word_tokenize(text, engine="newmm")) #['สถาบันบัณฑิตพัฒนบริหารศาสตร์']
print(word_tokenize(text, engine="icu")) #['สถาบัน', 'บัณฑิต', 'พัฒนบริหารศาสตร์']
  • ทำการรัน thai_nlp.py

python thai_nlp.py
  • จะแสดงผลลัพธ์ของการตัดคำ Word Tokenization

['สถาบันบัณฑิตพัฒนบริหารศาสตร์']
['สถาบัน', 'บัณฑิต', 'พัฒนบริหารศาสตร์']

อ่านเพิ่มเติม : https://bit.ly/2mQIeou, https://bit.ly/2nJyP2h, https://bit.ly/2pf9UnN, https://bit.ly/2mQqr0y

Last updated

Was this helpful?