WordNet з NLTK: Пошук синонімів до слів у Python

Зміст:

Anonim

Що таке Wordnet?

Wordnet - це читач корпусів NLTK, лексична база даних для англійської мови. З його допомогою можна знайти значення слів, синоніма чи антоніма. Можна визначити це як семантично орієнтований словник англійської мови. Він імпортується з такою командою:

from nltk.corpus import wordnet as guru

Статистика показує, що до англійської WordNet входить 155287 слів та 117659 наборів синонімів .

Різні методи, доступні в WordNet, можна знайти, ввівши dir (guru)

['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '______, __'__, __'__, __ge__ ',' __getattr__ ',' __getattribute__ ',' __gt__ ',' __hash__ ',' __init__ ',' __le__ ',' __lt__ ',' __module__ ',' __name__ ',' __ne__ ',' __new__u, '__ne__ , '__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))

Вихід коду:

{'динамічний', 'бойовий', 'боєздатний', 'активний_голос', 'активний_агент', 'бере участь', 'живий', 'активний'} - Синонім

{'stative', 'пасивний', 'тихий', 'пасивний_голос', 'вимерлий', 'сплячий', 'неактивний'} - Антонім

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

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

Висновок:

WordNet - це лексична база даних, яка використовується основною пошуковою системою. За допомогою WordNet можна розрахувати інформацію про дане слово або фразу, наприклад

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

WordNet також надає інформацію про координовані терміни, похідні, сенси тощо. Він використовується для пошуку подібності між будь-якими двома словами. Він також містить інформацію про результати спорідненого слова. Коротше кажучи або в двох словах, можна розглядати це як словник чи тезаурус. Заглиблюючись у wordnet, він розділений на чотири загальні підмережі, такі як

  1. Іменник
  2. Дієслово
  3. Прикметник
  4. Прислівник

Його можна використовувати в області штучного інтелекту для аналізу тексту. За допомогою Wordnet ви можете створити свій корпус для перевірки правопису, перекладу мови, виявлення спаму та багатьох інших.

Таким же чином, ви можете використовувати цей корпус та формувати його для роботи певної динамічної функціональності. Це так само, як готовий корпус для вас. Ви можете використовувати його по-своєму.