Analiza raspoloženja na Twitteru pomoću Pythona

Analiza raspoloženja na Twitteru pomoću Pythona

Analiza raspoloženja na Twitteru proces je korištenja Pythona za automatsko razumijevanje emocija ili mišljenja izraženih u tweetovima. Analizom teksta tweetove možemo klasificirati kao pozitivne negativne ili neutralne. To pomaže tvrtkama i istraživačima da prate reputaciju brenda raspoloženja javnosti ili reakcije na događaje u stvarnom vremenu. Python biblioteke poput TextBlob Tweepy i NLTK olakšavaju prikupljanje tweetova, obradu teksta i učinkovitu analizu raspoloženja. Analiza raspoloženja na Twitteru pomoću Pythona

Kako je Twitter analiza raspoloženja korisna?

  • Analiza raspoloženja na Twitteru važna je jer pomaže ljudima i tvrtkama da razumiju što javnost misli u stvarnom vremenu.
  • Milijuni tweetova objavljuju se svaki dan u kojima se dijele mišljenja o događajima proizvoda marki ili društvenim problemima. Analizom ovog ogromnog toka podataka tvrtke mogu rano mjeriti trendove zadovoljstva kupaca, brzo rješavati negativne povratne informacije i donositi bolje odluke na temelju toga kako se ljudi stvarno osjećaju.
  • Također je korisno za istraživače i vlade da prate javno raspoloženje tijekom izbornih kriza ili velikih događaja jer sirove tweetove pretvara u vrijedne uvide.

Implementacija korak po korak

Korak 1: Instalirajte potrebne biblioteke

Ovaj blok instalira i uvozi potrebne biblioteke. Koristi se pande za učitavanje i rukovanje podacima TfidfVektorizator pretvoriti tekst u brojeve i scikit nauči trenirati 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   

Korak 2: Učitajte skup podataka

  • Ovdje učitavamo Skup podataka Sentiment140 iz komprimirane CSV datoteke koju možete preuzeti s Kagglea.
  • Zadržavamo samo stupce polariteta i teksta tweeta, preimenujemo ih radi jasnoće i ispisujemo prvih nekoliko redaka za provjeru podataka.
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  ())   

Izlaz:

IzlazIzlaz

Korak 3: Zadržite samo pozitivne i negativne osjećaje

  • Ovdje uklanjamo neutralne tweetove gdje je polaritet 2 mapira oznake tako da 0 ostaje negativno, a 4 postaje 1 za pozitivno.
  • Zatim ispisujemo koliko je pozitivnih i negativnih tweetova ostalo u podacima.
Python
   df   =   df  [  df  .  polarity   !=   2  ]   df  [  'polarity'  ]   =   df  [  'polarity'  ]  .  map  ({  0  :   0     4  :   1  })   print  (  df  [  'polarity'  ]  .  value_counts  ())   

Izlaz:

Snimka zaslona-2025-07-09-092140Izlaz

Korak 4: Očistite Tweetove

  • Ovdje definiramo jednostavnu funkciju za pretvaranje cijelog teksta u mala slova radi dosljednosti koja se primjenjuje na svaki tweet u skupu podataka.
  • Zatim prikazuje izvorne i pročišćene verzije prvih nekoliko tweetova.
Python
   def   clean_text  (  text  ):   return   text  .  lower  ()   df  [  'clean_text'  ]   =   df  [  'text'  ]  .  apply  (  clean_text  )   print  (  df  [[  'text'     'clean_text'  ]]  .  head  ())   

Izlaz:

IzlazIzlaz

Korak 5: Podjela testa vlaka

  • Ovaj kod dijeli stupce clean_text i polarity u skupove za obuku i testiranje korištenjem podjele 80/20.
  • random_state=42 osigurava ponovljivost.
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  ))   

Izlaz:

Veličina vlaka: 1280000
Veličina testa: 320000

Korak 6: Izvedite vektorizaciju

  • Ovaj kod stvara TF IDF vektorizator koji pretvara tekst u numeričke značajke pomoću unigrama i bigrama ograničenih na 5000 značajki.
  • Uklapa i transformira podatke o obuci i transformira testne podatke, a zatim ispisuje oblike rezultirajućih TF IDF matrica.
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  )   

Izlaz:

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

Korak 7: Obuka Bernoulli Naive Bayesovog modela

  • Ovdje treniramo a Bernoulli Naivni Bayes klasifikator na značajkama TF IDF iz podataka o obuci.
  • Predviđa osjećaje za testne podatke, a zatim ispisuje točnost i detaljno izvješće o klasifikaciji.
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  ))   

Izlaz:

IzlazIzlaz

Korak 9: Model Vektorskog stroja za podršku vlaku (SVM).

  • Ovaj kod trenira a Support Vector Machine (SVM) s maksimalno 1000 ponavljanja na TF IDF značajkama.
  • Predviđa ispitne naljepnice, zatim ispisuje točnost i detaljno izvješće o klasifikaciji koje pokazuje koliko je SVM dobro radio.
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  ))   

Izlaz:

IzlazIzlaz

Korak 10: Obuka modela logističke regresije

  • Ovaj kod trenira a Logistička regresija model s do 100 ponavljanja na značajkama TF IDF.
  • Predviđa oznake osjećaja za testne podatke i ispisuje točnost i detaljno izvješće o klasifikaciji za procjenu modela.
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  ))   

Izlaz:

IzlazIzlaz

Korak 11: Napravite predviđanja na uzorcima Tweetova

  • Ovaj kod uzima tri uzorka tweetova i pretvara ih u TF IDF značajke pomoću istog vektorizatora.
  • Zatim predviđa njihov sentiment koristeći uvježbane BernoulliNB SVM i modele logističke regresije i ispisuje rezultate za svaki klasifikator.
  • Gdje 1 označava pozitivno, a 0 negativno.
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  ))   

Izlaz:

IzlazIzlaz

Vidimo da naši modeli dobro funkcioniraju i da daju ista predviđanja čak i s različitim pristupima.

Možete preuzeti izvorni kod ovdje- Analiza raspoloženja na Twitteru pomoću Pythona

Napravi kviz