L'analyse des sentiments est étonnamment précise et vous pouvez créer cette application Tkinter simple pour l'essayer.
L'analyse des sentiments est une technique pour déterminer le ton émotionnel d'un morceau de texte. Il utilise le traitement du langage naturel, l'analyse de texte et la linguistique computationnelle. En utilisant cela, vous pouvez classer le ton en positif, neutre ou négatif. Cela aide les entreprises à analyser les commentaires des clients sur les réseaux sociaux, les avis et les enquêtes.
Sur la base de ces données, ils peuvent élaborer une stratégie plus efficace pour leurs produits et leurs campagnes. Découvrez comment créer une application qui détecte les sentiments à l'aide de Python.
Le module Tkinter et vaderSentiment
Tkinter vous 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éez votre propre application d'actualités qui met à jour les histoires via une API.Pour installer Tkinter, ouvrez un terminal et exécutez :
pip installer 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 Traitement du langage naturel. L'algorithme a 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é. En utilisant ce score, vous pouvez identifier si la phrase est positive, négative ou neutre.
Pour installer le package vaderSentiment dans Python, exécutez cette commande de terminal :
pip installer vaderSentiment
Comment détecter les sentiments à l'aide de Python
Vous pouvez trouver le code source de cet exemple de programme dans son Référentiel GitHub.
Commencez par importer les modules VADER et tkinter requis :
depuis vaderSentiment.vaderSentiment importer SentimentIntensityAnalyzer
depuis tkinter importer *
Définissez ensuite une fonction, tout effacer(). Son but est d'effacer les champs de saisie, ce que vous pouvez faire en utilisant le supprimer() méthode à partir d'un indice de départ de 0 à l'indice final, FIN.
définitivementtout effacer():
champ négatif.delete(0, FIN)
neutralField.delete(0, FIN)
champpositif.delete(0, FIN)
globalField.delete(0, FIN)
textArea.delete(1.0, FIN)
Définir une fonction, detect_sentiment(). Utilisez la méthode get pour récupérer le mot entré dans le zone de texte widget et créer un objet de SentimentIntensityAnalyzer classe. Utilisez le polarity_scores méthode sur le texte que vous avez récupéré et appliquez l'algorithme d'analyse des sentiments VADER.
définitivementdetect_sentiment():
phrase = textArea.get("1.0", "fin")
sentiment_obj = SentimentIntensityAnalyzer()
sentiment_dict = sentiment_obj.polarity_scores (phrase)
Extraire le score de sentiment négatif('négatif') et convertissez-le en pourcentage. Insérez la valeur obtenue dans le champ négatif à partir de la position 10. Répétez le même processus pour le score de sentiment neutre ('neu') et le score de sentiment positif('POS').
chaîne = chaîne (sentiment_dict['négatif'] * 100)
champ négatif.insert(10, chaîne)chaîne = chaîne (sentiment_dict['neu'] * 100)
champneutre.insert(10, chaîne)
chaîne = chaîne (sentiment_dict['POS'] * 100)
champpositif.insert(10, chaîne)
Extrayez la valeur de la clé composée qui contient le sentiment général 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.
si sentiment_dict['composé'] >= 0.05:
chaîne = "Positif"
elif sentiment_dict['composé'] <= - 0.05:
chaîne = "Négatif"
autre:
chaîne = "Neutre"
Insérez le résultat dans le globalField à partir de la 10ème place :
globalField.insert(10, chaîne)
Initialisez une fenêtre d'interface utilisateur graphique à l'aide de Tkinter. Définissez la couleur d'arrière-plan, le titre et les dimensions de la fenêtre. Créez cinq étiquettes. Un 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 souhaitez le placer, le texte qu'il doit afficher et les styles de police qu'il doit 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éfinir 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'elle doit afficher, sa couleur d'arrière-plan, les styles de police et la commande que vous souhaitez exécuter lorsque vous cliquez dessus.
si __nom__ == "__principal__":
gui = Tk()
gui.config (arrière-plan="#A020f0")
gui.title("Analyseur de sentiments VADER")
gui.géométrie("400x700")
enterText = Libellé (gui, text="Entrez votre phrase :",police="arial 15 gras",bg="#A020f0")
négatif = Libellé (gui, text="Pourcentage négatif: ", police="arial 15",bg="#A020f0")
neutre = Étiquette (gui, text="Pourcentage neutre: ", police="arial 15",bg="#A020f0")
positif = Libellé (gui, text="Pourcentage positif :", police="arial 15",bg="#A020f0")
global = Étiquette (gui, text="La phrase globale est :", police="arial 15",bg="#A020f0")
textArea = Texte (gui, hauteur=5, largeur=25, police="arial 15", bg="#cf9fff")
check = Bouton (gui, text="Vérifier les sentiments", bg="#e7305b", police=("arial", 12, "gras"), commande=détecter_sentiment)
clear = Bouton (gui, text="Clair", bg="#e7305b", police=("arial", 12, "gras"), commande=effacertout)
Quitter = Bouton (gui, text="Sortie", bg="#e7305b", police=("arial", 12, "gras"), commande=sortie)
Définissez quatre champs d'entrée pour les différents sentiments et définissez leurs styles de fenêtre et de police parent.
champ négatif = entrée (gui, font="arial 15")
neutralField = Entrée (gui, font="arial 15")
positiveField = Entrée (gui, font="arial 15")
globalField = Entrée (gui, font="arial 15")
Utilisez une grille composée de 13 lignes et trois colonnes pour la mise en page globale. Placez les différents éléments tels que les étiquettes, les champs de saisie de texte et les boutons dans différentes lignes et colonnes comme illustré. Ajoutez le rembourrage nécessaire si nécessaire. Met le collant possibilité de "W" pour aligner à gauche les textes dans sa cellule.
enterText.grid (ligne=0, colonne=2, paddy=15)
textArea.grid (ligne=1, colonne=2, padx=60, paddy=10, collant=W)
check.grid (ligne=2, colonne=2, paddy=10)
grille.négative (ligne=3, colonne=2, paddy=10)
neutral.grid (ligne=5, colonne=2, paddy=10)
positive.grid (ligne=7, colonne=2, paddy=10)
global.grid (ligne=9, colonne=2, paddy=5)
champ négatif.grid (ligne=4, colonne=2)
champneutre.grid (ligne=6, colonne=2)
positiveField.grid (ligne=8, colonne=2)
globalField.grid (ligne=10, colonne=2, paddy=10)
clear.grid (ligne=11, colonne=2, paddy=10)
Exit.grid (ligne=12, colonne=2, paddy=10)
Le boucle principale() La fonction indique à Python d'exécuter la boucle d'événements Tkinter et d'écouter les événements jusqu'à ce que vous fermiez la fenêtre.
gui.mainloop()
Rassemblez tout le code et vous pouvez utiliser le programme court résultant pour détecter les sentiments.
Le résultat de la détection des sentiments à l'aide de Python
Lors de l'exécution de ce programme, la fenêtre VADER Sentiment Analyzer apparaît. Lorsque nous avons testé le programme sur une phrase positive, il l'a détectée avec une précision de 79 %. En essayant une déclaration neutre et une négative, le programme a pu détecter avec une précision de 100 % et 64,3 % respectivement.
Alternatives pour l'analyse des sentiments à l'aide de Python
Vous pouvez utiliser Textblob pour l'analyse des sentiments, le balisage de la parole et la classification du texte. Il dispose d'une API cohérente et d'un classificateur de polarité de sentiment intégré. NLTK est une bibliothèque NLP complète qui contient un large éventail d'outils pour l'analyse de texte, mais a 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 possède 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 clients précis et fiables en temps réel.