Stemming & Lemmatisation

Qu'est-ce que la tige?

La tige est une technique utilisée pour extraire la forme de base des mots en supprimant les affixes. C'est comme couper les branches d'un arbre jusqu'à ses tiges. Par exemple, la racine des motseating, eats, eaten est eat.

Les moteurs de recherche utilisent la racine pour indexer les mots. C'est pourquoi, plutôt que de stocker toutes les formes d'un mot, un moteur de recherche ne peut stocker que les tiges. De cette manière, l'extraction réduit la taille de l'index et augmente la précision de la récupération.

Divers algorithmes de Stemming

En NLTK, stemmerI, qui ont stem()méthode, l'interface a tous les souches que nous allons couvrir ensuite. Comprenons-le avec le schéma suivant

Algorithme de dérivation de Porter

C'est l'un des algorithmes de dérivation les plus courants qui est essentiellement conçu pour supprimer et remplacer les suffixes bien connus de mots anglais.

Classe PorterStemmer

NLTK a PorterStemmerclasse à l'aide de laquelle nous pouvons facilement implémenter les algorithmes de Porter Stemmer pour le mot que nous voulons dériver. Cette classe connaît plusieurs formes de mots et suffixes réguliers à l'aide desquels elle peut transformer le mot d'entrée en une racine finale. La racine résultante est souvent un mot plus court ayant la même signification de racine. Voyons un exemple -

Tout d'abord, nous devons importer la boîte à outils en langage naturel (nltk).

import nltk

Maintenant, importez le PorterStemmer classe pour implémenter l'algorithme Porter Stemmer.

from nltk.stem import PorterStemmer

Ensuite, créez une instance de la classe Porter Stemmer comme suit -

word_stemmer = PorterStemmer()

Maintenant, saisissez le mot que vous souhaitez extraire.

word_stemmer.stem('writing')

Production

'write'
word_stemmer.stem('eating')

Production

'eat'

Exemple d'implémentation complet

import nltk
from nltk.stem import PorterStemmer
word_stemmer = PorterStemmer()
word_stemmer.stem('writing')

Production

'write'

Algorithme de dérivation Lancaster

Il a été développé à l'Université de Lancaster et c'est un autre algorithme de dérivation très courant.

Classe LancasterStemmer

NLTK a LancasterStemmerclasse à l'aide de laquelle nous pouvons facilement implémenter les algorithmes Lancaster Stemmer pour le mot que nous voulons dériver. Voyons un exemple -

Tout d'abord, nous devons importer la boîte à outils en langage naturel (nltk).

import nltk

Maintenant, importez le LancasterStemmer classe pour implémenter l'algorithme Lancaster Stemmer

from nltk.stem import LancasterStemmer

Ensuite, créez une instance de LancasterStemmer classe comme suit -

Lanc_stemmer = LancasterStemmer()

Maintenant, saisissez le mot que vous souhaitez extraire.

Lanc_stemmer.stem('eats')

Production

'eat'

Exemple d'implémentation complet

import nltk
from nltk.stem import LancatserStemmer
Lanc_stemmer = LancasterStemmer()
Lanc_stemmer.stem('eats')

Production

'eat'

Algorithme de dérivation d'expression régulière

Avec l'aide de cet algorithme de tige, nous pouvons construire notre propre tige.

Classe RegexpStemmer

NLTK a RegexpStemmerclasse à l'aide de laquelle nous pouvons facilement implémenter des algorithmes d'expressions régulières Stemmer. Il prend essentiellement une seule expression régulière et supprime tout préfixe ou suffixe qui correspond à l'expression. Voyons un exemple -

Tout d'abord, nous devons importer la boîte à outils en langage naturel (nltk).

import nltk

Maintenant, importez le RegexpStemmer classe pour implémenter l'algorithme Regular Expression Stemmer.

from nltk.stem import RegexpStemmer

Ensuite, créez une instance de RegexpStemmer class et fournit le suffixe ou le préfixe que vous souhaitez supprimer du mot comme suit -

Reg_stemmer = RegexpStemmer(‘ing’)

Maintenant, saisissez le mot que vous souhaitez extraire.

