11 กรกฎาคม 2559

Published กรกฎาคม 11, 2559 by with 0 comment

ทำ NLP ในภาษา Python : Postaggers ภาษาไทย

สวัสดีผู้อ่านทุกท่านครับ ช่วงนี้ผมกำลังพัฒนา PyThaiNLP ผมจึงได้สืบค้นหาคลังข้อมูลชนิดของคำในภาษาไทยและผมค้นเจอ Orchid Corpus ซึ่งเป็นคลังบทความ การกำกับประโยค และชนิดของคำในภาษาไทย เป็นไฟล์ดิบ

ปัจจุบันนี้สามารถโหลด Orchid Corpus ได้จาก http://www.nectec.or.th/corpus/ อยู่ในคลังข้อความไทย-อังกฤษ ผมเลือกใช้ orchid97.crp.utf ที่อยู่ในไฟล์ orchid_corpus.zip ครับ
คลังข้อความไทย-อังกฤษ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-ไม่ใช้เพื่อการค้า-อนุญาตแบบเดียวกัน 3.0 ประเทศไทย.

อ่านรายละเอียดได้ที่ https://web.archive.org/web/20080214072154/www.links.nectec.or.th/orchid/corpus/Pos.html

ผมเลยเขียนโค้ด Python ดึงเฉพาะส่วนที่เป็นข้อมูลชนิดของคำในภาษาไทยไปเก็บใน dict แล้วบันทึกลงไฟล์ pickle ของ Python ไว้เรียกใช้งานต่อไป

ภายในไฟล์ orchid97.crp.utf มีรูปแบบข้อมูลชนิดของคำดังนี้
เล่ม/CNIT

หน้า / คือ คำ
และหลัง / คือชนิดของคำ สามารถใช้ split() แยกออกเป็น list และจับลง dict ได้ แต่ในไฟล์มีอย่างอื่นที่ไม่ใช่ข้อมูลชนิดของคำอยู่ด้วย เช่น
สาร//
สาร/NCMN

เราต้องการแค่บรรทัดที่มี / อย่างเดียว จึงต้องใช้ re เข้ามาหาจำนวน / หากเกิน 1 ตัว หรือไม่มี ให้ข้ามไปเลย

โค้ดดึงข้อมูลชนิดคำใน orchid corpus แล้วจับลงไฟล์ pickle

เมื่อเราได้ไฟล์ thaipos.pickle เราสามารถนำมาใช้งานกับ NLTK ได้โดยใช้คำสั่งตามโค้ดต่อไปนี้
ผลลัพธ์
[('คุณ', 'PPRS'), ('กำลัง', 'XVBM'), ('ประชุม', 'VACT')]

เข้าไปช่วยกันพัฒนา PyThaiNLP ได้ที่ https://github.com/wannaphong/pythainlp ครับ
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)