Analiza nastrojów jest zaskakująco dokładna i możesz zbudować tę prostą aplikację Tkinter, aby ją wypróbować.

Analiza nastrojów to technika określania emocjonalnego tonu fragmentu tekstu. Wykorzystuje przetwarzanie języka naturalnego, analizę tekstu i lingwistykę komputerową. Za pomocą tego możesz sklasyfikować ton na pozytywny, neutralny lub negatywny. Pomaga to firmom analizować opinie klientów w mediach społecznościowych, recenzjach i ankietach.

Na podstawie tych danych mogą skuteczniej planować swoje produkty i kampanie. Dowiedz się, jak zbudować aplikację wykrywającą nastroje przy użyciu języka Python.

Moduł Tkinter i vaderSentiment

Tkinter umożliwia tworzenie aplikacji desktopowych. Oferuje różnorodne widżety, takie jak przyciski, etykiety i pola tekstowe, które ułatwiają tworzenie aplikacji. Możesz użyć Tkintera do zbuduj aplikację słownikową w Pythonie lub stwórz własną aplikację do wiadomości, która aktualizuje historie za pośrednictwem interfejsu API.

Aby zainstalować Tkintera, otwórz terminal i uruchom:

pip zainstaluj tkintera

VADER (Valence Aware Dictionary and sEntiment Reasoner) to leksykon i narzędzie do analizy nastrojów oparte na regułach. Jest wstępnie zbudowany i szeroko stosowany w Przetwarzanie języka naturalnego. Algorytm ma zestaw predefiniowanych słów, które reprezentują różne nastroje. Na podstawie słów znalezionych w zdaniu algorytm ten podaje wynik polaryzacji. Korzystając z tego wyniku, możesz określić, czy zdanie jest pozytywne, negatywne czy neutralne.

Aby zainstalować pakiet vaderSentiment w Pythonie, uruchom to polecenie terminala:

pip zainstaluj vaderSentiment

Jak wykrywać nastroje za pomocą Pythona

Kod źródłowy tego przykładowego programu można znaleźć w jego Repozytorium GitHub.

Zacznij od zaimportowania wymaganych modułów VADER i tkinter:

z vaderSentiment.vaderSentiment import Analizator intensywności nastrojów
z tkinter import *

Następnie zdefiniuj funkcję, Wyczyść wszystko(). Jego celem jest wyczyszczenie pól wejściowych, co można zrobić za pomocą usuwać() metoda z początkowego indeksu 0 do indeksu końcowego, KONIEC.

pokWyczyść wszystko():
ujemnePole.usuń(0, KONIEC)
neutralField.delete(0, KONIEC)
pozytywField.delete(0, KONIEC)
generalField.delete(0, KONIEC)
textArea.delete(1.0, KONIEC)

Zdefiniuj funkcję, wykryj_sentyment(). Użyj metody get, aby pobrać słowo wprowadzone w pliku tekstObszar widżet i utworzyć obiekt Analizator intensywności nastrojów klasa. Użyj polarity_scores metodę na pobranym tekście i zastosować algorytm analizy nastrojów VADER.

pokwykryj_sentyment():
zdanie = pole tekstowe.get("1.0", "koniec")
Sentiment_obj = SentimentIntensityAnalyzer()
sentencja_dykta = sentencja_obj.polarity_scores (zdanie)

Wyodrębnij negatywny wynik nastrojów („neg”) i zamień to na procent. Wpisz uzyskaną wartość w pole ujemne zaczynając od pozycji 10. Powtórz ten sam proces dla neutralnego wyniku tonacji („nowy”) i pozytywny wynik nastrojów („pos”).

 string = str (sentiment_dict[„neg”] * 100)
pole ujemne.wstaw(10, strunowy)

string = str (sentiment_dict[„nowy”] * 100)
pole neutralne.wstaw(10, strunowy)

string = str (sentiment_dict[„pos”] * 100)
dodatniePole.wstaw(10, strunowy)

Wyodrębnij wartość klucza złożonego, który zawiera ogólny ton zdania. Jeśli wartość jest większa lub równa 0,05, zdanie jest pozytywne. Jeśli wartość jest mniejsza lub równa -0,05, zdanie jest ujemne. Dla wartości od -0,05 do 0,05 jest to stwierdzenie neutralne.

Jeśli sentyment_dict['mieszanina'] >= 0.05:
ciąg = "Pozytywny"
Elif sentyment_dict['mieszanina'] <= - 0.05:
ciąg = "Negatywny"
w przeciwnym razie:
ciąg = "Neutralny"

Wstaw wynik w pole ogólne od 10 miejsca:

 ogólniePole.wstaw(10, strunowy)

Zainicjuj okno graficznego interfejsu użytkownika za pomocą Tkintera. Ustaw kolor tła, tytuł i wymiary okna. Utwórz pięć etykiet. Jeden, który prosi użytkownika o wpisanie zdania, a pozostałe cztery o różne nastroje. Ustaw element nadrzędny, w którym chcesz go umieścić, tekst, który ma wyświetlać, style czcionek oraz kolor tła.