Reg_stemmer.stem('eating')

Production

'eat'
Reg_stemmer.stem('ingeat')

Production

'eat'
Reg_stemmer.stem('eats')

Production

'eat'

Exemple d'implémentation complet

import nltk
from nltk.stem import RegexpStemmer
Reg_stemmer = RegexpStemmer()
Reg_stemmer.stem('ingeat')

Production

'eat'

Algorithme de tige de boule de neige

C'est un autre algorithme de dérivation très utile.

SnowballStemmer classe

NLTK a SnowballStemmerclasse à l'aide de laquelle nous pouvons facilement implémenter les algorithmes Snowball Stemmer. Il prend en charge 15 langues non anglaises. Pour utiliser cette classe steaming, nous devons créer une instance avec le nom du langage que nous utilisons, puis appeler la méthode stem (). Voyons un exemple -

Tout d'abord, nous devons importer la boîte à outils en langage naturel (nltk).

import nltk

Maintenant, importez le SnowballStemmer classe pour implémenter l'algorithme Snowball Stemmer

from nltk.stem import SnowballStemmer

Voyons les langues qu'il prend en charge -

SnowballStemmer.languages

Production

(
   'arabic',
   'danish',
   'dutch',
   'english',
   'finnish',
   'french',
   'german',
   'hungarian',
   'italian',
   'norwegian',
   'porter',
   'portuguese',
   'romanian',
   'russian',
   'spanish',
   'swedish'
)

Ensuite, créez une instance de la classe SnowballStemmer avec la langue que vous souhaitez utiliser. Ici, nous créons la tige de la langue «française».

French_stemmer = SnowballStemmer(‘french’)

Maintenant, appelez la méthode stem () et entrez le mot que vous souhaitez extraire.

French_stemmer.stem (‘Bonjoura’)

Production

'bonjour'

Exemple d'implémentation complet

import nltk
from nltk.stem import SnowballStemmer
French_stemmer = SnowballStemmer(‘french’)
French_stemmer.stem (‘Bonjoura’)

Production

'bonjour'

Qu'est-ce que la lemmatisation?

La technique de lemmatisation est comme la tige. La sortie que nous obtiendrons après la lemmatisation est appelée «lemme», qui est un mot racine plutôt qu'une racine racine, la sortie de la racine. Après la lemmatisation, nous obtiendrons un mot valide qui signifie la même chose.

NLTK fournit WordNetLemmatizer classe qui est une fine enveloppe autour du wordnetcorpus. Cette classe utilisemorphy() fonction à la WordNet CorpusReaderclasse pour trouver un lemme. Comprenons-le avec un exemple -

Exemple

Tout d'abord, nous devons importer la boîte à outils en langage naturel (nltk).

import nltk

Maintenant, importez le WordNetLemmatizer classe pour implémenter la technique de lemmatisation.

from nltk.stem import WordNetLemmatizer

Ensuite, créez une instance de WordNetLemmatizer classe.

lemmatizer = WordNetLemmatizer()

Maintenant, appelez la méthode lemmatize () et entrez le mot dont vous voulez trouver le lemme.

lemmatizer.lemmatize('eating')

Production

'eating'
lemmatizer.lemmatize('books')

Production

'book'

Exemple d'implémentation complet

import nltk
from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
lemmatizer.lemmatize('books')

Production

'book'

Différence entre la tige et la lemmatisation

Comprenons la différence entre Stemming et Lemmatization à l'aide de l'exemple suivant -

import nltk
from nltk.stem import PorterStemmer
word_stemmer = PorterStemmer()
word_stemmer.stem('believes')

Production

believ
import nltk
from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
lemmatizer.lemmatize(' believes ')

Production

believ

La sortie des deux programmes indique la différence majeure entre la racine et la lemmatisation. PorterStemmerla classe coupe le «es» du mot. D'autre part,WordNetLemmatizerclass trouve un mot valide. En termes simples, la technique de radicalisation ne regarde que la forme du mot tandis que la technique de lemmatisation regarde le sens du mot. Cela signifie qu'après l'application de la lemmatisation, nous obtiendrons toujours un mot valide.