A hangulatelemzés meglepően pontos, és elkészítheti ezt az egyszerű Tkinter alkalmazást, hogy kipróbálhassa.

A hangulatelemzés egy olyan technika, amellyel meghatározható egy szövegrész érzelmi tónusa. Természetes nyelvi feldolgozást, szövegelemzést és számítógépes nyelvészetet használ. Ezzel a hangszínt pozitívra, semlegesre vagy negatívra oszthatja. Ez segít a vállalkozásoknak elemezni az ügyfelek közösségi médiában, értékelésekben és felmérésekben adott visszajelzéseit.

Ezen adatok alapján hatékonyabban tudják megtervezni termékeiket és kampányaikat. Ismerje meg, hogyan hozhat létre olyan alkalmazást, amely érzékeli a véleményeket a Python használatával.

A Tkinter és a vaderSentiment modul

A Tkinter lehetővé teszi az asztali alkalmazások létrehozását. Számos widgetet kínál, például gombokat, címkéket és szövegdobozokat, amelyek megkönnyítik az alkalmazások fejlesztését. Használhatja a Tkintert készítsen szótáralkalmazást Pythonban vagy ahhoz létrehozhatja saját híralkalmazását, amely API-n keresztül frissíti a történeteket.

instagram viewer

A Tkinter telepítéséhez nyisson meg egy terminált, és futtassa:

pip install tkinter

A VADER (Valence Aware Dictionary and sEntiment Reasoner) egy lexikon és szabályalapú hangulatelemző eszköz. Előre beépített és széles körben használt Természetes nyelvi feldolgozás. Az algoritmus előre definiált szavakkal rendelkezik, amelyek különböző érzelmeket képviselnek. A mondatban található szavak alapján ez az algoritmus polaritási pontszámot ad. Ezzel a pontszámmal meghatározhatja, hogy a mondat pozitív, negatív vagy semleges.

A vaderSentiment csomag Pythonban való telepítéséhez futtassa ezt a terminálparancsot:

pip install vaderSentiment

Hogyan lehet észlelni érzelmeket Python használatával

Ennek a mintaprogramnak a forráskódja megtalálható benne GitHub adattár.

Kezdje a szükséges VADER és tkinter modulok importálásával:

tól től vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
tól től tkinter import *

Ezután definiáljon egy függvényt, mindent kitöröl(). Célja a beviteli mezők törlése, amit a töröl() módszer egy kezdő indexéből 0 a végső indexhez, VÉGE.

defmindent kitöröl():
negatívField.delete(0, VÉGE)
neutralField.delete(0, VÉGE)
pozitívField.delete(0, VÉGE)
overallField.delete(0, VÉGE)
textArea.delete(1.0, VÉGE)

Határozzon meg egy függvényt, detect_sentiment(). Használja a get módszert a beírt szó lekéréséhez textArea widget, és hozzon létre egy objektumot SentimentIntensityAnalyzer osztály. Használja a polaritás_pontszámok módszert a beolvasott szövegre, és alkalmazza a VADER hangulatelemző algoritmust.

deférzelem észlelése():
mondat = textArea.get("1.0", "vége")
sentiment_obj = SentimentIntensityAnalyzer()
sentiment_dict = sentiment_obj.polarity_scores (mondat)

Kivonja a negatív hangulati pontszámot ('neg'), és alakítsa át százalékra. Írja be a kapott értéket a negatívMező a 10-es pozícióból indulva. Ismételje meg ugyanezt a folyamatot a semleges hangulatpontszámhoz ('neu') és a pozitív hangulati pontszám ('pozíció').

 string = str (sentiment_dict['neg'] * 100)
negatívField.insert(10, húr)

string = str (sentiment_dict['neu'] * 100)
neutralField.insert(10, húr)

string = str (sentiment_dict['pozíció'] * 100)
pozitívField.insert(10, húr)

Bontsa ki a mondat általános hangulatát tartalmazó összetett kulcs értékét. Ha az érték nagyobb vagy egyenlő, mint 0,05, akkor a mondat pozitív. Ha az érték kisebb vagy egyenlő, mint -0,05, a mondat negatív. A -0,05 és 0,05 közötti értékek esetében ez egy semleges állítás.

ha sentiment_dict['összetett'] >= 0.05:
karakterlánc = "Pozitív"
elif sentiment_dict['összetett'] <= - 0.05:
karakterlánc = "Negatív"
más:
karakterlánc = "Semleges"

Illessze be az eredményt a overallField a 10. pozícióból:

 overallField.insert(10, húr)

Inicializáljon egy grafikus felhasználói felület ablakot a Tkinter segítségével. Állítsa be az ablak háttérszínét, címét és méreteit. Hozzon létre öt címkét. Az egyik megkéri a felhasználót, hogy írjon be egy mondatot, a másik négy pedig a különböző érzésekre. Állítsa be a szülőelemet, amelybe el szeretné helyezni, a szöveget, amelyet meg kell jelenítenie, és a betűstílusokat, valamint a háttérszínt.

