Analiza razpoloženja je presenetljivo natančna in lahko sestavite to preprosto aplikacijo Tkinter, da jo preizkusite.
Analiza občutkov je tehnika za določanje čustvenega tona dela besedila. Uporablja obdelavo naravnega jezika, analizo besedila in računalniško jezikoslovje. S tem lahko razvrstite ton v pozitiven, nevtralen ali negativen. To podjetjem pomaga analizirati povratne informacije strank o družbenih medijih, ocenah in anketah.
Na podlagi teh podatkov lahko učinkoviteje oblikujejo strategijo svojih izdelkov in kampanj. Naučite se, kako lahko zgradite aplikacijo, ki zazna čustva s pomočjo Pythona.
Modul Tkinter in vaderSentiment
Tkinter omogoča ustvarjanje namiznih aplikacij. Ponuja različne pripomočke, kot so gumbi, oznake in besedilna polja, ki olajšajo razvoj aplikacij. Tkinter lahko uporabite za zgraditi slovarsko aplikacijo v Pythonu ali za ustvarite lastno aplikacijo za novice, ki posodablja novice prek API-ja.
Če želite namestiti Tkinter, odprite terminal in zaženite:
pip namestite tkinter
VADER (Valence Aware Dictionary and Sentiment Reasoner) je orodje za analizo razpoloženja na podlagi leksikona in pravil. Je že vgrajen in se pogosto uporablja v Obdelava naravnega jezika. Algoritem ima nabor vnaprej določenih besed, ki predstavljajo različna čustva. Na podlagi besed v stavku ta algoritem poda oceno polarnosti. S pomočjo te ocene lahko ugotovite, ali je stavek pozitiven, negativen ali nevtralen.
Če želite namestiti paket vaderSentiment v Python, zaženite ta terminalski ukaz:
pip namestite vaderSentiment
Kako zaznati čustva s Pythonom
Izvorno kodo tega vzorčnega programa najdete v Repozitorij GitHub.
Začnite z uvozom zahtevanih modulov VADER in tkinter:
od vaderSentiment.vaderSentiment uvoz SentimentIntensityAnalyzer
od tkinter uvoz *
Nato definirajte funkcijo, Počisti vse(). Njegov namen je počistiti vnosna polja, kar lahko storite z uporabo izbrisati() metoda iz začetnega indeksa 0 do končnega indeksa, KONEC.
defPočisti vse():
negativeField.delete(0, KONEC)
neutralField.delete(0, KONEC)
positiveField.delete(0, KONEC)
generalField.delete(0, KONEC)
textArea.delete(1.0, KONEC)
Definirajte funkcijo, zaznaj_sentiment(). Uporabite metodo get, da pridobite besedo, vneseno v textArea widget in ustvarite predmet SentimentIntensityAnalyzer razred. Uporabi polarity_scores na besedilo, ki ste ga prenesli, in uporabite algoritem za analizo razpoloženja VADER.
defzaznaj_čustvo():
stavek = textArea.get("1.0", "konec")
sentiment_obj = SentimentIntensityAnalyzer()
sentiment_dict = sentiment_obj.polarity_scores (stavek)
Izvlecite oceno negativnega razpoloženja ('neg') in ga pretvorite v odstotke. Dobljeno vrednost vnesite v negativeField začenši s položaja 10. Isti postopek ponovite za rezultat nevtralnega občutka ('neu') in oceno pozitivnega razpoloženja ('pos').
niz = str (sentiment_dict['neg'] * 100)
negativeField.insert(10, vrvica)niz = str (sentiment_dict['neu'] * 100)
neutralField.insert(10, vrvica)
niz = str (sentiment_dict['pos'] * 100)
positiveField.insert(10, vrvica)
Izvlecite vrednost sestavljenega ključa, ki vsebuje splošno čustvo stavka. Če je vrednost večja ali enaka 0,05, je stavek pozitiven. Če je vrednost manjša ali enaka -0,05, je stavek negativen. Za vrednosti med -0,05 in 0,05 je to nevtralna izjava.
če sentiment_dict['kompound'] >= 0.05:
niz = "pozitivno"
elif sentiment_dict['kompound'] <= - 0.05:
niz = "Negativno"
drugače:
niz = "nevtralno"
Vstavite rezultat v generalField z 10. mesta:
generalField.insert(10, vrvica)
Inicializirajte okno grafičnega uporabniškega vmesnika s pomočjo Tkinterja. Nastavite barvo ozadja, naslov in dimenzije okna. Ustvari pet oznak. Ena, ki od uporabnika zahteva, da vnese stavek, druge štiri pa za različna čustva. Nastavite nadrejeni element, v katerega ga želite postaviti, besedilo, ki naj bo prikazano, in sloge pisave, ki naj jih ima skupaj z barvo ozadja.
Določite gradnik Besedilo, da prejmete stavek od uporabnika. Nastavite nadrejeni element, v katerega ga želite postaviti, njegovo višino, širino, sloge pisave in barvo ozadja, ki naj bi jo imel. Določite tri gumbe. Ena za izvedbo analize razpoloženja, ena za brisanje vsebine po uporabi in ena za izhod iz aplikacije. Nastavite nadrejeno okno, besedilo, ki naj se prikaže, barvo ozadja, sloge pisave in ukaz, ki ga želite izvesti ob kliku.
če __ime__ == "__glavni__":
gui = Tk()
gui.config (ozadje="#A020f0")
gui.title("VADER Sentiment Analyzer")
gui.geometry("400x700")
enterText = Oznaka (gui, text="Vnesite svoj stavek:",pisava="arial 15 krepko",bg="#A020f0")
negativno = Oznaka (gui, besedilo="Negativni odstotek:", pisava="arial 15",bg="#A020f0")
nevtralno = Oznaka (gui, besedilo="Nuteralni odstotek: ", pisava="arial 15",bg="#A020f0")
pozitivno = Oznaka (gui, besedilo="Pozitiven odstotek:", pisava="arial 15",bg="#A020f0")
splošno = Oznaka (gui, besedilo="Splošni stavek je: ", pisava="arial 15",bg="#A020f0")
textArea = Besedilo (gui, višina=5, širina=25, pisava="arial 15", bg="#cf9fff")
preveri = Gumb (gui, besedilo="Preveri razpoloženje", bg="#e7305b", pisava=("arial", 12, "krepko"), command=detect_sentiment)
počisti = gumb (gui, besedilo="Počisti", bg="#e7305b", pisava=("arial", 12, "krepko"), command=clearAll)
Izhod = Gumb (gui, text="Izhod", bg="#e7305b", pisava=("arial", 12, "krepko"), ukaz=izhod)
Določite štiri vnosna polja za različne občutke in nastavite njihova nadrejena okna in sloge pisave.
negativeField = Vnos (gui, pisava="arial 15")
neutralField = Vnos (gui, pisava="arial 15")
positiveField = Vnos (gui, pisava="arial 15")
generalField = Vnos (gui, pisava="arial 15")
Za celotno postavitev uporabite mrežo, sestavljeno iz 13 vrstic in treh stolpcev. Različne elemente, kot so oznake, polja za vnos besedila in gumbi, postavite v različne vrstice in stolpce, kot je prikazano. Dodajte potrebno oblazinjenje, kjer koli je potrebno. Nastavite lepljivo možnost za "W" za levo poravnavo besedil v celici.
enterText.grid (row=0, stolpec=2, pady=15)
textArea.grid (vrstica=1, stolpec=2, padx=60, pady=10, lepljivo=W)
preveri.grid (vrstica=2, stolpec=2, pady=10)
negative.grid (row=3, stolpec=2, pady=10)
nevtralna.mreža (vrstica=5, stolpec=2, pady=10)
positive.grid (row=7, stolpec=2, pady=10)
general.grid (row=9, stolpec=2, pady=5)
negativeField.grid (row=4, stolpec=2)
neutralField.grid (vrstica=6, stolpec=2)
positiveField.grid (row=8, stolpec=2)
generalField.grid (row=10, stolpec=2, pady=10)
clear.grid (row=11, stolpec=2, pady=10)
Izhod.mreža (vrstica=12, stolpec=2, pady=10)
The glavna zanka() funkcija pove Pythonu, naj zažene zanko dogodkov Tkinter in posluša dogodke, dokler ne zaprete okna.
gui.mainloop()
Sestavite vso kodo in lahko uporabite dobljeni kratek program za zaznavanje občutkov.
Rezultat zaznavanja čustev z uporabo Pythona
Ko zaženete ta program, se prikaže okno VADER Sentiment Analyzer. Ko smo program preizkusili na pozitivnem stavku, ga je zaznal s 79-odstotno natančnostjo. Pri preizkusu nevtralne in negativne izjave je program lahko zaznal s 100 % oziroma 64,3 % natančnostjo.
Alternative za analizo razpoloženja z uporabo Pythona
Textblob lahko uporabite za analizo razpoloženja, označevanje govora in razvrščanje besedila. Ima dosleden API in vgrajen klasifikator polarnosti občutkov. NLTK je obsežna knjižnica NLP, ki vsebuje široko paleto orodij za analizo besedila, vendar ima strmo krivuljo učenja za začetnike.
Eno najbolj priljubljenih orodij je IBM Watson NLU. Temelji na oblaku, podpira več jezikov in ima funkcije, kot sta prepoznavanje entitet in ekstrakcija ključev. Z uvedbo GPT lahko uporabite API OpenAI in ga integrirate v svoje aplikacije, da dobite točna in zanesljiva mnenja strank v realnem času.