WordNet avec NLTK: recherche de synonymes de mots en Python

Table des matières:

Anonim

Qu'est-ce que Wordnet?

Wordnet est un lecteur de corpus NLTK, une base de données lexicale pour l'anglais. Il peut être utilisé pour trouver la signification des mots, des synonymes ou des antonymes. On peut le définir comme un dictionnaire d'anglais orienté sémantiquement. Il est importé avec la commande suivante:

from nltk.corpus import wordnet as guru

Les statistiques révèlent qu'il y a 155287 mots et 117659 ensembles de synonymes inclus dans WordNet anglais.

Différentes méthodes disponibles avec WordNet peuvent être trouvées en tapant dir (guru)

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

Laissez-nous comprendre certaines des fonctionnalités disponibles avec le wordnet:

Synset : Il est également appelé ensemble de synonymes ou collection de mots synonymes. Laissez-nous vérifier un exemple

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

Production:

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

Relations lexicales : Ce sont des relations sémantiques qui sont réciproques. S'il y a une relation entre {x1, x2,… xn} et {y1, y2,… yn} alors il y a aussi une relation entre {y1, y2,… yn} et {x1, x2,… xn}. Par exemple, Synonym est l'opposé de l'antonyme ou des hypernymes et l'hyponyme est un type de concept lexical.

Écrivons un programme utilisant python pour trouver un synonyme et un antonyme du mot «actif» en utilisant 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))

La sortie du code:

{'dynamique', 'combat', 'prêt au combat', 'active_voice', 'active_agent', 'participant', 'vivant', 'actif'} - Synonyme

{'stative', 'passive', 'quiet', 'passive_voice', 'éteint', 'dormant', 'inactive'} - Antonym

Explication du code

  1. Wordnet est un corpus, il est donc importé de ntlk.corpus
  2. La liste des synonymes et des antonymes est considérée comme vide et sera utilisée pour l'ajout
  3. Les synonymes du mot actif sont recherchés dans les synsets du module et sont ajoutés dans la liste des synonymes. Le même processus est répété pour le second.
  4. La sortie est imprimée

Conclusion:

WordNet est une base de données lexicale qui a été utilisée par un moteur de recherche majeur. À partir du WordNet, des informations sur un mot ou une phrase donnée peuvent être calculées telles que

  • synonyme (mots ayant la même signification)
  • hypernymes (Le terme générique utilisé pour désigner une classe de spécificités (c'est-à-dire que le repas est un petit-déjeuner), les hyponymes (le riz est un repas)
  • holonymes (les protéines, les glucides font partie du repas)
  • les méronymes (le repas fait partie de l'apport alimentaire quotidien)

WordNet fournit également des informations sur les termes coordonnés, les dérivés, les sens et plus encore. Il est utilisé pour trouver les similitudes entre deux mots quelconques. Il contient également des informations sur les résultats du mot associé. En bref, on peut le traiter comme un dictionnaire ou un thésaurus. En allant plus loin dans wordnet, il est divisé en quatre sous-réseaux au total tels que

  1. Nom
  2. Verbe
  3. Adjectif
  4. Adverbe

Il peut être utilisé dans le domaine de l'intelligence artificielle pour l'analyse de texte. Avec l'aide de Wordnet, vous pouvez créer votre corpus pour la vérification orthographique, la traduction linguistique, la détection de spam et bien d'autres.

De la même manière, vous pouvez utiliser ce corpus et le modeler pour qu'il fonctionne avec des fonctionnalités dynamiques. C'est comme un corpus prêt à être créé pour vous. Vous pouvez l'utiliser à votre façon.