NLTK WordNet: Pronađite sinonime iz NLTK WordNet u Python

Što je Wordnet?

Wordnet je NLTK čitač korpusa, leksička baza podataka za engleski jezik. Može se koristiti za pronalaženje značenja riječi, sinonima ili antonima. Može se definirati kao semantički orijentirani rječnik engleskog jezika. Uvozi se sljedećom naredbom:

from nltk.corpus import wordnet as guru

Pronađite sinonime iz NLTK WordNeta u Python

Statistika otkriva da ih ima 155287 riječi i 117659 sinonima setovi uključeni u engleski WordNet.

Različite metode dostupne s WordNetom mogu se pronaći upisivanjem dir(guru)

['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', ' __ge__', '__getattr__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__reduce__' , '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__unicode__', '__weakref__', '_unload', 'subdir', 'unicode_repr']

Razmotrimo neke značajke dostupne s wordnetom:

Synset: Također se naziva skup sinonima ili zbirka sinonimnih riječi. Provjerimo primjer

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

Izlaz:

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

Leksički odnosi: To su semantički odnosi koji se uzvraćaju. Ako postoji odnos između {x1,x2,…xn} i {y1,y2,…yn} tada postoji i odnos između {y1,y2,…yn} i {x1,x2,…xn}. Na primjer, sinonim je suprotnost antonimu ili su hipernimi i hiponimi vrsta leksičkog koncepta.

Napišimo program koristeći piton pronaći sinonim i antonim riječi “aktivan” koristeći 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))

Izlaz koda:

{'dynamic', 'fighting', 'combat-ready', 'active_voice', 'active_agent', 'participating', 'alive', 'active'} — Sinonim

{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'dmant', 'inactive'} — antonim

Wordnet programski kod Izlaz

Objašnjenje koda

  1. Wordnet je korpus, pa se uvozi iz ntlk.korpusa
  2. Popis sinonima i antonima uzima se kao prazan i koristit će se za dodavanje
  3. Sinonimi riječi aktivan pretražuju se u sinsetovima modula i dodaju se na popis sinonima. Isti postupak se ponavlja za drugu.
  4. Izlaz se ispisuje

Zaključak

WordNet je leksička baza podataka koju je koristio veliki tražilica. Iz WordNeta se mogu izračunati informacije o određenoj riječi ili frazi kao što je

  • sinonim (riječi istog značenja)
  • hipernimi (generički izraz koji se koristi za označavanje klase specifičnosti (tj. obrok je doručak), hiponimi (riža je obrok)
  • holonimi (proteini, ugljikohidrati su dio obroka)
  • meronimi (obrok je dio dnevnog unosa hrane)

WordNet također pruža informacije o koordinatnim terminima, izvedenicama, osjetilima i više. Koristi se za pronalaženje sličnosti između bilo koje dvije riječi. Također sadrži informacije o rezultatima povezane riječi. Ukratko ili ukratko, može se tretirati kao Rječnik ili Tezaurus. Idući dublje u wordnet, podijeljen je na ukupno četiri podmreže kao što su

  1. Imenica
  2. Glagol
  3. Pridjev
  4. prilog

Može se koristiti u području umjetne inteligencije za analizu teksta. Uz pomoć Wordneta, možete stvoriti svoj korpus za provjeru pravopisa, prijevod jezika, otkrivanje spama i još mnogo toga.

Na isti način, možete koristiti ovaj korpus i oblikovati ga da radi neke dinamičke funkcionalnosti. Ovo je kao gotovi korpus za vas. Možete ga koristiti na svoj način.