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 синонимов. В комплект английского WordNet входят наборы. Различные методы, доступные в WordNet, можно найти по типу.ping 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 Найти синоним и антоним слова «active» с помощью 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 также предоставляет гиперонимы (более широкие термины), гипонимы (более конкретные термины), голонимы и меронимы, так что один запрос может поместить слово в целую иерархию «является». Эти отношения делают WordNet практичным тезаурусом для проверки орфографии, перевода языков, обнаружения спама и других задач анализа текста в искусственном интеллекте.
