การตัดคำไทย ด้วย Python

Mister Nay
2 min readJan 28, 2018

--

ก่อนอื่น บอกก่อนว่า ตอนนี้กำลังเรียนวิชา Data science ได้มีการทำ การวิเคราะห์ รีวิว ซึ่ง จำเป็น ต้องตัดคำเพื่อ เข้าสู่กระบวนการ Machine Learning นำมาวิเคราห์ Positive และ Negative ดังนั้นจึงขอ นำการตัดคำภาษา ไทยแบบง่ายมา แชร์ ครับ

โดยเราจะใช้ Lib PyThaiNLP นะครับ

https://github.com/PyThaiNLP/pythainlp

การติดตั้ง

pip install pythainlp

รายละเอียด ของ LIB

  • ตัดคำภาษาไทย
  • ถอดเสียงภาษาไทยเป็น Latin
  • Postaggers ภาษาไทย
  • อ่านตัวเลขเป็นข้อความภาษาไทย
  • เรียงจำนวนคำของประโยค
  • แก้ไขปัญหาการพิมพ์ลืมเปลี่ยนภาษา
  • เช็คคำผิดในภาษาไทย
  • รองรับ Thai Character Clusters (TCC) และ ETCC
  • Thai WordNet
  • Stop Word ภาษาไทย
  • Meta Sound ภาษาไทย
  • Thai Soundex
  • และอื่น ๆ

มาเริ่มลองใช้กันเลย

เริ่มที่การตัดคำ

สำหรับ method การตัดคำ คือฃ

word_tokenize

โดย parameter มีใส่ 2 ตัว word_tokenize(text,engine=’ระบบตัดคำ’)

text คือ ข้อความที่ต้องการตัด

engine คือ ระบบตัดคำ มีดังนี้

  1. icu — engine ตัวดั้งเดิมของ PyThaiNLP (ความแม่นยำต่ำ) และเป็นค่าเริ่มต้น
  2. dict — เป็นการตัดคำโดยใช้พจานุกรมจาก thaiword.txt ใน corpus (ความแม่นยำปานกลาง) จะคืนค่า False หากข้อความนั้นไม่สามารถตัดคำได้
  3. longest-matching ใช้ Longest matching ในการตัดคำ
  4. mm — ใช้ Maximum Matching algorithm ในการตัดคำภาษาไทย — API ชุดเก่า
  5. newmm — ใช้ Maximum Matching algorithm ในการตัดคำภาษาไทย
  6. pylexto ใช้ LexTo ในการตัดคำ โดยเป็น Longest matching
  7. deepcut ใช้ deepcut จาก https://github.com/rkcosmos/deepcut ในการตัดคำภาษาไทย
  8. wordcutpy ใช้ wordcutpy (https://github.com/veer66/wordcutpy) ในการตัดคำ

อ่านเพิ่มเติมได้ที่: LINK

ตัวอย่างโค๊ดดิ้ง

from pythainlp import word_tokenize

text = "ทดสอบการตัดตำภาษาไทย"
proc = word_tokenize(text, engine='newmm')
print(proc)

ผลลัพท์ที่ได้

['ทดสอบ', 'การ', 'ตัด', 'ตำ', 'ภาษาไทย']

ง่ายๆใช่มั้ยครับ

มาดู stopwords ในภาษาไทยกัน ปล. คือคำที่เอาออกแล้วไม่มีผลต่อประโยค

from pythainlp.corpus import stopwords

words = stopwords.words('thai')
print(words)

ผลลัพท์ที่ได้

Credit

ขอบคุณ LIBRARY ดีๆจาก คุณวรรณพงษ์ ภัททิยไพบูลย

blogs

--

--

Responses (1)