Accéder au contenu principal

NLTK Tutoriel d'analyse de sentiments pour les débutants

Python NLTK (natural language toolkit) sentiment analysis tutorial (en anglais). Apprenez à créer et à développer des analyses de sentiments à l'aide de Python. Suivez des étapes spécifiques pour extraire et analyser du texte pour le traitement du langage naturel.
Actualisé 14 nov. 2024  · 13 min de lecture

À l'ère du numérique, l'analyse et l'exploration de textes sont devenues des éléments essentiels de divers secteurs d'activité. L'analyse de texte fait référence au processus d'analyse et d'extraction d'informations significatives à partir de données textuelles non structurées. L'un des sous-domaines les plus importants de l'analyse de texte est l'analyse des sentiments, qui consiste à déterminer le ton émotionnel du texte.

L'analyse des sentiments a de nombreuses applications pratiques, de la surveillance des marques à l'analyse des réactions des clients. Python est un langage de programmation populaire utilisé pour l'analyse et l'exploration de texte, et la bibliothèque Natural Language Toolkit (NLTK) est l'une des bibliothèques les plus utilisées pour le traitement du langage naturel en Python.

Ce tutoriel vous guidera pas à pas pour réaliser une analyse des sentiments à l'aide de la bibliothèque NLTK en Python. À la fin de ce tutoriel, vous aurez une solide compréhension de la manière d'effectuer une analyse des sentiments à l'aide de NLTK en Python, ainsi qu'un exemple complet que vous pourrez utiliser comme point de départ pour vos propres projets. Alors, c'est parti !

La bibliothèque Natural Language Toolkit (NLTK)

Le Natural Language Toolkit (NLTK) est une bibliothèque open-source populaire pour le traitement du langage naturel (NLP) en Python. Il fournit une interface facile à utiliser pour un large éventail de tâches, y compris la tokenisation, le stemming, la lemmatisation, l'analyse syntaxique et l'analyse des sentiments.

NLTK est largement utilisé par les chercheurs, les développeurs et les data scientists du monde entier pour développer des applications NLP et analyser des données textuelles.

L'un des principaux avantages de NLTK est sa vaste collection de corpus, qui comprend des données textuelles provenant de diverses sources telles que des livres, des articles d'actualité et des plateformes de médias sociaux. Ces corpus constituent une riche source de données pour l'entraînement et le test des modèles NLP.

Maîtrisez la PNL en Python dès aujourd'hui

Apprenez les techniques de la PNL pour convertir les données en informations précieuses.
Commencez À Apprendre Gratuitement

Qu'est-ce que l'analyse des sentiments ?

L'analyse des sentiments est une technique utilisée pour déterminer la tonalité émotionnelle ou le sentiment exprimé dans un texte. Il s'agit d'analyser les mots et les phrases utilisés dans le texte pour identifier le sentiment sous-jacent, qu'il soit positif, négatif ou neutre.

L'analyse des sentiments a un large éventail d'applications, notamment la surveillance des médias sociaux, l'analyse du retour d'information des clients et les études de marché.

L'un des principaux défis de l'analyse des sentiments est la complexité inhérente au langage humain. Les données textuelles contiennent souvent du sarcasme, de l'ironie et d'autres formes de langage figuratif qui peuvent être difficiles à interpréter à l'aide des méthodes traditionnelles.

Toutefois, les progrès récents en matière de traitement du langage naturel (NLP) et d'apprentissage automatique ont permis d'effectuer une analyse des sentiments sur de grands volumes de données textuelles avec un degré élevé de précision.

Trois méthodologies pour l'analyse des sentiments

Il existe plusieurs façons d'effectuer une analyse des sentiments sur des données textuelles, avec des degrés de complexité et de précision variables. Les méthodes les plus courantes comprennent une approche basée sur le lexique, une approche basée sur l'apprentissage machine (ML) et une approche d'apprentissage profond basée sur un transformateur pré-entraîné. Examinons chacun d'entre eux plus en détail :

