L’analyse des sentiments est une technique permettant de déterminer la tonalité émotionnelle d’un texte. Elle fait appel au traitement du langage naturel, à l’analyse de texte et à la linguistique informatique. Elle permet de classer le ton en positif, neutre ou négatif. Cette technique aide les entreprises à analyser les commentaires des clients sur les médias sociaux, les avis et les enquêtes.
Sur la base de ces données, elles peuvent élaborer des stratégies plus efficaces pour leurs produits et leurs campagnes. Découvrez comment vous pouvez créer une application qui détecte les sentiments à l’aide de Python.
Le module Tkinter et vaderSentiment
Tkinter permet de créer des applications de bureau. Il offre une variété de widgets tels que des boutons, des étiquettes et des zones de texte qui facilitent le développement d’applications. Vous pouvez utiliser Tkinter pour créer une application de dictionnaire en Python ou pour créer votre propre application d’actualités qui met à jour les articles via une API.
Pour installer Tkinter, ouvrez un terminal et exécutez :
pip install tkinter
VADER (Valence Aware Dictionary and sEntiment Reasoner) est un lexique et un outil d’analyse des sentiments basé sur des règles. Il est préconstruit et largement utilisé dans le traitement du langage naturel. L’algorithme dispose d’un ensemble de mots prédéfinis qui représentent différents sentiments. Sur la base des mots trouvés dans la phrase, cet algorithme donne un score de polarité. Ce score permet de déterminer si la phrase est positive, négative ou neutre.
Pour installer le paquetage vaderSentiment en Python, exécutez la commande suivante dans le terminal :
pip install vaderSentiment
Comment détecter des sentiments à l’aide de Python
Vous pouvez trouver le code source de cet exemple de programme dans son dépôt GitHub.
Commencez par importer les modules VADER et tkinter nécessaires :
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
from tkinter import *
Définissez ensuite une fonction, clearAll(). Son but est d’effacer les champs de saisie, ce que vous pouvez faire à l’aide de la fonction delete() à partir d’un index de départ de 0 à l’index final, FIN.
def clearAll():
negativeField.delete(0, END)
neutralField.delete(0, END)
positiveField.delete(0, END)
overallField.delete(0, END)
textArea.delete(1.0, END)
Définir une fonction, detect_sentiment(). Utilisez la méthode get pour récupérer le mot saisi dans le champ zone de texte et créer un objet de type SentimentIntensityAnalyzer classe. Utiliser la classe scores_de_polarité sur le texte que vous avez récupéré et appliquez l’algorithme d’analyse des sentiments VADER.
def detect_sentiment():
sentence = textArea.get("1.0", "end")
sentiment_obj = SentimentIntensityAnalyzer()
sentiment_dict = sentiment_obj.polarity_scores(sentence)
Extraire le score de sentiment négatif (‘neg’) et la convertir en pourcentage. Insérez la valeur obtenue dans le champnégatif en commençant par la position 10. Répétez le même processus pour le score de sentiment neutre (‘neu’) et le score de sentiment positif (‘pos’).
string = str(sentiment_dict['neg'] * 100)
negativeField.insert(10, string)
string = str(sentiment_dict['neu'] * 100)
neutralField.insert(10, string)
string = str(sentiment_dict['pos'] * 100)
positiveField.insert(10, string)
Extraire la valeur de la clé composée qui contient le sentiment global de la phrase. Si la valeur est supérieure ou égale à 0,05, la phrase est positive. Si la valeur est inférieure ou égale à -0,05, la phrase est négative. Pour les valeurs comprises entre -0,05 et 0,05, il s’agit d’une déclaration neutre.
if sentiment_dict['compound'] >= 0.05:
string = "Positive"
elif sentiment_dict['compound'] <= - 0.05:
string = "Negative"
else:
string = "Neutral"
Insérer le résultat dans le champ global à partir de la 10ème position :
overallField.insert(10, string)
Initialiser une fenêtre d’interface graphique en utilisant Tkinter. Définissez la couleur d’arrière-plan, le titre et les dimensions de la fenêtre. Créer cinq étiquettes. Une qui demande à l’utilisateur d’entrer une phrase et les quatre autres pour les différents sentiments. Définissez l’élément parent dans lequel vous voulez les placer, le texte qu’elles doivent afficher et les styles de police qu’elles doivent avoir, ainsi que la couleur d’arrière-plan.
Définissez un widget Texte pour recevoir la phrase de l’utilisateur. Définissez l’élément parent dans lequel vous souhaitez le placer, sa hauteur, sa largeur, les styles de police et la couleur d’arrière-plan qu’il doit posséder. Définissez trois boutons. Un pour effectuer l’analyse des sentiments, un pour effacer le contenu après utilisation et un pour quitter l’application. Définissez sa fenêtre parente, le texte qu’il doit afficher, sa couleur d’arrière-plan, ses styles de police et la commande que vous souhaitez exécuter lorsqu’il est cliqué.
if __name__ == "__main__":
gui = Tk()
gui.config(background="#A020f0")
gui.title("VADER Sentiment Analyzer")
gui.geometry("400x700")
enterText = Label(gui, text="Enter Your Sentence: ",font="arial 15 bold",bg="#A020f0")
negative = Label(gui, text="Negative Percentage: ", font="arial 15",bg="#A020f0")
neutral = Label(gui, text="Nuetral Percentage: ", font="arial 15",bg="#A020f0")
positive = Label(gui, text="Positive Percentage: ", font="arial 15",bg="#A020f0")
overall = Label(gui, text="Overall Sentence is: ", font="arial 15",bg="#A020f0")
textArea = Text(gui, height=5, width=25, font="arial 15", bg="#cf9fff")
check = Button(gui, text="Check Sentiment", bg="#e7305b", font=("arial", 12, "bold"), command=detect_sentiment)
clear = Button(gui, text="Clear", bg="#e7305b", font=("arial", 12, "bold"), command=clearAll)
Exit = Button(gui, text="Exit", bg="#e7305b", font=("arial", 12, "bold"), command=exit)
Définissez quatre champs d’entrée pour les différents sentiments et définissez leur fenêtre parentale et leurs styles de police.
negativeField = Entry(gui, font="arial 15")
neutralField = Entry(gui, font="arial 15")
positiveField = Entry(gui, font="arial 15")
overallField = Entry(gui, font="arial 15")
Utilisez une grille composée de 13 lignes et de trois colonnes pour la mise en page globale. Placez les divers éléments tels que les étiquettes, les champs de saisie de texte et les boutons dans les différentes lignes et colonnes comme indiqué. Ajoutez le rembourrage nécessaire là où c’est nécessaire. Définissez les collant option pour « W » pour aligner à gauche les textes dans sa cellule.
enterText.grid(row=0, column=2, pady=15)
textArea.grid(row=1, column=2, padx=60, pady=10, sticky=W)
check.grid(row=2, column=2, pady=10)
negative.grid(row=3, column=2, pady=10)
neutral.grid(row=5, column=2, pady=10)
positive.grid(row=7, column=2, pady=10)
overall.grid(row=9, column=2, pady=5)
negativeField.grid(row=4, column=2)
neutralField.grid(row=6, column=2)
positiveField.grid(row=8, column=2)
overallField.grid(row=10, column=2, pady=10)
clear.grid(row=11, column=2, pady=10)
Exit.grid(row=12, column=2, pady=10)
Le mainloop() indique à Python de lancer la boucle d’événements Tkinter et d’écouter les événements jusqu’à ce que vous fermiez la fenêtre.
gui.mainloop()
Mettez tout le code ensemble et vous pouvez utiliser le programme court qui en résulte pour détecter des sentiments.
Le résultat de la détection de sentiments à l’aide de Python
L’exécution de ce programme fait apparaître la fenêtre de l’analyseur de sentiments VADER. Lorsque nous avons testé le programme sur une phrase positive, il l’a détectée avec une précision de 79%. Lors de l’essai d’une déclaration neutre et d’une déclaration négative, le programme a été en mesure de la détecter avec une précision de 100 % et de 64,3 % respectivement.
Alternatives pour l’analyse de sentiments avec Python
Vous pouvez utiliser Textblob pour l’analyse des sentiments, l’étiquetage de la parole et la classification des textes. Il dispose d’une API cohérente et d’un classificateur de polarité des sentiments intégré. NLTK est une bibliothèque NLP complète qui contient une large gamme d’outils pour l’analyse de texte, mais qui présente une courbe d’apprentissage abrupte pour les débutants.
L’un des outils les plus populaires est IBM Watson NLU. Il est basé sur le cloud, prend en charge plusieurs langues et offre des fonctionnalités telles que la reconnaissance d’entités et l’extraction de clés. Avec l’introduction de GPT, vous pouvez utiliser l’API OpenAI et l’intégrer dans vos applications pour obtenir des sentiments précis et fiables des clients en temps réel.