NLTK WordNet: Знайдіть синоніми з NLTK WordNet у Python
⚡ Розумний підсумок
WordNet — це лексична база даних та зчитувач корпусу NLTK для англійської мови, який групує іменники, дієслова, прикметники та прислівники в синсети, дозволяючи Python Програми шукають синоніми, антоніми, гіперніми та значення слів для обробки природної мови.

Що таке Wordnet?
WordNet — це зчитувач корпусів NLTK, лексична база даних для англійської мови. Його можна використовувати для пошуку значення слів, синонімів або антонімів. Його можна визначити як семантично орієнтований словник англійської мови. WordNet імпортується за допомогою такої команди:
from nltk.corpus import wordnet as guru
Оскільки WordNet постачається як готовий корпус, ви можете завантажити його один раз і одразу почати запитувати зв'язки між словами, не створюючи самостійно словника.
Знайдіть синоніми з NLTK WordNet у Python
Статистика показує, що є 155287 слів і 117659 синонімів набори, що входять до складу English WordNet. Різні методи, доступні в WordNet, можна знайти за допомогою typing dir(guru), яка містить список усіх атрибутів завантажувача та допоміжних методів, що надаються зчитувачем корпусу.
Синсет: Його також називають набором синонімів або колекцією синонімічних слів. Розглянемо приклад.
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}. Наприклад, синонім є протилежністю антоніма, тоді як гіперніми та гіпоніми є типом лексичного поняття.
Давайте напишемо програму, використовуючи Python знайти синонім та антонім слова «активний» за допомогою 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'} -- Synonym
{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'dormant', 'inactive'} -- Antonym
Пояснення коду:
- WordNet — це корпус, тому він імпортується з пакета nltk.corpus.
- Два списки синонімів та антонімів вважаються порожніми, що буде використано для додавання.
- Синоніми слова «active» шукаються в методі synsets та додаються до списку синонімів. Той самий процес збирає антоніми.
- Вивід друкується як Python встановлює, щоб дублікати записів видалялися автоматично.
Окрім синонімів та антонімів, WordNet також надає доступ до гіпернімів (ширших термінів), гіпонімів (більш специфічних термінів), холонімів та меронімів, тому один запит може розмістити слово всередині цілої ієрархії типу «is-a». Ці відношення роблять WordNet практичним тезаурусом для перевірки орфографії, перекладу мов, виявлення спаму та інших завдань аналізу тексту в штучному інтелекті.
