niedziela, 16 czerwca 2024

Analiza sentymentów - wpisy na mediach społecznościowych (ustawianie środowiska)

Ten wpis, podobnie jak cała zawartość bloga, odzwierciedla moje zainteresowania rozwojem w dziedzinie informatyki. Główne cele tego przedsięwzięcia to dzielenie się wiedzą, demonstracja moich umiejętności oraz chęć poznawania nowych zagadnień, co może zainteresować potencjalnych współpracowników zarówno w sferze zawodowej, jak i poza nią. Blog ten jest również okazją do samodzielnego przetwarzania zdobytej wiedzy i tworzenia osobistych notatek. Jako że sam jestem w trakcie nauki, zachęcam do niezależnego myślenia i, jeśli tematyka wpisów wpisuje się w zakres Twoich zainteresowań, do dalszej eksploracji i weryfikacji podanych przeze mnie informacji.

Rozpocznę nową serię wpisów. Projekt ten będzie dotyczył analizy sentymentów treści, które z założenia reprezentują wpisy na mediach społecznościowych, takich jak na przykład Twitter. Model będzie miał na celu ocenę, czy dany tweet ma charakter pozytywny, negatywny czy neutralny.

Użyję do tego zbioru danych, dostępnego na Kaggle: Sentiment Analysis Dataset. Zbiór danych zawiera zbiór treningowy i testowy.

A teraz przejdę do opisu mojego Jupiter Notebook. Najpierw zaczniemy od zaimportowania odpowiednich modułów.

Importując numpy jako np, będziemy mogli dokonywać różnych operacji matematycznych na tablicach danych i macierzach.

Importując pandas jako pd, będziemy mogli manipulować danymi znajdującymi się w Seriach (Series) i w Ramkach Danych (DataFrame).

Importując TfidfVectorizer z modułu sklearn.feature_extraction.text, przekształcimy teksty na macierz cech TF-IDF (Term Frequency-Inverse Document Frequency). Co nam to da? Każde słowo będzie mogło otrzymać wagę, odzwierciedlając jego ważność w całym dokumencie. Znaczenie często używanych słów, takich jak "i" lub "jest", zostanie zredukowane. Teksty zostaną odzwierciedlone w formie wektorowej reprezentacji liczbowej, co umożliwi użycie algorytmów uczenia maszynowego.

Importując train_test_split z modułu sklearn.model_selection, będziemy mogli podzielić dane na zbiór testowy i treningowy. Dzięki temu określimy wydajność naszego modelu, używając danych testowych. Kiedy zauważymy, że model słabo generalizuje na zbiorze testowym, to może znaczyć, że jest przeuczony.

Importując LogisticRegression z modułu sklearn.linear_model, będziemy mogli utworzyć modele regresji logistycznej. Klasyfikuje ona binarnie, ale też wieloklasowo. U nas będzie to pozytywny (positive), negatywny (negative) i neutralny (neutral) sentyment. Przykłady danych są oczywiście dostępne do podejrzenia na stronie Kaggle podanej na samym początku. Regresja logistyczna to przy okazji stosunkowo prosty i wydajny model. Skutecznie radzi sobie z dużymi zbiorami danych w krótkim czasie.

Importując Word2Vec z modułu gensim.models, słowa zostaną zamienione na wektory (embeddingi). Korzyści z użycia: przekształca słowa na wektory, które reprezentują semantyczne znaczenie słów. Słowa o podobnym znaczeniu mają wektory, które są do siebie podobne. Word2Vec jest w stanie uchwycić kontekst, porównując dane teksty z tekstami w ich sąsiedztwie.

Importując accuracy_score z modułu sklearn.metrics, będziemy mogli ocenić skuteczność modelu. Ten sposób oceny modelu jest bardzo prosty i intuicyjny, gdyż pokazuje stosunek poprawnych predykcji do całkowitej liczby predykcji. Nazywamy to dokładnością.

Wpis oparty o wiedzę z kursu: Machine Learning Mastery

Brak komentarzy:

Prześlij komentarz

Analiza sentymentów - wpisy na mediach społecznościowych (podział danych)

Ten wpis zaczniemy od stworzenia DataFrame z danymi treningowymi train_df = pd.read_csv('train.csv', encoding='ISO-8859-1')....