Analyse basée sur le lexique

Ce type d'analyse, comme l'analyseur de sentiment NLTK Vader, consiste à utiliser un ensemble de règles et d'heuristiques prédéfinies pour déterminer le sentiment d'un morceau de texte. Ces règles sont généralement basées sur des caractéristiques lexicales et syntaxiques du texte, telles que la présence de mots et de phrases positifs ou négatifs.

Bien que l'analyse basée sur le lexique puisse être relativement simple à mettre en œuvre et à interpréter, elle peut ne pas être aussi précise que les approches basées sur le ML ou sur la transformation, en particulier lorsqu'il s'agit de données textuelles complexes ou ambiguës.

Apprentissage machine (ML)

Cette approche consiste à former un modèle pour identifier le sentiment d'un texte sur la base d'un ensemble de données de formation étiquetées. Ces modèles peuvent être formés à l'aide d'un large éventail d'algorithmes de ML, notamment les arbres de décision, les machines à vecteurs de support (SVM) et les réseaux neuronaux.

Les approches basées sur les ML peuvent être plus précises que les analyses basées sur les règles, en particulier lorsqu'il s'agit de données textuelles complexes, mais elles nécessitent une plus grande quantité de données d'apprentissage étiquetées et peuvent être plus coûteuses en termes de calcul.

Apprentissage profond pré-entraîné basé sur les transformateurs

Une approche basée sur l'apprentissage profond, comme on l'a vu avec BERT et GPT-4, implique l'utilisation de modèles pré-entraînés formés sur des quantités massives de données textuelles. Ces modèles utilisent des réseaux neuronaux complexes pour encoder le contexte et le sens du texte, ce qui leur permet d'atteindre une précision de pointe dans un large éventail de tâches NLP, y compris l'analyse des sentiments. Toutefois, ces modèles nécessitent d'importantes ressources informatiques et peuvent ne pas être adaptés à tous les cas d'utilisation.

  • L'analyse basée sur le lexique est une approche simple de l'analyse des sentiments, mais elle peut ne pas être aussi précise que des méthodes plus complexes.
  • Les approches basées sur l'apprentissage automatique peuvent être plus précises, mais elles nécessitent des données d'apprentissage étiquetées et peuvent être plus coûteuses en termes de calcul.
  • Les approches d'apprentissage profond basées sur des transformateurs pré-entraînés peuvent atteindre une précision de pointe, mais nécessitent des ressources informatiques importantes et peuvent ne pas être pratiques pour tous les cas d'utilisation.

Le choix de l'approche dépendra des besoins et des contraintes spécifiques du projet en question.

Installation de NLTK et configuration de l'environnement Python

Pour utiliser la bibliothèque NLTK, vous devez disposer d'un environnement Python sur votre ordinateur. La manière la plus simple d'installer Python est de télécharger et d'installer la distribution Anaconda. Cette distribution est livrée avec l'environnement de base Python 3 et d'autres cloches et sifflets, notamment Jupyter Notebook. Vous n'avez pas non plus besoin d'installer la bibliothèque NLTK, car elle est préinstallée avec NLTK et de nombreuses autres bibliothèques utiles.

Si vous choisissez d'installer Python sans aucune distribution, vous pouvez directement télécharger et installer Python à partir de python.org. Dans ce cas, vous devrez installer NLTK une fois que votre environnement Python sera prêt.

Pour installer la bibliothèque NLTK, ouvrez le terminal de commande et tapez :

pip install nltk

Il convient de noter que NLTK nécessite également le téléchargement de certaines données supplémentaires avant de pouvoir être utilisé efficacement. Ces données comprennent des modèles pré-entraînés, des corpus et d'autres ressources que NLTK utilise pour effectuer diverses tâches de NLP. Pour télécharger ces données, exécutez la commande suivante dans le terminal ou dans votre script Python :

