WordNet เป็นส่วนหนึ่งของ Natural Language Toolkit ของ Python เป็นฐานข้อมูลคำศัพท์ขนาดใหญ่ของคำนาม คำคุณศัพท์ กริยาวิเศษณ์ และกริยาภาษาอังกฤษ สิ่งเหล่านี้ถูกจัดกลุ่มเป็นคำพ้องความหมายบางชุด ซึ่งเรียกว่า synsets .
ในการใช้ Wordnet ขั้นแรกเราต้องติดตั้งโมดูล NLTK จากนั้นดาวน์โหลดแพ็คเกจ WordNet
$ sudo pip3 install nltk $ python3 >>> import nltk >>>nltk.download('wordnet')
ใน wordnet มีบางกลุ่มของคำที่มีความหมายเหมือนกัน
ในตัวอย่างแรก เราจะเห็นว่า wordnet ส่งกลับความหมายและรายละเอียดอื่นๆ ของคำอย่างไร บางครั้ง หากมีตัวอย่าง ก็อาจให้ข้อมูลนั้นด้วย
โค้ดตัวอย่าง
from nltk.corpus import wordnet #Import wordnet from the NLTK synset = wordnet.synsets("Travel") print('Word and Type : ' + synset[0].name()) print('Synonym of Travel is: ' + synset[0].lemmas()[0].name()) print('The meaning of the word : ' + synset[0].definition()) print('Example of Travel : ' + str(synset[0].examples()))
ผลลัพธ์
$ python3 322a.word_info.py Word and Type : travel.n.01 Synonym of Travel is: travel The meaning of the word : the act of going from one place to another Example of Travel : ['he enjoyed selling but he hated the travel'] $
ในตัวอย่างก่อนหน้านี้ เราได้รับข้อมูลรายละเอียดเกี่ยวกับคำบางคำ ที่นี่เราจะมาดูกันว่า wordnet สามารถส่งคำพ้องความหมายและคำตรงข้ามของคำที่กำหนดได้อย่างไร
โค้ดตัวอย่าง
import nltk from nltk.corpus import wordnet #Import wordnet from the NLTK syn = list() ant = list() for synset in wordnet.synsets("Worse"): for lemma in synset.lemmas(): syn.append(lemma.name()) #add the synonyms if lemma.antonyms(): #When antonyms are available, add them into the list ant.append(lemma.antonyms()[0].name()) print('Synonyms: ' + str(syn)) print('Antonyms: ' + str(ant))
ผลลัพธ์
$ python3 322b.syn_ant.py Synonyms: ['worse', 'worse', 'worse', 'worsened', 'bad', 'bad', 'big', 'bad', 'tough', 'bad', 'spoiled', 'spoilt', 'regretful', 'sorry', 'bad', 'bad', 'uncollectible', 'bad', 'bad', 'bad', 'risky', 'high-risk', 'speculative', 'bad', 'unfit', 'unsound', 'bad', 'bad', 'bad', 'forged', 'bad', 'defective', 'worse'] Antonyms: ['better', 'better', 'good', 'unregretful'] $
NLTK wordnet มีคุณสมบัติที่ยอดเยี่ยมอีกประการหนึ่ง โดยเราสามารถตรวจสอบว่าคำสองคำเกือบเท่ากันหรือไม่ มันจะคืนค่าอัตราส่วนความคล้ายคลึงกันจากคู่ของคำ
โค้ดตัวอย่าง
import nltk from nltk.corpus import wordnet #Import wordnet from the NLTK first_word = wordnet.synset("Travel.v.01") second_word = wordnet.synset("Walk.v.01") print('Similarity: ' + str(first_word.wup_similarity(second_word))) first_word = wordnet.synset("Good.n.01") second_word = wordnet.synset("zebra.n.01") print('Similarity: ' + str(first_word.wup_similarity(second_word)))
ผลลัพธ์
$ python3 322c.compare.py Similarity: 0.6666666666666666 Similarity: 0.09090909090909091 $