Twitter hangulatelemzés Python használatával

Twitter hangulatelemzés Python használatával

A Twitter hangulatelemzése a Python használatával a tweetekben kifejezett érzelmek vagy vélemények automatikus megértése. A szöveg elemzésével a tweeteket pozitív negatívnak vagy semlegesnek minősíthetjük. Ez segít a vállalkozásoknak és a kutatóknak valós időben nyomon követni a közhangulatú márka hírnevét vagy az eseményekre adott reakciókat. A Python-könyvtárak, például a TextBlob Tweepy és az NLTK megkönnyítik a tweet-ek gyűjtését, a szöveg feldolgozását és a hangulatelemzés hatékony elvégzését. Twitter hangulatelemzés Python használatával

Hogyan hasznos a Twitter-hangulatelemzés?

  • A Twitter hangulatelemzése azért fontos, mert segít az embereknek és a vállalkozásoknak valós időben megérteni, mit gondol a közvélemény.
  • Naponta több millió tweet kerül közzétételre, amelyekben megosztják véleményüket a márkatermékekkel kapcsolatos eseményekről vagy társadalmi kérdésekről. Ennek a hatalmas adatfolyamnak az elemzésével a vállalatok mérni tudják a vásárlói elégedettséget, és gyorsan tudják kezelni a negatív visszajelzéseket, és jobb döntéseket hoznak az emberek tényleges érzései alapján.
  • A kutatók és a kormányok számára is hasznos a közhangulat nyomon követése választási válságok vagy nagy események idején, mivel a nyers tweeteket értékes betekintésekké alakítja.

Lépésről lépésre történő megvalósítás

1. lépés: Telepítse a szükséges könyvtárakat

Ez a blokk telepíti és importálja a szükséges könyvtárakat. Használ pandák adatok betöltésére és kezelésére TfidfVektorizer szöveget számokká alakítani és scikit tanulni modellt képezni.

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. lépés: Töltse be az adatkészletet

  • Itt töltjük be a Sentiment140 adatkészlet tömörített CSV fájlból letöltheti a Kaggle webhelyről.
  • Csak a polaritást tartjuk meg, és a tweet szövegoszlopai átnevezzük őket az egyértelműség kedvéért, és kinyomtatjuk az első néhány sort az adatok ellenőrzéséhez.
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  ())   

Kimenet:

KimenetKimenet

3. lépés: Csak pozitív és negatív érzelmeket őrizzen meg

  • Itt eltávolítjuk azokat a semleges tweeteket, ahol a polaritás 2, leképezi a címkéket, így a 0 negatív marad, a 4 pedig 1 lesz pozitívnak.
  • Ezután kiírjuk, hogy hány pozitív és negatív tweet maradt az adatokban.
Python
   df   =   df  [  df  .  polarity   !=   2  ]   df  [  'polarity'  ]   =   df  [  'polarity'  ]  .  map  ({  0  :   0     4  :   1  })   print  (  df  [  'polarity'  ]  .  value_counts  ())   

Kimenet:

Képernyőkép-2025-07-09-092140Kimenet

4. lépés: Tisztítsa meg a tweeteket

  • Itt egy egyszerű függvényt definiálunk, amely az összes szöveget kisbetűssé alakítja a konzisztencia érdekében, és az adatkészlet minden tweetjére alkalmazza.
  • Ezután megmutatja az első néhány tweet eredeti és tisztított verzióját.
Python
   def   clean_text  (  text  ):   return   text  .  lower  ()   df  [  'clean_text'  ]   =   df  [  'text'  ]  .  apply  (  clean_text  )   print  (  df  [[  'text'     'clean_text'  ]]  .  head  ())   

Kimenet:

KimenetKimenet

5. lépés: A vonatteszt megosztása

  • Ez a kód felosztja a tiszta_szöveg és a polaritás oszlopokat képzési és tesztelési készletekre, 80/20-as felosztással.
  • random_state=42 biztosítja a reprodukálhatóságot.
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  ))   

Kimenet:

Vonat mérete: 1280000
Teszt mérete: 320000

6. lépés: Végezze el a vektorizálást

  • Ez a kód egy TF IDF-vektort hoz létre, amely a szöveget numerikus jellemzőkké alakítja unigramok és bigramok segítségével, amelyek legfeljebb 5000 jellemzőt tartalmaznak.
  • Illeszti és átalakítja a betanítási adatokat, átalakítja a tesztadatokat, majd kinyomtatja a kapott TF IDF mátrixok alakjait.
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  )   

Kimenet:

TF-IDF forma (vonat): (1280000 5000)
TF-IDF forma (teszt): (320000 5000)

7. lépés: Tanítsa meg Bernoulli Naive Bayes modelljét

  • Itt edzünk a Bernoulli Naive Bayes osztályozó a TF IDF jellemzőiről a képzési adatokból.
  • Megjósolja a tesztadatok véleményét, majd kinyomtatja a pontosságot és egy részletes osztályozási jelentést.
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  ))   

Kimenet:

KimenetKimenet

9. lépés: Train Support Vector Machine (SVM) modell

  • Ez a kód megtanítja a Támogatja a vektorgépet (SVM) maximum 1000 iterációval a TF IDF szolgáltatásain.
  • Megjósolja a tesztcímkéket, majd kinyomtatja a pontosságot és egy részletes osztályozási jelentést, amely megmutatja, hogy az SVM milyen jól teljesített.
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  ))   

Kimenet:

KimenetKimenet

10. lépés: A logisztikai regressziós modell betanítása

  • Ez a kód megtanítja a Logisztikai regresszió modell akár 100 iterációval a TF IDF funkcióin.
  • Megjósolja a tesztadatok hangulatcímkéit, és kinyomtatja a pontossági és részletes osztályozási jelentést a modell értékeléséhez.
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  ))   

Kimenet:

KimenetKimenet

11. lépés: Készítsen jóslatokat a minta-tweetekre

  • Ez a kód három minta tweetet vesz, és ugyanazt a vektort használva TF IDF funkciókká alakítja át őket.
  • Ezután a betanított BernoulliNB SVM és logisztikai regressziós modellek segítségével megjósolja a véleményüket, és kinyomtatja az egyes osztályozók eredményeit.
  • Ahol az 1 a pozitív, a 0 a negatív.
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  ))   

Kimenet:

KimenetKimenet

Láthatjuk, hogy modelljeink jól működnek, és ugyanazokat az előrejelzéseket adják még különböző megközelítésekkel is.

A forráskódot innen töltheti le - Twitter hangulatelemzés Python használatával

Kvíz létrehozása