Analýza sentimentu je překvapivě přesná a tuto jednoduchou aplikaci Tkinter si můžete vytvořit a vyzkoušet.

Analýza sentimentu je technika k určení emocionálního tónu části textu. Využívá zpracování přirozeného jazyka, analýzu textu a počítačovou lingvistiku. Pomocí tohoto můžete klasifikovat tón na pozitivní, neutrální nebo negativní. To pomáhá podnikům analyzovat zpětnou vazbu zákazníků na sociálních sítích, recenze a průzkumy.

Na základě těchto dat mohou efektivněji strategizovat své produkty a kampaně. Zjistěte, jak můžete pomocí Pythonu vytvořit aplikaci, která detekuje pocity.

Modul Tkinter a vaderSentiment

Tkinter vám umožňuje vytvářet desktopové aplikace. Nabízí řadu widgetů, jako jsou tlačítka, štítky a textová pole, které usnadňují vývoj aplikací. Můžete k tomu použít Tkinter vytvořit slovníkovou aplikaci v Pythonu nebo do vytvořte si vlastní zpravodajskou aplikaci, která aktualizuje příběhy prostřednictvím rozhraní API.

Chcete-li nainstalovat Tkinter, otevřete terminál a spusťte:

instagram viewer
pip nainstalovat tkinter

VADER (Valence Aware Dictionary and Sentiment Reasoner) je lexikon a nástroj pro analýzu sentimentu založený na pravidlech. Je předpřipravený a široce používaný Zpracování přirozeného jazyka. Algoritmus má sadu předdefinovaných slov, která reprezentují různé pocity. Na základě slov nalezených ve větě dává tento algoritmus skóre polarity. Pomocí tohoto skóre můžete určit, zda je věta kladná, záporná nebo neutrální.

Chcete-li nainstalovat balíček vaderSentiment v Pythonu, spusťte tento příkaz terminálu:

pip install vaderSentiment

Jak detekovat sentimenty pomocí Pythonu

Zdrojový kód tohoto ukázkového programu najdete v něm úložiště GitHub.

Začněte importem požadovaných modulů VADER a tkinter:

z vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
z tkinter import *

Poté definujte funkci, vymazat vše(). Jeho účelem je vymazat vstupní pole, což můžete provést pomocí vymazat() metoda z počátečního indexu 0 na konečný index, KONEC.

defvymazat vše():
negativeField.delete(0, KONEC)
neutralField.delete(0, KONEC)
positiveField.delete(0, KONEC)
totalField.delete(0, KONEC)
textArea.delete(1.0, KONEC)

Definujte funkci, detekovat_sentiment(). Použijte metodu get k načtení slova zadaného v textArea widget a vytvořte objekt SentimentIntensityAnalyzer třída. Použijte skóre_polarity metodu na text, který jste načetli, a použijte algoritmus analýzy sentimentu VADER.

defdetekovat_sentiment():
věta = textArea.get("1.0", "konec")
sentiment_obj = SentimentIntensityAnalyzer()
sentiment_dict = sentiment_obj.polarity_scores (věta)

Extrahujte skóre negativního sentimentu ('neg') a převeďte jej na procenta. Vložte získanou hodnotu do negativní pole od pozice 10. Opakujte stejný postup pro neutrální skóre sentimentu ('neu') a skóre pozitivního sentimentu ('pos').

 string = str (sentiment_dict['neg'] * 100)
negativeField.insert(10, tětiva)

string = str (sentiment_dict['neu'] * 100)
neutralField.insert(10, tětiva)

string = str (sentiment_dict['pos'] * 100)
positiveField.insert(10, tětiva)

Extrahujte hodnotu složeného klíče, který obsahuje celkový sentiment věty. Pokud je hodnota větší nebo rovna 0,05, je věta kladná. Pokud je hodnota menší nebo rovna -0,05, je věta záporná. Pro hodnoty mezi -0,05 a 0,05 je to neutrální tvrzení.

-li sentiment_dict['sloučenina'] >= 0.05:
řetězec = "Pozitivní"
elif sentiment_dict['sloučenina'] <= - 0.05:
řetězec = "Negativní"
jiný:
řetězec = "Neutrální"

Vložte výsledek do celkové pole z 10. místa:

 totalField.insert(10, tětiva)

Inicializujte okno grafického uživatelského rozhraní pomocí Tkinter. Nastavte barvu pozadí, nadpis a rozměry okna. Vytvořte pět štítků. Jeden, který žádá uživatele, aby zadal větu, a další čtyři pro různé pocity. Nastavte nadřazený prvek, do kterého jej chcete umístit, text, který by měl zobrazovat, a styly písma, které by měl mít, spolu s barvou pozadí.