import nltk

nltk.download('all')

Prétraitement du texte

Le prétraitement du texte est une étape cruciale de l'analyse des sentiments, car il permet de nettoyer et de normaliser les données textuelles, ce qui facilite leur analyse. L'étape de prétraitement implique une série de techniques qui permettent de transformer les données textuelles brutes en une forme utilisable pour l'analyse. Parmi les techniques courantes de prétraitement du texte figurent la tokenisation, la suppression des mots vides, le stemming et la lemmatisation.

les étapes du prétraitement du texte dans l'ordre

Image Source

Tokenisation

La tokenisation est une étape de prétraitement du texte dans l'analyse des sentiments qui consiste à décomposer le texte en mots individuels ou tokens. Il s'agit d'une étape essentielle dans l'analyse des données textuelles, car elle permet de séparer les mots individuels du texte brut, ce qui facilite l'analyse et la compréhension. La tokenisation est généralement effectuée à l'aide de la fonction intégrée word_tokenize de NLTK, qui peut découper le texte en mots individuels et en signes de ponctuation.

Arrêter les mots

La suppression des mots vides est une étape cruciale du prétraitement du texte dans l'analyse des sentiments. Elle consiste à supprimer les mots courants et non pertinents qui ne sont pas susceptibles de véhiculer un sentiment particulier. Les "stop words" sont des mots très courants dans une langue et qui n'ont pas beaucoup de sens, comme "and", "the", "of" et "it". Ces mots peuvent causer du bruit et fausser l'analyse s'ils ne sont pas supprimés.

En supprimant les mots vides, les mots restants dans le texte sont plus susceptibles d'indiquer le sentiment exprimé. Cela peut contribuer à améliorer la précision de l'analyse des sentiments. NLTK fournit une liste intégrée de mots vides pour plusieurs langues, qui peut être utilisée pour filtrer ces mots à partir des données textuelles.

Syntagme et lemmatisation

Le stemming et la lemmatisation sont des techniques utilisées pour réduire les mots à leur forme racine. Le stemming consiste à supprimer les suffixes des mots, tels que "ing" ou "ed", pour les réduire à leur forme de base. Par exemple, le mot "jumping" sera dérivé en "jump".

La lemmatisation, quant à elle, consiste à réduire les mots à leur forme de base en fonction de leur partie du discours. Par exemple, le mot "jumped" serait lemmatisé en "jump", mais le mot "jumping" serait lemmatisé en "jumping" puisqu'il s'agit d'un participe présent.

Pour en savoir plus sur le stemming et la lemmatisation, consultez notre tutoriel Stemming et lemmatisation en Python.

Modèle du sac de mots (BoW)

Le modèle du sac de mots est une technique utilisée dans le traitement du langage naturel (NLP) pour représenter les données textuelles sous la forme d'un ensemble de caractéristiques numériques. Dans ce modèle, chaque document ou morceau de texte est représenté comme un "sac" de mots, chaque mot du texte étant représenté par une caractéristique ou une dimension distincte dans le vecteur résultant. La valeur de chaque caractéristique est déterminée par le nombre de fois que le mot correspondant apparaît dans le texte.

Le modèle du sac de mots est utile en NLP car il nous permet d'analyser des données textuelles à l'aide d'algorithmes d'apprentissage automatique, qui nécessitent généralement des données numériques. En représentant les données textuelles sous forme de caractéristiques numériques, nous pouvons former des modèles d'apprentissage automatique pour classer les textes ou analyser les sentiments.

L'exemple de la section suivante utilise le modèle NLTK Vader pour l'analyse des sentiments sur l'ensemble de données des clients d'Amazon. Dans cet exemple particulier, nous n'avons pas besoin d'effectuer cette étape car l'API Vader de NLTK accepte du texte en entrée au lieu de vecteurs numériques, mais si vous construisiez un modèle d'apprentissage automatique supervisé pour prédire les sentiments (en supposant que vous disposiez de données étiquetées), vous devriez transformer le texte traité en un modèle de sac de mots avant d'entraîner le modèle d'apprentissage automatique.

