Twitterin tunneanalyysi Pythonilla

Twitterin tunneanalyysi Pythonilla

Twitter Sentiment Analysis on prosessi, jossa Pythonilla ymmärretään automaattisesti twiiteissä ilmaistut tunteet tai mielipiteet. Analysoimalla tekstiä voimme luokitella tweetit positiivisiksi negatiivisiksi tai neutraaleiksi. Tämä auttaa yrityksiä ja tutkijoita seuraamaan julkisen mielialan brändin mainetta tai reaktioita tapahtumiin reaaliajassa. Python-kirjastot, kuten TextBlob Tweepy ja NLTK, helpottavat tweettien keräämistä, prosessoivat tekstiä ja suorittavat tunteiden analysoinnin tehokkaasti. Twitterin mielipideanalyysi Pythonilla

Kuinka Twitter-tunneanalyysistä on hyötyä?

  • Twitterin mielipideanalyysi on tärkeä, koska se auttaa ihmisiä ja yrityksiä ymmärtämään, mitä yleisö ajattelee reaaliajassa.
  • Miljoonia twiittejä julkaistaan ​​päivittäin, ja niissä jaetaan mielipiteitä brändituotteiden tapahtumista tai sosiaalisista ongelmista. Analysoimalla tätä valtavaa tietovirtaa yritykset voivat mitata asiakastyytyväisyystrendejä varhaisessa vaiheessa käsitellä negatiivista palautetta nopeasti ja tehdä parempia päätöksiä sen perusteella, miltä ihmiset todella tuntevat.
  • Tutkijoille ja hallituksille on myös hyödyllistä seurata yleistä mielialaa vaalikriisien tai suurten tapahtumien aikana, koska se muuttaa raakatviiteistä arvokkaita oivalluksia.

Askel askeleelta toteutus

Vaihe 1: Asenna tarvittavat kirjastot

Tämä lohko asentaa ja tuo tarvittavat kirjastot. Se käyttää pandat ladata ja käsitellä tietoja TfidfVektorizer muuttaaksesi tekstin numeroiksi ja scikit oppia kouluttaa mallia.

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   

Vaihe 2: Lataa tietojoukko

  • Täällä lataamme Sentiment140-tietojoukko pakatusta CSV-tiedostosta voit ladata sen Kagglesta.
  • Säilytämme vain napaisuuden, ja twiitin tekstisarakkeet nimeää ne uudelleen selvyyden vuoksi ja tulostaa ensimmäiset rivit tietojen tarkistamiseksi.
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  ())   

Lähtö:

LähtöLähtö

Vaihe 3: Pidä vain positiiviset ja negatiiviset tunteet

  • Tässä poistamme neutraalit twiitit, joissa napaisuus on 2, kartoittaa tarrat siten, että 0 pysyy negatiivisena ja 4 muuttuu 1:ksi positiivisille.
  • Sitten tulostetaan kuinka monta positiivista ja negatiivista twiittiä tiedoissa on jäljellä.
Python
   df   =   df  [  df  .  polarity   !=   2  ]   df  [  'polarity'  ]   =   df  [  'polarity'  ]  .  map  ({  0  :   0     4  :   1  })   print  (  df  [  'polarity'  ]  .  value_counts  ())   

Lähtö:

Kuvakaappaus-2025-07-09-092140Lähtö

Vaihe 4: Puhdista twiitit

  • Tässä määritämme yksinkertaisen toiminnon, joka muuntaa kaiken tekstin pieniksi kirjaimiin johdonmukaisuuden vuoksi, ja sitä sovelletaan jokaiseen tietojoukon twiittiin.
  • Sen jälkeen näyttää muutaman ensimmäisen twiitin alkuperäiset ja puhdistetut versiot.
Python
   def   clean_text  (  text  ):   return   text  .  lower  ()   df  [  'clean_text'  ]   =   df  [  'text'  ]  .  apply  (  clean_text  )   print  (  df  [[  'text'     'clean_text'  ]]  .  head  ())   

Lähtö:

LähtöLähtö

Vaihe 5: Junatestin jako

  • Tämä koodi jakaa puhdas_teksti- ja polariteettisarakkeet harjoitus- ja testaussarjoiksi käyttämällä 80/20-jakoa.
  • random_state=42 varmistaa toistettavuuden.
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  ))   

Lähtö:

Junan koko: 1280000
Testin koko: 320000

Vaihe 6: Suorita vektorointi

  • Tämä koodi luo TF IDF -vektorisoittimen, joka muuntaa tekstin numeerisiksi ominaisuuksiksi käyttämällä unigrammeja ja bigrammeja, joiden enimmäismäärä on 5000.
  • Se sovittaa ja muuntaa harjoitustiedot ja muuntaa testitiedot ja tulostaa sitten tuloksena olevien TF IDF -matriisien muodot.
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  )   

Lähtö:

TF-IDF-muoto (juna): (1280000 5000)
TF-IDF-muoto (testi): (320000 5000)

Vaihe 7: Harjoittele Bernoulli Naive Bayes -mallia

  • Täällä treenataan a Bernoulli Naive Bayes luokitin TF IDF -ominaisuuksista harjoitustiedoista.
  • Se ennustaa testitiedon tunteita ja tulostaa sitten tarkkuuden ja yksityiskohtaisen luokitusraportin.
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  ))   

Lähtö:

LähtöLähtö

Vaihe 9: Kouluta tukivektorikoneen (SVM) malli

  • Tämä koodi kouluttaa a Tuki Vector Machine (SVM) enintään 1000 iteraatiolla TF IDF:n ominaisuuksilla.
  • Se ennustaa testitarrat ja tulostaa sitten tarkkuuden ja yksityiskohtaisen luokitusraportin, joka osoittaa, kuinka hyvin SVM toimi.
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  ))   

Lähtö:

LähtöLähtö

Vaihe 10: Harjoittele logistinen regressiomalli

  • Tämä koodi kouluttaa a Logistinen regressio malli, jossa on jopa 100 iteraatiota TF IDF -ominaisuuksilla.
  • Se ennustaa testitiedon tunnetarrat ja tulostaa tarkkuuden ja yksityiskohtaisen luokitusraportin mallin arviointia varten.
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  ))   

Lähtö:

LähtöLähtö

Vaihe 11: Tee ennusteita esimerkkitviiteistä

  • Tämä koodi ottaa kolme esimerkkitviittiä ja muuntaa ne TF IDF -ominaisuuksiksi käyttämällä samaa vektorointia.
  • Sen jälkeen se ennustaa heidän tunteensa käyttämällä koulutettuja BernoulliNB SVM- ja Logistic Regression -malleja ja tulostaa kunkin luokittelijan tulokset.
  • Missä 1 tarkoittaa positiivista ja 0 negatiivista.
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  ))   

Lähtö:

LähtöLähtö

Näemme, että mallimme toimivat hyvin ja antavat samoja ennusteita jopa erilaisilla lähestymistavoilla.

Voit ladata lähdekoodin täältä - Twitterin mielipideanalyysi Pythonilla

Luo tietokilpailu