
ก่อนจะเข้าเนื้อหาต้องขอขอบคุณทางทีมงานที่พัฒนา PyThaiNLP ไลบรารีเจ๋ง ๆ นี้ขึ้นมานะครับ ซึ่งเป็นไลบรารีที่มีประโยชน์มากในวงการเทคโนโลยีที่มีการใช้ภาษาไทยในการวิเคราะห์หรือประมวลผลข้อมูล ซึ่งไลบรารีนี้จะเจ๋งขนาดไหน ทำอะไรได้บ้างเราจะมาหาคำตอบกันในบทความนี้ได้เลยครับผม
PyThaiNLP คืออะไร ?!
PyThaiNLP คือไลบรารี Python สำหรับงานด้านการประมวลผลข้อมูลภาษาไทย
พัฒนาขึ้นมาโดยคนไทย มีฟังก์ชันที่มีประโยชน์มากมายสำหรับการประมวลผลภาษาไทย
สามารถดาวน์โหลดได้ที่ https://pypi.org/project/pythainlp/
ขอสั้น ๆ กับ NLP ?!
NLP หรือ Natural Language Processing แปลเป็นไทยก็คือการประมวลผลภาษาธรรมชาติ เป็นวิธีการที่ทำให้คอมพิวเตอร์สามารถเข้าใจคำ ประโยค ข้อความภาษาที่มนุษย์ใช้สื่อสาร
NLP เอาไปใช้ทำอะไรได้บ้าง ?!
- โปรแกรมแปลภาษา เช่น Google Translate, Bing Translate
- ทำให้แชทบอทมีความฉลาด เข้าใจข้อความของเราได้ยิ่งขึ้น
- สร้างเป็นผู้ช่วยเสียงคล้าย ๆ แบบ Siri, Google Assistant หรือ Cortana
- วิเคราะห์ข้อความบนโซเชียลมีเดีย
- คัดแยกอีเมลล์ที่มีเนื้อหาสแปม หรือ คัดแยกประเภทบทความ
- ตัวตรวจสอบไวยากรณ์ในประโยค
- การนำเสนอโฆษณาตามเป้าหมาย
- การวิเคราะห์ข้อความจากแบบสำรวจ
💻 เริ่มต้นใช้งาน PyThaiNLP
1. ไปยังตัวอย่าง Google Colab ที่ผู้พัฒานาได้ทำไว้ pythainlp-get-started.ipynb – Colaboratory (google.com) แล้วคลิก Copy to Drive

2. รอจนกว่า Colab จะสร้างไฟล์ Python Notebook ที่มีชื่อนำหน้าว่า Copy of เสร็จแล้วทำการคลิกปุ่ม Connect เพื่อเชื่อมต่อ runtime

3. ในเซลล์แรกให้ทำการลบเครื่องหมาย # หน้าคำสั่ง !pip install epitran และ !pip install pythainlp ออกแล้วทำการรันโค้ดในเซลล์นั้นโดยการกด shift + enter โปรแกรมจะทำการดาวน์โหลดและติดตั้งไลบรารี

4. ทำการรันคำสั่งเซลล์ถัดไป โดยการกด shift + enter เหมือนเดิม

