NLTK WordNet: Najděte synonyma z NLTK WordNet v Python

⚡ Chytré shrnutí

WordNet je lexikální databáze a čtečka korpusů NLTK pro angličtinu, která seskupuje podstatná jména, slovesa, přídavná jména a příslovce do synsetů a umožňuje… Python Programy vyhledávají synonyma, antonyma, hypernyma a významy slov pro zpracování přirozeného jazyka.

  • 🧩 Čtenář korpusu: WordNet je importován z nltk.corpus a funguje jako sémanticky orientovaný slovník angličtiny.
  • 🔁 Synsety: Synset je kolekce synonymních slov, například osm významů vrácených pro slovo „pes“.
  • 🔗 Lexikální vztahy: Vzájemné sémantické vazby propojují synonyma, antonyma, hypernyma a hyponyma.
  • 🧪 Synonyma a antonyma: Toaletaping přes synsety a lemmata shromažďuje všechna synonyma a antonyma slova.
  • ???? Hierarchie: Hypernyma, hyponyma, holonyma a meronyma organizují slova do podsítí podstatných jmen, sloves, přídavných jmen a příslovcí.
  • 🤖 Výhody umělé inteligence: WordNet umožňuje úkoly analýzy textu, jako je oprava pravopisu, překlad a detekce spamu.

NLTK WordNet

Co je Wordnet?

WordNet je čtečka korpusů NLTK, lexikální databáze pro angličtinu. Lze ji použít k nalezení významu slov, synonym nebo antonym. Lze ji definovat jako sémanticky orientovaný slovník angličtiny. WordNet se importuje následujícím příkazem:

from nltk.corpus import wordnet as guru

Protože WordNet je dodáván jako hotový korpus, můžete ho jednou načíst a okamžitě začít dotazovat vztahy mezi slovy, aniž byste si museli sami vytvářet slovník.

Najděte synonyma z NLTK WordNet v Python

Statistiky ukazují, že existují 155287 slov a 117659 synonym sady zahrnuté v anglickém WordNetu. Různé metody dostupné ve WordNetu lze nalézt u typing dir(guru), který vypíše všechny atributy zavaděče a pomocné metody zpřístupněné čtečkou korpusu.

Synset: Také se nazývá sada synonym nebo soubor synonymních slov. Podívejme se na příklad.

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

Výstup:

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

Lexikální vztahy: Jedná se o sémantické vztahy, které jsou reciproční. Pokud existuje vztah mezi {x1,x2,…xn} a {y1,y2,…yn}, pak existuje také vztah mezi {y1,y2,…yn} a {x1,x2,…xn}. Například synonymum je opakem antonymum, zatímco hypernymum a hyponymum jsou typem lexikálního konceptu.

Pojďme napsat program pomocí Python najít synonymum a antonymum slova „aktivní“ pomocí WordNetu.

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))

Výstup kódu:

{'dynamic', 'fighting', 'combat-ready', 'active_voice', 'active_agent', 'participating', 'alive', 'active'} -- Synonym
{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'dormant', 'inactive'} -- Antonym

Vysvětlení kódu:

  • WordNet je korpus, takže je importován z balíčku nltk.corpus.
  • Dva seznamy synonym a antonymů jsou považovány za prázdné a budou použity pro doplňování.
  • Synonyma slova „active“ jsou vyhledávána metodou synsets a přidávána do seznamu synonym. Stejný proces shromažďuje antonyma.
  • Výstup se vytiskne jako Python nastaví tak, aby se duplicitní položky automaticky odstranily.

Kromě synonym a antonymů WordNet nabízí také hypernymy (širší pojmy), hyponymy (konkrétnější pojmy), holonymy a meronymy, takže jediný dotaz může umístit slovo do celé hierarchie vztahů „is-a“. Díky těmto relacím je WordNet praktickým tezaurusem pro kontrolu pravopisu, překlad jazyka, detekci spamu a další úkoly analýzy textu v umělé inteligenci.

Nejčastější dotazy

WordNet je čtečka korpusů NLTK a lexikální databáze pro angličtinu. Funguje jako sémanticky orientovaný slovník a umožňuje vám snadno vyhledat význam, synonyma a antonymy slova. Python příkazy.

Synset, zkratka pro synonymní množinu, je skupina slov, která sdílejí stejný koncept. Volání wordnet.synsets(„pes“) vrátí několik synsetů, z nichž každá představuje jeden odlišný význam slova „pes“.

Projděte smyčkou wordnet.synsets(word) a poté iterujte lemmas() každé synsety. Přidejte lemma.name() pro sběr synonym a zavolejte lemma.antonyms() pro sběr antonym. Zabalteping Výsledky v set() odstraní duplicitní položky.

Hypernymum je širší, generický termín (meal je hypernymum slova breakfast), zatímco hyponymum je konkrétnější termín (rice je hyponymum slova meal). WordNet tyto výrazy propojuje a vytváří hierarchii slovních spojení „is-a“.

English WordNet obsahuje přibližně 155 287 slov uspořádaných do zhruba 117 659 synonymních sad. Databáze zahrnuje čtyři slovní druhy: podstatná jména, slovesa, přídavná jména a příslovce, přičemž každé z nich je uloženo ve vlastní podsíti.

V oblasti umělé inteligence podporuje WordNet úkoly textové analýzy, jako je rozlišování významů slov, oprava pravopisu, překlad jazyka a detekce spamu. Jeho strukturované relace poskytují modelům strojového učení bohatší lingvistické vlastnosti než samotné nezpracované tokeny.

Ano. AI a strojové učení používají metody podobnosti WordNet, jako je podobnost cest a podobnost Wu-Palmera. Ty hodnotí, jak blízko jsou si dvě synsety, měřením nejkratší cesty mezi nimi v hierarchii hypernym a hyponym.

Normální slovník uvádí definice abecedně. WordNet místo toho propojuje slova podle významu pomocí synsetů a lexikálních vztahů, takže se chová jako kombinovaný slovník a tezaurus, kterými mohou stroje programově procházet.

Shrňte tento příspěvek takto: