2013-03-18 2 views
1

다음은 명사 목록에서 하이퍼 및 hyponyms의 존재를 확인하기 위해 작성한 기능입니다.NLTK 전용 명사 synsets

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 

하이퍼/하이퍼 단어의 길이를 명사 인 synset에 대해서만 확인하려면 어떻게합니까? 예.

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

답변

1

,

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

그것은 단지, 명사를 반환합니다 당신이 동사를 원하는 경우 워드 넷을 사용 pos='v'

+0

'syn.pos() =='n ''또는'syn.pos() == wn.NOUN'이어야합니다. 'pos '는 적어도 내 경우에는 함수가 될 수있다. 나는 wordnet version 3.0을 사용하고 있는데, – skyuuka

3

또한 시도 할 수 간단하게

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

다른 접근 방식을 사용해야하고 리스트 이해력

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