logo

Analiza nastrojów na Twitterze przy użyciu języka Python

Analiza nastrojów na Twitterze to proces wykorzystujący Pythona do automatycznego zrozumienia emocji i opinii wyrażanych w tweetach. Analizując tekst, możemy sklasyfikować tweety jako pozytywne, negatywne lub neutralne. Pomaga to firmom i badaczom śledzić w czasie rzeczywistym reputację marki nastrojów społecznych lub reakcje na wydarzenia. Biblioteki Pythona, takie jak TextBlob Tweepy i NLTK, ułatwiają zbieranie tweetów, przetwarzanie tekstu i wydajne przeprowadzanie analizy nastrojów. Analiza nastrojów na Twitterze przy użyciu języka Python

W jaki sposób analiza nastrojów na Twitterze jest przydatna?

  • Analiza nastrojów na Twitterze jest ważna, ponieważ pomaga ludziom i firmom zrozumieć w czasie rzeczywistym, co myśli opinia publiczna.
  • Codziennie publikowane są miliony tweetów, w których wyrażane są opinie na temat wydarzeń związanych z produktami marek lub kwestii społecznych. Analizując ten ogromny strumień danych, firmy mogą mierzyć trendy w zakresie zadowolenia klientów, wcześnie wykrywać trendy i szybko reagować na negatywne opinie i podejmować lepsze decyzje w oparciu o rzeczywiste odczucia klientów.
  • Monitorowanie nastrojów społecznych podczas kryzysów wyborczych lub dużych wydarzeń jest również przydatne dla badaczy i rządów, ponieważ pozwala przekształcić nieprzetworzone tweety w cenne spostrzeżenia.

Wdrażanie krok po kroku

Krok 1: Zainstaluj niezbędne biblioteki

Ten blok instaluje i importuje wymagane biblioteki. Używa pandy do ładowania i obsługi danych TfidfVectorizer aby zamienić tekst na liczby i scikit naucz się trenować model.

Python
pip install pandas scikit-learn import pandas as pd from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.model_selection import train_test_split from sklearn.naive_bayes import BernoulliNB from sklearn.linear_model import LogisticRegression from sklearn.svm import LinearSVC from sklearn.metrics import accuracy_score classification_report 

Krok 2: Załaduj zbiór danych

  • Tutaj ładujemy Zbiór danych Sentiment140 ze spakowanego pliku CSV możesz go pobrać z Kaggle.
  • Zachowujemy tylko polaryzację, a kolumny tekstu tweeta zmieniają ich nazwy dla przejrzystości i drukują kilka pierwszych wierszy w celu sprawdzenia danych.
Python
df = pd.read_csv('training.1600000.processed.noemoticon.csv.zip' encoding='latin-1' header=None) df = df[[0 5]] df.columns = ['polarity' 'text'] print(df.head()) 

Wyjście:



Wyjście' loading='lazy' title=Wyjście

Krok 3: Zachowaj tylko pozytywne i negatywne uczucia

  • Tutaj usuwamy neutralne tweety, w których polaryzacja wynosi 2, odwzorowując etykiety, więc 0 pozostaje ujemne, a 4 staje się 1 dla dodatniego.
  • Następnie drukujemy, ile pozytywnych i negatywnych tweetów pozostało w danych.
Python
df = df[df.polarity != 2] df['polarity'] = df['polarity'].map({0: 0 4: 1}) print(df['polarity'].value_counts()) 

Wyjście:

Zrzut ekranu-2025-07-09-092140' loading='lazy' title=Wyjście

Krok 4: Wyczyść tweety

  • Tutaj definiujemy prostą funkcję konwertującą cały tekst na małe litery, aby zachować spójność, stosując ją do każdego tweeta w zbiorze danych.
  • Następnie pokazuje oryginalne i oczyszczone wersje pierwszych kilku tweetów.
Python
def clean_text(text): return text.lower() df['clean_text'] = df['text'].apply(clean_text) print(df[['text' 'clean_text']].head()) 

Wyjście:

Wyjście' loading='lazy' title=Wyjście

Krok 5: Podział testu pociągu

  • Ten kod dzieli kolumny clean_text i polarity na zestawy szkoleniowe i testowe przy użyciu podziału 80/20.
  • random_state=42 zapewnia powtarzalność.
Python
X_train X_test y_train y_test = train_test_split( df['clean_text'] df['polarity'] test_size=0.2 random_state=42 ) print('Train size:' len(X_train)) print('Test size:' len(X_test)) 