Definujte widget Text pro příjem věty od uživatele. Nastavte nadřazený prvek, do kterého jej chcete umístit, jeho výšku, šířku, styly písma a barvu pozadí, kterou by měl mít. Definujte tři tlačítka. Jeden pro provedení analýzy sentimentu, jeden pro vymazání obsahu po použití a jeden pro ukončení aplikace. Nastavte jeho nadřazené okno, text, který má zobrazit, barvu pozadí, styly písma a příkaz, který chcete po kliknutí provést.

-li __jméno__ == "__hlavní__":
gui = Tk()
gui.config (pozadí="#A020f0")
gui.title("VADER Sentiment Analyzer")
gui.geometry("400x700")
enterText = Label (gui, text="Zadejte svou větu:",font="arial 15 bold",bg="#A020f0")
negativní = Štítek (gui, text="Záporné procento: ", font="arial 15",bg="#A020f0")
neutrální = Label (gui, text="Nuetrální procento: ", font="arial 15",bg="#A020f0")
pozitivní = Label (gui, text="Pozitivní procento: ", font="arial 15",bg="#A020f0")
celkově = Štítek (gui, text="Celková věta je:", font="arial 15",bg="#A020f0")
textArea = Text (gui, height=5, šířka=25, font="arial 15", bg="#cf9fff")
check = Tlačítko (gui, text="Zkontrolujte sentiment", bg="#e7305b", font=("arial", 12, "tučně"), command=detect_sentiment)
clear = Tlačítko (gui, text="Průhledná", bg="#e7305b", font=("arial", 12, "tučně"), command=clearAll)
Exit = Tlačítko (gui, text="Výstup", bg="#e7305b", font=("arial", 12, "tučně"), příkaz=exit)

Definujte čtyři vstupní pole pro různé pocity a nastavte jejich nadřazené okno a styly písma.

 negativeField = Záznam (gui, font="arial 15")
neutralField = Záznam (gui, font="arial 15")
positiveField = Záznam (gui, font="arial 15")
totalField = Záznam (gui, font="arial 15")

Pro celkové rozložení použijte mřížku skládající se ze 13 řádků a tří sloupců. Umístěte různé prvky, jako jsou štítky, pole pro zadávání textu a tlačítka, do různých řádků a sloupců, jak je znázorněno. Přidejte potřebné vycpávky, kdykoli je to potřeba. Nastav lepkavý možnost "W" doleva zarovnat texty ve své buňce.

 enterText.grid (row=0, sloupec=2, pady=15)
textArea.grid (row=1, sloupec=2, padx=60, pady=10, lepkavý=W)
check.grid (řádek=2, sloupec=2, pady=10)
negative.grid (row=3, sloupec=2, pady=10)
neutrální.mřížka (řádek=5, sloupec=2, pady=10)
positive.grid (řádek=7, sloupec=2, pady=10)
total.grid (row=9, sloupec=2, pady=5)
negativeField.grid (row=4, sloupec=2)
neutralField.grid (row=6, sloupec=2)
positiveField.grid (row=8, sloupec=2)
totalField.grid (row=10, sloupec=2, pady=10)
clear.grid (řádek=11, sloupec=2, pady=10)
Exit.grid (row=12, sloupec=2, pady=10)

The mainloop() Funkce říká Pythonu, aby spustil smyčku událostí Tkinter a naslouchal událostem, dokud nezavřete okno.

 gui.mainloop()

Dejte celý kód dohromady a můžete použít výsledný krátký program k detekci sentimentů.

Výstup detekce sentimentů pomocí Pythonu

Při spuštění tohoto programu se zobrazí okno VADER Sentiment Analyzer. Když jsme program testovali na pozitivní větě, detekoval ji s přesností 79 %. Při pokusu o neutrální a negativní výrok byl program schopen detekovat se 100% a 64,3% přesností.

Alternativy pro analýzu sentimentu pomocí Pythonu

Textblob můžete použít pro analýzu sentimentu, značkování řeči a klasifikaci textu. Má konzistentní API a vestavěný klasifikátor polarity sentimentu. NLTK je komplexní knihovna NLP, která obsahuje širokou škálu nástrojů pro analýzu textu, ale pro začátečníky má strmou křivku učení.

Jedním z nejpopulárnějších nástrojů je IBM Watson NLU. Je založen na cloudu, podporuje několik jazyků a má funkce, jako je rozpoznávání entit a extrakce klíčů. Se zavedením GPT můžete používat OpenAI API a integrovat je do svých aplikací, abyste získali přesné a spolehlivé pocity zákazníků v reálném čase.