2011-07-12 68 views
1

請給我我的例子,擁有所有的字 的synset屬性的我只知道這個屬性:namelemma_namesdefinition如何獲取Synsets的所有屬性?

synsetsWord = ObjWn.synsets('Book') 
     i = 0 
     for senseWord in synsetsWord: 
      synsetsWord[i] = senseWord.name 
      print 'Sense Lema Name: ' , senseWord.lemma_names 
      print 'Sense Definition : ' , senseWord.definition 
      i = i + 1 

感謝

回答

3

使用中的dir()內置函數翻譯。

下面是一個例子:

Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56) 
[GCC 4.4.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import itertools 
>>> help(itertools) 

>>> dir(itertools.chain) 
['__class__', '__delattr__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__iter__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'from_iterable', 'next'] 

可以提供任何對象dir()以獲取其屬性的list

+0

感謝您的回答 –

+0

不客氣。 – Johnsyweb

1

您可以查看WordNet詞彙表中的術語 - 它們列出了相當多的屬性。它可以在這裏找到:WordNet Glossary

如果我正確理解你的問題,這樣的事情也可以工作。 'nyms'在這裏列出synset可以具有的所有屬性,try-catch將處理synset沒有任何屬性的情況。

某些屬性只適用於引理,而不是synsets,因此您可以使用相同的代碼,但用引理句替換synsets以獲取反義詞,derivationally_related_forms和有關詞等屬性。

for synset in (wn.synsets('dog')): 
     print synset 
     nyms = ['hypernyms', 'hyponyms', 'meronyms', 'holonyms', 'part_meronyms', 'sisterm_terms', 'troponyms', 'inherited_hypernyms'] 
     for i in nyms: 
      try: 
       print getattr(synset, i)() 
      except AttributeError as e: 
       print e 
       pass