Bienvenue dans le monde étonnant du traitement du langage naturel (NLP), où les ordinateurs comprennent de mieux en mieux ce que nous disons.
Avez-vous déjà réfléchi à la façon dont les ordinateurs comprennent le langage humain ? La réponse réside dans un secret particulier : la PNL.
La plupart des modèles PNL nous parlent couramment, tout cela grâce à un raffinement minutieux du texte. Nous allons parler des étapes cruciales que suit la PNL dans cet article.
Nous parlerons de choses comme la ponctuation, les caractères spéciaux, les mots vides, la radicalisation et même la lemmatisation. De la décomposition des phrases à la correction des fautes d'orthographe, nous sommes là pour rendre ces idées faciles à comprendre.
Mais ce n'est pas tout : nous abordons également des sujets plus complexes comme la gestion des nombres, la clarté des contractions et la gestion des balises HTML délicates. Chaque partie de notre article vous montrera le travail caché qui fait briller la PNL. Préparez-vous à découvrir comment le nettoyage et le prétraitement de texte permettent à la PNL de faire des merveilles d'une manière que vous n'auriez jamais imaginée.

What is NLP?
Traitement automatique du langage naturel (TAL) c’est comme combiner l’informatique, le langage humain et l’intelligence artificielle. Il s'agit de créer des instructions et des outils spéciaux pour les ordinateurs afin qu'ils puissent comprendre, expliquer et créer un langage humain.
La PNL utilise l’informatique et les méthodes de l’IA pour aider les ordinateurs à comprendre la signification des mots et des phrases, tout comme nous. Cela aide les ordinateurs à mieux nous parler et à ressembler davantage à de vraies conversations. Cette zone spéciale a conduit à des choses sympas comme traduire des langues, des chatbots utiles et la compréhension des sentiments dans le texte. C'est là que la technologie et le langage se rencontrent.
Par exemple, la PNL est utile dans
- Question Répondant Chatbots
- Verrous audio pour mobile/ordinateur
- Reconnaissance vocale
- Détection du spam dans les e-mails
- Récapitulation
Il existe deux aspects clés du traitement du langage naturel (NLP) :
- Compréhension du langage naturel (NLU) se concentre sur l’enseignement aux ordinateurs pour comprendre et interpréter le langage humain. Les algorithmes NLU aident les ordinateurs »comprendre» ce que les humains disent ou écrivent. NLU aide les ordinateurs à saisir le sens, le contexte et la structure du langage, leur permettant ainsi de réagir avec précision et efficacité.
- Génération du langage naturel (NLG): NLG consiste à amener les ordinateurs à produire du texte de type humain. Les algorithmes NLG prennent des données ou des informations structurées et les convertissent en phrases ou paragraphes lisibles et cohérents. C'est comme apprendre aux ordinateurs à écrire ! NLG utilise des modèles et des règles pour générer un contenu convivial, naturel et compréhensible.
Basic Terminology in NLP
- Corpus: Il s'agit d'une vaste collection de documents texte tels que des actualités, des tweets, des informations, etc. Il est utile aux ordinateurs pour apprendre. L'ex-Corpus est constitué de documents (Document-1, Document-2, Document-3……….)
- Documents: Le document est composé de différents paragraphes.
- Jeton et tokenisation: Les jetons sont des parties plus petites de phrases, et la tokenisation est le processus de conversion de phrases en jetons. Ex – Supposons qu'il s'agisse d'une phrase : « Mon nom est Sanket ». Ainsi, après la tokenisation, nous obtiendrons ["Mon", "Nom", "est", "Sanket".]
- Morphine (mot de base): Un plus petit mot significatif sans préfixe ni suffixe. Ex- « Inconfortable » : « Un » + « Confort » + « Capable ». Donc, ici, notre mot de base est Confort.
Explorons maintenant chacune des étapes et techniques du nettoyage de texte !
Text Cleaning Techniques
Suppression des entités sonores
La suppression des entités de bruit est une étape cruciale du PNL, où les entités non pertinentes ou dénuées de sens sont identifiées et supprimées des données textuelles.
En éliminant les entités telles que les termes génériques, les symboles et les noms sans rapport, le texte devient plus ciblé et précis, améliorant ainsi la qualité des tâches de PNL telles que l'analyse des sentiments et la reconnaissance des entités nommées. Ce processus garantit que les analyses sont basées sur un contenu significatif, exempt d'éléments gênants ou sans conséquence.
a] Suppression des caractères spéciaux et de la ponctuation :
Une partie de ce processus consiste à nettoyer les caractères spéciaux et la ponctuation. Ce sont des lettres et des symboles inhabituels, comme des visages souriants ou des lettres étrangères. Ils incluent également des points, des virgules et des marques qui aident les phrases à paraître organisées.
Voici pourquoi c'est important : ces caractères et ces marques peuvent rendre la lecture des mots difficile. Ils peuvent confondre les machines qui tentent de comprendre les mots ou de comprendre ce qu’ils signifient. Nous les supprimons donc pour nous assurer que les machines comprennent mieux les mots et peuvent faire leur travail, comme comprendre ce que signifient les mots ou découvrir ce que les gens ressentent lorsqu'ils écrivent.
Voici quelques exemples de caractères spéciaux et de signes de ponctuation souvent supprimés :
| # ' , .% & ^*! @ ( ) _ + = – [ ]$ > \ {} ` ~ ; : /?
Voici un code Python qui vous permettra de comprendre comment supprimer la ponctuation du texte :
import nltk
from nltk.tokenize import word_tokenize
nltk.download('punkt') # Download the punkt tokenizer
# Define function
def remove_punctuation(text):
words = word_tokenize(text) # Tokenize the text into words
words_without_punct = [word for word in words if word.isalnum()] # Keep only alphanumeric words
clean_text = ' '.join(words_without_punct) # Join the words back into a cleaned text
return clean_text
# Example input text with punctuation
input_text = "Hello, Everyone! How are you?"
# Remove punctuation using nltk
cleaned_text = remove_punctuation(input_text)
print("Input Text:", input_text)
print("Cleaned Text:", cleaned_text)
Sortie :
Input Text: Hello, Everyone! How are you?
Cleaned Text: Hello Everyone How are you
b] Suppression des mots vides :
Les mots vides sont des mots courants que nous utilisons comme « le », « et », « est » et « dans » qui apparaissent fréquemment dans une langue mais qui n'ont souvent pas de signification significative en eux-mêmes. Étant donné que la PNL vise à découvrir des informations significatives à partir des données textuelles, la suppression des mots vides est cruciale. Les mots vides peuvent affecter des tâches telles que la classification de texte, l'analyse des sentiments et la modélisation de sujets en introduisant une complexité inutile et en faussant potentiellement les résultats.
Pour améliorer l'efficacité des tâches PNL, diverses méthodes sont utilisées pour identifier et supprimer les mots vides. Une approche courante consiste à utiliser des listes prédéfinies de mots vides spécifiques à une langue. Ces listes contiennent des mots généralement considérés comme ayant peu de valeur sémantique. Les bibliothèques NLP, comme NLTK ou spaCy en Python, proposent des listes de mots vides intégrées qui peuvent être utilisées à cette fin.
import nltk
from nltk.corpus import stopwords
nltk.download('punkt')
nltk.download('stopwords')
# Sample sentence with more stopwords
sentence = 'There are so many movies in the world, but few of them were able to win Oscar'
# Tokenize the sentence
words = nltk.word_tokenize(sentence)
# Load English stopwords
stop_words = set(stopwords.words('english'))
# Remove stopwords
filtered_words = [w for w in words if w.lower() not in stop_words]
print("Original Sentence:", sentence)
print("After Stopword Removal:", " ".join(filtered_words))
Sortie :
Original Sentence: There are so many movies in the world, but few of them were able to win Oscar.
After Stopword Removal: Many movies world, few able win Oscar.
Avançons vers la correction orthographique !
c] Vérification orthographique et correction :
La vérification orthographique joue un rôle crucial dans le nettoyage du texte en identifiant et en corrigeant les fautes d'orthographe dans le contenu écrit. Une orthographe inexacte peut créer de la confusion et avoir un impact négatif sur la crédibilité du texte. automatique vérification orthographique garantit que le texte est exempt d’erreurs et communique efficacement le message prévu. Dans divers domaines, notamment la communication, la création de contenu et l’analyse de données, une orthographe précise est essentielle pour maintenir le professionnalisme et garantir une analyse précise.
Plusieurs techniques sont utilisées pour la correction orthographique automatique. Une approche courante consiste à utiliser des dictionnaires ou des modèles de langage prédéfinis contenant une liste de mots correctement orthographiés.
from spellchecker import SpellChecker
# Create a SpellChecker object
spell = SpellChecker()
# Sample text with spelling errors
text = "I Havv a gret idea To improov the Efficiensy of our procEss."
# Tokenize the text
words = text.split()
# Find and correct misspelled words
corrected_words = [spell.correction(word) for word in words]
# Join corrected words to form corrected text
corrected_text = " ".join(corrected_words)
print("Original Text:", text)
print("Corrected Text:", corrected_text)
Sortie :
Original Text: I Havv a gret idea To improov the Efficiensy of our procEss.
Corrected Text: I have a great idea to improve the efficiency of our process.
Maintenant, nous allons comprendre comment gérer les valeurs numériques en PNL :
d] Gestion des entités numériques et de nom :
Les informations numériques et de date sont des types de données courants qui apparaissent dans les textes en langage naturel. Ils peuvent contenir des informations importantes telles que des quantités, des mesures, des prix, des dates, des heures, des durées, etc.
Par exemple, le nombre 1000 1,000 peut s'écrire « mille », « 1 103 », « XNUMXK », « XNUMX » ou « 千 » dans différents contextes.
Pour surmonter ces défis, les systèmes NLP doivent utiliser certaines stratégies pour encoder ou normaliser les données numériques et de date. Encoder signifie transformer les données en une représentation adaptée au traitement ou à l’analyse. Normaliser signifie convertir les données sous une forme standard ou cohérente plus facile à comparer ou à manipuler.
Stratégies pour surmonter ces défis :
tokenization: Diviser le texte en unités plus petites comme les mots, les chiffres, les symboles et la ponctuation. Il aide à reconnaître les données numériques et de date dans le texte. (Comme mentionné précédement)
Analyse: Analyser la structure et la signification du texte en utilisant la grammaire et la logique. Il clarifie le contexte des données numériques et de date, résolvant ainsi toute ambiguïté.
Conversion: Modification des formats numériques et de date pour plus de cohérence. Il standardise les informations à l'aide d'un système commun.
extraction: Identifier et isoler des données numériques et de date à travers des modèles ou des règles. Il capture les informations pertinentes pour l’analyse ou le traitement.
Ce code extraira des valeurs numériques à l'aide d'expressions régulières. Nous utilisons la bibliothèque dateutil pour extraire les données :
import re
from dateutil.parser import parse
# Sample text containing numerical and date information
text = "Sales for the year 2023 reached $100,000 on 2023-08-31."
# Extract numerical information using regular expressions
numerical_entities = [int(match) for match in re.findall(r'\d+', text)]
# Extract date information using dateutil library
date_entities = parse(text, fuzzy_with_tokens=True)[0]
print("Numerical Entities:", numerical_entities)
print("Date Entities:", date_entities)
Sortie :
Numerical Entities: [2023, 100000, 2023, 08, 31]
Date Entities: 2023-08-31 00:00:00
De telle sorte que nous puissions extraire des entités numériques de notre texte.
e] Gestion des contractions et des abréviations :
Lorsque nous réduisons des mots comme « Je suis » pour « Je suis » ou « NLP » pour « Traitement du langage naturel », cela s'appelle des contractions et des abréviations. Les étendre est important pour les systèmes NLP. Cela aide à nettoyer le texte, à le rendre plus facile à comprendre et à éviter toute confusion ou confusion. L'expansion des contractions et des abréviations peut aider à :
- Améliore la cohérence et les performances du modèle NLP.
- Réduit l’utilisation de la mémoire et la charge de calcul.
- Clarifie l’ambiguïté et maintient le sentiment.
- Diverses méthodes, notamment des dictionnaires, des règles et machine learning, peut être utilisé pour développer des contractions et des abréviations, chacune avec ses points forts et ses considérations.
Approches pour gérer les contractions et les abréviations :
- Basé sur un dictionnaire
- Basé sur la grammaire
- Basé sur l'apprentissage automatique
Approche simple basée sur un dictionnaire :
Ce code développe les contractions et les abréviations.
# Sample text with contractions and abbreviations
text = "I'm happy to see you and can't wait to discuss about NLP."
# Contraction dictionary with meaning
contraction_dict = {
"I'm": "I am",
"can't": "cannot"
# Add more contractions and their expansions as needed
}
# Function to expand contractions
def expand_contractions(text, contraction_dict):
words = text.split()
expanded_words = [contraction_dict.get(word, word) for word in words]
expanded_text = " ".join(expanded_words)
return expanded_text
expanded_text = expand_contractions(text, contraction_dict)
print("Original Text:", text)
print("Expanded Text:", expanded_text)
Original Text: I'm happy to see you and can't wait to discuss about NLP.
Expanded Text: I am happy to see you and cannot wait to discuss about NLP.
Nous pouvons ajouter ou supprimer des abréviations et des contractions selon nos besoins.
f] Gérer les balises HTML et le balisage :
Les balises HTML sont écrites entre crochets (< et >) et sont généralement présentées par paires, comme et pour un paragraphe. Les balises HTML sont des codes qui formatent les pages Web et influencent la manière dont le contenu est affiché. Ils peuvent compliquer l’analyse du texte en introduisant du bruit et en modifiant la structure. Cependant, ils offrent des indices sémantiques utiles pour des tâches telles que la synthèse.
Pour gérer les balises HTML dans les données texte, nous pouvons utiliser certaines techniques pour supprimer les balises HTML et préserver le contenu du texte. Supprimer les balises HTML signifie supprimer ou remplacer les balises HTML des données texte, tandis que préserver le contenu du texte signifie conserver ou obtenir le texte brut des données texte.
Techniques de gestion des balises HTML :
Expression régulière: Supprime rapidement les balises HTML mais peut être inexact si les balises sont complexes.
Analyseur HTML : comprend avec précision les balises, mais peut être plus lent et plus complexe.
Grattoir Web: récupère facilement le texte brut des pages Web, mais la disponibilité peut être limitée.
Voici le code pour accomplir cela en utilisant BeautifulSoup:
from bs4 import BeautifulSoup
import requests
import re
# URL of the web page to extract text from
url = "https://www.example.com" # Replace with the actual URL
# Fetching HTML content from the web page
response = requests.get(url)
html_content = response.content
# Create a BeautifulSoup object
soup = BeautifulSoup(html_content, 'html.parser')
# Remove HTML tags using regular expressions
cleaned_text = re.sub(r'<.*?>', '', soup.get_text())
print("Original HTML:")
print(html_content)
print("\nCleaned Text (without HTML tags):")
print(cleaned_text)
Pour exécuter le code ci-dessus, vous devez remplacer « https://www.example.com » par un lien réel. Avec l'aide de BeautifulSoup, vous récupérerez le contenu de ce site Web. Après la suppression du Web, vous supprimerez les balises HTML à l’aide d’expressions régulières.
Passons maintenant au prétraitement du texte.
Text Preprocessing
Dans tout projet NLP, la tâche initiale est le prétraitement du texte. Le prétraitement consiste à organiser le texte saisi dans un format cohérent et analysable. Cette étape est essentielle pour créer une application NLP remarquable.
Il existe différentes manières de prétraiter du texte :
- tokenization
- Standardisation
- Normalisation
Parmi celles-ci, l’une des étapes les plus importantes est la tokenisation. tokenization implique de diviser une séquence de données textuelles en mots, termes, phrases, symboles ou autres composants significatifs appelés jetons. Il existe de nombreux outils open source disponibles pour effectuer le processus de tokenisation.
tokenization
La tokenisation constitue la phase initiale de tout processus NLP et influence considérablement l’ensemble du pipeline. En utilisant un tokenizer, les données non structurées et le texte en langage naturel sont segmentés en fragments gérables. Ces fragments, connus sous le nom tokens, peuvent être traités comme des composants distincts. Dans un document, la fréquence des jetons peut être exploitée pour créer un vecteur qui représente le document.
Cette transformation rapide convertit une chaîne brute et non structurée (document texte) en une structure numérique adaptée à l'apprentissage automatique. Les jetons possèdent le potentiel de demander directement aux ordinateurs de lancer des actions et des réponses précieuses. Alternativement, ils peuvent fonctionner comme des attributs dans une séquence d’apprentissage automatique, déclenchant des décisions ou des comportements plus complexes.
La tokenisation implique la division du texte en phrases, mots, caractères ou sous-mots. Lorsque nous segmentons le texte en phrases, on parle de tokenisation de phrase. D’un autre côté, si nous le décomposons en mots, c’est ce qu’on appelle la tokenisation des mots.
Il existe différents types de tokenisation :
Exemple de Tokénisation des phrases:
sent_tokenize(“My favorite movie is free guy”)
-> [«Mon film préféré est Free Guy»]
Exemple de Tokénisation de mots:
Word_tokenize(“Elon musk is a Businessman”)
-> [« Elon », « musc », « est », « un », « Homme d'affaires »]
a] Tokenisation des espaces blancs
La forme la plus simple de tokenisation consiste à diviser le texte partout où il y a un espace ou un espace. C'est comme couper une phrase en morceaux là où il y a un vide. Bien que cette approche soit simple, elle risque de ne pas gérer efficacement la ponctuation ou les cas particuliers.
Exemple de tokenisation WhiteSpace :
« Le traitement du langage naturel est incroyable ! »
-> [« Naturel », « langage », « traitement », « est », « incroyable ! »].
b] Tokenisation d'expressions régulières
La tokenisation des expressions régulières implique l'utilisation de modèles pour définir où diviser le texte en jetons. Cela permet une tokenisation plus précise, une gestion de la ponctuation et des cas particuliers mieux que le simple fractionnement des espaces.
Exemple de tokenisation d'expressions régulières :
"Envoyez-moi un e-mail à jack.sparrow@blackpearl.com. »
-> ["E-mail", "moi", "à", "jack", ".", "sparrow", "@", "blackpearl", ".", "com", "."]
c] Tokenisation de mots et de sous-mots
Cette approche se concentre sur la préservation des signes de ponctuation en tant que jetons distincts. C'est particulièrement utile lorsqu'il est crucial de conserver la signification de la ponctuation, comme dans l'analyse des sentiments.
La tokenisation des sous-mots divise les mots en unités significatives plus petites, telles que des syllabes ou des parties de mots. C'est particulièrement utile pour les langues avec des structures de mots complexes.
Exemple de Tokénisation de mots:
"Ouah! C'est incroyable."
-> ["Wow", "!", "Ceci", "est", "incroyable", "."]
Exemple de Tokenisation de sous-mots:
"incroyable"
-> ["non", "crédible"]
d] Tokenisation du codage par paire d'octets (BPE)
Le codage par paire d'octets est une technique de tokenisation de sous-mots qui divise les mots en unités plus petites en fonction de leur fréquence d'occurrence. Ceci est particulièrement utile pour la manipulation rare ou des mots hors vocabulaire.
e] Tokenisation de Treebank
La tokenisation Treebank utilise des règles prédéfinies basées sur des conventions linguistiques pour tokeniser le texte. Il prend en compte des facteurs tels que les contractions et les mots coupés.
Exemple : « Je n'arrive pas à croire que nous sommes le 23 août ! »
-> ["Je", "peux", "'t", "croire", "ça", "'s", "août", "23", "!"].
Voici donc les types de tokenisation. Nous allons maintenant nous diriger vers la normalisation du texte.
Standardiser le texte
Minuscules et majuscules
Standardiser la casse du texte signifie convertir le texte dans la même casse, généralement en minuscules, pour faciliter son traitement et son analyse. La normalisation de la casse du texte consiste à rendre toutes les lettres d'un morceau de texte identiques, souvent en minuscules, pour faciliter le travail. Ceci est utile dans des domaines tels que l'analyse du langage, où nous utilisons des ordinateurs pour comprendre des mots et des phrases. Lorsque nous faisons cela, nous ordonnons le texte pour que les ordinateurs puissent mieux le comprendre.
Cela contribue à rendre le texte plus cohérent et élimine toute confusion. Par exemple, si nous comptons la fréquence à laquelle les mots apparaissent, nous voulons que « Apple » et « pomme » soient considérés comme la même chose. Nous ne voulons pas que l'ordinateur les traite comme des mots différents simplement à cause de la lettre majuscule. C'est comme être juste envers tous les mots !
Mais il y a des moments où nous ne respectons pas cette règle. Parfois, les grosses majuscules sont importantes. Par exemple, dans le langage informatique, nous avons des noms pour des choses qui doivent rester les mêmes, comme « Royaume-Uni » ou « NASA ». De plus, si quelqu'un écrit en GRANDES lettres, comme « STOP ! ou « SOS », la signification est différente ou ils pourraient montrer leurs émotions.
Une autre chose à savoir est qu’il existe différents styles d’écriture. Parfois, dans le code informatique, les mots sont rejointLikeThis or séparés_par_underscores.
En bref, standardiser la casse du texte revient à donner une jolie coupe au texte pour que les ordinateurs puissent le comprendre. Mais n’oubliez pas qu’il existe des cas particuliers où nous enfreignons la règle pour de bonnes raisons.
Ce code vérifie si deux mots, « Apple » et « apple », sont identiques en convertissant les mots en minuscules. Si c'est le cas, il affichera qu'ils sont identiques ; sinon, il imprime qu'ils sont différents.
# Standardizing text case
word1 = "Apple"
word2 = "apple"
# Convert words to lowercase
word1_lower = word1.lower()
word2_lower = word2.lower()
# Comparing standardized words
if word1_lower == word2_lower:
print("The words are the same when case is ignored.")
else:
print("The words are different even when case is ignored.")
Sortie :
The words are the same when case is ignored.
Allons vers la normalisation.
Normalisation
La normalisation est le processus par lequel les jetons sont convertis dans leur forme de base. Lors de la normalisation, la flexion est supprimée du mot pour obtenir sa forme de base.
L'objectif de la normalisation est de réduire les variations du texte qui n'ont pas de signification significative mais qui peuvent affecter la précision des tâches de PNL. Différentes formes de normalisation sont utilisées pour relever des défis spécifiques dans le traitement de texte.
Pour des exemples,
suis, suis, est => être
chat, chats, chat, chat => chat
Appliquons le mappage à la phrase ci-dessous :
Tous les chats de Don sont de couleurs différentes => Tous les chats de Don sont de couleurs différentes
Il existe des méthodes populaires de normalisation en PNL.
- Stemming
- Lemmatisation
a] Originaire
Avant de plonger dans la recherche du radical, familiarisons-nous avec le terme «endiguer.» Considérez les racines des mots comme la forme de base d'un mot. Lorsque nous leur ajoutons des pièces supplémentaires, cela s'appelle inflexion, et c'est ainsi que nous créons de nouveaux mots.
Les mots radicaux sont les mots qui restent après la suppression des préfixes et des suffixes d'un mot. Parfois, la recherche de radical peut produire des mots qui ne figurent pas dans le dictionnaire ou qui n’ont aucun sens. Par conséquent, la recherche de racines n’est pas aussi efficace qu’une technique de lemmatisation dans diverses tâches.
Ex- « Rapidement », « Plus rapide », « Le plus rapide »
Mot dérivé- "Rapide» (Pas un mot du dictionnaire)
Ex – « Les grenouilles dansent et les chiens chantent. »
Jetons à tige : ['grenouille', 'sont', 'danser', 'et', 'chien', 'sont', 'chanter']
Au-dessus de la tige: Plus de tiges de lettres, ou plus d'une tige correspond au même mot, et les significations originales sont perdues.
Ex- « Ordinateur », « Calcul » et « Calcul » -> « Calcul »
Sous la racine: Vérifiez cet exemple
Ex- "Saut", "Sauté" et "Sauts" -> "Saut", "Sauté" et "Sauts".
Ici, les trois mots auraient dû être dérivés du mot de base « saut », mais l'algorithme n'a pas réussi à le capturer.
Types de tiges dans NLTK :
- Porter Stemmer,
- Lancaster Stemmer,
- Boule de neigeStemmer, etc.
Nous utilisons les trois stemmers (PorterStemmer, LancasterStemmer, SnowballStemmer) pour le stemmer. Il divise la phrase en mots individuels, puis essaie trois manières différentes de rendre les mots aussi courts que possible et imprime les jetons à tige à des fins de comparaison.
import nltk
from nltk.stem import PorterStemmer, LancasterStemmer, SnowballStemmer
from nltk.tokenize import word_tokenize
nltk.download('punkt')
# Sample sentence
sentence = "frogs are dancing and dogs are singing."
tokens = word_tokenize(sentence)
# Stemmers
stemmers = [PorterStemmer(), LancasterStemmer(), SnowballStemmer("english")]
for stemmer in stemmers:
stemmed_tokens = [stemmer.stem(token) for token in tokens]
print(f"{stemmer.__class__.__name__} Stemmed Tokens:", stemmed_tokens)
Sortie :
PorterStemmer Stemmed Tokens: ['frog', 'are', 'danc', 'and', 'dog', 'are', 'sing', '.']
LancasterStemmer Stemmed Tokens: ['frog', 'ar', 'dant', 'and', 'dog', 'ar', 'sing', '.']
SnowballStemmer Stemmed Tokens: ['frog', 'are', 'danc', 'and', 'dog', 'are', 'sing', '.']
Il existe de nombreuses autres bibliothèques permettant de faire de même. Essayons maintenant de comprendre ce qu'est la lemmatisation :
b] Lemmatisation
La lemmatisation est également la même que la racine avec un changement infime. La lemmatisation convertit les mots en significative formes de base. La lemmatisation est une procédure permettant d'obtenir la forme de base d'un mot avec une signification propre en fonction des relations lexicales et grammaticales.
La lemmatisation est une manière de changer un mot pour lui redonner sa forme basique ou normale, appelée le lemme. Par exemple, la forme normale du mot « chats » est « chat » et la forme normale de « courir » est « courir ».
La lemmatisation doit connaître le bon type de mot et la signification d'un mot dans une phrase, ainsi que la situation plus large autour de cette phrase. Contrairement à la coupure des terminaisons de mots, la lemmatisation essaie de choisir la bonne forme normale en fonction de la situation.
Vous pouvez choisir l’un des lemmatisants ci-dessous selon vos besoins :
- Lemmatiseur Wordnet
- Lemmatiseur spatial
- TextBlob
- Modèle CLIPS
- Stanford CorePNL
- Gensim Lemmatiseur
- ArbreTagger
Nous allons utiliser la bibliothèque NLTK pour effectuer une lemmatisation à l'aide de WordnetLemmatizer. Il symbolise d'abord la phrase, puis la lemmatise pour trouver des mots de base significatifs dans le vocabulaire, puis les remet pour imprimer la phrase lemmatisée.
import nltk
from nltk.stem import WordNetLemmatizer
from nltk.tokenize import word_tokenize
nltk.download('punkt')
nltk.download('wordnet')
# Create a lemmatizer object
lemmatizer = WordNetLemmatizer()
# Sample sentence
sentence = "boys are running and mosquitos are flying."
# Tokenize the sentence
tokens = word_tokenize(sentence)
# Lemmatize the tokens
lemmatized_tokens = [lemmatizer.lemmatize(token) for token in tokens]
# Join the lemmatized tokens to form a sentence
lemmatized_sentence = " ".join(lemmatized_tokens)
print("Original Sentence:", sentence)
print("Lemmatized Sentence:", lemmatized_sentence)
Sortie :
Original Sentence: boys are running and mosquitos are flying.
Lemmatized Sentence: Boy are run and mosquito are fly.
Maintenant, il est temps de conclure !
Conclusion
Dans cet article, nous avons exploré les bases du traitement du langage naturel (NLP). Nous avons découvert l'importance de la PNL dans divers domaines et avons commencé notre voyage en comprenant comment nettoyer et préparer du texte. Nous avons abordé la suppression des caractères spéciaux, la tokenisation du texte, etc. Nous avons également compris des concepts tels que la normalisation, la radicalisation, la lemmatisation et la gestion des nombres et des dates. De plus, nous avons eu un aperçu de la gestion du contenu HTML.
Cependant, notre voyage continue. Il existe tout un monde de méthodes avancées de nettoyage de texte à découvrir. Nous plongerons dans le balisage des parties du discours, explorerons différents outils et bibliothèques et plongerons dans des projets PNL passionnants. Cet article n'est qu'un début ; soyez prêt pour la partie 2, où plus de connaissances vous attendent.
Si vous souhaitez apprendre le traitement du langage naturel, voici quelques-uns des meilleurs cours de PNL.
-
Je suis un rédacteur de contenu technique axé sur les données, passionné par l'exploration d'outils et de technologies de pointe. Mon enthousiasme s'étend au partage généreux de mes connaissances au sein de la communauté.
-
Usha, rédactrice en chef chez Geekflare, est titulaire d'une maîtrise en applications informatiques. Elle a travaillé comme ingénieur logiciel pendant 6 ans.
Après une pause dans sa carrière, elle s'oriente vers le marketing digital et la gestion de campagnes. Elle travaillait… lire la suite