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

Wordnet Výstup kódu programu

Vysvětlení kódu

  1. Wordnet je korpus, takže je importován z ntlk.corpus
  2. Seznam synonym i antonym je považován za prázdný, který bude použit pro připojení
  3. Synonyma slova active se hledají v synsetech modulu a jsou připojena v seznamu synonym. Stejný proces se opakuje u druhého.
  4. 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ř

  1. Podstatné jméno
  2. Sloveso
  3. Přídavné jméno
  4. 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.