如何获取同义词集的所有属性?
请给我一个例子,包含一个词的所有 synset
属性。我只知道这些属性: name
、 lemma_names
和 definition
。
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()
,这样就能得到一个它的属性列表。