Qu'est-ce que la tige?
La racine est une sorte de normalisation des mots. La normalisation est une technique dans laquelle un ensemble de mots dans une phrase est converti en une séquence pour raccourcir sa recherche. Les mots qui ont le même sens mais qui présentent des variations selon le contexte ou la phrase sont normalisés.
En un autre mot, il y a un mot racine, mais il existe de nombreuses variantes des mêmes mots. Par exemple, le mot racine est «manger» et ses variations sont «mange, mange, mange et j'aime ça». De la même manière, avec l'aide de Stemming, nous pouvons trouver le mot racine de toutes les variations.
Par exemple
He was riding.He was taking the ride.
Dans les deux phrases ci-dessus, le sens est le même, c'est-à-dire, activité d'équitation dans le passé. Un humain peut facilement comprendre que les deux significations sont les mêmes. Mais pour les machines, les deux phrases sont différentes. Il est donc devenu difficile de le convertir dans la même ligne de données. Si nous ne fournissons pas le même ensemble de données, la machine ne parvient pas à prédire. Il est donc nécessaire de différencier la signification de chaque mot pour préparer l'ensemble de données pour l'apprentissage automatique. Et ici, la racine est utilisée pour catégoriser le même type de données en obtenant son mot racine.
Implémentons cela avec un programme Python.NLTK a un algorithme nommé "PorterStemmer". Cet algorithme accepte la liste des mots tokenisés et la transforme en mot racine.
Programme pour comprendre la Stemming
from nltk.stem import PorterStemmere_words= ["wait", "waiting", "waited", "waits"]ps =PorterStemmer()for w in e_words:rootWord=ps.stem(w)print(rootWord)
Sortie :
waitwaitwaitwait
Explication du code:
- Il y a un module de tige dans NLTk qui est importé. Si vous importez le module complet, alors le programme devient lourd car il contient des milliers de lignes de codes. Donc, à partir de l'ensemble du module de tige, nous n'avons importé que «PorterStemmer».
- Nous avons préparé une liste fictive de données de variation du même mot.
- Un objet est créé qui appartient à la classe nltk.stem.porter.PorterStemmer.
- De plus, nous l'avons transmis à PorterStemmer un par un en utilisant la boucle «for». Enfin, nous avons obtenu le mot racine de sortie de chaque mot mentionné dans la liste.
A partir de l'explication ci-dessus, on peut également conclure que la dérivation est considérée comme une étape de prétraitement importante car elle supprimait la redondance dans les données et les variations dans le même mot. En conséquence, les données sont filtrées, ce qui contribuera à une meilleure formation de la machine.
Maintenant, nous passons une phrase complète et vérifions son comportement en tant que sortie.
Programme:
from nltk.stem import PorterStemmerfrom nltk.tokenize import sent_tokenize, word_tokenizesentence="Hello Guru99, You have to build a very good site and I love visiting your site."words = word_tokenize(sentence)ps = PorterStemmer()for w in words:rootWord=ps.stem(w)print(rootWord)
Production:
helloguru99,youhavebuildaverigoodsiteandIlovevisityoursite
Explication du code
- Le package PorterStemer est importé à partir de la tige du module
- Les packages pour la tokenisation de la phrase ainsi que les mots sont importés
- Une phrase est écrite qui doit être symbolisée à l'étape suivante.
- La tokenisation de Word est implémentée dans cette étape.
- Un objet pour PorterStemmer est créé ici.
- La boucle est exécutée et la racine de chaque mot est effectuée à l'aide de l'objet créé dans la ligne de code 5
Conclusion:
Stemming est un module de prétraitement de données. La langue anglaise a de nombreuses variantes d'un seul mot. Ces variations créent une ambiguïté dans la formation et la prédiction du machine learning. Pour créer un modèle réussi, il est essentiel de filtrer ces mots et de les convertir en le même type de données séquencées à l'aide de la racine. En outre, il s'agit d'une technique importante pour obtenir des données de ligne à partir d'un ensemble de phrases et la suppression des données redondantes également appelées normalisation.
Qu'est-ce que la lemmatisation?
La lemmatisation est le processus algorithmique de recherche du lemme d'un mot en fonction de sa signification. La lemmatisation fait généralement référence à l'analyse morphologique des mots, qui vise à supprimer les terminaisons flexionnelles. Il aide à renvoyer la forme de base ou de dictionnaire d'un mot, connu sous le nom de lemme. La méthode de lemmatisation NLTK est basée sur la fonction morphing intégrée de WorldNet. Le prétraitement du texte comprend à la fois la diffusion et la lemmatisation. Beaucoup de gens trouvent les deux termes déroutants. Certains les traitent de la même manière, mais il y a une différence entre les deux. La lemmatisation est préférée à la première en raison de la raison ci-dessous.
Pourquoi la Lemmatisation est-elle meilleure que la Stemming?
L'algorithme de racine fonctionne en coupant le suffixe du mot. Dans un sens plus large, coupe le début ou la fin du mot.
Au contraire, la lemmatisation est une opération plus puissante, et elle prend en compte l'analyse morphologique des mots. Il renvoie le lemme qui est la forme de base de toutes ses formes flexionnelles. Des connaissances linguistiques approfondies sont nécessaires pour créer des dictionnaires et rechercher la forme appropriée du mot. La stemming est une opération générale tandis que la lemmatisation est une opération intelligente où la forme appropriée sera recherchée dans le dictionnaire. Par conséquent, la lemmatisation aide à créer de meilleures fonctionnalités d'apprentissage automatique.
Code pour faire la distinction entre la lemmatisation et la tige
Code de tige
import nltkfrom nltk.stem.porter import PorterStemmerporter_stemmer = PorterStemmer()text = "studies studying cries cry"tokenization = nltk.word_tokenize(text)for w in tokenization:print("Stemming for {} is {}".format(w,porter_stemmer.stem(w)))
Production:
Stemming for studies is studiStemming for studying is studiStemming for cries is criStemming for cry is cri
Code de lemmatisation
import nltkfrom nltk.stem import WordNetLemmatizerwordnet_lemmatizer = WordNetLemmatizer()text = "studies studying cries cry"tokenization = nltk.word_tokenize(text)for w in tokenization:print("Lemma for {} is {}".format(w, wordnet_lemmatizer.lemmatize(w)))
Production:
Lemma for studies is studyLemma for studying is studyingLemma for cries is cryLemma for cry is cry
Discussion sur les résultats:
Si vous cherchez à faire des études et à étudier, le résultat est le même (studi) mais le lemmatizer fournit un lemme différent pour les deux tokens étudient pour les études et étudient pour étudier. Ainsi, lorsque nous avons besoin de créer un ensemble de fonctionnalités pour entraîner la machine, ce serait formidable si la lemmatisation est préférée.
Cas d'utilisation de Lemmatizer:
Lemmatizer minimise l'ambiguïté du texte. Des exemples de mots comme vélo ou vélos sont convertis en mot de base vélo. Fondamentalement, il convertira tous les mots ayant la même signification mais une représentation différente dans leur forme de base. Il réduit la densité de mots dans le texte donné et aide à préparer les fonctionnalités précises pour la machine d'entraînement. Plus les données seront propres, plus votre modèle d'apprentissage automatique sera intelligent et précis. Lemmatizer économisera également de la mémoire ainsi que des coûts de calcul.
Exemple en temps réel montrant l'utilisation de la lemmatisation Wordnet et du marquage POS en Python
from nltk.corpus import wordnet as wnfrom nltk.stem.wordnet import WordNetLemmatizerfrom nltk import word_tokenize, pos_tagfrom collections import defaultdicttag_map = defaultdict(lambda : wn.NOUN)tag_map['J'] = wn.ADJtag_map['V'] = wn.VERBtag_map['R'] = wn.ADVtext = "guru99 is a totally new kind of learning experience."tokens = word_tokenize(text)lemma_function = WordNetLemmatizer()for token, tag in pos_tag(tokens):lemma = lemma_function.lemmatize(token, tag_map[tag[0]])print(token, "=>", lemma)
Explication du code
- Tout d'abord, le wordnet du lecteur de corpus est importé.
- WordNetLemmatizer est importé de wordnet
- Le jeton Word ainsi que des parties de la balise vocale sont importés de nltk
- Le dictionnaire par défaut est importé des collections
- Le dictionnaire est créé où pos_tag (première lettre) sont les valeurs clés dont les valeurs sont mappées avec la valeur du dictionnaire wordnet. Nous avons pris la seule première lettre car nous l'utiliserons plus tard dans la boucle.
- Le texte est écrit et symbolisé.
- L'objet lemma_function est créé qui sera utilisé à l'intérieur de la boucle
- La boucle est exécutée et lemmatize prendra deux arguments, l'un est token et l'autre est un mappage de pos_tag avec la valeur wordnet.
Production:
guru99 => guru99is => betotally => totallynew => newkind => kindof => oflearning => learnexperience => experience. => .
La lemmatisation a une relation étroite avec le dictionnaire wordnet, il est donc essentiel d'étudier ce sujet, nous le gardons donc comme sujet suivant