Wordnet同义词未返回所有值nltk

2 投票
1 回答
743 浏览
提问于 2025-04-18 03:26

我正在尝试使用nltk的wordnet来获取所有的同义词或相似词,但它没有返回结果。

我做了以下操作:

>>> from nltk.corpus import wordnet as wn
>>> wn.synsets('swap')
[Synset('barter.n.01'), Synset('trade.v.04'), Synset('swap.v.02')]

我还尝试了(从一个StackOverflow页面上找到的):

>>> for ss in wn.synsets('swap'):
    for sim in ss.similar_tos():
        print('     {}'.format(sim))

但是我没有得到所有的同义词。我不想把同义词添加到wordnet中。
我希望它能返回像exchange、interchange、substitute等词。

该怎么做呢?

谢谢

Abhi

1 个回答

1

要使用 wordnet 获取同义词,你只需要这样做:

>>> from nltk.corpus import wordnet as wn
>>> for synset in wn.synsets('swap'):
    for lemma in synset.lemmas():
        print lemma.name(),

barter swap swop trade trade swap swop switch swap  # note the overlap between the synsets

为了得到你提到的一些词,你可能还需要包含上位词:

>>> for synset in wn.synsets('swap'):
    for hypernym in synset.hypernyms():
        for ss in hypernym.lemmas():  # now you need to iterate through each synset returned by synset.hypernyms()
            print ss.name(),

exchange interchange exchange change interchange travel go move locomote  # again, some overlap

撰写回答