2011-03-30 17 views
6

में वर्डनेट चुनिंदा प्रतिबंध एनएलटीके के माध्यम से सिन्ससेट से वर्डनेट चयन संबंधी प्रतिबंधों (जैसे + एनिमेट, + मानव, आदि) को कैप्चर करने का कोई तरीका है? या क्या synset के बारे में अर्थपूर्ण जानकारी प्रदान करने का कोई अन्य तरीका है? निकटतम मैं इसे प्राप्त कर सकता था hypernym संबंध थे।एनएलटीके

उत्तर

4

यह क्या अपने "selectional प्रतिबंध" है या मैं क्योंकि क्लासिक अर्थ विज्ञान में अर्थ सुविधाओं यह कहेंगे, पर निर्भर करता है, वहाँ concepts की दुनिया से मौजूद है और अवधारणाओं के बीच तुलना करने के लिए हम

  • भेदभाव खोजने के लिए सुविधाओं और
  • समानता सुविधाओं (अवधारणाओं कि एक दूसरे से उन्हें अलग करने के लिए उपयोग किया जाता है यानी सुविधाओं) (समान अवधारणाओं की यानी सुविधाओं और जरूरत पर प्रकाश डाला गया उनमें अंतर करने)

उदाहरण के लिए:

Man is [+HUMAN], [+MALE], [+ADULT] 
Woman is [+HUMAN], [-MALE], [+ADULT] 

[+HUMAN] and [+ADULT] = similarity features 
[+-MALE] is the discrimating features 

पारंपरिक अर्थ विज्ञान की आम समस्या है और लागू करने के कम्प्यूटेशनल अर्थ विज्ञान में इस सिद्धांत

का सवाल यह है कि "वहाँ सुविधाओं है कि हम उपयोग कर सकते हैं की एक विशिष्ट सूची है किसी भी

"यदि हां, तो इस सूची में क्या विशेषताएं हैं?" अवधारणाओं की तुलना करने के लिए? "

(अधिक जानकारी के लिए www.acl.ldc.upenn.edu/E/E91/E91-1034.pdf देखें)

WordNet करने के लिए वापस हो रही है, मैं हल करने 2 तरीकों का सुझाव कर सकते हैं " चयन प्रतिबंध "

पहला, भेदभाव सुविधाओं के लिए हाइपरनेम की जांच करें, लेकिन पहले आपको यह तय करना होगा कि भेदभावपूर्ण विशेषताएं क्या हैं। मनुष्यों से किसी जानवर को अलग करने के लिए, भेदभाव सुविधाओं को [+ -human] और [+ -animal] के रूप में लें।

from nltk.corpus import wordnet as wn 

# Concepts to compare 
dog_sense = wn.synsets('dog')[0] # It's http://goo.gl/b9sg9X 
jb_sense = wn.synsets('James_Baldwin')[0] # It's http://goo.gl/CQQIG9 

# To access the hypernym_paths()[0] 
# It's weird for that hypernym_paths gives a list of list rather than a list, nevertheless it works. 
dog_hypernyms = dog_sense.hypernym_paths()[0] 
jb_hypernyms = jb_sense.hypernym_paths()[0] 


# Discriminating features in terms of concepts in WordNet 
human = wn.synset('person.n.01') # i.e. [+human] 
animal = wn.synset('animal.n.01') # i.e. [+animal] 

try: 
    assert human in jb_hypernyms and animal not in jb_hypernyms 
    print "James Baldwin is human" 
except: 
    print "James Baldwin is not human" 

try: 
    assert human in dog_hypernyms and animal not in dog_hypernyms 
    print "Dog is an animal" 
except: 
    print "Dog is not an animal" 

दूसरा, @Jacob के रूप में समानता उपायों के लिए चेक का सुझाव दिया था।

dog_sense = wn.synsets('dog')[0] # It's http://goo.gl/b9sg9X 
jb_sense = wn.synsets('James_Baldwin')[0] # It's http://goo.gl/CQQIG9 

# Features to check against whether the 'dubious' concept is a human or an animal 
human = wn.synset('person.n.01') # i.e. [+human] 
animal = wn.synset('animal.n.01') # i.e. [+animal] 

if dog_sense.wup_similarity(animal) > dog_sense.wup_similarity(human): 
    print "Dog is more of an animal than human" 
elif dog_sense.wup_similarity(animal) < dog_sense.wup_similarity(human): 
    print "Dog is more of a human than animal" 
+0

पूरी तरह से उत्तर के लिए धन्यवाद। मुझे कुछ समय पहले एहसास हुआ कि आपके द्वारा उल्लिखित कारणों से मुझे वर्डनेट में समानता/भेदभाव करने वाली विशेषताओं को नहीं मिला। – erickrf

0

आप हस्तनिर्मित synsets के साथ कुछ समानता कार्यों का उपयोग करने का प्रयास कर सकते हैं, और फ़िल्टर करने के लिए इसका उपयोग कर सकते हैं। लेकिन यह अनिवार्य रूप से हाइपरनेम पेड़ का पालन करने जैसा ही है - afaik सभी वर्डनेट समानता कार्य उनकी गणना में हाइपरनेम दूरी का उपयोग करते हैं। साथ ही, एक synset के कई वैकल्पिक गुण हैं जो खोज के लायक हो सकते हैं, लेकिन उनकी उपस्थिति बहुत असंगत हो सकती है।

संबंधित मुद्दे