Skip to main content
0
Programming LanguagePython

มาทำความรู้จักกับ PyThaiNLP

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

Sirasit Boonklang

Author Sirasit Boonklang

More posts by Sirasit Boonklang
Close Menu

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

    ประเภทของคุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้
    รายละเอียดคุกกี้

  • คุกกี้สำหรับการติดตามทางการตลาด

    ประเภทของคุกกี้ที่มีความจำเป็นในการใช้งานเพื่อการวิเคราะห์ และ นำเสนอโปรโมชัน สินค้า รวมถึงหลักสูตรฟรี และ สิทธิพิเศษต่าง ๆ คุณสามารถเลือกปิดคุกกี้ประเภทนี้ได้โดยไม่ส่งผลต่อการทำงานหลัก เว้นแต่การนำเสนอโปรโมชันที่อาจไม่ตรงกับความต้องการ
    รายละเอียดคุกกี้

บันทึกการตั้งค่า