如何获取Synsets的所有属性?

时间:2011-07-12 04:39:01

标签: python nltk wordnet stemming

请给我示例具有synset一词的所有属性 我只知道这个属性:namelemma_namesdefinition

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

感谢

2 个答案:

答案 0 :(得分:4)

在解释器中使用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个属性。

答案 1 :(得分:2)

您可以查看WordNet词汇表中的术语 - 它们列出了很多属性。可在此处找到:WordNet Glossary

如果我理解你的问题,这样的事情也可能有效。 ' nyms'这里列出了synset可以拥有的所有属性,try-catch将处理synset没有任何属性的情况。

某些属性仅适用于lemma,而不适用于synset,因此您可以使用相同的代码,但可以使用lemmas替换synsets,以获取反义词,derivationallyRelated_forms和relatedyms等属性。

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