Exemple de sac de mots

Image Source

Exemple d'analyse de sentiment de bout en bout en Python

Pour effectuer une analyse des sentiments à l'aide de NLTK en Python, les données textuelles doivent d'abord être prétraitées à l'aide de techniques telles que la tokenisation, la suppression des mots vides et le stemming ou la lemmatisation. Une fois le texte prétraité, nous le transmettons à l'analyseur de sentiment Vader pour analyser le sentiment du texte (positif ou négatif).

Étape 1 - Importer les bibliothèques et charger les données

Tout d'abord, nous importerons les bibliothèques nécessaires à l'analyse de texte et à l'analyse des sentiments, telles que pandas pour le traitement des données, nltk pour le traitement du langage naturel et SentimentIntensityAnalyzer pour l'analyse des sentiments.

Nous téléchargerons ensuite l'ensemble du corpus NLTK (une collection de données linguistiques) à l'aide de nltk.download().

Une fois l'environnement mis en place, nous allons charger un ensemble de données de commentaires Amazon à l'aide de pd.read_csv(). Cela créera un objet DataFrame dans Python que nous pourrons utiliser pour analyser les données. Nous allons afficher le contenu du DataFrame à l'aide de df.

# import libraries
import pandas as pd

import nltk

from nltk.sentiment.vader import SentimentIntensityAnalyzer

from nltk.corpus import stopwords

from nltk.tokenize import word_tokenize

from nltk.stem import WordNetLemmatizer


# download nltk corpus (first time only)
import nltk

nltk.download('all')




# Load the amazon review dataset

df = pd.read_csv('https://raw.githubusercontent.com/pycaret/pycaret/master/datasets/amazon.csv')

df

Charger l'ensemble de données

Étape 2 - Prétraitement du texte

Créons une fonction preprocess_text dans laquelle nous commençons par tokeniser les documents à l'aide de la fonction word_tokenize de NLTK, puis nous supprimons les mots en escalier à l'aide du module stepwords de NLTK et enfin, nous lemmatisons le filtered_tokens à l'aide du module WordNetLemmatizer de NLTK.

# create preprocess_text function
def preprocess_text(text):

    # Tokenize the text

    tokens = word_tokenize(text.lower())




    # Remove stop words

    filtered_tokens = [token for token in tokens if token not in stopwords.words('english')]




    # Lemmatize the tokens

    lemmatizer = WordNetLemmatizer()

    lemmatized_tokens = [lemmatizer.lemmatize(token) for token in filtered_tokens]




    # Join the tokens back into a string

    processed_text = ' '.join(lemmatized_tokens)

    return processed_text

# apply the function df

df['reviewText'] = df['reviewText'].apply(preprocess_text)
df

Prétraitement des données

Remarquez les modifications apportées à la colonne "texte de révision" par la fonction preprocess_text que nous avons appliquée à l'étape précédente.

Étape 3 - Analyseur de sentiments NLTK

Tout d'abord, nous allons initialiser un objet Sentiment Intensity Analyzer à partir de la bibliothèque nltk.sentiment.vader.

Ensuite, nous allons définir une fonction appelée get_sentiment qui prend une chaîne de texte en entrée. La fonction appelle la méthode polarity_scores de l'objet analyseur pour obtenir un dictionnaire des scores de sentiment pour le texte, qui comprend un score pour le sentiment positif, négatif et neutre.

La fonction vérifie alors si le score positif est supérieur à 0 et renvoie un score de sentiment de 1 si c'est le cas, et de 0 sinon. Cela signifie que tout texte ayant un score positif sera classé comme ayant un sentiment positif, et tout texte ayant un score non positif sera classé comme ayant un sentiment négatif.

