Η ανάλυση συναισθήματος είναι εκπληκτικά ακριβής και μπορείτε να δημιουργήσετε αυτήν την απλή εφαρμογή Tkinter για να τη δοκιμάσετε.
Η ανάλυση συναισθήματος είναι μια τεχνική για τον προσδιορισμό του συναισθηματικού τόνου ενός κειμένου. Χρησιμοποιεί επεξεργασία φυσικής γλώσσας, ανάλυση κειμένου και υπολογιστική γλωσσολογία. Χρησιμοποιώντας αυτό μπορείτε να ταξινομήσετε τον τόνο σε θετικό, ουδέτερο ή αρνητικό. Αυτό βοηθά τις επιχειρήσεις να αναλύουν τα σχόλια των πελατών στα μέσα κοινωνικής δικτύωσης, κριτικές και έρευνες.
Με βάση αυτά τα δεδομένα, μπορούν να στρατηγικοποιήσουν τα προϊόντα και τις καμπάνιες τους πιο αποτελεσματικά. Μάθετε πώς μπορείτε να δημιουργήσετε μια εφαρμογή που εντοπίζει συναισθήματα χρησιμοποιώντας Python.
Η ενότητα Tkinter και vaderSentiment
Το Tkinter σάς επιτρέπει να δημιουργείτε εφαρμογές επιφάνειας εργασίας. Προσφέρει μια ποικιλία γραφικών στοιχείων όπως κουμπιά, ετικέτες και πλαίσια κειμένου που διευκολύνουν την ανάπτυξη εφαρμογών. Μπορείτε να χρησιμοποιήσετε το Tkinter για να
δημιουργήστε μια εφαρμογή λεξικού σε Python ή να δημιουργήστε τη δική σας εφαρμογή ειδήσεων που ενημερώνει τις ιστορίες μέσω ενός API.Για να εγκαταστήσετε το Tkinter, ανοίξτε ένα τερματικό και εκτελέστε:
pip εγκατάσταση tkinter
Το VADER (Valence Aware Dictionary and SEntiment Reasoner) είναι ένα εργαλείο ανάλυσης συναισθήματος βασισμένο σε λεξικά και κανόνες. Είναι προκατασκευασμένο και χρησιμοποιείται ευρέως σε Επεξεργασία Φυσικής Γλώσσας. Ο αλγόριθμος έχει ένα σύνολο προκαθορισμένων λέξεων που αντιπροσωπεύουν διαφορετικά συναισθήματα. Με βάση τις λέξεις που βρίσκονται στην πρόταση, αυτός ο αλγόριθμος δίνει μια βαθμολογία πολικότητας. Χρησιμοποιώντας αυτή τη βαθμολογία, μπορείτε να προσδιορίσετε εάν η πρόταση είναι θετική, αρνητική ή ουδέτερη.
Για να εγκαταστήσετε το πακέτο vaderSentiment στην Python, εκτελέστε αυτήν την εντολή τερματικού:
pip install vaderSentiment
Πώς να ανιχνεύσετε συναισθήματα χρησιμοποιώντας Python
Μπορείτε να βρείτε τον πηγαίο κώδικα αυτού του δείγματος προγράμματος σε αυτό Αποθετήριο GitHub.
Ξεκινήστε εισάγοντας τις απαιτούμενες ενότητες VADER και tkinter:
από vaderSentiment.vaderSentiment εισαγωγή SentimentIntensityAnalyzer
από tkinter εισαγωγή *
Στη συνέχεια ορίστε μια συνάρτηση, τα καθαρίζω όλα(). Σκοπός του είναι να καθαρίσει τα πεδία εισαγωγής, κάτι που μπορείτε να κάνετε χρησιμοποιώντας το διαγράφω() μέθοδος από έναν αρχικό δείκτη του 0 στον τελικό δείκτη, ΤΕΛΟΣ.
defτα καθαρίζω όλα():
negativeField.delete(0, ΤΕΛΟΣ)
neutralField.delete(0, ΤΕΛΟΣ)
positiveField.delete(0, ΤΕΛΟΣ)
overallField.delete(0, ΤΕΛΟΣ)
textArea.delete(1.0, ΤΕΛΟΣ)
Ορίστε μια συνάρτηση, detect_sentiment(). Χρησιμοποιήστε τη μέθοδο λήψης για να ανακτήσετε τη λέξη που έχει εισαχθεί στο Περιοχή κειμένου widget και δημιουργήστε ένα αντικείμενο του SentimentIntensityAnalyzer τάξη. Χρησιμοποιήστε το polarity_scores μέθοδο στο κείμενο που ανακτήσατε και εφαρμόστε τον αλγόριθμο ανάλυσης συναισθήματος VADER.
defdetect_sentiment():
πρόταση = textArea.get("1.0", "τέλος")
sentiment_obj = SentimentIntensityAnalyzer()
sentiment_dict = sentiment_obj.polarity_scores (πρόταση)
Εξάγετε τη βαθμολογία αρνητικού συναισθήματος(«αρνητικός») και να το μετατρέψουμε σε ποσοστό. Εισαγάγετε την τιμή που λήφθηκε στο αρνητικό πεδίο ξεκινώντας από τη θέση 10. Επαναλάβετε την ίδια διαδικασία για τη βαθμολογία ουδέτερου συναισθήματος ('neu') και η βαθμολογία θετικού συναισθήματος('pos').
string = str (συναίσθημα_dict[«αρνητικός»] * 100)
negativeField.insert(10, συμβολοσειρά)string = str (συναίσθημα_dict['neu'] * 100)
neutralField.insert(10, συμβολοσειρά)
string = str (συναίσθημα_dict['pos'] * 100)
positiveField.insert(10, συμβολοσειρά)
Εξάγετε την τιμή του σύνθετου κλειδιού που περιέχει τη συνολική αίσθηση της πρότασης. Εάν η τιμή είναι μεγαλύτερη ή ίση με 0,05, η πρόταση είναι θετική. Εάν η τιμή είναι μικρότερη ή ίση με -0,05, η πρόταση είναι αρνητική. Για τιμές μεταξύ -0,05 και 0,05, είναι μια ουδέτερη δήλωση.
αν sentiment_dict['χημική ένωση'] >= 0.05:
χορδή = "Θετικός"
ελιφ sentiment_dict['χημική ένωση'] <= - 0.05:
χορδή = "Αρνητικός"
αλλού:
χορδή = "Ουδέτερος"
Εισαγάγετε το αποτέλεσμα στο γενικό πεδίο από την 10η θέση:
overallField.insert(10, συμβολοσειρά)
Αρχικοποιήστε ένα παράθυρο γραφικής διεπαφής χρήστη χρησιμοποιώντας το Tkinter. Ορίστε το χρώμα φόντου, τον τίτλο και τις διαστάσεις του παραθύρου. Δημιουργήστε πέντε ετικέτες. Το ένα που ζητά από τον χρήστη να εισάγει μια πρόταση και το άλλο τέσσερα για τα διαφορετικά συναισθήματα. Ορίστε το γονικό στοιχείο στο οποίο θέλετε να το τοποθετήσετε, το κείμενο που πρέπει να εμφανίζεται και τα στυλ γραμματοσειράς που πρέπει να έχει μαζί με το χρώμα φόντου.
Ορίστε ένα γραφικό στοιχείο κειμένου για να λάβετε την πρόταση από τον χρήστη. Ορίστε το γονικό στοιχείο στο οποίο θέλετε να το τοποθετήσετε, το ύψος, το πλάτος, τα στυλ γραμματοσειράς και το χρώμα φόντου που πρέπει να έχει. Ορίστε τρία κουμπιά. Μία για την εκτέλεση της ανάλυσης συναισθήματος, μία για την εκκαθάριση του περιεχομένου μετά τη χρήση και μία για την έξοδο από την εφαρμογή. Ορίστε το γονικό του παράθυρο, το κείμενο που πρέπει να εμφανίζεται, το χρώμα του φόντου, τα στυλ γραμματοσειράς και την εντολή που θέλετε να εκτελέσετε όταν κάνετε κλικ.
αν __όνομα__ == "__κύριος__":
gui = Tk()
gui.config (φόντο="#A020f0")
gui.title("VADER Sentiment Analyzer")
gui.geometry("400x700")
enterText = Ετικέτα (gui, text="Εισάγετε την πρόταση σας:", γραμματοσειρά ="arial 15 bold",bg="#A020f0")
αρνητικό = Ετικέτα (gui, κείμενο="Αρνητικό ποσοστό:", γραμματοσειρά="arial 15",bg="#A020f0")
neutral = Ετικέτα (gui, text="Μηδενικό ποσοστό:", γραμματοσειρά="arial 15",bg="#A020f0")
θετικό = Ετικέτα (gui, κείμενο="Θετικό ποσοστό:", γραμματοσειρά="arial 15",bg="#A020f0")
γενική = Ετικέτα (gui, text="Η συνολική πρόταση είναι:", γραμματοσειρά="arial 15",bg="#A020f0")
textArea = Κείμενο (gui, ύψος=5, πλάτος=25, γραμματοσειρά="arial 15", bg="#cf9fff")
check = Κουμπί (gui, text="Έλεγχος συναισθήματος", bg="#e7305b", γραμματοσειρά=("arial", 12, "τολμηρός"), command=detect_sentiment)
διαγραφή = Κουμπί (gui, κείμενο="Σαφή", bg="#e7305b", γραμματοσειρά=("arial", 12, "τολμηρός"), εντολή=clearAll)
Έξοδος = Κουμπί (gui, κείμενο="Εξοδος", bg="#e7305b", γραμματοσειρά=("arial", 12, "τολμηρός"), εντολή=έξοδος)
Ορίστε τέσσερα πεδία Καταχώρισης για τα διαφορετικά συναισθήματα και ορίστε το γονικό παράθυρο και τα στυλ γραμματοσειράς τους.
negativeField = Καταχώριση (gui, γραμματοσειρά="arial 15")
neutralField = Εισαγωγή (gui, γραμματοσειρά="arial 15")
positiveField = Καταχώριση (gui, γραμματοσειρά="arial 15")
overallField = Καταχώριση (gui, γραμματοσειρά="arial 15")
Χρησιμοποιήστε ένα πλέγμα που αποτελείται από 13 σειρές και τρεις στήλες για τη συνολική διάταξη. Τοποθετήστε τα διάφορα στοιχεία, όπως ετικέτες, πεδία εισαγωγής κειμένου και κουμπιά σε διάφορες σειρές και στήλες όπως απεικονίζονται. Προσθέστε την απαραίτητη επένδυση όπου απαιτείται. Ρυθμίστε το κολλώδης επιλογή να "W" προς τα αριστερά στοίχιση των κειμένων εντός του κελιού του.
enterText.grid (σειρά=0, στήλη=2, pady=15)
textArea.grid (σειρά=1, στήλη=2, padx=60, pady=10, sticky=W)
check.grid (σειρά=2, στήλη=2, pady=10)
negative.grid (σειρά=3, στήλη=2, pady=10)
ουδέτερο.πλέγμα (σειρά=5, στήλη=2, pady=10)
θετικό.πλέγμα (σειρά=7, στήλη=2, pady=10)
συνολικά.πλέγμα (σειρά=9, στήλη=2, pady=5)
negativeField.grid (σειρά=4, στήλη=2)
neutralField.grid (σειρά=6, στήλη=2)
positiveField.grid (σειρά=8, στήλη=2)
overallField.grid (σειρά=10, στήλη=2, pady=10)
διαγραφή.πλέγμα (σειρά=11, στήλη=2, pady=10)
Exit.grid (σειρά=12, στήλη=2, pady=10)
ο mainloop() Η συνάρτηση λέει στην Python να εκτελέσει τον βρόχο συμβάντων Tkinter και να ακούει συμβάντα μέχρι να κλείσει το παράθυρο.
gui.mainloop()
Συνδυάστε όλο τον κώδικα και μπορείτε να χρησιμοποιήσετε το σύντομο πρόγραμμα που προκύπτει για να εντοπίσετε συναισθήματα.
Η έξοδος ανίχνευσης συναισθημάτων με χρήση Python
Κατά την εκτέλεση αυτού του προγράμματος, εμφανίζεται το παράθυρο του VADER Sentiment Analyzer. Όταν δοκιμάσαμε το πρόγραμμα σε μια θετική πρόταση, το εντόπισε με ακρίβεια 79%. Δοκιμάζοντας μια ουδέτερη δήλωση και μια αρνητική, το πρόγραμμα μπόρεσε να εντοπίσει με ακρίβεια 100% και 64,3% αντίστοιχα.
Εναλλακτικές λύσεις για την ανάλυση συναισθήματος με χρήση Python
Μπορείτε να χρησιμοποιήσετε το Textblob για ανάλυση συναισθήματος, επισήμανση ομιλίας και ταξινόμηση κειμένου. Διαθέτει ένα σταθερό API και έναν ενσωματωμένο ταξινομητή πολικότητας συναισθήματος. Το NLTK είναι μια ολοκληρωμένη βιβλιοθήκη NLP που περιέχει ένα ευρύ φάσμα εργαλείων για ανάλυση κειμένου, αλλά έχει μια απότομη καμπύλη μάθησης για αρχάριους.
Ένα από τα πιο δημοφιλή εργαλεία είναι το IBM Watson NLU. Βασίζεται σε σύννεφο, υποστηρίζει πολλές γλώσσες και διαθέτει χαρακτηριστικά όπως η αναγνώριση οντοτήτων και η εξαγωγή κλειδιού. Με την εισαγωγή του GPT, μπορείτε να χρησιμοποιήσετε το OpenAI API και να το ενσωματώσετε στις εφαρμογές σας για να λαμβάνετε ακριβή και αξιόπιστα συναισθήματα πελατών σε πραγματικό χρόνο.