如何获取同义词集的所有属性?

2 投票
2 回答
2122 浏览
提问于 2025-04-16 21:19

请给我一个例子,包含一个词的所有 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 个回答

2

你可以查看WordNet的术语表,里面列出了很多相关的属性。你可以在这里找到:WordNet术语表

如果我理解你的问题没错,类似这样的代码也许能奏效。这里的'nyms'列出了一个同义词集合(synset)可以拥有的所有属性,而try-catch则可以处理那些没有这种属性的情况。

有些属性只适用于词元(lemmas),而不是同义词集合,所以你可以用相同的代码,只需把同义词集合换成词元,就能获取像反义词、派生相关形式和相关词这样的属性。

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
5

在解释器中使用内置的 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(),这样就能得到一个它的属性列表。

撰写回答