WordNet s NLTK: Traženje sinonima za riječi u Pythonu

Sadržaj:

Anonim

Š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. To se može definirati kao semantički orijentirani rječnik engleskog jezika. Uvozi se sljedećom naredbom:

from nltk.corpus import wordnet as guru

Statistika otkriva da postoji 155287 riječi i 117659 skupova sinonima koji su uključeni u engleski WordNet.

Različite metode dostupne s WordNetom mogu se pronaći tako da se upiše dir (guru)

['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls','_______, __'__, __'__, __'__, __ ' __ge__ ',' __getattr__ ',' __getattribute__ ',' __gt__ ',' __hash__ ',' __init__ ',' __le__ ',' __lt__ ',' __module__ ',' __name__ ',' __ne__ ',' __new__u,'__ , '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__unicode__', '__weakref__', '_unload', 'subdir', 'unicode_repr'

Razumijemo neke značajke dostupne s wordnetom:

Synset : Zove se i kao skup sinonima ili kao zbirka riječi sinonima. Provjerimo primjer

from nltk.corpus import wordnetsyns = 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 veza između {x1, x2, ... xn} i {y1, y2, ... yn}, tada postoji i veza između {y1, y2, ... yn} i {x1, x2, ... xn}. Na primjer, sinonim je suprotan antonimu ili hipernimi, a hiponim je vrsta leksičkog koncepta.

Napišimo program pomoću pythona kako bismo pronašli sinonim i antonim riječi "aktivan" koristeći Wordnet.

from nltk.corpus import wordnetsynonyms = []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:

{'dinamički', 'borbeni', 'spreman za borbu', 'aktivni_glas,' aktivni_agent ',' sudjelujući ',' živ ',' aktivan '} - Sinonim

{'stative', 'pasivno', 'tiho', 'pasivno_glasno', 'izumrlo', 'uspavano', 'neaktivno'} - antonim

Objašnjenje koda

  1. Wordnet je korpus, pa se uvozi iz ntlk.corpus
  2. Popis sinonima i antonima uzima se kao prazan koji će se koristiti za dodavanje
  3. Sinonimi riječi active pretražuju se u sinsetima modula i dodaju se sinonimima popisa. Isti se postupak ponavlja za drugi.
  4. Ispis je ispisan

Zaključak:

WordNet je leksička baza podataka koju koristi glavna tražilica. Iz programa WordNet mogu se izračunati podaci o datoj riječi ili frazi, kao što su

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

WordNet također pruža informacije o koordiniranim terminima, izvedenicama, osjetilima i još mnogo toga. 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 to se može tretirati kao Rječnik ili Rječnik. Ulazeći dublje u wordnet, podijeljen je na četiri ukupne 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 neželjene pošte i još mnogo toga.

Na isti način, možete koristiti ovaj korpus i oblikovati ga za rad neke dinamičke funkcionalnosti. Ovo je baš kao spreman korpus za vas. Možete ga koristiti na svoj način.