„Twitter“ nuotaikų analizė naudojant Python

„Twitter“ nuotaikų analizė naudojant Python

„Twitter“ nuotaikų analizė yra „Python“ naudojimo procesas, siekiant automatiškai suprasti tviterio žinutėmis išsakytas emocijas ar nuomones. Analizuodami tekstą galime klasifikuoti tviterius kaip teigiamus neigiamus arba neutralius. Tai padeda įmonėms ir tyrėjams stebėti visuomenės nuotaikos prekės ženklo reputaciją arba reakciją į įvykius realiuoju laiku. Python bibliotekos, tokios kaip TextBlob Tweepy ir NLTK, leidžia lengvai rinkti tviterius, apdoroti tekstą ir efektyviai atlikti nuotaikų analizę. „Twitter“ nuotaikų analizė naudojant Python

Kuo naudinga „Twitter“ nuotaikų analizė?

  • „Twitter“ nuotaikų analizė yra svarbi, nes padeda žmonėms ir įmonėms suprasti, ką visuomenė galvoja realiu laiku.
  • Kiekvieną dieną skelbiama milijonai tviterinių žinučių, kuriose dalijamasi nuomonėmis apie prekės ženklų produktų įvykius ar socialines problemas. Analizuodamos šį didžiulį duomenų srautą, įmonės gali išmatuoti klientų pasitenkinimo tendencijas, greitai susidoroti su neigiamais atsiliepimais ir priimti geresnius sprendimus pagal tai, kaip žmonės iš tikrųjų jaučiasi.
  • Mokslininkams ir vyriausybėms taip pat naudinga stebėti visuomenės nuotaiką rinkimų krizių ar didelių įvykių metu, nes tai paverčia neapdorotus tviterius vertingomis įžvalgomis.

Žingsnis po žingsnio įgyvendinimas

1 veiksmas: įdiekite būtinas bibliotekas

Šis blokas įdiegia ir importuoja reikiamas bibliotekas. Tai naudoja pandos įkelti ir tvarkyti duomenis TfidfVektorizer tekstą paversti skaičiais ir scikit mokytis treniruoti 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 veiksmas: įkelkite duomenų rinkinį

  • Čia mes įkeliame Sentiment140 duomenų rinkinys iš supakuoto CSV failo galite jį atsisiųsti iš Kaggle.
  • Mes išlaikome tik poliškumą, o tviterinio pranešimo teksto stulpeliai juos pervadina, kad būtų aiškumo, ir išspausdinamos kelios pirmosios eilutės, kad patikrintų duomenis.
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  ())   

Išvestis:

IšvestisIšvestis

3 veiksmas: laikykite tik teigiamus ir neigiamus jausmus

  • Čia pašaliname neutralius tviterius, kurių poliškumas yra 2, susieja etiketes, todėl 0 lieka neigiami, o 4 tampa 1 teigiamu.
  • Tada atspausdiname, kiek teigiamų ir neigiamų tviterių liko duomenyse.
Python
   df   =   df  [  df  .  polarity   !=   2  ]   df  [  'polarity'  ]   =   df  [  'polarity'  ]  .  map  ({  0  :   0     4  :   1  })   print  (  df  [  'polarity'  ]  .  value_counts  ())   

Išvestis:

Ekrano kopija-2025-07-09-092140Išvestis

4 veiksmas: išvalykite „Tweets“.

  • Čia apibrėžiame paprastą funkciją, skirtą visam tekstui paversti mažosiomis raidėmis, kad būtų nuoseklus, tai taikoma kiekvienam duomenų rinkinio tviteriui.
  • Tada rodomos originalios ir išvalytos kelių pirmųjų tviterių versijos.
Python
   def   clean_text  (  text  ):   return   text  .  lower  ()   df  [  'clean_text'  ]   =   df  [  'text'  ]  .  apply  (  clean_text  )   print  (  df  [[  'text'     'clean_text'  ]]  .  head  ())   

Išvestis:

IšvestisIšvestis

5 veiksmas: traukinio testo padalijimas

  • Šis kodas padalija švaraus_teksto ir poliškumo stulpelius į mokymo ir testavimo rinkinius, naudojant 80/20 padalijimą.
  • random_state=42 užtikrina atkuriamumą.
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  ))   

Išvestis:

Traukinio dydis: 1280000
Bandymo dydis: 320000

6 veiksmas: atlikite vektorizavimą

  • Šis kodas sukuria TF IDF vektorių, kuris konvertuoja tekstą į skaitines ypatybes, naudodamas unigramas ir bigramas, apribotas iki 5000 funkcijų.
  • Jis pritaiko ir transformuoja treniruočių duomenis ir transformuoja testo duomenis, tada atspausdina gautų TF IDF matricų formas.
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  )   

Išvestis:

TF-IDF forma (traukinys): (1280000 5000)
TF-IDF forma (bandymas): (320000 5000)

7 veiksmas: išmokykite Bernoulli Naive Bayes modelį

  • Čia treniruojame a Bernoulli Naive Bayes TF IDF savybių klasifikatorius iš treniruočių duomenų.
  • Jis numato bandymo duomenų nuotaikas ir išspausdina tikslumą bei išsamią klasifikavimo ataskaitą.
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  ))   

Išvestis:

IšvestisIšvestis

9 veiksmas: Train Support Vector Machine (SVM) modelis

  • Šis kodas treniruoja a Palaikykite vektorinį įrenginį (SVM) su ne daugiau kaip 1000 TF IDF funkcijų iteracijų.
  • Jis numato bandymo etiketes, tada išspausdina tikslumą ir išsamią klasifikavimo ataskaitą, rodančią, kaip gerai veikė 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  ))   

Išvestis:

IšvestisIšvestis

10 veiksmas: parengkite logistinės regresijos modelį

  • Šis kodas treniruoja a Logistinė regresija modelis su iki 100 TF IDF funkcijų iteracijų.
  • Jis numato bandymo duomenų nuotaikų etiketes ir atspausdina tikslumą bei išsamią klasifikavimo ataskaitą modelio įvertinimui.
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  ))   

Išvestis:

IšvestisIšvestis

11 veiksmas: numatykite pavyzdinius tviterius

  • Šis kodas paima tris pavyzdinius tviterius ir paverčia juos TF IDF funkcijomis, naudodamas tą patį vektorių.
  • Tada jis numato jų nuotaikas naudodamas apmokytus BernoulliNB SVM ir logistikos regresijos modelius ir atspausdina kiekvieno klasifikatoriaus rezultatus.
  • Kur 1 reiškia teigiamą, o 0 – neigiamą.
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  ))   

Išvestis:

IšvestisIšvestis

Matome, kad mūsų modeliai veikia gerai ir pateikia tas pačias prognozes net ir taikant skirtingus metodus.

Šaltinio kodą galite atsisiųsti iš čia - „Twitter“ nuotaikų analizė naudojant Python

Sukurti viktoriną