WordNet met NLTK: synoniemen zoeken voor woorden in Python

Inhoudsopgave:

Anonim

Wat is Wordnet?

Wordnet is een NLTK corpuslezer, een lexicale database voor Engels. Het kan worden gebruikt om de betekenis van woorden, synoniem of antoniem te vinden. Men kan het definiëren als een semantisch georiënteerd woordenboek van het Engels. Het wordt geïmporteerd met het volgende commando:

from nltk.corpus import wordnet as guru

Statistieken tonen aan dat er 155287 woorden en 117659 synoniemenets zijn opgenomen in het Engelse WordNet.

Verschillende methoden die beschikbaar zijn met WordNet zijn te vinden door dir (guru) te typen

['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '__class' __,'__dict '__,' __delat '__,' __, __ ___, __, __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __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']

Laten we enkele van de functies begrijpen die beschikbaar zijn met het wordnet:

Synset : het wordt ook wel synoniemenset of verzameling synoniemen genoemd. Laten we een voorbeeld bekijken

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

Uitgang:

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

Lexicale relaties : dit zijn semantische relaties die wederkerig zijn. Als er een relatie is tussen {x1, x2,… xn} en {y1, y2,… yn}, dan is er ook een relatie tussen {y1, y2,… yn} en {x1, x2,… xn}. Synoniem is bijvoorbeeld het tegenovergestelde van antoniem of hyperoniemen en hyponiem zijn een soort lexicaal concept.

Laten we een programma schrijven met python om synoniemen en antoniemen van woord "actief" te vinden met 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))

De output van de code:

{'dynamisch', 'vechten', 'gevechtsklaar', 'active_voice', 'active_agent', 'deelnemen', 'levend', 'actief'} - synoniem

{'stative', 'passive', 'quiet', 'passive_voice', 'uitgestorven', 'slapend', 'inactief'} - Antonym

Uitleg van de code

  1. Wordnet is een corpus, dus het wordt geïmporteerd vanuit de ntlk.corpus
  2. Lijst met zowel synoniemen als antoniemen wordt als leeg beschouwd en zal worden gebruikt om toe te voegen
  3. Synoniemen van het woord actief worden doorzocht in de modulesynsets en worden toegevoegd aan de lijst met synoniemen. Hetzelfde proces wordt herhaald voor de tweede.
  4. De uitvoer wordt afgedrukt

Gevolgtrekking:

WordNet is een lexicale database die is gebruikt door een grote zoekmachine. Vanuit het WordNet kan informatie over een bepaald woord of zinsdeel worden berekend, zoals

  • synoniem (woorden met dezelfde betekenis)
  • hyperoniemen (de algemene term die wordt gebruikt om een ​​klasse van specifieke kenmerken aan te duiden (dwz maaltijd is een ontbijt), hyponiemen (rijst is een maaltijd)
  • holoniemen (eiwitten, koolhydraten maken deel uit van een maaltijd)
  • meroniemen (maaltijd maakt deel uit van de dagelijkse voedselinname)

WordNet biedt ook informatie over coördinaattermen, afgeleiden, zintuigen en meer. Het wordt gebruikt om de overeenkomsten tussen twee woorden te vinden. Het bevat ook informatie over de resultaten van het verwante woord. Kortom, men kan het behandelen als Dictionary of Thesaurus. Als we dieper in wordnet gaan, is het onderverdeeld in vier totale subnetten, zoals

  1. Zelfstandig naamwoord
  2. Werkwoord
  3. Bijvoeglijk naamwoord
  4. Bijwoord

Het kan worden gebruikt op het gebied van kunstmatige intelligentie voor tekstanalyse. Met behulp van Wordnet kunt u uw corpus maken voor spellingcontrole, taalvertaling, spamdetectie en nog veel meer.

Op dezelfde manier kunt u dit corpus gebruiken en het vormen om een ​​aantal dynamische functies te bewerken. Dit is net als een kant-en-klaar corpus voor u. U kunt het op uw manier gebruiken.