ก่อนจะเข้าเนื้อหาต้องขอขอบคุณทางทีมงานที่พัฒนา 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/