Как получить синонимы / антонимы из 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 nltk from nltk.corpus import wordnet # Let's compare the noun of "ship" and "boat:" w1 = wordnet.synset( 'run.v.01' ) # v here denotes the tag verb w2 = 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 noun print (w1.wup_similarity(w2)) |
Выход:
0,9090909090909091
Эта статья предоставлена Пратимой Упадхьяй . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.
Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.