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

⚡ Розумний підсумок

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

  • 🧩 Корпусний читач: WordNet імпортовано з nltk.corpus та діє як семантично орієнтований словник англійської мови.
  • 🔁 Синсети: Синсет — це набір синонімів, таких як вісім значень, що повертаються для слова «собака».
  • 🔗 Лексичні зв'язки: Взаємні семантичні зв'язки пов'язують синоніми, антоніми, гіперніми та гіпоніми.
  • 🧪 Синоніми та антоніми: вбиральняping над синсетами та лемами збирає кожен синонім та антонім слова.
  • ???? Ієрархія: Гіперніми, гіпоніми, холоніми та мероніми організовують слова в підмережі іменників, дієслів, прикметників та прислівників.
  • 🤖 Перевага ШІ: WordNet дозволяє виконувати завдання аналізу тексту, такі як виправлення орфографії, переклад та виявлення спаму.

NLTK WordNet

Що таке 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 практичним тезаурусом для перевірки орфографії, перекладу мов, виявлення спаму та інших завдань аналізу тексту в штучному інтелекті.

Поширені запитання

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

Синсет, скорочення від sinonim set (набір синонімів), — це група слів, які мають однакову концепцію. Виклик wordnet.synsets(“dog”) повертає кілька синсетів, кожен з яких представляє одне окреме значення слова “dog”.

Пройдіть циклом по wordnet.synsets(word), потім виконайте ітерацію lemmas() кожного синсету. Додайте lemma.name() для збору синонімів та викличте lemma.antonyms() для збору антонімів. Перенесітьping Результати в set() видаляють дублікати записів.

Гіпернім — це ширший, загальний термін (наприклад, «їжа» — гіпернім слова «сніданок»), тоді як гіпонім — це більш конкретний термін (наприклад, «рис» — гіпонім слова «їжа»). WordNet пов'язує їх, утворюючи ієрархію «is-a».

Англійська WordNet містить близько 155 287 слів, організованих приблизно у 117 659 наборів синонімів. База даних охоплює чотири частини мови: іменники, дієслова, прикметники та прислівники, кожна з яких зберігається у власній підмережі.

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

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

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

Підсумуйте цей пост за допомогою: