Interactive online version: Binder badge Google Colab badge

ตัดคำภาษาไทยด้วย PyThaiNLP

PyThaiNLP รองรับการตัดคำทั้งแบบใช้พจนานุกรม และ deep learning โดยค่าเริ่มต้นของ PyThaiNLP ทำงานโดยใช้พจนานุกรมตัดคำด้วยตัวตัดคำที่ชื่อว่า newmm

[ ]:
!pip install -q pythainlp
[1]:
from pythainlp.tokenize import word_tokenize
[2]:
text = "ก็จะรู้ความชั่วร้ายที่ทำไว้     และคงจะไม่ยอมให้ทำนาบนหลังคน "
[5]:
print("ค่าเริ่มต้น (newmm):")
print(word_tokenize(text))
print("\nnewmm และ keep_whitespace=False:")
print(word_tokenize(text, keep_whitespace=False)) # ถ้าเป็น False จะไม่เก็บช่องว่างหลังการตัดคำไว้
ค่าเริ่มต้น (newmm):
['ก็', 'จะ', 'รู้ความ', 'ชั่วร้าย', 'ที่', 'ทำ', 'ไว้', '     ', 'และ', 'คงจะ', 'ไม่', 'ยอมให้', 'ทำนาบนหลังคน', ' ']

newmm และ keep_whitespace=False:
['ก็', 'จะ', 'รู้ความ', 'ชั่วร้าย', 'ที่', 'ทำ', 'ไว้', 'และ', 'คงจะ', 'ไม่', 'ยอมให้', 'ทำนาบนหลังคน']

นอกจากนั้นคุณสามารถเลือกตัวตัดคำอื่น ๆ ได้ เช่น longest เป็นต้น คุณสามารถอ่านตัวตัดคำที่รองรับได้จากเอกสาร API ของ PyThaiNLP ตามรุ่นของ PyThaiNLP ที่คุณเรียกใช้งาน ได้ที่ https://pythainlp.github.io/docs/

[6]:
from pythainlp.tokenize import word_tokenize

text = "กฎหมายแรงงานฉบับปรับปรุงใหม่ประกาศใช้แล้ว"

print("newmm  :", word_tokenize(text))  # default engine is "newmm"
print("longest:", word_tokenize(text, engine="longest"))
newmm  : ['กฎหมายแรงงาน', 'ฉบับ', 'ปรับปรุง', 'ใหม่', 'ประกาศ', 'ใช้แล้ว']
longest: ['กฎหมายแรงงาน', 'ฉบับ', 'ปรับปรุง', 'ใหม่', 'ประกาศใช้', 'แล้ว']

ปรับแต่งพจนานุกรมตัดคำภาษาไทยใน PyThaiNLP

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

[13]:
from pythainlp.tokenize import Tokenizer

text = "กฎหมายแรงงานฉบับปรับปรุงใหม่ประกาศใช้แล้ว พายไทยก็พร้อมปรับปรุง"

words = ["แรงงาน"]  # รายการคำศัพท์ ให้มีเพียงคำเดียว
custom_tokenizer = Tokenizer(words)
print("newmm (custom dictionary):", custom_tokenizer.word_tokenize(text))
newmm (custom dictionary): ['กฎหมาย', 'แรงงาน', 'ฉบับปรับปรุงใหม่ประกาศใช้แล้ว', ' ', 'พายไทยก็พร้อมปรับปรุง']

เรียกใช้พจนานุกรมของ PyThaiNLP

[14]:
from pythainlp.corpus import thai_words
[16]:
list_words = list(thai_words())
custom_tokenizer = Tokenizer(list_words)
print("newmm :", custom_tokenizer.word_tokenize(text))
newmm : ['กฎหมายแรงงาน', 'ฉบับ', 'ปรับปรุง', 'ใหม่', 'ประกาศ', 'ใช้แล้ว', ' ', 'พาย', 'ไทย', 'ก็', 'พร้อม', 'ปรับปรุง']
[19]:
list_words = list(thai_words())
list_words.append("พายไทย")  # เพิ่ม "พายไทย"
list_words.remove("ใช้แล้ว")  # ลบ "ใช้แล้ว"
custom_tokenizer = Tokenizer(list_words)
print("newmm  (custom dictionary):", custom_tokenizer.word_tokenize(text))
newmm  (custom dictionary): ['กฎหมายแรงงาน', 'ฉบับ', 'ปรับปรุง', 'ใหม่', 'ประกาศใช้', 'แล้ว', ' ', 'พายไทย', 'ก็', 'พร้อม', 'ปรับปรุง']
[20]:
# more
# WIP
[ ]: