Recherche de mots dans Wordnet

Qu'est-ce que Wordnet?

Wordnet est une grande base de données lexicale de l'anglais, qui a été créée par Princeton. Il fait partie du corpus NLTK. Les noms, les verbes, les adjectifs et les adverbes sont tous regroupés en un ensemble de synonymes, c'est-à-dire des synonymes cognitifs. Ici, chaque ensemble de synsets exprime une signification distincte. Voici quelques cas d'utilisation de Wordnet -

  • Il peut être utilisé pour rechercher la définition d'un mot
  • On peut trouver des synonymes et des antonymes d'un mot
  • Les relations et les similitudes entre les mots peuvent être explorées à l'aide de Wordnet
  • Désambiguïsation du sens des mots pour les mots ayant de multiples utilisations et définitions

Comment importer Wordnet?

Wordnet peut être importé à l'aide de la commande suivante -

from nltk.corpus import wordnet

Pour une commande plus compacte, utilisez ce qui suit -

from nltk.corpus import wordnet as wn

Instances Synset

Les synset sont des regroupements de mots synonymes qui expriment le même concept. Lorsque vous utilisez Wordnet pour rechercher des mots, vous obtenez une liste des instances de Synset.

wordnet.synsets (mot)

Pour obtenir une liste de Synsets, nous pouvons rechercher n'importe quel mot dans Wordnet en utilisant wordnet.synsets(word). Par exemple, dans la prochaine recette Python, nous allons rechercher le Synset pour le `` chien '' avec quelques propriétés et méthodes de Synset -

Exemple

Tout d'abord, importez le wordnet comme suit -

from nltk.corpus import wordnet as wn

Maintenant, indiquez le mot pour lequel vous souhaitez rechercher le Synset -

syn = wn.synsets('dog')[0]

Ici, nous utilisons la méthode name () pour obtenir le nom unique du synset qui peut être utilisé pour obtenir directement le Synset -

syn.name()
Output:
'dog.n.01'

Ensuite, nous utilisons la méthode definition () qui nous donnera la définition du mot -

syn.definition()
Output:
'a member of the genus Canis (probably descended from the common wolf) that has
been domesticated by man since prehistoric times; occurs in many breeds'

Une autre méthode est examples () qui nous donnera les exemples liés au mot -

syn.examples()
Output:
['the dog barked all night']

Exemple d'implémentation complet

from nltk.corpus import wordnet as wn
syn = wn.synsets('dog')[0]
syn.name()
syn.definition()
syn.examples()

Obtenir des hypernymes

Les synsets sont organisés dans un arbre d'héritage comme une structure dans laquelle Hypernyms représente des termes plus abstraits tandis que Hyponymsreprésente les termes les plus spécifiques. L'une des choses importantes est que cet arbre peut être retracé jusqu'à un hypernyme racine. Comprenons le concept à l'aide de l'exemple suivant -

from nltk.corpus import wordnet as wn
syn = wn.synsets('dog')[0]
syn.hypernyms()

Production

[Synset('canine.n.02'), Synset('domestic_animal.n.01')]

Ici, nous pouvons voir que canine et domestic_animal sont les hypernymes de «chien».

Maintenant, nous pouvons trouver des hyponymes de `` chien '' comme suit -

syn.hypernyms()[0].hyponyms()

Production

[
   Synset('bitch.n.04'),
   Synset('dog.n.01'),
   Synset('fox.n.01'),
   Synset('hyena.n.01'),
   Synset('jackal.n.01'),
   Synset('wild_dog.n.01'),
   Synset('wolf.n.01')
]

À partir de la sortie ci-dessus, nous pouvons voir que «dog» n'est que l'un des nombreux hyponymes de «domestic_animals».

Pour trouver la racine de tout cela, nous pouvons utiliser la commande suivante -

syn.root_hypernyms()

Production

[Synset('entity.n.01')]

À partir de la sortie ci-dessus, nous pouvons voir qu'il n'a qu'une seule racine.

Exemple d'implémentation complet

from nltk.corpus import wordnet as wn
syn = wn.synsets('dog')[0]
syn.hypernyms()
syn.hypernyms()[0].hyponyms()
syn.root_hypernyms()

Production

[Synset('entity.n.01')]

Lemmes dans Wordnet

En linguistique, la forme canonique ou morphologique d'un mot est appelée un lemme. Pour trouver un synonyme ainsi qu'un antonyme d'un mot, nous pouvons également rechercher des lemmes dans WordNet. Voyons comment.

Recherche de synonymes

En utilisant la méthode lemma (), nous pouvons trouver le nombre de synonymes d'un Synset. Appliquons cette méthode sur le synset 'chien' -

Exemple

from nltk.corpus import wordnet as wn
syn = wn.synsets('dog')[0]
lemmas = syn.lemmas()
len(lemmas)

Production

3

La sortie ci-dessus montre que «chien» a trois lemmes.

Obtenir le nom du premier lemme comme suit -

lemmas[0].name()
Output:
'dog'

Obtenir le nom du deuxième lemme comme suit -

lemmas[1].name()
Output:
'domestic_dog'

Obtenir le nom du troisième lemme comme suit -

lemmas[2].name()
Output:
'Canis_familiaris'

En fait, un Synset représente un groupe de lemmes qui ont tous une signification similaire tandis qu'un lemme représente une forme de mot distincte.

Trouver des Antonymes

Dans WordNet, certains lemmes ont également des antonymes. Par exemple, le mot «bon» a un total de 27 synets, parmi lesquels 5 ont des lemmes avec des antonymes. Trouvons les antonymes (quand le mot «bon» est utilisé comme nom et quand le mot «bon» est utilisé comme adjectif).

Exemple 1

from nltk.corpus import wordnet as wn
   syn1 = wn.synset('good.n.02')
   antonym1 = syn1.lemmas()[0].antonyms()[0]
antonym1.name()

Production

'evil'
antonym1.synset().definition()

Production

'the quality of being morally wrong in principle or practice'

L'exemple ci-dessus montre que le mot «bien», lorsqu'il est utilisé comme nom, a le premier antonyme «mal».

Exemple 2

from nltk.corpus import wordnet as wn
   syn2 = wn.synset('good.a.01')
   antonym2 = syn2.lemmas()[0].antonyms()[0]
antonym2.name()

Production

'bad'
antonym2.synset().definition()

Production

'having undesirable or negative qualities’

L'exemple ci-dessus montre que le mot «bon», lorsqu'il est utilisé comme adjectif, a le premier antonyme «mauvais».