2013-03-18 81 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])