NLTK WordNet: Găsiți sinonime din NLTK WordNet în Python
⚡ Rezumat inteligent
WordNet este o bază de date lexicală și un cititor de corpus NLTK pentru limba engleză care grupează substantive, verbe, adjective și adverbe în synseturi, permițând... Python Programele caută sinonime, antonime, hipernime și semnificații ale cuvintelor pentru procesarea limbajului natural.
Ce este Wordnet?
WordNet este un cititor de corpus NLTK, o bază de date lexicală pentru limba engleză. Poate fi folosit pentru a găsi sensul cuvintelor, un sinonim sau un antonim. Îl putem defini ca un dicționar semantic al limbii engleze. WordNet se importă cu următoarea comandă:
from nltk.corpus import wordnet as guru
Deoarece WordNet este livrat ca un corpus predefinit, îl puteți încărca o singură dată și puteți începe imediat interogarea relațiilor dintre cuvinte fără a construi singur vreun dicționar.
Găsiți Sinonime din NLTK WordNet în Python
Statisticile arată că există 155287 cuvinte și 117659 sinonim seturi incluse în WordNet în limba engleză. Diferite metode disponibile cu WordNet pot fi găsite de typing dir(guru), care listează fiecare atribut al încărcătorului și metodă helper expusă de cititorul de corpus.
Synset: Se mai numește și set de sinonime sau colecție de cuvinte sinonime. Să vedem un exemplu.
from nltk.corpus import wordnet syns = 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 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, în timp ce hipernimele și hiponimele 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 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))
Ieșirea codului:
{'dynamic', 'fighting', 'combat-ready', 'active_voice', 'active_agent', 'participating', 'alive', 'active'} -- Synonym
{'stative', 'passive', 'quiet', 'passive_voice', 'extinct', 'dormant', 'inactive'} -- Antonym
Explicația codului:
- WordNet este un corpus, deci este importat din pachetul nltk.corpus.
- Două liste de sinonime și antonime sunt considerate goale și vor fi folosite pentru adăugare.
- Sinonimele cuvântului „activ” sunt căutate în metoda synsets și adăugate la lista de sinonime. Același proces colectează antonimele.
- Rezultatul este imprimat ca Python seturi astfel încât intrările duplicate să fie eliminate automat.
Dincolo de sinonime și antonime, WordNet expune și hipernime (termeni mai generali), hiponime (termeni mai specifici), olonime și meronime, astfel încât o singură interogare poate plasa un cuvânt într-o întreagă ierarhie is-a. Aceste relații fac din WordNet un tezaur practic pentru verificatoare ortografice, traduceri lingvistice, detectarea spamului și alte sarcini de analiză textuală în inteligența artificială.

