NLTK เป็นชุดเครื่องมือประมวลผลภาษาธรรมชาติยอดนิยมในภาษาไพทอน โดยสนับสนุน WordNet 3
อ่านเกี่ยวกับ WordNet ภาษาไทย ได้ที่ http://lexitron.nectec.or.th/2009_1/presentation/WordNet.pdf
สำหรับภาษาไทย ทาง Open Multilingual Wordnet (compling.hss.ntu.edu.sg/omw/) ได้ทำ Corpus สำหรับ NLTK ที่ใส่ภาษาไทยจาก www.asianwordnet.org มาไว้แล้ว ในชื่อ 'omw'
โดยภาษาไทยชื่อว่า 'tha'
ในการติดตั้ง Corpus ชื่อ omw ต้องใช้โค้ดไพทอนดังนี้ (ต้องการการเชื่อมต่อเครือข่ายอินเทอร์เน็ต)
import nltk
nltk.download('omw')
การนำไปใช้งานกับ WordNet ของ NLTK ทำได้โดยเติม lang='tha' ใน API ที่รองรับ
เช่น
>>> from nltk.corpus import wordnet as wn
>>> wn.synsets('ศูนย์',lang='tha')
[Synset('zero.s.01'), Synset('zero.s.03'), Synset('center.n.03'), Synset('zero.a.04'), Synset('zero.n.04'), Synset('zero.n.03'), Synset('zero.n.02')]
>>> wn.synsets('0')[0].lemma_names('tha')
['๐', 'ศูนย์', 'ไข่เป็ด', 'เลขศูนย์', '0']
อ่านเอกสารการใช้งาน NLTK WordNet ได้ที่ www.nltk.org/howto/wordnet.html
เพื่อให้ง่ายต่อการใช้งาน ผมจึงเขียนโมดูลมาช่วยเหลือ WordNet ภาษาไทย และ โมดูลตัวนี้เตรียมเอาไปใส่ใน PyThaiNLP 1.4 ในอนาคต
ตัวอย่างการใช้งาน
a=thaiwordnet()
print(a.synsets('หนึ่ง'))
print(a.synsets('หนึ่ง')[0].lemma_names('tha'))
print(a.synset('one.s.05'))
print(a.langs())
print(a.synset('spy.n.01').lemmas())
print(a.synset('spy.n.01').lemma_names('tha'))
w1 = a.synset('ship.n.01')
w2 = a.synset('boat.n.01')
print(w1.wup_similarity(w2))
ผลลัพธ์
[Synset('one.s.05'), Synset('one.s.04'), Synset('one.s.01'), Synset('one.n.01')] [] Synset('one.s.05') ['eng', 'als', 'arb', 'bul', 'cat', 'cmn', 'dan', 'ell', 'eus', 'fas', 'fin', 'fra', 'glg', 'heb', 'hrv', 'ind', 'ita', 'jpn', 'nno', 'nob', 'pol', 'por', 'qcn', 'slv', 'spa', 'swe', 'tha', 'zsm'] [Lemma('spy.n.01.spy'), Lemma('spy.n.01.undercover_agent')] ['สปาย', 'สายลับ'] 0.9090909090909091
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ
0 ความคิดเห็น:
แสดงความคิดเห็น
แสดงความคิดเห็นได้ครับ :)