WordNet z NLTK: Iskanje sopomenk za besede v Pythonu

Kazalo:

Anonim

Kaj je Wordnet?

Wordnet je bralnik korpusa NLTK, leksikalna baza podatkov za angleščino. Z njim lahko poiščemo pomen besed, sopomenke ali antonima. Lahko ga definiramo kot pomensko usmerjen angleški slovar. Uvozi se z naslednjim ukazom:

from nltk.corpus import wordnet as guru

Statistični podatki kažejo, da je v angleški WordNet vključenih 155287 besed in 117659 nizov sinonimov.

Različne metode, ki so na voljo v programu WordNet, najdete tako, da vnesete dir (guru)

['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__load', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '__cla__ __, __ __ __ __, __ __, __, __ __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'

Dovolite nam, da razumemo nekatere funkcije, ki so na voljo v wordnetu:

Sinseta : Imenuje se tudi kot sopomenka ali zbirka sopomenk. Oglejmo si primer

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

Izhod:

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

Leksikalni odnosi : To so semantični odnosi, ki se jim vračajo. Če obstaja razmerje med {x1, x2, ... xn} in {y1, y2, ... yn}, obstaja tudi razmerje med {y1, y2, ... yn} in {x1, x2, ... xn}. Sinonim je na primer nasprotje antonima ali hipernimov, hiponim pa je vrsta leksikalnega pojma.

Napišimo program s pomočjo pythona, da najdemo sinonim in antonim besede "aktiven" z uporabo Wordneta.

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))

Izhod kode:

{'dinamični', 'spopad', 'pripravljen za boj', 'aktivni_glas', 'aktivni_agent', 'sodelujoči', 'živ', 'aktiven'} - Sinonim

{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'mirujoč', 'neaktiven'} - Protipomenka

Pojasnilo kode

  1. Wordnet je korpus, zato je uvožen iz ntlk.corpus
  2. Seznam sinonimov in antonimov je prazen in bo uporabljen za dodajanje
  3. Sinonimi besede aktivni se iščejo v sinsetih modula in so dodani sinonimom seznama. Enak postopek se ponovi za drugega.
  4. Izpis je natisnjen

Zaključek:

WordNet je leksikalna baza podatkov, ki jo uporablja večji iskalnik. V programu WordNet je mogoče izračunati podatke o dani besedi ali besedni zvezi, kot npr

  • sopomenka (besede z enakim pomenom)
  • hipernimi (generični izraz, ki se uporablja za označevanje vrste posebnosti (tj. obrok je zajtrk), hiponimi (riž je obrok)
  • holonimi (beljakovine, ogljikovi hidrati so del obroka)
  • meronimi (obrok je del dnevnega vnosa hrane)

WordNet ponuja tudi informacije o usklajenih izrazih, izpeljankah, čutilih in še več. Uporablja se za iskanje podobnosti med katerima koli dvema besedama. Vsebuje tudi informacije o rezultatih sorodne besede. Skratka ali na kratko lahko to obravnavamo kot slovar ali tezaver. Poglablja se v wordnet in je razdeljen na štiri skupne podomrežja, kot so

  1. Samostalnik
  2. Glagol
  3. Pridevnik
  4. Prislov

Uporablja se lahko na področju umetne inteligence za analizo besedila. S pomočjo Wordneta lahko ustvarite svoj korpus za preverjanje črkovanja, prevajanje jezika, zaznavanje neželene pošte in še veliko več.

Na enak način lahko s tem korpusom oblikujete in oblikujete nekaj dinamičnih funkcij. To je tako kot pripravljen korpus za vas. Uporabite ga lahko na svoj način.