Analýza sentimentu Twitter pomocou Pythonu

Analýza sentimentu Twitter pomocou Pythonu

Analýza sentimentu na Twitteri je proces používania Pythonu na automatické pochopenie emócií alebo názorov vyjadrených v tweetoch. Analýzou textu môžeme tweety klasifikovať ako pozitívne negatívne alebo neutrálne. To pomáha podnikom a výskumníkom sledovať verejnú náladu značky alebo reakcie na udalosti v reálnom čase. Knižnice Pythonu ako TextBlob Tweepy a NLTK uľahčujú zhromažďovanie tweetov, spracovávajú text a efektívne vykonávajú analýzu sentimentu. Analýza sentimentu Twitter pomocou Pythonu

Ako je analýza sentimentu na Twitteri užitočná?

  • Analýza sentimentu na Twitteri je dôležitá, pretože pomáha ľuďom a firmám pochopiť, čo si verejnosť myslí v reálnom čase.
  • Každý deň sa zverejňujú milióny tweetov, v ktorých sa zdieľajú názory na udalosti značiek produktov alebo sociálne problémy. Analýzou tohto obrovského toku údajov môžu spoločnosti merať trendy na mieste spokojnosti zákazníkov, rýchlo zvládnuť negatívnu spätnú väzbu a robiť lepšie rozhodnutia na základe toho, ako sa ľudia skutočne cítia.
  • Pre výskumníkov a vlády je tiež užitočné monitorovať náladu verejnosti počas volebných kríz alebo veľkých udalostí, pretože surové tweety premieňajú na cenné informácie.

Krok za krokom implementácia

Krok 1: Nainštalujte potrebné knižnice

Tento blok nainštaluje a importuje požadované knižnice. Používa sa pandy na načítanie a spracovanie údajov TfidfVectorizer zmeniť text na čísla a scikit učiť sa trénovať 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čítajte množinu údajov

  • Tu načítame Súbor údajov Sentiment140 zo zazipovaného súboru CSV si ho môžete stiahnuť z Kaggle.
  • Zachovávame iba polaritu a stĺpce textu tweetu ich pre prehľadnosť premenujeme a vytlačíme niekoľko prvých riadkov na kontrolu údajov.
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 iba pozitívne a negatívne pocity

  • Tu odstraňujeme neutrálne tweety, kde polarita je 2, mapuje štítky, takže 0 zostáva záporná a 4 sa stáva 1 kladnou.
  • Potom vytlačíme, koľko pozitívnych a negatívnych tweetov zostalo v údajoch.
Python
   df   =   df  [  df  .  polarity   !=   2  ]   df  [  'polarity'  ]   =   df  [  'polarity'  ]  .  map  ({  0  :   0     4  :   1  })   print  (  df  [  'polarity'  ]  .  value_counts  ())   

výstup:

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

Krok 4: Vyčistite tweety

  • Tu definujeme jednoduchú funkciu na konverziu celého textu na malé písmená, aby sa zabezpečila konzistentnosť, aplikovaná na každý tweet v množine údajov.
  • Potom zobrazí pôvodné a vyčistené verzie niekoľkých prvých tweetov.
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: Rozdelenie testu vlaku

  • Tento kód rozdeľuje stĺpce clean_text a polarity na tréningové a testovacie sady pomocou rozdelenia 80/20.
  • random_state=42 zaisťuje reprodukovateľnosť.
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:

Veľkosť vlaku: 1280000
Veľkosť testu: 320 000

Krok 6: Vykonajte vektorizáciu

  • Tento kód vytvára vektorizér TF IDF, ktorý konvertuje text na numerické prvky pomocou unigramov a bigramov obmedzených na 5000 prvkov.
  • Prispôsobí a transformuje trénovacie údaje a transformuje testovacie údaje a potom vytlačí tvary výsledných matíc 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  )   

výstup:

Tvar TF-IDF (vlak): (1280000 5000)
Tvar TF-IDF (test): (320 000 5 000)

Krok 7: Trénujte model Bernoulli Naive Bayes

  • Tu trénujeme a Bernoulli Naivný Bayes klasifikátor na vlastnostiach TF IDF z tréningových údajov.
  • Predpovedá pocity pre testovacie údaje a potom vytlačí presnosť a podrobnú klasifikačnú sprá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 podporného vektorového stroja (SVM).

  • Tento kód trénuje a Support Vector Machine (SVM) s maximálne 1000 iteráciami na vlastnostiach TF IDF.
  • Predpovedá testovacie štítky a potom vytlačí presnosť a podrobnú klasifikačnú správu ukazujúcu, ako dobre fungoval 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  ))   

výstup:

VýstupVýstup

Krok 10: Trénujte model logistickej regresie

  • Tento kód trénuje a Logistická regresia model s až 100 iteráciami na vlastnostiach TF IDF.
  • Predpovedá štítky sentimentu pre testovacie údaje a vytlačí presnú a podrobnú klasifikačnú správu na vyhodnotenie 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: Urobte predpovede na vzorových Tweetoch

  • Tento kód vezme tri vzorové tweety a transformuje ich na funkcie TF IDF pomocou rovnakého vektorizátora.
  • Potom predpovedá ich sentiment pomocou trénovaných modelov BernoulliNB SVM a Logistic Regression a vytlačí výsledky pre každý klasifikátor.
  • Kde 1 znamená pozitívny a 0 negatívny.
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ú dobre a poskytujú rovnaké predpovede aj pri rôznych prístupoch.

Zdrojový kód si môžete stiahnuť tu - Analýza sentimentu Twitter pomocou Pythonu

Vytvoriť kvíz