Analiza sentimentelor Twitter folosind Python

Analiza sentimentelor Twitter folosind Python

Twitter Sentiment Analysis este procesul de utilizare a Python pentru a înțelege automat emoțiile sau opiniile exprimate în tweet-uri. Analizând textul, putem clasifica tweet-urile ca pozitive negative sau neutre. Acest lucru ajută companiile și cercetătorii să urmărească reputația mărcii în starea de spirit publică sau reacțiile la evenimente în timp real. Bibliotecile Python precum TextBlob Tweepy și NLTK facilitează colectarea tweet-urilor, procesează textul și efectuează eficient analiza sentimentelor. Analiza sentimentelor Twitter folosind Python

Cum este utilă analiza sentimentelor Twitter?

  • Analiza sentimentelor Twitter este importantă deoarece ajută oamenii și companiile să înțeleagă ceea ce gândește publicul în timp real.
  • Milioane de tweet-uri sunt postate în fiecare zi, împărtășind opinii despre evenimentele produselor mărcii sau problemele sociale. Analizând acest flux uriaș de date, companiile pot măsura satisfacția clienților, tendințele la fața locului, gestionează rapid feedback-ul negativ și pot lua decizii mai bune pe baza modului în care oamenii se simt cu adevărat.
  • De asemenea, este util pentru cercetători și guverne să monitorizeze starea de spirit a publicului în timpul crizelor electorale sau a evenimentelor mari, deoarece transformă tweet-urile brute în informații valoroase.

Implementare pas cu pas

Pasul 1: Instalați bibliotecile necesare

Acest bloc instalează și importă bibliotecile necesare. Se foloseste panda pentru a încărca și gestiona date TfidfVectorizer pentru a transforma textul în numere și scikit invata a antrena modelul.

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   

Pasul 2: Încărcați setul de date

  • Aici încărcăm Set de date Sentiment140 dintr-un fișier CSV arhivat îl puteți descărca de la Kaggle.
  • Păstrăm doar polaritatea și coloanele de text tweet le redenumim pentru claritate și tipărim primele câteva rânduri pentru a verifica datele.
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  ())   

Ieșire:

IeșireIeșire

Pasul 3: Păstrați numai sentimentele pozitive și negative

  • Aici eliminăm tweet-urile neutre unde polaritatea este de 2 mapează etichetele, astfel încât 0 rămâne negativ și 4 devine 1 pentru pozitiv.
  • Apoi imprimăm câte tweet-uri pozitive și negative au rămas în date.
Python
   df   =   df  [  df  .  polarity   !=   2  ]   df  [  'polarity'  ]   =   df  [  'polarity'  ]  .  map  ({  0  :   0     4  :   1  })   print  (  df  [  'polarity'  ]  .  value_counts  ())   

Ieșire:

Captură de ecran-2025-07-09-092140Ieșire

Pasul 4: Curățați tweet-urile

  • Aici definim o funcție simplă pentru a converti tot textul în litere mici, pentru consecvență, se aplică fiecărui tweet din setul de date.
  • Apoi arată versiunile originale și curățate ale primelor câteva tweet-uri.
Python
   def   clean_text  (  text  ):   return   text  .  lower  ()   df  [  'clean_text'  ]   =   df  [  'text'  ]  .  apply  (  clean_text  )   print  (  df  [[  'text'     'clean_text'  ]]  .  head  ())   

Ieșire:

IeșireIeșire

Pasul 5: Tren Test Split

  • Acest cod împarte coloanele clean_text și polaritate în seturi de antrenament și testare folosind o împărțire 80/20.
  • random_state=42 asigură reproductibilitatea.
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  ))   

Ieșire:

Dimensiunea trenului: 1280000
Dimensiunea testului: 320000

Pasul 6: Efectuați vectorizarea

  • Acest cod creează un vectorizator TF IDF care convertește textul în caracteristici numerice folosind unigrame și bigrame limitate la 5000 de caracteristici.
  • Se potrivește și transformă datele de antrenament și transformă datele de testare și apoi imprimă formele matricelor TF IDF rezultate.
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  )   

Ieșire:

Forma TF-IDF (tren): (1280000 5000)
Forma TF-IDF (test): (320000 5000)

Pasul 7: Antrenează modelul Bernoulli Naive Bayes

  • Aici antrenăm un Bernoulli Naive Bayes clasificator pe caracteristicile TF IDF din datele de antrenament.
  • Acesta prezice sentimentele pentru datele de testare și apoi tipărește acuratețea și un raport de clasificare detaliat.
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  ))   

Ieșire:

IeșireIeșire

Pasul 9: Modelul de mașină vectorială de sprijin pentru tren (SVM).

  • Acest cod antrenează a Suport Vector Machine (SVM) cu maximum 1000 de iterații ale caracteristicilor TF IDF.
  • Acesta prezice etichetele de testare, apoi tipărește acuratețea și un raport de clasificare detaliat care arată cât de bine a funcționat 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  ))   

Ieșire:

IeșireIeșire

Pasul 10: Antrenează modelul de regresie logistică

  • Acest cod antrenează a Regresia logistică model cu până la 100 de iterații ale caracteristicilor TF IDF.
  • Acesta prezice etichetele de sentiment pentru datele de testare și tipărește raportul de precizie și clasificare detaliat pentru evaluarea modelului.
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  ))   

Ieșire:

IeșireIeșire

Pasul 11: Faceți predicții pe exemple de tweet-uri

  • Acest cod preia trei eșantion de tweet-uri și le transformă în caracteristici TF IDF folosind același vectorizator.
  • Apoi prezice sentimentul lor folosind modelele antrenate BernoulliNB SVM și Logistic Regression și tipărește rezultatele pentru fiecare clasificator.
  • Unde 1 înseamnă pozitiv și 0 pentru negativ.
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  ))   

Ieșire:

IeșireIeșire

Putem vedea că modelele noastre funcționează bine și oferă aceleași predicții chiar și cu abordări diferite.

Puteți descărca codul sursă de aici - Analiza sentimentelor Twitter folosind Python

Creați un test