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.

  • 🧩 Corpuslezer: WordNet wordt geïmporteerd uit nltk.corpus en fungeert als een semantisch georiënteerd woordenboek van het Engels.
  • 🔁 Synsets: Een synset is een verzameling synoniemen, zoals de acht betekenissen die worden weergegeven voor 'hond'.
  • 🔗 Lexicale relaties: Wederzijdse semantische verbanden verbinden synoniemen, antoniemen, hyperoniemen en hyponiemen.
  • 🧪 Synoniemen en antoniemen: Toiletping De functie 'over synsets and lemmas' verzamelt alle synoniemen en antoniemen van een woord.
  • ???? Hiërarchie: Hyperoniemen, hyponiemen, holoniemen en meroniemen organiseren woorden in subgroepen van zelfstandige naamwoorden, werkwoorden, bijvoeglijke naamwoorden en bijwoorden.
  • 🤖 Voordelen van AI: WordNet ondersteunt tekstanalysetaken zoals spellingcorrectie, vertaling en spamdetectie.

NLTK WordNet

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.

Veelgestelde vragen

WordNet is een NLTK-corpuslezer en lexicale database voor het Engels. Het werkt als een semantisch georiënteerd woordenboek, waarmee je de betekenis, synoniemen en antoniemen van een woord kunt opzoeken met eenvoudige zoekopdrachten. Python commando's.

Een synset, een afkorting van synoniemenset, is een groep woorden die hetzelfde concept delen. Door wordnet.synsets("hond") aan te roepen, krijg je verschillende synsets terug, die elk een aparte betekenis van het woord "hond" vertegenwoordigen.

Loop door wordnet.synsets(word) en doorloop vervolgens de lemma's() van elke synset. Voeg lemma.name() toe om synoniemen te verzamelen en roep lemma.antonyms() aan om antoniemen te verzamelen. Wrapping De resultaten in set() verwijderen dubbele vermeldingen.

Een hyperoniem is een bredere, algemene term (maaltijd is een hyperoniem van ontbijt), terwijl een hyponiem een ​​specifiekere term is (rijst is een hyponiem van maaltijd). WordNet koppelt deze aan elkaar om een ​​'is-een'-hiërarchie te vormen.

English WordNet bevat ongeveer 155,287 woorden, georganiseerd in circa 117,659 synoniemensets. De database omvat vier woordsoorten: zelfstandige naamwoorden, werkwoorden, bijvoeglijke naamwoorden en bijwoorden, die elk in een eigen subnet zijn opgeslagen.

In de kunstmatige intelligentie ondersteunt WordNet tekstanalysetaken zoals woordbetekenisdisambiguatie, spellingcorrectie, taalvertaling en spamdetectie. De gestructureerde relaties bieden machine learning-modellen rijkere taalkundige kenmerken dan alleen ruwe tokens.

Ja. AI- en machine learning-pipelines gebruiken WordNet-gelijkenismaten zoals padgelijkenis en Wu-Palmer-gelijkenis. Ze beoordelen hoe dicht twee synsets bij elkaar liggen door het kortste pad ertussen te meten in de hyperoniem- en hyponiemhiërarchie.

Een gewoon woordenboek geeft definities alfabetisch weer. WordNet koppelt woorden daarentegen aan elkaar op basis van betekenis door middel van synsets en lexicale relaties, waardoor het functioneert als een gecombineerd woordenboek en thesaurus dat door machines programmatisch kan worden doorlopen.

Vat dit bericht samen met: