Как получить синонимы / антонимы из NLTK WordNet в Python?
WordNet - это большая лексическая база данных английского языка. Существительные, глаголы, прилагательные и наречия сгруппированы в наборы когнитивных синонимов (синсетов), каждый из которых выражает отдельное понятие. Синсеты связаны между собой понятийно-семантическими и лексическими отношениями.
 Структура WordNet делает его полезным инструментом для компьютерной лингвистики и обработки естественного языка.
WordNet внешне напоминает тезаурус, поскольку он группирует слова вместе на основе их значений. Однако есть несколько важных отличий.
- Во-первых, WordNet связывает не только словоформы - последовательности букв, но и определенные смыслы слов. В результате слова, которые находятся в непосредственной близости друг от друга в сети, семантически устраняют неоднозначность.
 - Во-вторых, WordNet маркирует семантические отношения между словами, тогда как группировка слов в тезаурусе не следует никакому явному шаблону, кроме схожести значений.
 
# First, you're going to need to import wordnet:from nltk.corpus import wordnet # Then, we're going to use the term "program" to find synsets like so:syns = wordnet.synsets( "program" ) # An example of a synset:print (syns[ 0 ].name()) # Just the word:print (syns[ 0 ].lemmas()[ 0 ].name()) # Definition of that first synset:print (syns[ 0 ].definition()) # Examples of the word in use in sentences:print (syns[ 0 ].examples())  | 
Результат будет выглядеть так:
 plan.n.01
 строить планы
 ряд шагов, которые необходимо выполнить, или целей, которые необходимо достичь
 ['они составили план из шести шагов', 'они обсудили планы нового выпуска облигаций']
Далее, как мы можем различать синонимы и антонимы к слову? Леммы будут синонимами, а затем вы можете использовать .antonyms, чтобы найти антонимы к леммам. Таким образом, мы можем заполнить несколько списков, например:
На выходе будет два набора синонимов и антонимов.
 {'благотворно', 'просто', 'прямо', 'тщательно', 'in_force', 'хорошо', 'умелый', 'умелый', 'добротный', 'неиспорченный', 'эксперт', 'опытный', ' in_effect »,« благородный »,« адепт »,« безопасный »,« товарный »,« уважаемый »,« добротный »,« правильный »,« респектабельный »,« хороший »,« серьезный »,« спелый »,« благотворный » , 'дорогой', 'практичный', 'добродетель', 'безопасный', 'эффективный', 'неиспорченный', 'надежный', 'неразложенный', 'честный', 'полный', 'почти', 'trade_good'} { "зло", "зло", "плохо", "зло", "плохо"}
А теперь сравним индекс схожести любых двух слов.
import nltkfrom nltk.corpus import wordnet# Let's compare the noun of "ship" and "boat:" w1 = wordnet.synset( 'run.v.01' ) # v here denotes the tag verbw2 = wordnet.synset( 'sprint.v.01' )print (w1.wup_similarity(w2))  | 
Выход:
 0,857142857143 
w1 = wordnet.synset( 'ship.n.01' )w2 = wordnet.synset( 'boat.n.01' ) # n denotes nounprint (w1.wup_similarity(w2))  | 
Выход:
 0,9090909090909091
Эта статья предоставлена Пратимой Упадхьяй . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.
Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.