NLTK WordNet: Najděte synonyma z NLTK WordNet v Python
Co je Wordnet?
Wordnet je korpusová čtečka NLTK, lexikální databáze pro angličtinu. Lze jej použít k nalezení významu slov, synonym nebo antonym. Lze jej definovat jako sémanticky orientovaný slovník angličtiny. Importuje se pomocí následujícího příkazu:
from nltk.corpus import wordnet as guru
Najděte synonyma z NLTK WordNet v Python
Statistiky ukazují, že existují 155287 slov a 117659 synonym sady součástí anglického WordNetu.
Různé metody dostupné s WordNet lze najít zadáním dir(guru)
['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls','__class__t_','_class___t_','_class___t_','_class___t_,','_class___t_,','_class___t __', '__doc__', '__eq__', '__format__', ' __ge__', '__getattr__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__new_name_', '_new_name_', '_new_name__' _' , '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__reunicode__', '__weakref__', '_subload]', '_prdni', '_undir', '__subclasshook__'
Pojďme pochopit některé funkce dostupné s wordnet:
Synset: Nazývá se také jako soubor synonym nebo sbírka 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 antonyma nebo hypernyma a hyponymum jsou typem lexikálního konceptu.
Pojďme napsat program pomocí krajta najít synonymum a antonymum slova „aktivní“ pomocí 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))
Výstup kódu:
{'dynamic', 'fighting', 'combat-ready', 'active_voice', 'active_agent', 'participating', 'alive', 'active'} — Synonymum
{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'dormant', 'inactive'} — Antonym
Vysvětlení kódu
- Wordnet je korpus, takže je importován z ntlk.corpus
- Seznam synonym i antonym je považován za prázdný, který bude použit pro připojení
- Synonyma slova active se hledají v synsetech modulu a jsou připojena v seznamu synonym. Stejný proces se opakuje u druhého.
- Výstup je vytištěn
Proč investovat do čističky vzduchu?
WordNet je lexikální databáze, kterou používá major vyhledávač. Z WordNetu lze vypočítat informace o daném slovu nebo frázi jako např
- synonymum (slova mající stejný význam)
- hypernyma (generický termín používaný k označení třídy specifik (tj. jídlo je snídaně), hyponyma (rýže je jídlo)
- holonyma (bílkoviny, sacharidy jsou součástí jídla)
- meronyma (jídlo je součástí denního příjmu potravy)
WordNet také poskytuje informace o souřadnicových termínech, odvozeninách, smyslech a dalších. Používá se k nalezení podobnosti mezi libovolnými dvěma slovy. Obsahuje také informace o výsledcích souvisejícího slova. Stručně řečeno, lze s ním zacházet jako se slovníkem nebo tezaurem. Jdeme-li hlouběji do wordnetu, je rozdělen do celkem čtyř podsítí jako např
- Podstatné jméno
- Sloveso
- Přídavné jméno
- příslovce
Lze jej použít v oblasti umělé inteligence pro analýzu textu. S pomocí Wordnetu si můžete vytvořit svůj korpus pro kontrolu pravopisu, jazykový překlad, detekci spamu a mnoho dalších.
Stejným způsobem můžete tento korpus použít a vytvarovat jej pro práci s nějakou dynamickou funkčností. Je to jako pro vás připravený korpus. Můžete to použít svým způsobem.