NLTK WordNet: Знайдіть синоніми з NLTK WordNet у Python

Що таке Wordnet?

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

from nltk.corpus import wordnet as guru

Знайдіть синоніми з NLTK WordNet у Python

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

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

['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', ' __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:

Synset: це також називається набором синонімів або набором слів-синонімів. Давайте перевіримо приклад

from nltk.corpus import wordnet
syns = 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}. Наприклад, синонім є протилежністю до антоніма або гіперніми та гіпоніми є типом лексичного поняття.

Давайте напишемо програму, використовуючи пітон знайти синонім і антонім слова «активний» за допомогою Wordnet.

from nltk.corpus import wordnet
	synonyms = []
	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))

Вихід коду:

{'dynamic', 'fighting', 'combat-ready', 'active_voice', 'active_agent', 'participating', 'alive', 'active'} — синонім

{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'dormant', 'inactive'} — Антонім

Виведення коду програми Wordnet

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

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

Висновок

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

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

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

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

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

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