NLTK WordNet: Find synonymer fra NLTK WordNet i Python
โก Smart opsummering
WordNet er en leksikalsk database og NLTK-korpuslรฆser til engelsk, der grupperer substantiver, verber, adjektiver og adverbier i synsรฆt, sรฅ Python Programmer slรฅr synonymer, antonymer, hypernymer og ordbetydninger op til behandling af naturlig sprog.

Hvad er Wordnet?
WordNet er en NLTK-korpuslรฆser, en leksikalsk database for engelsk. Den kan bruges til at finde betydningen af โโord, et synonym eller et antonym. Man kan definere den som en semantisk orienteret ordbog for engelsk. WordNet importeres med fรธlgende kommando:
from nltk.corpus import wordnet as guru
Fordi WordNet leveres som et fรฆrdiglavet korpus, kan du indlรฆse det รฉn gang og straks begynde at forespรธrge pรฅ ordrelationer uden selv at bygge en ordbog.
Find synonymer fra NLTK WordNet i Python
Statistik viser, at der er 155287 ord og 117659 synonymer sรฆt inkluderet i engelsk WordNet. Forskellige metoder tilgรฆngelige med WordNet kan findes af typing dir(guru), som viser alle loader-attributter og hjรฆlpemetoder, der eksponeres af corpuslรฆseren.
Synset: Det kaldes ogsรฅ et synonymsรฆt eller en samling af synonymord. Lad os se pรฅ et eksempel.
from nltk.corpus import wordnet syns = wordnet.synsets("dog") print(syns)
Output:
[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')]
Leksikale relationer: Dette er semantiske relationer, som er gengรฆldte. Hvis der er en relation mellem {x1,x2,โฆxn} og {y1,y2,โฆyn}, sรฅ er der ogsรฅ en relation mellem {y1,y2,โฆyn} og {x1,x2,โฆxn}. For eksempel er synonym det modsatte af antonym, mens hypernymer og hyponymer er en type leksikalsk begreb.
Lad os skrive et program vha Python at finde synonymet og antonymet til ordet "aktiv" ved hjรฆlp af 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))
Udgangen af โโkoden:
{'dynamic', 'fighting', 'combat-ready', 'active_voice', 'active_agent', 'participating', 'alive', 'active'} -- Synonym
{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'dormant', 'inactive'} -- Antonym
Forklaring af koden:
- WordNet er et korpus, sรฅ det importeres fra nltk.corpus-pakken.
- To lister for synonymer og antonymer tages som tomme, og disse vil blive brugt til tilfรธjelser.
- Synonymer til ordet "aktiv" sรธges i synsets-metoden og tilfรธjes til listen over synonymer. Den samme proces indsamler antonymer.
- Outputtet udskrives som Python sรฆt, sรฅ dubletter fjernes automatisk.
Ud over synonymer og antonymer eksponerer WordNet ogsรฅ hypernymer (bredere termer), hyponymer (mere specifikke termer), holonymer og meronymer, sรฅ en enkelt forespรธrgsel kan placere et ord i et helt er-et-hierarki. Disse relationer gรธr WordNet til en praktisk synonymordbog til stavekontrol, sprogoversรฆttelse, spamdetektion og andre tekstanalyseopgaver inden for kunstig intelligens.