Enfin, nous appliquerons la fonction get_sentiment à la colonne reviewText du DataFrame df à l'aide de la méthode apply. Cette opération crée une nouvelle colonne appelée sentiment dans le DataFrame, qui stocke la note de sentiment pour chaque avis. Nous afficherons ensuite le DataFrame mis à jour à l'aide de df.

# initialize NLTK sentiment analyzer

analyzer = SentimentIntensityAnalyzer()


# create get_sentiment function

def get_sentiment(text):

    scores = analyzer.polarity_scores(text)

    sentiment = 1 if scores['pos'] > 0 else 0

    return sentiment




# apply get_sentiment function

df['sentiment'] = df['reviewText'].apply(get_sentiment)

df

analyse des sentiments

L'analyseur de sentiment NLTK renvoie une note comprise entre -1 et +1. Nous avons utilisé un seuil de coupure de 0 dans la fonction get_sentiment ci-dessus. Tout ce qui est supérieur à 0 est classé 1 (c'est-à-dire positif). Comme nous disposons d'étiquettes réelles, nous pouvons évaluer les performances de cette méthode en construisant une matrice de confusion.

from sklearn.metrics import confusion_matrix

print(confusion_matrix(df['Positive'], df['sentiment']))

Sortie:

[[ 1131  3636]

 [  576 14657]]

Nous pouvons également consulter le rapport de classification :

from sklearn.metrics import classification_report

print(classification_report(df['Positive'], df['sentiment']))

Rapport de classification

Comme vous pouvez le constater, la précision globale de ce modèle d'analyse des sentiments basé sur des règles est de 79 %. Comme il s'agit de données étiquetées, vous pouvez également essayer de construire un modèle ML pour évaluer si une approche basée sur le ML permet d'obtenir une meilleure précision.

Consultez le carnet de notes complet sur l'espace de travail de DataCamp.

Conclusion

NLTK est une bibliothèque puissante et flexible permettant d'effectuer des analyses de sentiments et d'autres tâches de traitement du langage naturel en Python. NLTK permet de prétraiter les données textuelles, de les convertir en un modèle de sac de mots et d'effectuer une analyse des sentiments à l'aide de l'analyseur de sentiments de Vader.

Dans ce tutoriel, nous avons exploré les bases de l'analyse des sentiments avec NLTK, notamment le prétraitement des données textuelles, la création d'un modèle de sac de mots et l'analyse des sentiments avec NLTK Vader. Nous avons également discuté des avantages et des limites de l'analyse de sentiments NLTK et suggéré des pistes de lecture et d'exploration.

Dans l'ensemble, NLTK est un outil puissant et largement utilisé pour réaliser des analyses de sentiments et d'autres tâches de traitement du langage naturel en Python. En maîtrisant les techniques et les outils présentés dans ce tutoriel, vous pouvez obtenir des informations précieuses sur le sentiment des données textuelles et les utiliser pour prendre des décisions fondées sur des données dans un large éventail d'applications.

Si vous souhaitez apprendre à appliquer le TAL à des données du monde réel, notamment des TED talks, des articles et des critiques de films, à l'aide de bibliothèques et de frameworks Python, notamment NLTK, scikit-learn, spaCy et SpeechRecognition, consultez les ressources ci-dessous :

Il fournit une base solide pour le traitement et l'analyse de données textuelles à l'aide de Python. Que vous soyez novice en matière de PNL ou que vous cherchiez à développer vos compétences, ce cours vous fournira les outils et les connaissances nécessaires pour convertir des données non structurées en informations précieuses.

Sujets

Cours de Python

Certification disponible

cours

Introduction à la science des données en Python

4 hr
462.3K
Plongez dans la science des données à l'aide de Python et apprenez à analyser et à visualiser efficacement vos données. Aucune expérience ou compétence en matière de codage n'est nécessaire.
Afficher les détailsRight Arrow
Commencer Le Cours
Voir plusRight Arrow