ค้นหาคำใน Wordnet
Wordnet คืออะไร?
Wordnet เป็นฐานข้อมูลคำศัพท์ภาษาอังกฤษขนาดใหญ่ซึ่งสร้างขึ้นโดย Princeton เป็นส่วนหนึ่งของคลังข้อมูล NLTK คำนามคำกริยาคำคุณศัพท์และคำวิเศษณ์ทั้งหมดถูกจัดกลุ่มเป็นชุดของ synsets นั่นคือคำพ้องความหมายทางปัญญา synsets แต่ละชุดแสดงความหมายที่แตกต่างกัน ต่อไปนี้เป็นกรณีการใช้งานบางส่วนของ Wordnet -
- สามารถใช้เพื่อค้นหาคำจำกัดความของคำ
- เราสามารถค้นหาคำพ้องความหมายและคำตรงข้ามของคำ
- สามารถสำรวจความสัมพันธ์ของคำและความคล้ายคลึงกันได้โดยใช้ Wordnet
- การเปลี่ยนความรู้สึกของคำสำหรับคำเหล่านั้นที่มีการใช้งานและคำจำกัดความที่หลากหลาย
วิธีการนำเข้า Wordnet
Wordnet สามารถนำเข้าได้โดยใช้คำสั่งต่อไปนี้ -
from nltk.corpus import wordnet
สำหรับคำสั่งที่กะทัดรัดมากขึ้นให้ใช้สิ่งต่อไปนี้ -
from nltk.corpus import wordnet as wn
อินสแตนซ์ Synset
Synset คือการจัดกลุ่มคำพ้องความหมายที่แสดงแนวคิดเดียวกัน เมื่อคุณใช้ Wordnet เพื่อค้นหาคำคุณจะได้รับรายการอินสแตนซ์ Synset
wordnet.synsets (คำ)
ในการรับรายการ Synsets เราสามารถค้นหาคำใดก็ได้ใน Wordnet โดยใช้ wordnet.synsets(word). ตัวอย่างเช่นในสูตร Python ถัดไปเราจะค้นหา Synset สำหรับ 'สุนัข' พร้อมกับคุณสมบัติและวิธีการบางอย่างของ Synset -
ตัวอย่าง
ขั้นแรกให้นำเข้า wordnet ดังนี้ -
from nltk.corpus import wordnet as wn
ตอนนี้ระบุคำที่คุณต้องการค้นหา Synset สำหรับ -
syn = wn.synsets('dog')[0]
ที่นี่เราใช้เมธอด name () เพื่อรับชื่อเฉพาะสำหรับ synset ซึ่งสามารถใช้เพื่อรับ Synset ได้โดยตรง -
syn.name()
Output:
'dog.n.01'
ต่อไปเราจะใช้วิธีการ definition () ซึ่งจะให้คำจำกัดความของคำว่า -
syn.definition()
Output:
'a member of the genus Canis (probably descended from the common wolf) that has
been domesticated by man since prehistoric times; occurs in many breeds'
อีกวิธีหนึ่งคือตัวอย่าง () ซึ่งจะให้ตัวอย่างที่เกี่ยวข้องกับคำว่า -
syn.examples()
Output:
['the dog barked all night']
ตัวอย่างการใช้งานที่สมบูรณ์
from nltk.corpus import wordnet as wn
syn = wn.synsets('dog')[0]
syn.name()
syn.definition()
syn.examples()
รับ Hypernyms
Synsets จัดอยู่ในโครงสร้างมรดกเช่นเดียวกับโครงสร้างที่ Hypernyms แสดงถึงคำที่เป็นนามธรรมมากขึ้นในขณะที่ Hyponymsแสดงถึงคำที่เฉพาะเจาะจงมากขึ้น สิ่งที่สำคัญอย่างหนึ่งคือต้นไม้นี้สามารถโยงไปถึงรูตไฮเปอร์นีม ให้เราเข้าใจแนวคิดด้วยความช่วยเหลือของตัวอย่างต่อไปนี้ -
from nltk.corpus import wordnet as wn
syn = wn.synsets('dog')[0]
syn.hypernyms()
เอาต์พุต
[Synset('canine.n.02'), Synset('domestic_animal.n.01')]
ที่นี่เราจะเห็นว่าสุนัขและสัตว์ในบ้านเป็นไฮเปอร์ไนมส์ของ 'สุนัข'
ตอนนี้เราสามารถค้นหาคำนามของ 'dog' ได้ดังนี้ -
syn.hypernyms()[0].hyponyms()
เอาต์พุต
[
Synset('bitch.n.04'),
Synset('dog.n.01'),
Synset('fox.n.01'),
Synset('hyena.n.01'),
Synset('jackal.n.01'),
Synset('wild_dog.n.01'),
Synset('wolf.n.01')
]
จากผลลัพธ์ข้างต้นเราจะเห็นว่า 'dog' เป็นเพียงหนึ่งในหลาย ๆ คำพ้องความหมายของ 'domestic_animals'
ในการค้นหารากของสิ่งเหล่านี้เราสามารถใช้คำสั่งต่อไปนี้ -
syn.root_hypernyms()
เอาต์พุต
[Synset('entity.n.01')]
จากผลลัพธ์ข้างต้นเราจะเห็นว่ามันมีเพียงรูทเดียว
ตัวอย่างการใช้งานที่สมบูรณ์
from nltk.corpus import wordnet as wn
syn = wn.synsets('dog')[0]
syn.hypernyms()
syn.hypernyms()[0].hyponyms()
syn.root_hypernyms()
เอาต์พุต
[Synset('entity.n.01')]
Lemmas ใน Wordnet
ในภาษาศาสตร์รูปแบบที่บัญญัติหรือรูปแบบทางสัณฐานวิทยาของคำเรียกว่า lemma หากต้องการค้นหาคำพ้องความหมายและคำตรงข้ามของคำเรายังสามารถค้นหาคำศัพท์ใน WordNet ให้เราดูว่า
การค้นหาคำพ้องความหมาย
โดยใช้เมธอด lemma () เราสามารถค้นหาจำนวนคำพ้องความหมายของ Synset ให้เราใช้วิธีนี้กับ synset 'dog' -
ตัวอย่าง
from nltk.corpus import wordnet as wn
syn = wn.synsets('dog')[0]
lemmas = syn.lemmas()
len(lemmas)
เอาต์พุต
3
ผลลัพธ์ด้านบนแสดงให้เห็นว่า 'dog' มีคำศัพท์สามตัว
ได้รับชื่อของ lemma ตัวแรกดังนี้ -
lemmas[0].name()
Output:
'dog'
ได้รับชื่อของ lemma ที่สองดังนี้ -
lemmas[1].name()
Output:
'domestic_dog'
ได้รับชื่อของ lemma ที่สามดังนี้ -
lemmas[2].name()
Output:
'Canis_familiaris'
จริงๆแล้ว Synset หมายถึงกลุ่มของคำศัพท์ที่มีความหมายคล้าย ๆ กันในขณะที่ lemma แสดงถึงรูปแบบคำที่แตกต่างกัน
การค้นหาคำตรงข้าม
ใน WordNet คำนามบางตัวมีคำตรงข้ามด้วย ตัวอย่างเช่นคำว่า 'good' มีคำพ้องความหมายทั้งหมด 27 คำในจำนวนนี้มีคำพ้องความหมาย 5 คำที่มีคำตรงข้าม ให้เราหาคำตรงข้าม (เมื่อคำว่า 'ดี' ใช้เป็นคำนามและเมื่อคำว่า 'ดี' ใช้เป็นคำคุณศัพท์)
ตัวอย่าง 1
from nltk.corpus import wordnet as wn
syn1 = wn.synset('good.n.02')
antonym1 = syn1.lemmas()[0].antonyms()[0]
antonym1.name()
เอาต์พุต
'evil'
antonym1.synset().definition()
เอาต์พุต
'the quality of being morally wrong in principle or practice'
ตัวอย่างข้างต้นแสดงให้เห็นว่าคำว่า 'ดี' เมื่อใช้เป็นคำนามมีคำตรงข้ามตัวแรก 'evil'
ตัวอย่าง 2
from nltk.corpus import wordnet as wn
syn2 = wn.synset('good.a.01')
antonym2 = syn2.lemmas()[0].antonyms()[0]
antonym2.name()
เอาต์พุต
'bad'
antonym2.synset().definition()
เอาต์พุต
'having undesirable or negative qualities’
ตัวอย่างข้างต้นแสดงให้เห็นว่าคำว่า 'ดี' เมื่อใช้เป็นคำคุณศัพท์มีคำตรงข้ามตัวแรก 'bad'