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.

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.