ทีนี้เราก็พร้อมจะลองใช้งาน PyThaiNLP แล้ว สามารถทดลองแก้ไขและดูผลลัพธ์การทำงานของแต่ละคำสั่งได้ตามหัวข้อด้านล่างเลยครับผม 👇
💻 แล้วใน PyThaiNLP มีอะไรให้ใช้บ้าง ?!
(ส่วนของโค้ดสามารถเข้าไปที่ลิงก์นี้ได้เลยนะครับ pythainlp-get-started.ipynb – Colaboratory (google.com) ) มีชุดอักขระภาษาไทยที่พร้อมใช้งาน (เช่น พยัญชนะไทย สระ วรรณยุกต์)
pythainlp.thai_characters#output: 'กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรลวศษสหฬอฮฤฦะัาำิีึืุูเแโใไๅํ็่้๊๋ฯฺๆ์ํ๎๏๚๛๐๑๒๓๔๕๖๗๘๙฿'สามารถใช้ตรวจสอบว่าในข้อความ (String) เป็นภาษาไทยหรือไม่
import pythainlp.util
print(pythainlp.util.isthai("ร"))
print(pythainlp.util.isthai("โรงเรียน"))
print(pythainlp.util.isthai("school"))
print(pythainlp.util.isthai("โรงเรียนคือสถานที่สำหรับฝึกสอนนักเรียนภายใต้การดูแลของครูหรืออาจารย์"))#output:
True
True
False
Trueใช้ดูได้ว่ามีตัวอักษรไทยในประโยคกี่เปอร์เซ็นต์
pythainlp.util.countthai("Natural Language Processing หรือ การประมวลผลภาษาธรรมชาติ")#output: 51.92307692307693สามารถเรียงคำหรือประโยคตามพจนานุกรมไทยได้
from pythainlp.util import collate
thai_words = ["นก", "ไก่", "หมู", "แมว", "งู"]
collate(thai_words)#output: ['ไก่', 'งู', 'นก', 'แมว', 'หมู']collate(thai_words, reverse=True)#output: ['หมู', 'แมว', 'นก', 'งู', 'ไก่']สามารถรับชื่อวันและเดือนไทยกับพุทธศักราช (พ.ศ.)
import datetime
from pythainlp.util import thai_strftime
fmt = "%Aที่ %-d %B พ.ศ. %Y เวลา %H:%M น. (%a %d-%b-%y)"
date = datetime.datetime(2021, 9, 2, 2, 30)
thai_strftime(date, fmt)#output: วันพฤหัสบดีที่ 2 กันยายน พ.ศ. 2564 เวลา 02:30 น. (พฤ 02-ก.ย.-64)สามารถเปลี่ยนเวลาในรูปแบบตัวเลขเป็นข้อความภาษาไทยได้
from pythainlp.util import thai_time
thai_time("21:30:29")#output: 'ยี่สิบเอ็ดนาฬิกาสามสิบนาทียี่สิบเก้าวินาที'สามารถเลือกวิธีการสะกดคำได้โดยใช้พารามิเตอร์ fmt อาจเป็น 24 ชม. 6 ชม.
thai_time("21:30:29", fmt="6h")#output: 'สามทุ่มสามสิบนาทียี่สิบเก้าวินาที'สามารถตัดคำประโยค คำ และคำย่อยได้
from pythainlp import sent_tokenize
text = ("การประมวลผลภาษาธรรมชาติ เป็นวิทยาการแขนงหนึ่งในหมวดหมู่ของเทคโนโลยีปัญญาประดิษฐ์")
print("default (crfcut):")
print(sent_tokenize(text))
print("\nwhitespace+newline:")
print(sent_tokenize(text, engine="whitespace+newline"))#output: default (crfcut):
['การประมวลผลภาษาธรรมชาติ เป็นวิทยาการแขนงหนึ่งในหมวดหมู่ของเทคโนโลยีปัญญาประดิษฐ์']
whitespace+newline:
['การประมวลผลภาษาธรรมชาติ', 'เป็นวิทยาการแขนงหนึ่งในหมวดหมู่ของเทคโนโลยีปัญญาประดิษฐ์']สามารถแบ่งส่วนของ ประโยค คำ และคำย่อยได้
from pythainlp.tokenize.multi_cut import find_all_segment, mmcut, segment
find_all_segment("ฉันชอบไปเที่ยวน้ำตกที่นครศรีธรรมราช")#output:['ฉัน|ชอบ|ไป|เที่ยว|น้ำ|ตก|ที่|นคร|ศรี|ธร|รม|ราช|',
'ฉัน|ชอบ|ไปเที่ยว|น้ำ|ตก|ที่|นคร|ศรี|ธร|รม|ราช|',
'ฉัน|ชอบ|ไป|เที่ยว|น้ำตก|ที่|นคร|ศรี|ธร|รม|ราช|',
'ฉัน|ชอบ|ไปเที่ยว|น้ำตก|ที่|นคร|ศรี|ธร|รม|ราช|',
'ฉัน|ชอบ|ไป|เที่ยว|น้ำ|ตก|ที่|นคร|ศรี|ธรรม|ราช|',
'ฉัน|ชอบ|ไปเที่ยว|น้ำ|ตก|ที่|นคร|ศรี|ธรรม|ราช|',
'ฉัน|ชอบ|ไป|เที่ยว|น้ำตก|ที่|นคร|ศรี|ธรรม|ราช|',
'ฉัน|ชอบ|ไปเที่ยว|น้ำตก|ที่|นคร|ศรี|ธรรม|ราช|',
'ฉัน|ชอบ|ไป|เที่ยว|น้ำ|ตก|ที่|นครศรีธรรมราช|',
'ฉัน|ชอบ|ไปเที่ยว|น้ำ|ตก|ที่|นครศรีธรรมราช|',
'ฉัน|ชอบ|ไป|เที่ยว|น้ำตก|ที่|นครศรีธรรมราช|',
'ฉัน|ชอบ|ไปเที่ยว|น้ำตก|ที่|นครศรีธรรมราช|']เปลี่ยนเลขในข้อความให้เป็นเลขไทยได้ หรือจะเปลี่ยนจากเลขไทยเป็นเลขอาราบิกก็ยังได้
from pythainlp.util import arabic_digit_to_thai_digit, thai_digit_to_arabic_digit, digit_to_text
text = "เหตุด่วนเหตุร้ายติดต่อ 191 ๑๙๑ "
arabic_digit_to_thai_digit(text)#output: 'เหตุด่วนเหตุร้ายติดต่อ ๑๙๑ ๑๙๑ 'มี Soundex ที่ทำให้เทียบได้ว่าคำแต่ละคำออกเสียงเหมือนกันหรือป่าว
from pythainlp.soundex import lk82, metasound, udom83
# check equivalence
print(lk82("ศิระ") == lk82("สิระ"))
print(udom83("วรร") == udom83("วัน"))
print(metasound("นพ") == metasound("นภ"))
print(lk82("ศิระ") == lk82("สริ"))
print(udom83("วรร") == udom83("วัด"))
print(metasound("นพ") == metasound("นก"))#output:
True
True
True
False
False
Falseข้อความที่ผิด ก็สามารถแนะนำคำที่เขียนถูกให้ได้
from pythainlp import correct
correct("แอพพริเคชัน")#output: แอปพลิเคชันเปลี่ยนจากตัวเลขราคาให้เป็นข้อความภาษาไทยได้
from pythainlp.util import bahttext
bahttext(34500000000.10)#output: สามหมื่นสี่พันห้าร้อยล้านบาทสิบสตางค์สามารถเรียนรู้เพิ่มเติมเกี่ยวกับ PyThaiNLP ได้ที่ https://github.com/PyThaiNLP/pythainlp
Facebook PyThaiNLP : https://www.facebook.com/pythainlp/