Analiza razpoloženja na Twitterju z uporabo Pythona

Analiza razpoloženja na Twitterju z uporabo Pythona

Analiza razpoloženja na Twitterju je postopek uporabe Pythona za samodejno razumevanje čustev ali mnenj, izraženih v tvitih. Z analizo besedila lahko tvite razvrstimo na pozitivne negativne ali nevtralne. To podjetjem in raziskovalcem pomaga spremljati ugled blagovne znamke v javnem razpoloženju ali reakcije na dogodke v realnem času. Knjižnice Python, kot sta TextBlob Tweepy in NLTK, olajšajo zbiranje tvitov, obdelajo besedilo in učinkovito izvajajo analizo razpoloženja. Analiza razpoloženja na Twitterju z uporabo Pythona

Kako je koristna analiza razpoloženja na Twitterju?

  • Analiza razpoloženja na Twitterju je pomembna, ker ljudem in podjetjem pomaga razumeti, kaj si javnost misli v realnem času.
  • Vsak dan je objavljenih na milijone tvitov, ki delijo mnenja o dogodkih izdelkov blagovnih znamk ali družbenih vprašanjih. Z analizo tega ogromnega toka podatkov lahko podjetja zgodaj izmerijo trende zadovoljstva strank, hitro obravnavajo negativne povratne informacije in sprejemajo boljše odločitve na podlagi tega, kako se ljudje dejansko počutijo.
  • Prav tako je koristno za raziskovalce in vlade, da spremljajo javno razpoloženje med volilnimi krizami ali velikimi dogodki, saj neobdelane tvite spremeni v dragocene vpoglede.

Implementacija po korakih

1. korak: Namestite potrebne knjižnice

Ta blok namesti in uvozi zahtevane knjižnice. Uporablja se pande za nalaganje in obdelavo podatkov TfidfVectorizer spremeniti besedilo v številke in scikit nauči se usposobiti 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   

2. korak: Naložite nabor podatkov

  • Tukaj naložimo Nabor podatkov Sentiment140 iz stisnjene datoteke CSV, ki jo lahko prenesete iz Kaggle.
  • Hranimo samo stolpce s polarnostjo in besedilom tweeta, jih preimenujemo zaradi jasnosti in natisnemo prvih nekaj vrstic, da preverimo podatke.
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  ())   

Izhod:

IzhodIzhod

3. korak: Ohranite samo pozitivna in negativna čustva

  • Tukaj odstranimo nevtralne tvite, kjer je polarnost 2, preslika oznake, tako da 0 ostane negativna, 4 pa postane 1 za pozitivno.
  • Nato natisnemo, koliko pozitivnih in negativnih tvitov je ostalo v podatkih.
Python
   df   =   df  [  df  .  polarity   !=   2  ]   df  [  'polarity'  ]   =   df  [  'polarity'  ]  .  map  ({  0  :   0     4  :   1  })   print  (  df  [  'polarity'  ]  .  value_counts  ())   

Izhod:

Posnetek zaslona-2025-07-09-092140Izhod

4. korak: Očistite tvite

  • Tukaj definiramo preprosto funkcijo za pretvorbo vsega besedila v male črke zaradi skladnosti, ki jo uporabi za vsak tvit v naboru podatkov.
  • Nato prikaže izvirne in očiščene različice prvih nekaj tvitov.
Python
   def   clean_text  (  text  ):   return   text  .  lower  ()   df  [  'clean_text'  ]   =   df  [  'text'  ]  .  apply  (  clean_text  )   print  (  df  [[  'text'     'clean_text'  ]]  .  head  ())   

Izhod:

IzhodIzhod

5. korak: Testna delitev vlaka

  • Ta koda razdeli stolpca clean_text in polarnost v nize za usposabljanje in testiranje z uporabo razdelitve 80/20.
  • random_state=42 zagotavlja 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  ))   

Izhod:

Velikost vlaka: 1280000
Preizkusna velikost: 320000

6. korak: Izvedite vektorizacijo

  • Ta koda ustvari vektorizator TF IDF, ki pretvori besedilo v numerične funkcije z uporabo unigramov in bigramov, omejenih na 5000 funkcij.
  • Prilega in preoblikuje podatke o usposabljanju in preoblikuje testne podatke ter nato natisne oblike dobljenih matrik 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  )   

Izhod:

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

7. korak: Usposobite Bernoullijev naivni Bayesov model

  • Tukaj treniramo a Bernoullijev naivni Bayes klasifikatorja o funkcijah TF IDF iz podatkov o usposabljanju.
  • Napove razpoloženja za testne podatke in nato natisne točnost in podrobno poročilo 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  ))   

Izhod:

IzhodIzhod

Korak 9: Model Train Support Vector Machine (SVM).

  • Ta koda usposablja a Podporni vektorski stroj (SVM) z največ 1000 ponovitvami funkcij TF IDF.
  • Predvidi testne nalepke, nato natisne točnost in podrobno poročilo o klasifikaciji, ki prikazuje, kako dobro je deloval 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  ))   

Izhod:

IzhodIzhod

10. korak: Usposobite model logistične regresije

  • Ta koda usposablja a Logistična regresija model z do 100 ponovitvami funkcij TF IDF.
  • Predvidi oznake razpoloženja za testne podatke in natisne poročilo o natančnosti in podrobni klasifikaciji za oceno 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  ))   

Izhod:

IzhodIzhod

11. korak: Naredite napovedi na podlagi vzorčnih tvitov

  • Ta koda vzame tri vzorčne tvite in jih pretvori v funkcije TF IDF z uporabo istega vektorizatorja.
  • Nato napove njihovo razpoloženje z uporabo usposobljenih modelov BernoulliNB SVM in logistične regresije ter natisne rezultate za vsak klasifikator.
  • Pri čemer 1 pomeni pozitivno in 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  ))   

Izhod:

IzhodIzhod

Vidimo lahko, da naši modeli dobro delujejo in dajejo enake napovedi tudi z različnimi pristopi.

Izvorno kodo lahko prenesete tukaj- Analiza razpoloženja na Twitterju z uporabo Pythona

Ustvari kviz