NLTK WordNet: Hitta synonymer från NLTK WordNet i Python
⚡ Smart sammanfattning
WordNet är en lexikal databas och NLTK-korpusläsare för engelska som grupperar substantiv, verb, adjektiv och adverb i synsets, vilket gör att Python Program slår upp synonymer, antonymer, hypernymer och ordbetydelser för naturlig språkbehandling.

Vad är Wordnet?
WordNet är en NLTK-korpusläsare, en lexikal databas för engelska. Den kan användas för att hitta betydelsen av ord, en synonym eller en antonym. Man kan definiera den som en semantiskt orienterad ordbok för engelska. WordNet importeras med följande kommando:
from nltk.corpus import wordnet as guru
Eftersom WordNet levereras som en färdig korpus kan du ladda den en gång och omedelbart börja söka efter ordrelationer utan att själv bygga någon ordbok.
Hitta synonymer från NLTK WordNet i Python
Statistik visar att det finns 155287 ord och 117659 synonymer uppsättningar som ingår i engelska WordNet. Olika metoder som är tillgängliga med WordNet kan hittas av typing dir(guru), som listar alla loader-attribut och hjälpmetoder som exponeras av korpusläsaren.
Synset: Det kallas också en synonymuppsättning eller samling av synonymord. Låt oss titta på ett exempel.
from nltk.corpus import wordnet syns = 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')]
Lexikala relationer: Dessa är semantiska relationer som är reciprokerade. Om det finns ett samband mellan {x1,x2,…xn} och {y1,y2,…yn}, så finns det också ett samband mellan {y1,y2,…yn} och {x1,x2,…xn}. Till exempel är synonym motsatsen till antonym, medan hypernymer och hyponymer är en typ av lexikalt begrepp.
Låt oss skriva ett program med hjälp av Python för att hitta synonymen och antonymen till ordet ”aktiv” med hjälp av 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))
Utdata från koden:
{'dynamic', 'fighting', 'combat-ready', 'active_voice', 'active_agent', 'participating', 'alive', 'active'} -- Synonym
{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'dormant', 'inactive'} -- Antonym
Förklaring av koden:
- WordNet är en korpus, så den importeras från nltk.corpus-paketet.
- Två listor för synonymer och antonymer tas som tomma, vilka kommer att användas för tillägg.
- Synonymer till ordet ”aktiv” söks efter med synsets-metoden och läggs till i listan över synonymer. Samma process samlar in antonymer.
- Utskriften skrivs ut som Python så att dubbletter tas bort automatiskt.
Utöver synonymer och antonymer exponerar WordNet även hypernymer (bredare termer), hyponymer (mer specifika termer), holonymer och meronymer, så en enda fråga kan placera ett ord i en hel är-en-hierarki. Dessa relationer gör WordNet till en praktisk synonymordbok för stavningskontroll, språköversättning, skräppostdetektering och andra textanalysuppgifter inom artificiell intelligens.
