WordNet med NLTK: Find synonymer til ord i Python

Indholdsfortegnelse:

Anonim

Hvad er Wordnet?

Wordnet er en NLTK corpus-læser, en leksikalsk database til engelsk. Det kan bruges til at finde betydningen af ​​ord, synonym eller antonym. Man kan definere det som en semantisk orienteret ordbog på engelsk. Det importeres med følgende kommando:

from nltk.corpus import wordnet as guru

Statistikker afslører, at der er 155287 ord og 117659 synonyme sæt inkluderet i engelsk WordNet.

Forskellige metoder, der er tilgængelige med WordNet, kan findes ved at skrive dir (guru)

['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '__class__', '__ocratt' __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']

Lad os forstå nogle af de funktioner, der er tilgængelige med wordnet:

Synset : Det kaldes også som synonymsæt eller samling af synonymord. Lad os kontrollere et eksempel

from nltk.corpus import wordnetsyns = wordnet.synsets("dog")print(syns)

Produktion:

[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')]

Lexikale relationer : Disse er semantiske relationer, som gengældes. Hvis der er et forhold mellem {x1, x2, ... xn} og {y1, y2, ... yn}, er der også relation mellem {y1, y2, ... yn} og {x1, x2, ... xn}. For eksempel er synonym det modsatte af antonymer eller hypernymmer, og hyponym er typen af ​​leksikalt begreb.

Lad os skrive et program ved hjælp af python for at finde synonym og antonym af ordet "aktiv" ved hjælp af 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))

Kodens output:

{'dynamic', 'fighting', 'combat-ready', 'active_voice', 'active_agent', 'deltagende', 'live', 'aktiv'} - Synonym

{'stativ', 'passiv', 'stille', 'passiv_stemme', 'uddød', 'sovende', 'inaktiv'} - Antonym

Forklaring af koden

  1. Wordnet er et korpus, så det importeres fra ntlk.corpus
  2. Liste over både synonym og antonym betragtes som tom, som vil blive brugt til at tilføje
  3. Synonymer til ordet aktiv søges i modulets synsets og tilføjes i listens synonymer. Den samme proces gentages for den anden.
  4. Output udskrives

Konklusion:

WordNet er en leksikal database, der er blevet brugt af en større søgemaskine. Fra WordNet kan oplysninger om et givet ord eller en sætning beregnes som f.eks

  • synonym (ord med samme betydning)
  • hypernymmer (Det generiske udtryk, der bruges til at betegne en klasse af specifikationer (dvs. måltid er en morgenmad), hyponymer (ris er et måltid)
  • holonymer (proteiner, kulhydrater er en del af måltidet)
  • meronymer (måltid er en del af det daglige fødeindtag)

WordNet giver også information om koordinerede udtryk, afledte, sanser og mere. Det bruges til at finde ligheden mellem to ord. Det indeholder også oplysninger om resultaterne af det relaterede ord. Kort eller nøddeskal kan man behandle det som ordbog eller synonymordbog. At gå dybere i wordnet er det opdelt i fire samlede undernet som f.eks

  1. Navneord
  2. Udsagnsord
  3. Adjektiv
  4. Biord

Det kan bruges inden for kunstig intelligens til tekstanalyse. Ved hjælp af Wordnet kan du oprette dit korpus til stavekontrol, sprogoversættelse, spammedetektion og mange flere.

På samme måde kan du bruge dette korpus og forme det til at arbejde med en dynamisk funktionalitet. Dette er ligesom klar til at lave corpus til dig. Du kan bruge det på din måde.