Wyjście:

Rozmiar pociągu: 1280000
Rozmiar testowy: 320000

Krok 6: Wykonaj wektoryzację

  • Ten kod tworzy wektoryzator TF IDF, który konwertuje tekst na cechy numeryczne przy użyciu unigramów i bigramów ograniczonych do 5000 funkcji.
  • Dopasowuje i przekształca dane szkoleniowe oraz przekształca dane testowe, a następnie drukuje kształty powstałych macierzy TF IDF.
Python
vectorizer = TfidfVectorizer(max_features=5000 ngram_range=(12)) X_train_tfidf = vectorizer.fit_transform(X_train) X_test_tfidf = vectorizer.transform(X_test) print('TF-IDF shape (train):' X_train_tfidf.shape) print('TF-IDF shape (test):' X_test_tfidf.shape) 

Wyjście:

Kształt TF-IDF (pociąg): (1280000 5000)
Kształt TF-IDF (test): (320000 5000)

Krok 7: Wytrenuj model Naive Bayesa Bernoulliego

  • Tutaj trenujemy A Bernoulli Naiwny Bayes klasyfikator cech TF IDF z danych szkoleniowych.
  • Przewiduje nastawienie do danych testowych, a następnie drukuje dokładność i szczegółowy raport klasyfikacyjny.
Python
bnb = BernoulliNB() bnb.fit(X_train_tfidf y_train) bnb_pred = bnb.predict(X_test_tfidf) print('Bernoulli Naive Bayes Accuracy:' accuracy_score(y_test bnb_pred)) print('nBernoulliNB Classification Report:n' classification_report(y_test bnb_pred)) 

Wyjście:

Wyjście' loading='lazy' title=Wyjście

Krok 9: Wytrenuj model maszyny wektorów nośnych (SVM).

  • Ten kod uczy a Maszyna wektorów nośnych (SVM) z maksymalnie 1000 iteracjami funkcji TF IDF.
  • Przewiduje etykiety testowe, a następnie drukuje dokładność i szczegółowy raport klasyfikacyjny pokazujący, jak dobrze działał SVM.
Python
svm = LinearSVC(max_iter=1000) svm.fit(X_train_tfidf y_train) svm_pred = svm.predict(X_test_tfidf) print('SVM Accuracy:' accuracy_score(y_test svm_pred)) print('nSVM Classification Report:n' classification_report(y_test svm_pred)) 

Wyjście:

plik odczytu basha
Wyjście' loading='lazy' title=Wyjście

Krok 10: Wytrenuj model regresji logistycznej

  • Ten kod uczy a Regresja logistyczna model z maksymalnie 100 iteracjami funkcji TF IDF.
  • Przewiduje etykiety nastrojów dla danych testowych i drukuje raport dotyczący dokładności i szczegółowej klasyfikacji na potrzeby oceny modelu.
Python
logreg = LogisticRegression(max_iter=100) logreg.fit(X_train_tfidf y_train) logreg_pred = logreg.predict(X_test_tfidf) print('Logistic Regression Accuracy:' accuracy_score(y_test logreg_pred)) print('nLogistic Regression Classification Report:n' classification_report(y_test logreg_pred)) 

Wyjście:

Wyjście' loading='lazy' title=Wyjście

Krok 11: Przewiduj przykładowe tweety

  • Ten kod pobiera trzy przykładowe tweety i przekształca je w funkcje TF IDF przy użyciu tego samego wektoryzatora.
  • Następnie przewiduje ich nastroje, korzystając z wyszkolonych modeli BernoulliNB SVM i regresji logistycznej, a następnie drukuje wyniki dla każdego klasyfikatora.
  • Gdzie 1 oznacza wartość dodatnią, a 0 oznacza wartość ujemną.
C++
sample_tweets = ['I love this!' 'I hate that!' 'It was okay not great.'] sample_vec = vectorizer.transform(sample_tweets) print('nSample Predictions:') print('BernoulliNB:' bnb.predict(sample_vec)) print('SVM:' svm.predict(sample_vec)) print('Logistic Regression:' logreg.predict(sample_vec)) 

Wyjście:

Wyjście' loading='lazy' title=Wyjście

Widzimy, że nasze modele działają dobrze i dają te same przewidywania, nawet przy różnych podejściach.

Możesz pobrać kod źródłowy stąd- Analiza nastrojów na Twitterze przy użyciu języka Python

Utwórz quiz