Határozzon meg egy Szöveg widgetet a mondat fogadásához a felhasználótól. Állítsa be a szülőelemet, amelybe el szeretné helyezni, annak magasságát, szélességét, betűstílusait és a háttérszínt, amellyel rendelkeznie kell. Határozzon meg három gombot. Egy a hangulatelemzés elvégzésére, egy a tartalom törlésére használat után, egy pedig az alkalmazásból való kilépéshez. Állítsa be a szülőablakát, a megjelenítendő szöveget, a háttérszínt, a betűstílusokat és a kattintáskor végrehajtani kívánt parancsot.

ha __név__ == "__fő__":
gui = Tk()
gui.config (háttér ="#A020f0")
gui.title("VADER hangulatelemző")
gui.geometry("400x700")
enterText = Címke (gui, text="Írja be a mondatát:",font="arial 15 félkövér",bg="#A020f0")
negatív = Címke (gui, text="Negatív százalék: ", font="Arial 15",bg="#A020f0")
semleges = Címke (gui, text="Nuetral Percentage:", font="Arial 15",bg="#A020f0")
pozitív = Címke (gui, szöveg="Pozitív százalék:", font="Arial 15",bg="#A020f0")
overall = Címke (gui, text="A teljes mondat:", font="Arial 15",bg="#A020f0")
textArea = Szöveg (gui, magasság=5, szélesség=25, font="Arial 15", bg="#cf9fff")
check = Gomb (gui, text="Check Sentiment", bg="#e7305b", font=("arial", 12, "bátor"), command=detect_sentiment)
clear = Gomb (gui, text="Egyértelmű", bg="#e7305b", font=("arial", 12, "bátor"), command=clearAll)
Kilépés = Gomb (gui, text="Kijárat", bg="#e7305b", font=("arial", 12, "bátor"), parancs=exit)

Határozzon meg négy beviteli mezőt a különböző érzésekhez, és állítsa be a szülőablak- és betűstílusukat.

 negatívField = Bejegyzés (gui, font="Arial 15")
neutralField = Bejegyzés (gui, font="Arial 15")
pozitívField = Bejegyzés (gui, font="Arial 15")
overallField = Bejegyzés (gui, font="Arial 15")

Használjon 13 sorból és három oszlopból álló rácsot a teljes elrendezéshez. Helyezze el a különböző elemeket, például címkéket, szövegbeviteli mezőket és gombokat a különböző sorokba és oszlopokba az ábra szerint. Adja hozzá a szükséges párnázást, ahol szükséges. Állítsa be a ragadós opciót "W" a cellán belüli szövegek balra igazításához.

 enterText.grid (sor=0, oszlop=2, pady=15)
textArea.grid (sor=1, oszlop=2, padx=60, pady=10, ragadós=W)
check.grid (sor=2, oszlop=2, pady=10)
negatív.rács (sor=3, oszlop=2, pady=10)
semleges.rács (sor=5, oszlop=2, pady=10)
pozitív.rács (sor=7, oszlop=2, pady=10)
overall.grid (sor=9, oszlop=2, pady=5)
negatívField.grid (sor=4, oszlop=2)
semlegesField.grid (sor=6, oszlop=2)
pozitívField.grid (sor=8, oszlop=2)
overallField.grid (sor=10, oszlop=2, pady=10)
clear.grid (sor=11, oszlop=2, pady=10)
Exit.grid (sor=12, oszlop=2, pady=10)

A mainloop() függvény azt mondja a Pythonnak, hogy futtassa a Tkinter eseményhurkot, és figyelje az eseményeket, amíg be nem zárja az ablakot.

 gui.mainloop()

Tedd össze az összes kódot, és az eredményül kapott rövid programot használhatod az érzelmek észlelésére.

Az érzelmek észlelésének kimenete Python használatával

A program futtatásakor megjelenik a VADER Sentiment Analyzer ablak. Amikor egy pozitív mondaton teszteltük a programot, 79%-os pontossággal észlelte. Egy semleges és egy negatív állítás kipróbálásakor a program 100%-os, illetve 64,3%-os pontossággal tudott detektálni.

Alternatívák a hangulatelemzéshez Python használatával

A Textblob segítségével hangulatelemzést, beszédcímkézést és szövegosztályozást végezhet. Konzisztens API-val és beépített hangulati polaritás osztályozóval rendelkezik. Az NLTK egy átfogó NLP-könyvtár, amely a szövegelemzéshez szükséges eszközök széles skáláját tartalmazza, de meredek tanulási görbével rendelkezik a kezdők számára.

Az egyik legnépszerűbb eszköz az IBM Watson NLU. Felhőalapú, több nyelvet támogat, és olyan funkciókkal rendelkezik, mint az entitásfelismerés és a kulcskivonás. A GPT bevezetésével használhatja az OpenAI API-t, és integrálhatja alkalmazásaiba, hogy valós időben pontos és megbízható vásárlói véleményt kapjon.