How to get synonyms from nltk WordNet Python
WordNet很棒,但在NLTK中我很难找到同义词。如果您搜索类似的"small"一词(如这里),它将显示所有同义词。
基本上我只需要知道以下几点:
如果您想在synset中使用同义词(也就是组成集合的引理),可以使用
1 2 3 4 5 6 7 8 9 10 11 | >>> for ss in wn.synsets('small'): >>> print(ss.name(), ss.lemma_names()) small.n.01 ['small'] small.n.02 ['small'] small.a.01 ['small', 'little'] minor.s.10 ['minor', 'modest', 'small', 'small-scale', 'pocket-size', 'pocket-sized'] little.s.03 ['little', 'small'] small.s.04 ['small'] humble.s.01 ['humble', 'low', 'lowly', 'modest', 'small'] ... |
您可以使用
例子:
1 2 3 4 5 | from itertools import chain from nltk.corpus import wordnet synonyms = wordnet.synsets(text) lemmas = set(chain.from_iterable([word.lemma_names() for word in synonyms])) |
。
演示:
1 2 3 | >>> synonyms = wordnet.synsets('change') >>> set(chain.from_iterable([word.lemma_names() for word in synonyms])) set([u'interchange', u'convert', u'variety', u'vary', u'exchange', u'modify', u'alteration', u'switch', u'commute', u'shift', u'modification', u'deepen', u'transfer', u'alter', u'change']) |
你已经有了同义词。这就是
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | >>> wn.synsets('small') [Synset('small.n.01'), Synset('small.n.02'), Synset('small.a.01'), Synset('minor.s.10'), Synset('little.s.03'), Synset('small.s.04'), Synset('humble.s.01'), Synset('little.s.07'), Synset('little.s.05'), Synset('small.s.08'), Synset('modest.s.02'), Synset('belittled.s.01'), Synset('small.r.01')] |
这与Web界面提供的顶级条目列表相同。
如果你还想要"相似"的列表,那和同义词就不一样了。为此,您在每个
因此,要显示与网站相同的信息,请从以下内容开始:
1 2 3 4 | for ss in wn.synsets('small'): print(ss) for sim in ss.similar_tos(): print(' {}'.format(sim)) |
号
当然,该网站还为两个级别的每个合成集打印了词性部分(
Simplest program to print the synonyms of a given word
号
1 2 3 4 5 | from nltk.corpus import wordnet for syn in wordnet.synsets("good"): for name in syn.lemma_names(): print(name) |
。
这对我有用
埃多克斯1〔9〕