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', 'dmant', 'inactive'} — Антоним
Обяснение на кода
- Wordnet е корпус, така че се импортира от ntlk.corpus
- Списъкът със синоними и антоними се приема като празен, който ще се използва за добавяне
- Синоними на думата active се търсят в синсетовете на модула и се добавят в списъка със синоними. Същият процес се повтаря за втория.
- Изходът се отпечатва
Заключение
WordNet е лексикална база данни, която е била използвана от основен търсачката. От WordNet може да се изчисли информация за дадена дума или фраза, като напр
- синоним (думи с еднакво значение)
- хиперними (Общият термин, използван за обозначаване на клас специфики (т.е. храненето е закуска), хипоними (оризът е хранене)
- холоними (протеини, въглехидрати са част от храната)
- мероними (храненето е част от дневния прием на храна)
WordNet също предоставя информация за координатни термини, производни, сетива и други. Използва се за намиране на приликите между произволни две думи. Той също така съдържа информация за резултатите от свързаната дума. Накратко или накратко човек може да го третира като речник или тезаурус. Навлизайки по-дълбоко в wordnet, той е разделен на общо четири подмрежи, като напр
- Съществително
- глагол
- Прилагателно
- наречие
Може да се използва в областта на изкуствения интелект за анализ на текст. С помощта на Wordnet можете да създадете своя корпус за проверка на правописа, езиков превод, откриване на спам и много други.
По същия начин можете да използвате този корпус и да го оформите, за да работи с някаква динамична функционалност. Това е точно като готов за вас корпус. Можете да го използвате по свой начин.