Zdefiniuj widżet Tekst, aby otrzymać zdanie od użytkownika. Ustaw element nadrzędny, w którym chcesz go umieścić, jego wysokość, szerokość, style czcionek i kolor tła, który powinien mieć. Zdefiniuj trzy przyciski. Jeden do wykonywania analizy nastrojów, jeden do czyszczenia zawartości po użyciu i jeden do zamykania aplikacji. Ustaw jego okno nadrzędne, tekst, który ma wyświetlać, kolor tła, style czcionek i polecenie, które chcesz wykonać po kliknięciu.

Jeśli __nazwa__ == "__główny__":
gui = Tk()
gui.config (tło="#A020f0")
gui.tytuł(„Analizator nastrojów VADER”)
gui.geometry("400x700")
enterText = Etykieta (gui, tekst =„Wpisz swoje zdanie:”,czcionka="Arial 15 pogrubiony",bg="#A020f0")
negatywny = Etykieta (gui, tekst =„Procent ujemny:”, czcionka="Arial 15",bg="#A020f0")
neutralny = etykieta (gui, tekst =„Procent neutralności:”, czcionka="Arial 15",bg="#A020f0")
pozytywna = etykieta (gui, tekst =„Dodatni procent:”, czcionka="Arial 15",bg="#A020f0")
ogólnie = Etykieta (gui, tekst =„Ogólne zdanie to:”, czcionka="Arial 15",bg="#A020f0")
textArea = Tekst (gui, wysokość =5, szerokość=25, czcionka="Arial 15", bg="#cf9fff")
sprawdź = Przycisk (gui, tekst =„Sprawdź nastroje”, bg="#e7305b", czcionka=(„arialny”, 12, "pogrubiony"), command=detect_sentiment)
wyczyść = Przycisk (gui, tekst ="Jasne", bg="#e7305b", czcionka=(„arialny”, 12, "pogrubiony"), polecenie=wyczyść wszystko)
Wyjdź = Przycisk (gui, tekst ="Wyjście", bg="#e7305b", czcionka=(„arialny”, 12, "pogrubiony"), polecenie=wyjdź)

Zdefiniuj cztery pola wprowadzania dla różnych nastrojów i ustaw ich okno nadrzędne oraz style czcionek.

 pole ujemne = Wpis (gui, czcionka ="Arial 15")
neutralField = Wpis (gui, czcionka ="Arial 15")
positiveField = Wpis (gui, czcionka="Arial 15")
generalField = Wpis (gui, czcionka ="Arial 15")

Użyj siatki składającej się z 13 wierszy i trzech kolumn do ogólnego układu. Umieść różne elementy, takie jak etykiety, pola wprowadzania tekstu i przyciski, w różnych wierszach i kolumnach, jak pokazano. Dodaj niezbędne wypełnienie tam, gdzie jest to wymagane. Ustaw lepki opcja do „W” do lewej wyrównaj teksty w komórce.

 enterText.grid (wiersz=0, kolumna=2, pada =15)
textArea.grid (wiersz=1, kolumna=2, padx=60, pada =10, lepki=W)
check.grid (wiersz=2, kolumna=2, pada =10)
ujemna.siatka (wiersz=3, kolumna=2, pada =10)
neutralna.siatka (wiersz=5, kolumna=2, pada =10)
dodatnia.siatka (wiersz=7, kolumna=2, pada =10)
total.grid (wiersz=9, kolumna=2, pada =5)
pole ujemne.grid (wiersz=4, kolumna=2)
neutralField.grid (wiersz=6, kolumna=2)
positiveField.grid (wiersz=8, kolumna=2)
ogólnie Pole.grid (wiersz=10, kolumna=2, pada =10)
wyczyść.siatkę (wiersz=11, kolumna=2, pada =10)
Wyjście.siatka (wiersz=12, kolumna=2, pada =10)

The główna pętla() mówi Pythonowi, aby uruchomił pętlę zdarzeń Tkinter i nasłuchiwał zdarzeń, dopóki nie zamkniesz okna.

 gui.mainloop()

Złóż cały kod razem i możesz użyć wynikowego krótkiego programu do wykrywania nastrojów.

Dane wyjściowe wykrywania nastrojów za pomocą Pythona

Po uruchomieniu tego programu pojawia się okno VADER Sentiment Analyzer. Kiedy testowaliśmy program na zdaniu pozytywnym, wykrył je z dokładnością 79%. Po wypróbowaniu stwierdzenia neutralnego i negatywnego program był w stanie wykryć odpowiednio ze 100% i 64,3% dokładnością.

Alternatywy dla analizy nastrojów przy użyciu Pythona

Obiektu Textblob można używać do analizy tonacji, znakowania mowy i klasyfikacji tekstu. Ma spójny interfejs API i wbudowany klasyfikator polaryzacji nastrojów. NLTK to wszechstronna biblioteka NLP, która zawiera szeroką gamę narzędzi do analizy tekstu, ale ma stromą krzywą uczenia się dla początkujących.

Jednym z najpopularniejszych narzędzi jest IBM Watson NLU. Jest oparty na chmurze, obsługuje kilka języków i ma takie funkcje, jak rozpoznawanie jednostek i wyodrębnianie kluczy. Wraz z wprowadzeniem GPT możesz korzystać z interfejsu API OpenAI i integrować go ze swoimi aplikacjami, aby uzyskiwać dokładne i wiarygodne opinie klientów w czasie rzeczywistym.