2013-03-18 86 views
1

这里是我写检查超和下义词从名词列表中存在的功能。NLTK只搜索名词同义集

def check_hyper_hypo(wordlist): 
    returnlist=[] 
    for word in wordlist: #by definition a base word has a word above and below heirachy 
     x = wn.synsets(word) 
     for syn in x:  
      if not(((len(syn.hypernyms()))==0)or((len(syn.hyponyms()))==0)): 
       returnlist.append(word) 
       break 
    return returnlist 

我该如何检查hyper/hyponyms的长度只适用于同义词名词? 例如

for syn in x: 
    if ".n." in syn: 
     #rest of code 

回答

1

简单,

for syn in x: 
    if syn.pos == 'n': 
     #rest of code 
+0

它应该是'syn.pos()==“n''或'syn.pos()== wn.NOUN'。 'pos'可以是一个函数,至少在我的情况下:我使用的是wordnet 3.0版本, – skyuuka 2015-01-23 01:11:38

3

您也可以尝试

wordnet.synsets(word, pos='n') 

它只会返回名词,如果你想的动词应使用共发现使用pos='v'

-1

另一种方法和列表理解

print ([len(wn.morphy(tag,wn.NOUN)) for tag in tags])