Analiza sentimentelor este surprinzător de precisă și puteți construi această aplicație simplă Tkinter pentru a o încerca.
Analiza sentimentelor este o tehnică de determinare a tonului emoțional al unui text. Utilizează procesarea limbajului natural, analiza textului și lingvistica computațională. Folosind aceasta, puteți clasifica tonul în pozitiv, neutru sau negativ. Acest lucru ajută companiile să analizeze feedback-ul clienților pe rețelele sociale, recenzii și sondaje.
Pe baza acestor date, ei își pot strategii produsele și campaniile mai eficient. Aflați cum puteți crea o aplicație care detectează sentimentele folosind Python.
Modulul Tkinter și vaderSentiment
Tkinter vă permite să creați aplicații desktop. Oferă o varietate de widget-uri, cum ar fi butoane, etichete și casete de text, care facilitează dezvoltarea aplicațiilor. Puteți folosi Tkinter pentru construiți o aplicație de dicționar în Python sau la creați-vă propria aplicație de știri care actualizează poveștile printr-un API.
Pentru a instala Tkinter, deschideți un terminal și rulați:
pip install tkinter
VADER (Valence Aware Dictionary and Sentiment Reasoner) este un instrument de analiză a sentimentelor bazat pe lexic și reguli. Este pre-construit și utilizat pe scară largă în Procesarea limbajului natural. Algoritmul are un set de cuvinte predefinite care reprezintă sentimente diferite. Pe baza cuvintelor găsite în propoziție, acest algoritm oferă un scor de polaritate. Folosind acest scor, puteți identifica dacă propoziția este pozitivă, negativă sau neutră.
Pentru a instala pachetul vaderSentiment în Python, rulați această comandă de terminal:
pip install vaderSentiment
Cum să detectați sentimentele folosind Python
Puteți găsi codul sursă al acestui exemplu de program în documentul său Depozitul GitHub.
Începeți prin a importa modulele VADER și tkinter necesare:
din vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
din tkinter import *
Apoi definiți o funcție, curata tot(). Scopul său este de a șterge câmpurile de introducere, lucru pe care îl puteți face folosind șterge() metoda dintr-un index de pornire al 0 la indexul final, Sfârşit.
defcurata tot():
negativeField.delete(0, SFÂRŞIT)
neutralField.delete(0, SFÂRŞIT)
positiveField.delete(0, SFÂRŞIT)
generalField.delete(0, SFÂRŞIT)
textArea.delete(1.0, SFÂRŞIT)
Definiți o funcție, detect_sentiment(). Utilizați metoda get pentru a prelua cuvântul introdus în textArea widget și creați un obiect de SentimentIntensityAnalyzer clasă. Folosește scoruri_polaritate metoda pe textul pe care l-ați preluat și aplicați algoritmul de analiză a sentimentelor VADER.
defdetect_sentiment():
propoziție = textArea.get("1.0", "Sfârşit")
sentiment_obj = SentimentIntensityAnalyzer()
sentiment_dict = sentiment_obj.polarity_scores (propoziție)
Extrageți scorul de sentiment negativ („neg”) și convertiți-l într-un procent. Introduceți valoarea obținută în câmp negativ incepand de la pozitia 10. Repetați același proces pentru scorul de sentiment neutru ('neu') și scorul de sentiment pozitiv('poz').
șir = str (sentiment_dict[„neg”] * 100)
negativeField.insert(10, șir)șir = str (sentiment_dict['neu'] * 100)
neutralField.insert(10, șir)
șir = str (sentiment_dict['poz'] * 100)
positiveField.insert(10, șir)
Extrageți valoarea cheii compuse care conține sentimentul general al propoziției. Dacă valoarea este mai mare sau egală cu 0,05, propoziția este pozitivă. Dacă valoarea este mai mică sau egală cu -0,05, propoziția este negativă. Pentru valori între -0,05 și 0,05, este o declarație neutră.
dacă sentiment_dict['compus'] >= 0.05:
șir = "Pozitiv"
elif sentiment_dict['compus'] <= - 0.05:
șir = "Negativ"
altfel:
șir = "Neutru"
Introduceți rezultatul în general Field de pe pozitia a 10-a:
generalField.insert(10, șir)
Inițializați o fereastră de interfață grafică cu utilizatorul folosind Tkinter. Setați culoarea de fundal, titlul și dimensiunile ferestrei. Creați cinci etichete. Una care cere utilizatorului să introducă o propoziție și celelalte patru pentru diferite sentimente. Setați elementul părinte în care doriți să-l plasați, textul pe care ar trebui să-l afișeze și stilurile de font pe care ar trebui să le aibă împreună cu culoarea de fundal.
Definiți un widget Text pentru a primi propoziția de la utilizator. Setați elementul părinte în care doriți să-l plasați, înălțimea, lățimea, stilurile de font și culoarea de fundal pe care ar trebui să o aibă. Definiți trei butoane. Unul pentru a efectua analiza sentimentelor, unul pentru a șterge conținutul după utilizare și unul pentru a ieși din aplicație. Setați fereastra părinte, textul pe care ar trebui să-l afișeze, culoarea de fundal, stilurile fonturilor și comanda pe care doriți să o executați când faceți clic.
dacă __nume__ == "__principal__":
gui = Tk()
gui.config (background=„#A020f0”)
gui.title(„Analizor de sentimente VADER”)
gui.geometry(„400x700”)
enterText = Etichetă (gui, text=„Introduceți propoziția:”,font="arial 15 bold",bg=„#A020f0”)
negativ = Etichetă (gui, text=„Procent negativ:”, font="arial 15",bg=„#A020f0”)
neutru = Etichetă (gui, text=„Procentul de nutriție:”, font="arial 15",bg=„#A020f0”)
pozitiv = Etichetă (gui, text=„Procent pozitiv:”, font="arial 15",bg=„#A020f0”)
global = Etichetă (gui, text=„Propoziția generală este:”, font="arial 15",bg=„#A020f0”)
textArea = Text (gui, înălțime=5, latime=25, font="arial 15", bg=„#cf9fff”)
verifica = Buton (gui, text=„Verificați sentimentul”, bg=„#e7305b”, font=("arial", 12, "îndrăzneţ"), comandă=detect_sentiment)
clear = Buton (gui, text="Clar", bg=„#e7305b”, font=("arial", 12, "îndrăzneţ"), comandă=clearAll)
Ieșire = Buton (gui, text="Ieșire", bg=„#e7305b”, font=("arial", 12, "îndrăzneţ"), comandă=ieșire)
Definiți patru câmpuri de intrare pentru diferitele sentimente și setați fereastra părinte și stilurile de font.
negativeField = Intrare (gui, font="arial 15")
neutralField = Intrare (gui, font="arial 15")
positiveField = Intrare (gui, font="arial 15")
generalField = Intrare (gui, font="arial 15")
Utilizați o grilă formată din 13 rânduri și trei coloane pentru aspectul general. Plasați diferitele elemente, cum ar fi etichete, câmpuri de introducere a textului și butoane, în diferite rânduri și coloane, așa cum este prezentat. Adăugați căptușeala necesară oriunde este necesar. Seteaza lipicios opțiunea pentru "W" pentru a alinia la stânga textele din celula sa.
enterText.grid (rând=0, coloana=2, pady=15)
textArea.grid (row=1, coloana=2, padx=60, pady=10, lipicios=W)
check.grid (rând=2, coloana=2, pady=10)
negativ.grilă (rând=3, coloana=2, pady=10)
neutru.grilă (rând=5, coloana=2, pady=10)
pozitiv.grilă (rând=7, coloana=2, pady=10)
general.grilă (rând=9, coloana=2, pady=5)
negativeField.grid (rând=4, coloana=2)
neutralField.grid (rând=6, coloana=2)
positiveField.grid (rând=8, coloana=2)
generalField.grid (rând=10, coloana=2, pady=10)
clear.grid (rând=11, coloana=2, pady=10)
Ieșire.grid (rând=12, coloana=2, pady=10)
The mainloop() funcția îi spune lui Python să ruleze bucla de evenimente Tkinter și să asculte evenimente până când închideți fereastra.
gui.mainloop()
Puneți tot codul împreună și puteți utiliza programul scurt rezultat pentru a detecta sentimentele.
Ieșirea detectării sentimentelor folosind Python
La rularea acestui program, apare fereastra VADER Sentiment Analyzer. Când am testat programul pe o propoziție pozitivă, acesta a detectat-o cu o precizie de 79%. Încercând o declarație neutră și una negativă, programul a reușit să detecteze cu o precizie de 100% și, respectiv, 64,3%.
Alternative pentru analiza sentimentelor folosind Python
Puteți folosi Textblob pentru analiza sentimentelor, etichetarea vorbirii și clasificarea textului. Are un API consistent și un clasificator de polaritate a sentimentului încorporat. NLTK este o bibliotecă NLP cuprinzătoare care conține o gamă largă de instrumente pentru analiza textului, dar are o curbă de învățare abruptă pentru începători.
Unul dintre cele mai populare instrumente este IBM Watson NLU. Este bazat pe cloud, acceptă mai multe limbi și are caracteristici precum recunoașterea entităților și extragerea cheilor. Odată cu introducerea GPT, puteți utiliza API-ul OpenAI și îl puteți integra în aplicațiile dvs. pentru a obține sentimentele clienților exacte și de încredere în timp real.