2013-03-11 129 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