NLTK WordNet: zoek synoniemen van NLTK WordNet in Python
⚡ Slimme samenvatting
WordNet is een lexicale database en NLTK-corpuslezer voor het Engels die zelfstandige naamwoorden, werkwoorden, bijvoeglijke naamwoorden en bijwoorden groepeert in synsets, waardoor Python Programma's zoeken synoniemen, antoniemen, hyperoniemen en woordbetekenissen op voor natuurlijke taalverwerking.

Wat is Wordnet?
WordNet WordNet is een NLTK-corpuslezer, een lexicale database voor het Engels. Het kan worden gebruikt om de betekenis van woorden, een synoniem of een antoniem te vinden. Je kunt het definiëren als een semantisch georiënteerd woordenboek van het Engels. WordNet wordt geïmporteerd met het volgende commando:
from nltk.corpus import wordnet as guru
Omdat WordNet als een kant-en-klaar corpus wordt geleverd, kunt u het eenmalig laden en direct beginnen met het opvragen van woordrelaties zonder zelf een woordenboek te hoeven samenstellen.
Vind synoniemen van NLTK WordNet in Python
Uit statistieken blijkt dat dit het geval is 155287 woorden en 117659 synoniemen sets inbegrepen bij English WordNet. Verschillende methoden die beschikbaar zijn met WordNet kunnen worden gevonden door te typenping dir(guru), die een lijst bevat van alle loader-attributen en helper-methoden die door de corpuslezer beschikbaar worden gesteld.
Synset: Het wordt ook wel een synoniemenset of verzameling synoniemen genoemd. Laten we een voorbeeld bekijken.
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')]
Lexicale relaties: Dit zijn semantische relaties die wederkerig zijn. Als er een relatie bestaat tussen {x1,x2,…xn} en {y1,y2,…yn}, dan bestaat er ook een relatie tussen {y1,y2,…yn} en {x1,x2,…xn}. Een synoniem is bijvoorbeeld het tegenovergestelde van een antoniem, terwijl hyperoniemen en hyponiemen een type lexicaal concept zijn.
Laten we een programma schrijven met behulp van Python Om met behulp van WordNet het synoniem en antoniem van het woord 'actief' te vinden.
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))
De uitvoer van de code:
{'dynamic', 'fighting', 'combat-ready', 'active_voice', 'active_agent', 'participating', 'alive', 'active'} -- Synonym
{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'dormant', 'inactive'} -- Antonym
Uitleg van de code:
- WordNet is een corpus en wordt daarom geïmporteerd uit het nltk.corpus-pakket.
- Er worden twee lege lijsten voor synoniemen en antoniemen aangenomen, die later zullen worden aangevuld.
- Synoniemen van het woord 'actief' worden gezocht met behulp van de synsetmethode en toegevoegd aan de lijst met synoniemen. Hetzelfde proces wordt gebruikt om antoniemen te verzamelen.
- De uitvoer wordt afgedrukt als Python Deze instellingen zorgen ervoor dat dubbele vermeldingen automatisch worden verwijderd.
Naast synoniemen en antoniemen, toont WordNet ook hyperoniemen (bredere termen), hyponiemen (specifiekere termen), holoniemen en meroniemen, waardoor een enkele zoekopdracht een woord in een complete 'is-een'-hiërarchie kan plaatsen. Deze relaties maken WordNet een praktische thesaurus voor spellingcontrole, taalvertaling, spamdetectie en andere tekstanalysetaken in kunstmatige intelligentie.
