Følelsesanalyse er overraskende nøjagtig, og du kan bygge denne enkle Tkinter-app for at prøve den.

Følelsesanalyse er en teknik til at bestemme den følelsesmæssige tone i et stykke tekst. Den bruger naturlig sprogbehandling, tekstanalyse og computerlingvistik. Ved at bruge dette kan du klassificere tonen i positiv, neutral eller negativ. Dette hjælper virksomheder med at analysere kundefeedback på sociale medier, anmeldelser og undersøgelser.

Baseret på disse data kan de strategisere deres produkter og kampagner mere effektivt. Lær, hvordan du kan bygge en applikation, der registrerer følelser ved hjælp af Python.

Tkinter og vaderSentiment-modulet

Tkinter giver dig mulighed for at oprette desktop-applikationer. Den tilbyder en række widgets som knapper, etiketter og tekstbokse, der gør det nemt at udvikle apps. Du kan bruge Tkinter til at byg en ordbogsapp i Python eller til lav din egen nyhedsapplikation, der opdaterer historier via en API.

For at installere Tkinter skal du åbne en terminal og køre:

pip installer tkinter

VADER (Valence Aware Dictionary and sEntiment Reasoner) er et leksikon og et regelbaseret værktøj til stemningsanalyse. Den er præbygget og meget brugt i Naturlig sprogbehandling. Algoritmen har et sæt foruddefinerede ord, som repræsenterer forskellige følelser. Baseret på ordene i sætningen giver denne algoritme en polaritetsscore. Ved hjælp af denne score kan du identificere, om sætningen er positiv, negativ eller neutral.

For at installere vaderSentiment-pakken i Python skal du køre denne terminalkommando:

pip installer vaderSentiment

Sådan opdager du følelser ved hjælp af Python

Du kan finde kildekoden til dette eksempelprogram i dens GitHub-depot.

Start med at importere de nødvendige VADER- og tkinter-moduler:

fra vaderSentiment.vaderSentiment importere SentimentIntensityAnalyzer
fra tkinter importere *

Definer derefter en funktion, Slet alt(). Dens formål er at rydde inputfelterne, hvilket du kan gøre ved hjælp af slet() metode fra et startindeks på 0 til det endelige indeks, ENDE.

defSlet alt():
negativeField.delete(0, SLUT)
neutralField.delete(0, SLUT)
positiveField.delete(0, SLUT)
overallField.delete(0, SLUT)
textArea.delete(1.0, SLUT)

Definer en funktion, detect_sentiment(). Brug get-metoden til at hente det ord, der er indtastet i tekstområde widget og opret et objekt af SentimentIntensityAnalyzer klasse. Brug polarity_scores metode på den tekst, du hentede, og anvend VADER-sentimentanalysealgoritmen.

defdetect_sentiment():
sætning = textArea.get("1.0", "ende")
sentiment_obj = SentimentIntensityAnalyzer()
sentiment_dict = sentiment_obj.polarity_scores (sætning)

Udtræk den negative følelsesscore ('neg') og omregn det til en procentdel. Indsæt den opnåede værdi i negativt felt fra position 10. Gentag den samme proces for den neutrale følelsesscore ('neu') og den positive sentiment score('pos').

 streng = str (sentiment_dict['neg'] * 100)
negativeField.insert(10, streng)

streng = str (sentiment_dict['neu'] * 100)
neutralField.insert(10, streng)

streng = str (sentiment_dict['pos'] * 100)
positiveField.insert(10, streng)

Udtræk værdien af ​​den sammensatte nøgle, der indeholder den overordnede følelse af sætningen. Hvis værdien er større end eller lig med 0,05, er sætningen positiv. Hvis værdien er mindre end eller lig med -0,05, er sætningen negativ. For værdier mellem -0,05 og 0,05 er det et neutralt udsagn.

hvis sentiment_dict['sammensat'] >= 0.05:
streng = "Positiv"
elif sentiment_dict['sammensat'] <= - 0.05:
streng = "Negativ"
andet:
streng = "Neutral"

Indsæt resultatet i overordnet felt fra 10. pladsen:

 overallField.insert(10, streng)

Initialiser et grafisk brugergrænsefladevindue ved hjælp af Tkinter. Indstil baggrundsfarven, titlen og dimensionerne for vinduet. Opret fem etiketter. En, der beder brugeren om at indtaste en sætning og de andre fire for de forskellige følelser. Indstil det overordnede element, du vil placere det i, den tekst, det skal vise, og de skrifttyper, det skal have sammen med baggrundsfarven.

Definer en tekst-widget for at modtage sætningen fra brugeren. Indstil det overordnede element, du vil placere det i, dets højde, bredde, skrifttypestile og den baggrundsfarve, det skal have. Definer tre knapper. En til at udføre sentimentanalysen, en til at rydde indholdet efter brug og en til at afslutte applikationen. Indstil dets overordnede vindue, den tekst, det skal vise, dets baggrundsfarve, skrifttypestile og den kommando, du vil udføre, når der klikkes på.

hvis __navn__ == "__main__":
gui = Tk()
gui.config (baggrund="#A020f0")
gui.title("VADER Sentiment Analyzer")
gui.geometry("400x700")
enterText = Etiket (gui, text="Indtast din sætning: ",font="Arial 15 fed",bg="#A020f0")
negativ = Etiket (gui, tekst="Negativ procentdel: ", skrifttype="Arial 15",bg="#A020f0")
neutral = Label (gui, tekst="Neutral procentdel: ", skrifttype="Arial 15",bg="#A020f0")
positiv = Etiket (gui, tekst="Positiv procentdel: ", skrifttype="Arial 15",bg="#A020f0")
samlet = Label (gui, tekst="Samlet sætning er:", skrifttype="Arial 15",bg="#A020f0")
textArea = Tekst (gui, højde=5, bredde=25, skrifttype="Arial 15", bg="#cf9fff")
check = Knap (gui, text="Tjek følelsen", bg="#e7305b", skrifttype=("arial", 12, "fremhævet"), kommando=detect_sentiment)
clear = knap (gui, tekst="Klar", bg="#e7305b", skrifttype=("arial", 12, "fremhævet"), kommando=clearAll)
Afslut = Knap (gui, tekst="Afslut", bg="#e7305b", skrifttype=("arial", 12, "fremhævet"), kommando=afslut)

Definer fire indtastningsfelter for de forskellige følelser og indstil deres overordnede vindue og skrifttypestile.

 negativeField = Entry (gui, font="Arial 15")
neutralField = Entry (gui, font="Arial 15")
positiveField = Entry (gui, font="Arial 15")
overallField = Entry (gui, font="Arial 15")

Brug et gitter bestående af 13 rækker og tre kolonner til det overordnede layout. Placer de forskellige elementer såsom etiketter, tekstindtastningsfelter og knapper i forskellige rækker og kolonner som vist. Tilføj nødvendig polstring, hvor det er nødvendigt. Indstil klæbrig mulighed for at "W" til venstrejustering af teksterne i dens celle.

 enterText.grid (række=0, kolonne=2, pady=15)
textArea.grid (række=1, kolonne=2, padx=60, pady=10, klæbrig=W)
check.grid (række=2, kolonne=2, pady=10)
negativ.gitter (række=3, kolonne=2, pady=10)
neutral.grid (række=5, kolonne=2, pady=10)
positiv.gitter (række=7, kolonne=2, pady=10)
overall.grid (række=9, kolonne=2, pady=5)
negativField.grid (række=4, kolonne=2)
neutralField.grid (række=6, kolonne=2)
positiveField.grid (række=8, kolonne=2)
overallField.grid (række=10, kolonne=2, pady=10)
clear.grid (række=11, kolonne=2, pady=10)
Exit.grid (række=12, kolonne=2, pady=10)

Det mainloop() funktion fortæller Python at køre Tkinter-hændelsesløkken og lytte efter hændelser, indtil du lukker vinduet.

 gui.mainloop()

Sæt al koden sammen, og du kan bruge det resulterende korte program til at opdage følelser.

Outputtet ved at detektere følelser ved hjælp af Python

Når du kører dette program, vises vinduet VADER Sentiment Analyzer. Da vi testede programmet på en positiv sætning, opdagede det det med en nøjagtighed på 79 %. Ved at prøve et neutralt udsagn og et negativt, var programmet i stand til at detektere med henholdsvis 100 % og 64,3 % nøjagtighed.

Alternativer til sentimentanalyse ved hjælp af Python

Du kan bruge Textblob til sentimentanalyse, talemærkning og tekstklassificering. Den har en konsekvent API og en indbygget sentiment polaritetsklassificering. NLTK er et omfattende NLP-bibliotek, der indeholder en lang række værktøjer til tekstanalyse, men som har en stejl indlæringskurve for begyndere.

Et af de mest populære værktøjer er IBM Watson NLU. Det er cloud-baseret, understøtter flere sprog og har funktioner som enhedsgenkendelse og nøgleudtræk. Med introduktionen af ​​GPT kan du bruge OpenAI API og integrere det i dine applikationer for at få nøjagtige og pålidelige kundetilkendegivelser i realtid.