WordNet con NLTK: ricerca di sinonimi per parole in Python

Sommario:

Anonim

Cos'è Wordnet?

Wordnet è un corpus reader NLTK, un database lessicale per l'inglese. Può essere utilizzato per trovare il significato di parole, sinonimo o contrario. Si può definire come un dizionario di inglese semanticamente orientato. Viene importato con il seguente comando:

from nltk.corpus import wordnet as guru

Le statistiche rivelano che ci sono 155287 parole e 117659 set di sinonimi inclusi con WordNet inglese.

Diversi metodi disponibili con WordNet possono essere trovati digitando dir (guru)

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

Cerchiamo di capire alcune delle funzionalità disponibili con wordnet:

Synset : è anche chiamato set di sinonimi o raccolta di parole sinonimiche. Facciamo un esempio

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

Produzione:

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

Relazioni lessicali : sono relazioni semantiche ricambiate. Se esiste una relazione tra {x1, x2,… xn} e {y1, y2,… yn}, allora esiste anche una relazione tra {y1, y2,… yn} e {x1, x2,… xn}. Ad esempio Sinonimo è l'opposto di antonimo o iperonimo e iponimo sono un tipo di concetto lessicale.

Scriviamo un programma che utilizzi python per trovare il sinonimo e l'antonimo della parola "attivo" usando 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))

L'output del codice:

{"dynamic", "fighting", "combat-ready", "active_voice", "active_agent", "partecipante", "alive", "active"} - Sinonimo

{"stative", "passive", "quiet", "passive_voice", "extinct", "dormant", "inactive"} - Antonym

Spiegazione del codice

  1. Wordnet è un corpus, quindi viene importato da ntlk.corpus
  2. L'elenco dei sinonimi e degli antonimi viene considerato vuoto e verrà utilizzato per l'aggiunta
  3. I sinonimi della parola active vengono cercati nei synset del modulo e aggiunti alla lista dei sinonimi. Lo stesso processo viene ripetuto per il secondo.
  4. L'output viene stampato

Conclusione:

WordNet è un database lessicale utilizzato da un importante motore di ricerca. Da WordNet, le informazioni su una data parola o frase possono essere calcolate come

  • sinonimo (parole che hanno lo stesso significato)
  • iperonimi (il termine generico usato per designare una classe di specifiche (ad esempio, il pasto è una colazione), iponimi (il riso è un pasto)
  • olonimi (proteine, carboidrati fanno parte del pasto)
  • meronimi (il pasto fa parte dell'assunzione giornaliera di cibo)

WordNet fornisce anche informazioni su termini coordinati, derivati, sensi e altro. È usato per trovare le somiglianze tra due parole qualsiasi. Contiene anche informazioni sui risultati della parola correlata. In breve o in poche parole, lo si può considerare come un dizionario o un thesaurus. Andando più in profondità in wordnet, è diviso in quattro sottoreti totali come

  1. Sostantivo
  2. Verbo
  3. Aggettivo
  4. Avverbio

Può essere utilizzato nell'area dell'intelligenza artificiale per l'analisi del testo. Con l'aiuto di Wordnet, puoi creare il tuo corpus per il controllo ortografico, la traduzione della lingua, il rilevamento dello spam e molto altro.

Allo stesso modo, puoi usare questo corpus e modellarlo per lavorare con alcune funzionalità dinamiche. Questo è proprio come un corpus pronto per te. Puoi usarlo a modo tuo.