2013-03-11 128 views

回答

9
from nltk.corpus import wordnet as wn 
vehicle = wn.synset('vehicle.n.01') 
typesOfVehicles = list(set([w for s in vehicle.closure(lambda s:s.hyponyms()) for w in s.lemma_names])) 

这会给你从每一个同义词集是名词的hyponym所有独特的词“车辆“(第一感)。

+0

但是,当我试图进一步缩小它,我得到这个错误 回溯(最近通话最后一个): 文件“d:\ test.py”,10号线,在 如果“汽车”中的字: TypeError:类型'Synset'的参数不可迭代 – watisit 2013-03-11 05:46:18

+0

查看我更新的答案 - 我认为这就是你想要的。 – Jared 2013-03-11 07:17:19

+0

@Jared,非常优雅的回答,但是当'Synset.closure(lambda:s.hyponyms()')进入无限循环时会出现'gotcha',请尝试'wn.synset('restrain.v.01')。 ()lambda s:s.hyponyms()' – alvas 2013-04-07 22:00:12

5
def get_hyponyms(synset): 
    hyponyms = set() 
    for hyponym in synset.hyponyms(): 
     hyponyms |= set(get_hyponyms(hyponym)) 
    return hyponyms | set(synset.hyponyms()) 
+1

这与NLTK 3.0.3非常相称,不像jared的答案(TypeError:'method'object is not iterable),谢谢! – 2015-12-02 05:03:05

相关问题