การประมวลผลไวยากรณ์ไม่พึ่งบริบทในภาษาไทย จากการศึกษา ของ วิรัชและคณะ (Sornlertlamvanich, V., 1995) ได้ให้รายละเอียดกฎไวยากรณ์โครงสร้างวลีภาษาไทยไว้ดังนี้
S -> NP VP VP -> V NP PP ADV VP -> V NP S1 VP -> V NP VP -> V V -> LAUX V RAUX V -> LAUX V V -> V RAUX NP -> N NUM CLAS DET NP -> N VATT CLAS DET NP -> N CLAS DET NP -> N DET NP -> N CLAS VATT NP -> NP PP NP -> NP CONJ NP PP -> PREP NP S1 -> S
โดย
- LAUX คือ กริยาช่วยที่อยู่ซ้ายมือของกริยา
- RAUX คือ กริยาช่วยที่อยู่ขวามือของกริยา
เมื่อนำกฎนี้มาใข้ใน Python โดยใช้ไลบารี NLTK
สร้างประโยค
from nltk.parse.generate import generate
for sentence in generate(thaigrammar, n=900):
print(' '.join(sentence))
ตรวจสอบไวยากรณ์
import nltk
rd_parser = nltk.RecursiveDescentParser(thaigrammar)
sent = 'หนังสือ สาม เล่ม นี้ มี ประโยชน์'.split()
for tree in rd_parser.parse(sent):
print(tree)
ผลลัพธ์
(S (NP (N หนังสือ) (NUM สาม) (CLAS เล่ม) (DET นี้)) (VP (V (V1 มี)) (NP (N ประโยชน์))))
อ้างอิง
- บุญเจริญ ศิริเนาวกุล. ปัญญาประดิษฐ์. ฉบับปรับปรุงครั้งที่ 2. กรุงเทพฯ : ท้อป, 2555.
ขอ full cite ของ (Sornlertlamvanich, V., 1995) ได้ไหมครับ
ตอบลบ