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

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ścieWyjś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-092140Wyjś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ścieWyjś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  =  (  1    2  ))   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  (  '  n  BernoulliNB Classification Report:  n  '     classification_report  (  y_test     bnb_pred  ))   

Wyjście:

WyjścieWyjś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  (  '  n  SVM Classification Report:  n  '     classification_report  (  y_test     svm_pred  ))   

Wyjście:

WyjścieWyjś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  (  '  n  Logistic Regression Classification Report:  n  '     classification_report  (  y_test     logreg_pred  ))   

Wyjście:

WyjścieWyjś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  (  '  n  Sample Predictions:'  )   print  (  'BernoulliNB:'       bnb  .  predict  (  sample_vec  ))   print  (  'SVM:'       svm  .  predict  (  sample_vec  ))   print  (  'Logistic Regression:'       logreg  .  predict  (  sample_vec  ))   

Wyjście:

WyjścieWyjś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