WordNet cu NLTK: Găsirea sinonimelor pentru cuvinte în Python

Cuprins:

Anonim

Ce este Wordnet?

Wordnet este un cititor de corpuri NLTK, o bază de date lexicală pentru limba engleză. Poate fi folosit pentru a găsi sensul cuvintelor, sinonim sau antonim. Se poate defini ca un dicționar de engleză orientat semantic. Este importat cu următoarea comandă:

from nltk.corpus import wordnet as guru

Statisticile arată că există 155287 cuvinte și 117659 seturi de sinonime incluse în WordNet engleză.

Diferite metode disponibile cu WordNet pot fi găsite prin tastarea dir (guru)

['_LazyCorpusLoader__args', '_LazyCorpusLoader__kwargs', '_LazyCorpusLoader__name', '_LazyCorpusLoader__reader_cls', '__class__', '__', '__d' '' '' __ge__ ',' __getattr__ ',' __getattribute__ ',' __gt__ ',' __hash__ ',' __init__ ',' __le__ ',' __lt__ ',' __module__ ',' __name__ ',' __ne__ ',' __new__ ',' __red , '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__unicode__', '__weakref__', '_unload', 'subdir', 'unicode_repr']

Să înțelegem câteva dintre caracteristicile disponibile cu wordnet:

Synset : Se mai numește ca set de sinonime sau colecție de cuvinte sinonime. Să verificăm un exemplu

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

Ieșire:

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

Relații lexicale : acestea sunt relații semantice care sunt reciproce. Dacă există o relație între {x1, x2, ... xn} și {y1, y2, ... yn} atunci există și o relație între {y1, y2, ... yn} și {x1, x2, ... xn}. De exemplu Sinonimul este opusul antonimului sau hipernimele și hiponimul sunt un tip de concept lexical.

Să scriem un program folosind python pentru a găsi sinonimul și antonimul cuvântului „activ” folosind 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))

Ieșirea codului:

{'dinamic', 'luptă', 'pregătit pentru luptă', 'active_voice', 'active_agent', 'participant', 'viu', 'activ'} - Sinonim

{'stativ', 'pasiv', 'liniștit', 'pasiv_voce', 'dispărut', 'latent', 'inactiv'} - Antonim

Explicația codului

  1. Wordnet este un corpus, deci este importat din ntlk.corpus
  2. Lista ambelor sinonime și antonim este considerată goală, care va fi utilizată pentru anexare
  3. Sinonimele cuvântului activ sunt căutate în seturile de module și sunt adăugate în lista sinonimelor. Același proces se repetă și pentru al doilea.
  4. Ieșirea este tipărită

Concluzie:

WordNet este o bază de date lexicală care a fost utilizată de un important motor de căutare. Din WordNet, pot fi calculate informații despre un anumit cuvânt sau frază, cum ar fi

  • sinonim (cuvinte cu același sens)
  • hipernimi (Termenul generic folosit pentru a desemna o clasă de specific (adică, masa este un mic dejun), hiponime (orezul este o masă)
  • holonime (proteinele, carbohidrații fac parte din masă)
  • meronime (masa face parte din aportul zilnic de alimente)

WordNet oferă, de asemenea, informații despre termeni coordonați, derivați, simțuri și multe altele. Este folosit pentru a găsi asemănările dintre oricare două cuvinte. De asemenea, conține informații despre rezultatele cuvântului asociat. Pe scurt sau pe scurt, se poate trata ca dicționar sau tezaur. Mergând mai adânc în wordnet, este împărțit în patru subrețele totale, cum ar fi

  1. Substantiv
  2. Verb
  3. Adjectiv
  4. Adverb

Poate fi utilizat în zona inteligenței artificiale pentru analiza textului. Cu ajutorul Wordnet, vă puteți crea corpusul pentru verificarea ortografiei, traducerea limbii, detectarea spamului și multe altele.

În același mod, puteți utiliza acest corpus și îl puteți modela pentru a funcționa unele funcționalități dinamice. Acesta este la fel ca un corpus pregătit pentru dvs. Îl poți folosi în felul tău.