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.

  • 🧩 Korpusläsare: WordNet importeras från nltk.corpus och fungerar som en semantiskt orienterad ordbok för engelska.
  • 🔁 Synset: En synset är en samling synonymord, till exempel de åtta betydelserna som returneras för ”hund”.
  • 🔗 Lexikala relationer: Ömsesidiga semantiska länkar förbinder synonymer, antonymer, hypernymer och hyponymer.
  • 🧪 Synonymer och motsatser: Looping över synsets och lemman samlar alla synonymer och antonymer till ett ord.
  • ???? Hierarki: Hypernymer, hyponymer, holonymer och meronymer organiserar ord i substantiv-, verb-, adjektiv- och adverb-undernät.
  • 🤖 AI-fördel: WordNet hanterar textanalysuppgifter som stavningskorrigering, översättning och spamdetektering.

NLTK WordNet

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.

Vanliga frågor

WordNet är en NLTK-korpusläsare och lexikal databas för engelska. Den fungerar som en semantiskt orienterad ordbok och låter dig slå upp betydelsen, synonymerna och antonymerna av ett ord med enkla metoder. Python kommandon.

En synset, förkortning för synonymset, är en grupp ord som delar samma koncept. Anropet av wordnet.synsets("dog") returnerar flera synset, som var och en representerar en distinkt betydelse av ordet "dog".

Loopa igenom wordnet.synsets(word) och iterera sedan varje synset's lemma(). Lägg till lemma.name() för att samla in synonymer och anropa lemma.antonyms() för att samla in antonymer. Radbrytping resultaten i set() tar bort dubbletter.

Ett hypernym är en bredare, generisk term (måltid är ett hypernym för frukost), medan ett hyponym är en mer specifik term (ris är ett hyponym för måltid). WordNet länkar samman dessa för att bilda en är-en-hierarki.

English WordNet innehåller cirka 155 287 ord organiserade i ungefär 117 659 synonymuppsättningar. Databasen omfattar fyra ordklasser: substantiv, verb, adjektiv och adverb, som vart och ett lagras i ett eget undernät.

Inom artificiell intelligens stöder WordNet textanalysuppgifter som ordbetydelseförtydligande, stavningskorrigering, språköversättning och spamdetektering. Dess strukturerade relationer ger maskininlärningsmodeller rikare språkliga funktioner än enbart råa tokens.

Ja. AI- och maskininlärningspipelines använder WordNet-likhetsmått som sökvägslikhet och Wu-Palmer-likhet. De bedömer hur nära två synuppsättningar är genom att mäta den kortaste vägen mellan dem i hypernym- och hyponymhierarkin.

En vanlig ordbok listar definitioner alfabetiskt. WordNet länkar istället samman ord efter betydelse genom synsets och lexikala relationer, så det beter sig som en kombinerad ordbok och synonymordbok som maskiner kan bläddra igenom programmatiskt.

Sammanfatta detta inlägg med: