Sentimentanalyse er overraskende nøyaktig, og du kan bygge denne enkle Tkinter-appen for å prøve den ut.
Sentimentanalyse er en teknikk for å bestemme den emosjonelle tonen i et tekststykke. Den bruker naturlig språkbehandling, tekstanalyse og datalingvistikk. Ved å bruke dette kan du klassifisere tonen i positiv, nøytral eller negativ. Dette hjelper bedrifter med å analysere tilbakemeldinger fra kunder på sosiale medier, anmeldelser og undersøkelser.
Basert på disse dataene kan de planlegge produktene og kampanjene sine mer effektivt. Lær hvordan du kan bygge en applikasjon som oppdager følelser ved hjelp av Python.
Tkinter og vaderSentiment-modulen
Tkinter lar deg lage skrivebordsapplikasjoner. Den tilbyr en rekke widgets som knapper, etiketter og tekstbokser som gjør det enkelt å utvikle apper. Du kan bruke Tkinter til å bygge en ordbok-app i Python eller til lag din egen nyhetsapplikasjon som oppdaterer historier via et API.
For å installere Tkinter, åpne en terminal og kjør:
pip installer tkinter
VADER (Valence Aware Dictionary and sEntiment Reasoner) er et leksikon og regelbasert sentimentanalyseverktøy. Den er forhåndsbygd og mye brukt i Naturlig språkbehandling. Algoritmen har et sett med forhåndsdefinerte ord som representerer forskjellige følelser. Basert på ordene som finnes i setningen, gir denne algoritmen en polaritetsscore. Ved å bruke denne poengsummen kan du identifisere om setningen er positiv, negativ eller nøytral.
For å installere vaderSentiment-pakken i Python, kjør denne terminalkommandoen:
pip install vaderSentiment
Hvordan oppdage følelser ved hjelp av Python
Du kan finne kildekoden til dette eksempelprogrammet i sin GitHub-depot.
Start med å importere de nødvendige VADER- og tkinter-modulene:
fra vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
fra tkinter import *
Definer deretter en funksjon, Rydd alt(). Formålet er å tømme inndatafeltene, som du kan gjøre ved å bruke slett() metode fra en startindeks på 0 til den endelige indeksen, SLUTT.
defRydd alt():
negativeField.delete(0, SLUTT)
neutralField.delete(0, SLUTT)
positiveField.delete(0, SLUTT)
overallField.delete(0, SLUTT)
textArea.delete(1.0, SLUTT)
Definer en funksjon, detect_sentiment(). Bruk get-metoden for å hente ordet som er skrevet inn i textArea widget og lag et objekt av SentimentIntensityAnalyzer klasse. Bruke polaritetspoeng metoden på teksten du hentet og bruk VADER-sentimentanalysealgoritmen.
defoppdage_sentiment():
setning = textArea.get("1.0", "slutt")
sentiment_obj = SentimentIntensityAnalyzer()
sentiment_dict = sentiment_obj.polarity_scores (setning)
Trekk ut den negative sentimentpoengsummen ('neg') og konverter den til en prosentandel. Sett inn verdien oppnådd i negativt felt fra posisjon 10. Gjenta den samme prosessen for poengsummen for nøytral sentiment ('neu') og den positive sentimentpoengsummen('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)
Trekk ut verdien av den sammensatte nøkkelen som inneholder den generelle følelsen av setningen. Hvis verdien er større enn eller lik 0,05, er setningen positiv. Hvis verdien er mindre enn eller lik -0,05, er setningen negativ. For verdier mellom -0,05 og 0,05 er det et nøytralt utsagn.
hvis sentiment_dict['sammensatt'] >= 0.05:
streng = "positiv"
elif sentiment_dict['sammensatt'] <= - 0.05:
streng = "Negativ"
ellers:
streng = "Nøytral"
Sett inn resultatet i overordnet felt fra 10. plass:
overallField.insert(10, streng)
Initialiser et grafisk brukergrensesnittvindu ved å bruke Tkinter. Angi bakgrunnsfargen, tittelen og dimensjonene til vinduet. Lag fem etiketter. En som ber brukeren om å skrive inn en setning og de fire andre for de forskjellige følelsene. Angi det overordnede elementet du vil plassere det i, teksten det skal vise, og skriftstilene det skal ha sammen med bakgrunnsfargen.
Definer en tekst-widget for å motta setningen fra brukeren. Angi det overordnede elementet du vil plassere det i, dets høyde, bredde, skriftstiler og bakgrunnsfargen det skal ha. Definer tre knapper. En for å utføre sentimentanalysen, en for å fjerne innholdet etter bruk, og en for å avslutte applikasjonen. Angi det overordnede vinduet, teksten det skal vise, bakgrunnsfargen, skriftstiler og kommandoen du vil utføre når du klikker.
hvis __navn__ == "__hoved__":
gui = Tk()
gui.config (bakgrunn="#A020f0")
gui.title("VADER Sentiment Analyzer")
gui.geometry("400x700")
enterText = Etikett (gui, text="Skriv inn setningen din: ",font="Arial 15 fet",bg="#A020f0")
negativ = Etikett (gui, tekst="Negativ prosentandel: ", font="arial 15",bg="#A020f0")
nøytral = Etikett (gui, tekst="Nøytral prosentandel: ", font="arial 15",bg="#A020f0")
positiv = Etikett (gui, tekst="Positiv prosentandel: ", font="arial 15",bg="#A020f0")
samlet = Etikett (gui, tekst="Samlet setning er:", font="arial 15",bg="#A020f0")
textArea = Tekst (gui, høyde=5, bredde=25, font="arial 15", bg="#cf9fff")
check = Button (gui, text="Sjekk sentiment", bg="#e7305b", font=("arial", 12, "dristig"), kommando=detect_sentiment)
clear = Knapp (gui, tekst="Klar", bg="#e7305b", font=("arial", 12, "dristig"), kommando=clearAll)
Avslutt = Knapp (gui, tekst="Exit", bg="#e7305b", font=("arial", 12, "dristig"), kommando=avslutt)
Definer fire inngangsfelt for de forskjellige følelsene og angi deres overordnede vindu og skriftstiler.
negativeField = Entry (gui, font="arial 15")
neutralField = Entry (gui, font="arial 15")
positiveField = Entry (gui, font="arial 15")
overallField = Entry (gui, font="arial 15")
Bruk et rutenett bestående av 13 rader og tre kolonner for den generelle layouten. Plasser de ulike elementene som etiketter, tekstinntastingsfelt og knapper i ulike rader og kolonner som vist. Legg til nødvendig polstring der det er nødvendig. Sett klissete mulighet til "W" til venstrejustering av tekstene i cellen.
enterText.grid (rad=0, kolonne=2, pady=15)
textArea.grid (rad=1, kolonne=2, padx=60, pady=10, klebrig=W)
check.grid (rad=2, kolonne=2, pady=10)
negativ.rutenett (rad=3, kolonne=2, pady=10)
neutral.grid (rad=5, kolonne=2, pady=10)
positive.grid (rad=7, kolonne=2, pady=10)
overall.grid (rad=9, kolonne=2, pady=5)
negativField.grid (rad=4, kolonne=2)
neutralField.grid (rad=6, kolonne=2)
positiveField.grid (rad=8, kolonne=2)
overallField.grid (rad=10, kolonne=2, pady=10)
clear.grid (rad=11, kolonne=2, pady=10)
Exit.grid (rad=12, kolonne=2, pady=10)
De mainloop() funksjonen forteller Python å kjøre Tkinter-hendelsesløkken og lytte etter hendelser til du lukker vinduet.
gui.mainloop()
Sett all koden sammen, og du kan bruke det resulterende korte programmet til å oppdage følelser.
Resultatet av å oppdage følelser ved hjelp av Python
Når du kjører dette programmet, vises VADER Sentiment Analyzer-vinduet. Da vi testet programmet på en positiv setning, oppdaget det det med en nøyaktighet på 79 %. Ved å prøve et nøytralt og et negativt utsagn var programmet i stand til å oppdage med henholdsvis 100 % og 64,3 % nøyaktighet.
Alternativer for sentimentanalyse ved bruk av Python
Du kan bruke Textblob for sentimentanalyse, talemerking og tekstklassifisering. Den har en konsekvent API og en innebygd sentimentpolaritetsklassifiser. NLTK er et omfattende NLP-bibliotek som inneholder et bredt spekter av verktøy for tekstanalyse, men som har en bratt læringskurve for nybegynnere.
Et av de mest populære verktøyene er IBM Watson NLU. Den er skybasert, støtter flere språk og har funksjoner som enhetsgjenkjenning og nøkkelutvinning. Med introduksjonen av GPT kan du bruke OpenAI API og integrere den i applikasjonene dine for å få nøyaktige og pålitelige kundefølelser i sanntid.