WordNet с NLTK: поиск синонимов слов в Python

Содержание:

Anonim

Что такое Wordnet?

Wordnet - это программа для чтения корпуса NLTK, лексическая база данных для английского языка. Его можно использовать для поиска значения слов, синонимов или антонимов. Его можно определить как семантически ориентированный словарь английского языка. Он импортируется с помощью следующей команды:

from nltk.corpus import wordnet as guru

Статистика показывает, что в English WordNet включено 155287 слов и 117659 наборов синонимов .

Различные методы, доступные в WordNet, можно найти, набрав dir (guru)

['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '__d__d__r', '__d__d__q', '__d__d__q __ge__ ',' __getattr__ ',' __getattribute__ ',' __gt__ ',' __hash__ ',' __init__ ',' __le__ ',' __lt__ ',' __module__ ',' __name__ ',' __ne__ ',' __new__ ',' __reduce , '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__unicode__', '__weakref__', '_unload', 'subdir', 'unicode_repr

Давайте разберемся с некоторыми функциями, доступными с помощью Wordnet:

Синсет : он также называется набором синонимов или набором синонимических слов. Давайте проверим пример

from nltk.corpus import wordnetsyns = wordnet.synsets("dog")print(syns)

Выход:

[Synset('dog.n.01'), Synset('frump.n.01'), Synset('dog.n.03'), Synset('cad.n.01'), Synset('frank.n.02'), Synset('pawl.n.01'), Synset('andiron.n.01'), Synset('chase.v.01')]

Лексические отношения : это семантические отношения, которые взаимно взаимны. Если существует связь между {x1, x2,… xn} и {y1, y2,… yn}, то существует также связь между {y1, y2,… yn} и {x1, x2,… xn}. Например, синоним - это противоположность антониму или гиперониму, а гипоним - это тип лексического понятия.

Давайте напишем программу на Python, чтобы найти синоним и антоним слова «активный» с помощью Wordnet.

from nltk.corpus import wordnetsynonyms = []antonyms = []for syn in wordnet.synsets("active"):for l in syn.lemmas():synonyms.append(l.name())if l.antonyms():antonyms.append(l.antonyms()[0].name())print(set(synonyms))print(set(antonyms))

Вывод кода:

{'динамический', 'боевой', 'готов к бою', 'active_voice', 'активный_агент', 'участвующий', 'живой', 'активный'} - синоним

{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'dormant', 'inactive'} - антоним

Пояснение к коду

  1. Wordnet - это корпус, поэтому он импортирован из ntlk.corpus
  2. Список синонимов и антонимов принимается пустым и будет использоваться для добавления
  3. Синонимы слова «активный» ищутся в наборах синонимов модуля и добавляются в список синонимов. Тот же процесс повторяется для второго.
  4. Вывод распечатывается

Вывод:

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

  • синоним (слова, имеющие одинаковое значение)
  • гиперонимы (общий термин, используемый для обозначения класса специфики (например, еда - это завтрак), гипонимов (рис - это еда)
  • голонимы (белки, углеводы входят в состав еды)
  • меронимы (прием пищи является частью ежедневного приема пищи)

WordNet также предоставляет информацию о согласованных терминах, производных, смыслах и многом другом. Он используется для поиска сходства между любыми двумя словами. Он также содержит информацию о результатах родственного слова. Короче говоря, это можно трактовать как Словарь или Тезаурус. Углубляясь в Wordnet, он разделен на четыре подсети, такие как

  1. Имя существительное
  2. Глагол
  3. Прилагательное
  4. Наречие

Его можно использовать в области искусственного интеллекта для анализа текста. С помощью Wordnet вы можете создать свой корпус для проверки орфографии, языкового перевода, обнаружения спама и многого другого.

Таким же образом вы можете использовать этот корпус и формировать его для работы с некоторыми динамическими функциями. Это как готовый корпус для вас. Вы можете использовать это по-своему.