Sentimentanalys är förvånansvärt korrekt och du kan bygga den här enkla Tkinter-appen för att prova den.
Sentimentanalys är en teknik för att bestämma den känslomässiga tonen i ett textstycke. Den använder naturlig språkbehandling, textanalys och beräkningslingvistik. Med detta kan du klassificera tonen i positiv, neutral eller negativ. Detta hjälper företag att analysera kundfeedback på sociala medier, recensioner och undersökningar.
Baserat på denna data kan de lägga strategi på sina produkter och kampanjer mer effektivt. Lär dig hur du kan bygga ett program som upptäcker känslor med Python.
Tkinter och vaderSentiment-modulen
Tkinter låter dig skapa skrivbordsapplikationer. Den erbjuder en mängd olika widgets som knappar, etiketter och textrutor som gör det enkelt att utveckla appar. Du kan använda Tkinter för att bygga en ordboksapp i Python eller att skapa din egen nyhetsapplikation som uppdaterar berättelser via ett API.
För att installera Tkinter, öppna en terminal och kör:
pip installera tkinter
VADER (Valence Aware Dictionary and SEntiment Reasoner) är ett lexikon och regelbaserat sentimentanalysverktyg. Den är förbyggd och används ofta i Naturlig språkbehandling. Algoritmen har en uppsättning fördefinierade ord som representerar olika känslor. Baserat på orden som finns i meningen ger denna algoritm en polaritetspoäng. Med hjälp av denna poäng kan du identifiera om meningen är positiv, negativ eller neutral.
För att installera vaderSentiment-paketet i Python, kör detta terminalkommando:
pip installera vaderSentiment
Hur man upptäcker känslor med Python
Du kan hitta källkoden för detta exempelprogram i dess GitHub-förråd.
Börja med att importera de nödvändiga VADER- och tkinter-modulerna:
från vaderSentiment.vaderSentiment importera SentimentIntensityAnalyzer
från tkinter importera *
Definiera sedan en funktion, Rensa alla(). Dess syfte är att rensa inmatningsfälten, vilket du kan göra med hjälp av radera() metod från ett startindex på 0 till det slutliga indexet, SLUTET.
defRensa alla():
negativField.delete(0, SLUTET)
neutralField.delete(0, SLUTET)
positiveField.delete(0, SLUTET)
overallField.delete(0, SLUTET)
textArea.delete(1.0, SLUTET)
Definiera en funktion, detect_sentiment(). Använd get-metoden för att hämta ordet som skrivits in i textArea widget och skapa ett objekt av SentimentIntensityAnalyzer klass. Använd polarity_scores metod på texten du hämtade och använd VADER-sentimentanalysalgoritmen.
defdetektera_sentiment():
meningen = textArea.get("1.0", "slutet")
sentiment_obj = SentimentIntensityAnalyzer()
sentiment_dict = sentiment_obj.polarity_scores (mening)
Extrahera den negativa sentimentpoängen ('neg') och omvandla det till en procentandel. Infoga det erhållna värdet i negativt fält från position 10. Upprepa samma process för den neutrala sentimentpoängen ("neu") och det positiva sentimentet ('pos').
sträng = str (sentiment_dict['neg'] * 100)
negativField.insert(10, sträng)sträng = str (sentiment_dict["neu"] * 100)
neutralField.insert(10, sträng)
sträng = str (sentiment_dict['pos'] * 100)
positiveField.insert(10, sträng)
Extrahera värdet av den sammansatta nyckeln som innehåller meningens övergripande känsla. Om värdet är större än eller lika med 0,05 är meningen positiv. Om värdet är mindre än eller lika med -0,05 är meningen negativ. För värden mellan -0,05 och 0,05 är det ett neutralt påstående.
om sentiment_dict['förening'] >= 0.05:
sträng = "Positiv"
elif sentiment_dict['förening'] <= - 0.05:
sträng = "Negativ"
annan:
sträng = "Neutral"
Infoga resultatet i övergripande fält från 10:e plats:
overallField.insert(10, sträng)
Initiera ett grafiskt användargränssnittsfönster med Tkinter. Ställ in bakgrundsfärgen, titeln och måtten på fönstret. Skapa fem etiketter. En som ber användaren att skriva in en mening och de andra fyra för de olika känslorna. Ställ in det överordnade elementet du vill placera det i, texten det ska visa och typsnittet det ska ha tillsammans med bakgrundsfärgen.
Definiera en textwidget för att ta emot meningen från användaren. Ställ in det överordnade elementet du vill placera det i, dess höjd, bredd, teckensnittsstilar och bakgrundsfärgen det ska ha. Definiera tre knappar. En för att utföra sentimentanalysen, en för att rensa innehållet efter användning och en för att avsluta applikationen. Ställ in dess överordnade fönster, texten den ska visa, dess bakgrundsfärg, teckensnittsstilar och kommandot du vill köra när du klickar på det.
om __namn__ == "__huvud__":
gui = Tk()
gui.config (bakgrund="#A020f0")
gui.title("VADER Sentiment Analyzer")
gui.geometry("400x700")
enterText = Etikett (gui, text="Skriv in din mening: ",font="Arial 15 fet",bg="#A020f0")
negativ = Etikett (gui, text="Negativ procentandel: ", teckensnitt="Arial 15",bg="#A020f0")
neutral = Etikett (gui, text="Neutral procentandel: ", teckensnitt="Arial 15",bg="#A020f0")
positiv = Etikett (gui, text="Positiv procentandel: ", teckensnitt="Arial 15",bg="#A020f0")
övergripande = Etikett (gui, text="Övergripande meningen är:", teckensnitt="Arial 15",bg="#A020f0")
textArea = Text (gui, höjd=5, bredd=25, teckensnitt="Arial 15", bg="#cf9fff")
check = Knapp (gui, text="Kontrollera sentiment", bg="#e7305b", typsnitt=("arial", 12, "djärv"), kommando=detect_sentiment)
clear = Knapp (gui, text="Klar", bg="#e7305b", typsnitt=("arial", 12, "djärv"), kommando=clearAll)
Avsluta = Knapp (gui, text="Utgång", bg="#e7305b", typsnitt=("arial", 12, "djärv"), kommando=avsluta)
Definiera fyra inmatningsfält för de olika känslorna och ställ in deras överordnade fönster och teckensnitt.
negativField = Entry (gui, font="Arial 15")
neutralField = Entry (gui, font="Arial 15")
positiveField = Entry (gui, font="Arial 15")
overallField = Entry (gui, font="Arial 15")
Använd ett rutnät som består av 13 rader och tre kolumner för den övergripande layouten. Placera de olika elementen som etiketter, textinmatningsfält och knappar i olika rader och kolumner enligt bilden. Lägg till nödvändig stoppning där det behövs. Ställ in klibbig möjlighet att "W" vänsterjustera texterna i sin cell.
enterText.grid (rad=0, kolumn=2, pady=15)
textArea.grid (rad=1, kolumn=2, padx=60, pady=10, klibbig=W)
check.grid (rad=2, kolumn=2, pady=10)
negativ.rutnät (rad=3, kolumn=2, pady=10)
neutral.grid (rad=5, kolumn=2, pady=10)
positive.grid (rad=7, kolumn=2, pady=10)
overall.grid (rad=9, kolumn=2, pady=5)
negativField.grid (rad=4, kolumn=2)
neutralField.grid (rad=6, kolumn=2)
positiveField.grid (rad=8, kolumn=2)
overallField.grid (rad=10, kolumn=2, pady=10)
clear.grid (rad=11, kolumn=2, pady=10)
Exit.grid (rad=12, kolumn=2, pady=10)
De mainloop() funktionen säger åt Python att köra Tkinter-händelsslingan och lyssna efter händelser tills du stänger fönstret.
gui.mainloop()
Sätt ihop all kod så kan du använda det resulterande korta programmet för att upptäcka känslor.
Resultatet av att upptäcka känslor med Python
När det här programmet körs visas fönstret VADER Sentiment Analyzer. När vi testade programmet på en positiv mening upptäckte det den med en noggrannhet på 79 %. Genom att prova ett neutralt och negativt uttalande kunde programmet detektera med 100 % respektive 64,3 % noggrannhet.
Alternativ för sentimentanalys med Python
Du kan använda Textblob för sentimentanalys, taltaggning och textklassificering. Den har ett konsekvent API och en inbyggd sentimentpolaritetsklassificerare. NLTK är ett omfattande NLP-bibliotek som innehåller ett brett utbud av verktyg för textanalys men har en brant inlärningskurva för nybörjare.
Ett av de mest populära verktygen är IBM Watson NLU. Den är molnbaserad, stöder flera språk och har funktioner som enhetsigenkänning och nyckelextraktion. Med introduktionen av GPT kan du använda OpenAI API och integrera den i dina applikationer för att få korrekta och pålitliga kundkännedomar i realtid.