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' ' __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:

Synset : Нарича се още като набор от синоними или колекция от синонимни думи. Нека проверим пример

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', 'passive', 'quiet', 'passive_voice', 'extinct', 'спящ', 'неактивен'} - Антоним

Обяснение на кода

  1. Wordnet е корпус, така че се импортира от ntlk.corpus
  2. Списъкът както на синонима, така и на антонима се приема като празен, който ще се използва за добавяне
  3. Синонимите на думата active се търсят в модулите synsets и се добавят в списъка синоними. Същият процес се повтаря и за втория.
  4. Изходът се отпечатва

Заключение:

WordNet е лексикална база данни, която се използва от голяма търсачка. От WordNet може да се изчисли информация за дадена дума или фраза, като например

  • синоним (думи със същото значение)
  • хиперними (родовият термин, използван за обозначаване на клас специфики (т.е. храненето е закуска), хипоними (оризът е хранене)
  • холоними (протеини, въглехидрати са част от храненето)
  • мероними (храненето е част от дневния прием на храна)

WordNet също така предоставя информация за координирани термини, производни, сетива и други. Използва се за намиране на приликите между всякакви две думи. Той също така съдържа информация за резултатите от свързаната дума. Накратко или накратко, човек може да го третира като речник или речник. Навлизайки по-дълбоко в wordnet, той е разделен на четири общо подмрежи като

  1. Съществително
  2. Глагол
  3. Прилагателно
  4. Наречие

Може да се използва в областта на изкуствения интелект за анализ на текст. С помощта на Wordnet можете да създадете своя корпус за проверка на правописа, превод на език, откриване на нежелана поща и много други.

По същия начин можете да използвате този корпус и да го формовате, за да работите с някаква динамична функционалност. Това е точно като готов за вас корпус. Можете да го използвате по ваш начин.