Analýza sentimentu Twitter pomocí Pythonu

Analýza sentimentu Twitter pomocí Pythonu

Twitter Sentiment Analysis je proces, při kterém se pomocí Pythonu automaticky porozumí emocím nebo názorům vyjádřeným v tweetech. Analýzou textu můžeme tweety klasifikovat jako pozitivní negativní nebo neutrální. To pomáhá podnikům a výzkumníkům sledovat veřejnou náladu značky nebo reakce na události v reálném čase. Knihovny Pythonu jako TextBlob Tweepy a NLTK usnadňují shromažďování tweetů, zpracovávají text a efektivně provádějí analýzu sentimentu. Analýza sentimentu Twitter pomocí Pythonu

Jak je analýza sentimentu Twitter užitečná?

  • Twitter Sentiment Analysis je důležitá, protože pomáhá lidem a firmám pochopit, co si veřejnost myslí v reálném čase.
  • Každý den jsou zveřejňovány miliony tweetů, které sdílejí názory na události značek produktů nebo sociální problémy. Analýzou tohoto obrovského proudu dat mohou společnosti měřit spotové trendy spokojenosti zákazníků, rychle zvládat negativní zpětnou vazbu a činit lepší rozhodnutí na základě toho, jak se lidé skutečně cítí.
  • Pro výzkumníky a vlády je také užitečné sledovat náladu veřejnosti během volebních krizí nebo velkých událostí, protože surové tweety proměňují v cenné poznatky.

Krok za krokem implementace

Krok 1: Nainstalujte potřebné knihovny

Tento blok nainstaluje a importuje požadované knihovny. Používá pandy k načítání a zpracování dat TfidfVectorizer převést text na čísla a scikit učit se trénovat 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: Načtěte datovou sadu

  • Zde načteme Datový soubor Sentiment140 ze zazipovaného souboru CSV si jej můžete stáhnout z Kaggle.
  • Ponecháváme pouze polaritu a sloupce textu tweetu je pro přehlednost přejmenujeme a vytiskneme několik prvních řádků pro kontrolu dat.
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  ())   

výstup:

VýstupVýstup

Krok 3: Udržujte pouze pozitivní a negativní pocity

  • Zde odstraníme neutrální tweety, kde polarita je 2, mapuje štítky, takže 0 zůstane negativní a 4 se stane 1 pro pozitivní.
  • Poté vytiskneme, kolik pozitivních a negativních tweetů zbývá v datech.
Python
   df   =   df  [  df  .  polarity   !=   2  ]   df  [  'polarity'  ]   =   df  [  'polarity'  ]  .  map  ({  0  :   0     4  :   1  })   print  (  df  [  'polarity'  ]  .  value_counts  ())   

výstup:

Snímek obrazovky-2025-07-09-092140Výstup

Krok 4: Vyčistěte tweety

  • Zde definujeme jednoduchou funkci pro převod veškerého textu na malá písmena, aby byla zajištěna konzistence, aplikovaná na každý tweet v datové sadě.
  • Poté zobrazí původní a vyčištěné verze prvních několika tweetů.
Python
   def   clean_text  (  text  ):   return   text  .  lower  ()   df  [  'clean_text'  ]   =   df  [  'text'  ]  .  apply  (  clean_text  )   print  (  df  [[  'text'     'clean_text'  ]]  .  head  ())   

výstup:

VýstupVýstup

Krok 5: Trénujte testovací rozdělení

  • Tento kód rozděluje sloupce clean_text a polarity do školicích a testovacích sad pomocí rozdělení 80/20.
  • random_state=42 zajišťuje reprodukovatelnost.
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  ))   

výstup:

Velikost vlaku: 1280000
Velikost testu: 320 000

Krok 6: Proveďte vektorizaci

  • Tento kód vytváří vektorizátor TF IDF, který převádí text na numerické prvky pomocí unigramů a bigramů omezených na 5000 prvků.
  • Přizpůsobí a transformuje trénovací data a transformuje testovací data a poté vytiskne tvary výsledných TF IDF matic.
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  )   

výstup:

Tvar TF-IDF (vlak): (1280000 5000)
Tvar TF-IDF (test): (320000 5000)

Krok 7: Trénujte model Bernoulli Naive Bayes

  • Zde trénujeme a Bernoulli Naivní Bayes klasifikátor na vlastnostech TF IDF z trénovacích dat.
  • Předpovídá pocity pro testovací data a poté vytiskne přesnost a podrobnou klasifikační zprávu.
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  ))   

výstup:

VýstupVýstup

Krok 9: Model vlakového podpůrného vektorového stroje (SVM).

  • Tento kód trénuje a Support Vector Machine (SVM) s maximálně 1000 iteracemi na vlastnostech TF IDF.
  • Předpovídá testovací štítky a poté vytiskne přesnost a podrobnou klasifikační zprávu ukazující, jak dobře SVM fungoval.
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  ))   

výstup:

VýstupVýstup

Krok 10: Trénujte model logistické regrese

  • Tento kód trénuje a Logistická regrese model s až 100 iteracemi na funkcích TF IDF.
  • Předpovídá štítky sentimentu pro testovací data a vytiskne zprávu o přesnosti a podrobné klasifikaci pro vyhodnocení 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  ))   

výstup:

VýstupVýstup

Krok 11: Proveďte předpovědi na ukázkové tweety

  • Tento kód vezme tři ukázkové tweety a transformuje je do funkcí TF IDF pomocí stejného vektorizátoru.
  • Poté předpovídá jejich sentiment pomocí trénovaných modelů BernoulliNB SVM a Logistic Regression a vytiskne výsledky pro každý klasifikátor.
  • Kde 1 znamená kladný a 0 záporný.
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  ))   

výstup:

VýstupVýstup

Vidíme, že naše modely fungují dobře a poskytují stejné předpovědi i s různými přístupy.

Zdrojový kód si můžete stáhnout zde - Analýza sentimentu Twitter pomocí Pythonu

Vytvořit kvíz