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.

  • ๐Ÿงฉ Korpuslรฆser: WordNet er importeret fra nltk.corpus og fungerer som en semantisk orienteret ordbog over engelsk.
  • ๐Ÿ” Synsรฆt: Et synset er en samling af synonymord, sรฅsom de otte betydninger, der returneres for "hund".
  • ๐Ÿ”— Leksikale relationer: Gensidige semantiske links forbinder synonymer, antonymer, hypernymer og hyponymer.
  • ๐Ÿงช Synonymer og antonymer: Looping over synsรฆt og lemmaer samler alle synonymer og antonymer til et ord.
  • ???? Hierarki: Hypernymer, hyponymer, holonymer og meronymer organiserer ord i undernet af substantiv, verbum, adjektiv og adverb.
  • ๐Ÿค– AI-fordel: WordNet understรธtter tekstanalyseopgaver som stavningskorrektion, oversรฆttelse og spamdetektion.

NLTK WordNet

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.

Ofte Stillede Spรธrgsmรฅl

WordNet er en NLTK-korpuslรฆser og leksikalsk database for engelsk. Den fungerer som en semantisk orienteret ordbog, der giver dig mulighed for at slรฅ betydningen, synonymerne og antonymerne af et ord op med simple Python kommandoer.

Et synset, en forkortelse for synonymsรฆt, er en gruppe af ord, der deler det samme koncept. Kald af wordnet.synsets("dog") returnerer flere synsets, der hver reprรฆsenterer รฉn distinkt betydning af ordet "dog".

Gennemgรฅ wordnet.synsets(word), og gentag derefter hvert synsรฆts lemmas(). Tilfรธj lemma.name() for at indsamle synonymer, og kald lemma.antonyms() for at indsamle antonymer. Wrapping Resultaterne i set() fjerner dubletter.

Et hypernym er et bredere, generisk udtryk (mรฅltid er et hypernym for morgenmad), mens et hyponym er et mere specifikt udtryk (ris er et hyponym for mรฅltid). WordNet forbinder disse for at danne et er-et hierarki.

English WordNet indeholder omkring 155,287 ord organiseret i omtrent 117,659 synonymsรฆt. Databasen spรฆnder over fire ordklasser: substantiver, verber, adjektiver og adverbier, der hver er gemt i sit eget undernet.

Inden for kunstig intelligens understรธtter WordNet tekstanalyseopgaver sรฅsom flertydighedsfjernelse, stavekorrektion, sprogoversรฆttelse og spamdetektion. Dets strukturerede relationer giver maskinlรฆringsmodeller rigere sproglige funktioner end rรฅ tokens alene.

Ja. AI- og maskinlรฆringspipelines bruger WordNet-lighedsmรฅl som stilighed og Wu-Palmer-lighed. De scorer, hvor tรฆt to synsรฆt er pรฅ hinanden, ved at mรฅle den korteste sti mellem dem i hypernym- og hyponymhierarkiet.

En normal ordbog oplister definitioner alfabetisk. WordNet forbinder i stedet ord efter betydning gennem synsรฆt og leksikalske relationer, sรฅ den opfรธrer sig som en kombineret ordbog og synonymordbog, som maskiner kan gennemgรฅ programmatisk.

Opsummer dette indlรฆg med: