NLTK仅搜索名词同义词集合

1 投票
3 回答
2910 浏览
提问于 2025-04-17 19:27

这是我正在写的一个函数,用来检查一组名词中是否存在上位词和下位词。

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

我该如何检查只有名词的同义词集合中上位词和下位词的长度呢?比如:

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

3 个回答

-1

另一种方法是使用WordNet和列表推导

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

简单来说,

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

你也可以试试这个

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

这个只会返回名词,如果你想要动词的话,应该使用 pos='v'

撰写回答