Подтвердить что ты не робот

Как получить синонимы из nltk WordNet Python

WordNet замечательно, но мне сложно получить синонимы в nltk. Если вы ищете аналогичное слово "small", например здесь, он отображает все синонимы.

В принципе, мне просто нужно знать следующее: wn.synsets('word')[i].option() Где вариант может быть гиперним и антонимы, но каков вариант получения синонимов?

4b9b3361

Ответ 1

Если вы хотите использовать синонимы в synset (иначе называемые леммы, составляющие набор), вы можете получить их с помощью lemma_names():

>>> 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']    
...

Ответ 2

Вы можете использовать wordnet.synset и леммы, чтобы получить все синонимы:

пример:

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]))

Демо:

>>> 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'])

Ответ 3

У вас уже есть синонимы. Это то, что a Synset.

>>> 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')]

Это тот же список записей верхнего уровня, которые вам дал веб-интерфейс.

Если вам также нужен список "похожих на", это не то же самое, что синонимы. Для этого вы вызываете similar_tos() для каждого Synset.

Итак, чтобы показать ту же информацию, что и сайт, начните с чего-то вроде этого:

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

Конечно, веб-сайт также печатает часть речи (sim.pos), список лемм (sim.lemma_names), определение (sim.definition) и примеры (sim.examples) для каждой синхронизации на обоих уровнях. и он группирует их по частям речи, и он добавляет ссылки на другие вещи, за которыми вы можете следовать, и так далее. Но этого должно быть достаточно, чтобы вы начали.

Ответ 4

  Простейшая программа для печати синонимов заданного слова

from nltk.corpus import wordnet

for syn in wordnet.synsets("good"):
    for name in syn.lemma_names():
        print(name)

Ответ 5

Это сработало для меня

wordnet.synsets('change')[0].hypernyms()[0].lemma_names()