Analiza osjećaja je iznenađujuće točna i možete napraviti ovu jednostavnu aplikaciju Tkinter da je isprobate.
Analiza osjećaja je tehnika kojom se utvrđuje emocionalni ton teksta. Koristi obradu prirodnog jezika, analizu teksta i računalnu lingvistiku. Pomoću ovoga možete klasificirati ton u pozitivan, neutralan ili negativan. To pomaže tvrtkama analizirati povratne informacije kupaca na društvenim medijima, recenzijama i anketama.
Na temelju tih podataka mogu učinkovitije izraditi strategiju za svoje proizvode i kampanje. Naučite kako možete izraditi aplikaciju koja detektira osjećaje pomoću Pythona.
Modul Tkinter i vaderSentiment
Tkinter vam omogućuje stvaranje desktop aplikacija. Nudi razne widgete kao što su gumbi, oznake i tekstualni okviri koji olakšavaju razvoj aplikacija. Možete koristiti Tkinter za izradite aplikaciju rječnika u Pythonu Ili do izradite vlastitu aplikaciju za vijesti koja ažurira priče putem API-ja.
Da biste instalirali Tkinter, otvorite terminal i pokrenite:
pip instaliraj tkinter
VADER (Valence Aware Dictionary and Sentiment Reasoner) je leksikon i alat za analizu raspoloženja temeljen na pravilima. Unaprijed je izgrađen i široko se koristi u Obrada prirodnog jezika. Algoritam ima skup unaprijed definiranih riječi koje predstavljaju različite osjećaje. Na temelju riječi koje se nalaze u rečenici, ovaj algoritam daje ocjenu polariteta. Pomoću ovog rezultata možete odrediti je li rečenica pozitivna, negativna ili neutralna.
Da biste instalirali paket vaderSentiment u Python, pokrenite ovu terminalsku naredbu:
pip instaliraj vaderSentiment
Kako detektirati osjećaje pomoću Pythona
Izvorni kod ovog oglednog programa možete pronaći u GitHub spremište.
Počnite s uvozom potrebnih VADER i tkinter modula:
iz vaderSentiment.vaderSentiment uvoz SentimentIntensityAnalyzer
iz tkinter uvoz *
Zatim definirajte funkciju, očistiti sve(). Njegova je svrha brisanje polja za unos, što možete učiniti pomoću izbrisati() metoda iz početnog indeksa 0 do konačnog indeksa, KRAJ.
defočistiti sve():
negativeField.delete(0, KRAJ)
neutralField.delete(0, KRAJ)
positiveField.delete(0, KRAJ)
generalField.delete(0, KRAJ)
textArea.delete(1.0, KRAJ)
Definirajte funkciju, otkrij_osjećaj(). Koristite metodu get za dohvaćanje riječi unesene u textArea widget i stvorite objekt od SentimentIntensityAnalyzer razreda. Koristiti polaritet_rezultati na tekst koji ste dohvatili i primijenite VADER algoritam za analizu raspoloženja.
defotkriti_osjećaj():
rečenica = textArea.get("1.0", "kraj")
sentiment_obj = SentimentIntensityAnalyzer()
sentiment_dict = sentiment_obj.polarity_scores (rečenica)
Izdvojite rezultat negativnog raspoloženja ('neg') i pretvorite ga u postotak. Umetnite dobivenu vrijednost u negativeField počevši od pozicije 10. Ponovite isti postupak za rezultat neutralnog osjećaja ('neu') i rezultat pozitivnog osjećaja ('pos').
string = str (sentiment_dict['neg'] * 100)
negativeField.insert(10, niz)string = str (sentiment_dict['neu'] * 100)
neutralField.insert(10, niz)
string = str (sentiment_dict['pos'] * 100)
positiveField.insert(10, niz)
Izdvojite vrijednost složenog ključa koji sadrži cjelokupni osjećaj rečenice. Ako je vrijednost veća ili jednaka 0,05, rečenica je pozitivna. Ako je vrijednost manja ili jednaka -0,05, rečenica je negativna. Za vrijednosti između -0,05 i 0,05, to je neutralna izjava.
ako sentiment_dict['spoj'] >= 0.05:
niz = "Pozitivan"
elif sentiment_dict['spoj'] <= - 0.05:
niz = "Negativan"
drugo:
niz = "neutralan"
Umetnite rezultat u ukupnoPolje sa 10. pozicije:
generalField.insert(10, niz)
Inicijalizirajte prozor grafičkog korisničkog sučelja koristeći Tkinter. Postavite boju pozadine, naslov i dimenzije prozora. Napravite pet oznaka. Jedan koji od korisnika traži da unese rečenicu, a ostala četiri za različite osjećaje. Postavite nadređeni element u koji ga želite smjestiti, tekst koji bi trebao prikazati i stilove fonta koje bi trebao imati zajedno s bojom pozadine.
Definirajte tekstualni widget za primanje rečenice od korisnika. Postavite nadređeni element u koji ga želite smjestiti, njegovu visinu, širinu, stil fonta i boju pozadine koju treba imati. Definirajte tri gumba. Jedan za izvođenje analize raspoloženja, jedan za brisanje sadržaja nakon upotrebe i jedan za izlazak iz aplikacije. Postavite nadređeni prozor, tekst koji bi trebao prikazati, boju pozadine, stilove fonta i naredbu koju želite izvršiti kada kliknete.
ako __ime__ == "__glavni__":
gui = Tk()
gui.config (pozadina="#A020f0")
gui.title("VADER analizator raspoloženja")
gui.geometry("400x700")
enterText = Oznaka (gui, text="Unesite svoju rečenicu: ",font="arial 15 podebljano",bg="#A020f0")
negativno = Oznaka (gui, tekst="Negativan postotak: ", font="arial 15",bg="#A020f0")
neutralno = Oznaka (gui, tekst="Nutralni postotak: ", font="arial 15",bg="#A020f0")
pozitivno = Oznaka (gui, tekst="Pozitivan postotak: ", font="arial 15",bg="#A020f0")
ukupno = Oznaka (gui, tekst="Opća rečenica je: ", font="arial 15",bg="#A020f0")
textArea = Tekst (gui, visina=5, širina=25, font="arial 15", bg="#cf9fff")
provjeri = Gumb (gui, tekst="Provjeri osjećaj", bg="#e7305b", font=("arial", 12, "podebljano"), naredba=detect_sentiment)
jasno = Gumb (gui, tekst="Čisto", bg="#e7305b", font=("arial", 12, "podebljano"), naredba=očistiSve)
Izlaz = Gumb (gui, tekst="Izlaz", bg="#e7305b", font=("arial", 12, "podebljano"), naredba=izlaz)
Definirajte četiri polja za unos za različite osjećaje i postavite njihov roditeljski prozor i stilove fonta.
negativeField = Unos (gui, font="arial 15")
neutralField = Unos (gui, font="arial 15")
positiveField = Unos (gui, font="arial 15")
generalField = Unos (gui, font="arial 15")
Upotrijebite rešetku koja se sastoji od 13 redaka i tri stupca za cjelokupni izgled. Postavite različite elemente kao što su oznake, polja za unos teksta i gumbi u različite retke i stupce kao što je prikazano. Dodajte potrebne ispune gdje god je potrebno. Postavi ljepljiv opcija za "W" za lijevo poravnavanje tekstova unutar ćelije.
enterText.grid (row=0, stupac=2, pady=15)
textArea.grid (row=1, stupac=2, padx=60, pady=10, ljepljivo=W)
check.grid (row=2, stupac=2, pady=10)
negativna.grid (row=3, stupac=2, pady=10)
neutralna.mreža (red=5, stupac=2, pady=10)
pozitivna.mreža (red=7, stupac=2, pady=10)
ukupna.mreža (red=9, stupac=2, pady=5)
negativeField.grid (row=4, stupac=2)
neutralField.grid (row=6, stupac=2)
positiveField.grid (row=8, stupac=2)
generalField.grid (row=10, stupac=2, pady=10)
jasna.mreža (red=11, stupac=2, pady=10)
Izlaz.grid (row=12, stupac=2, pady=10)
The glavna petlja() funkcija govori Pythonu da pokrene Tkinter petlju događaja i osluškuje događaje dok ne zatvorite prozor.
gui.mainloop()
Sastavite sav kod i možete koristiti dobiveni kratki program za otkrivanje osjećaja.
Rezultat otkrivanja osjećaja pomoću Pythona
Prilikom pokretanja ovog programa pojavljuje se prozor VADER Sentiment Analyzer. Kada smo testirali program na pozitivnoj rečenici, otkrio ju je s točnošću od 79%. Pokušavajući s neutralnom i negativnom tvrdnjom, program je uspio detektirati sa 100% odnosno 64,3% točnosti.
Alternative za analizu osjećaja pomoću Pythona
Textblob možete koristiti za analizu osjećaja, označavanje govora i klasifikaciju teksta. Ima dosljedan API i ugrađeni klasifikator polariteta osjećaja. NLTK je sveobuhvatna NLP biblioteka koja sadrži širok raspon alata za analizu teksta, ali ima strmu krivulju učenja za početnike.
Jedan od najpopularnijih alata je IBM Watson NLU. Temeljen je na oblaku, podržava nekoliko jezika i ima značajke poput prepoznavanja entiteta i izdvajanja ključeva. Uz uvođenje GPT-a, možete koristiti OpenAI API i integrirati ga u svoje aplikacije kako biste dobili točne i pouzdane osjećaje kupaca u stvarnom vremenu.