ניתוח סנטימנטים של טוויטר באמצעות Python

ניתוח סנטימנטים של טוויטר באמצעות Python

ניתוח סנטימנטים של טוויטר הוא תהליך השימוש ב-Python כדי להבין את הרגשות או הדעות המובעים בציוצים באופן אוטומטי. על ידי ניתוח הטקסט נוכל לסווג ציוצים כשליליים חיוביים או ניטרליים. זה עוזר לעסקים ולחוקרים לעקוב אחר המוניטין של מותג מצב הרוח הציבורי או התגובות לאירועים בזמן אמת. ספריות Python כמו TextBlob Tweepy ו- NLTK מקלות על איסוף ציוצים לעבד את הטקסט ולבצע ניתוח סנטימנט ביעילות. ניתוח סנטימנטים של טוויטר באמצעות Python

כיצד ניתוח סנטימנטים של טוויטר שימושי?

  • ניתוח סנטימנטים בטוויטר חשוב מכיוון שהוא עוזר לאנשים ועסקים להבין מה הציבור חושב בזמן אמת.
  • מיליוני ציוצים מתפרסמים מדי יום וחולקים דעות על אירועי מותגים או נושאים חברתיים. על ידי ניתוח זרם נתונים עצום זה, חברות יכולות למדוד את מגמות שביעות רצון לקוחות מוקדם לטפל במשוב שלילי במהירות ולקבל החלטות טובות יותר על סמך איך אנשים מרגישים בפועל.
  • זה גם שימושי לחוקרים ולממשלות לעקוב אחר מצב הרוח הציבורי במהלך משברי בחירות או אירועים גדולים שכן זה הופך ציוצים גולמיים לתובנות חשובות.

יישום צעד אחר צעד

שלב 1: התקן את הספריות הדרושות

בלוק זה מתקין ומייבא את הספריות הנדרשות. זה משתמש פנדות לטעון ולטפל בנתונים TfidfVectorizer להפוך טקסט למספרים ו סקיט ללמוד להכשיר מודל.

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: טען מערך נתונים

  • כאן אנו טוענים את מערך נתונים של Sentiment140 מקובץ CSV דחוס אתה יכול להוריד אותו מ- Kaggle.
  • אנו שומרים רק על הקוטביות ועמודות הטקסט של הציוץ משנים את שמותיהם לצורך הבהירות ומדפיסים את השורות הראשונות כדי לבדוק את הנתונים.
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  ())   

תְפוּקָה:

תְפוּקָהתְפוּקָה

שלב 3: שמור רק על רגשות חיוביים ושליליים

  • כאן אנו מסירים ציוצים ניטרליים שבהם הקוטביות היא 2 ממפה את התוויות כך ש-0 נשאר שלילי ו-4 הופך ל-1 עבור חיובי.
  • לאחר מכן אנו מדפיסים כמה ציוצים חיוביים ושליליים נותרו בנתונים.
Python
   df   =   df  [  df  .  polarity   !=   2  ]   df  [  'polarity'  ]   =   df  [  'polarity'  ]  .  map  ({  0  :   0     4  :   1  })   print  (  df  [  'polarity'  ]  .  value_counts  ())   

תְפוּקָה:

צילום מסך-2025-07-09-092140תְפוּקָה

שלב 4: נקה את הציוצים

  • כאן אנו מגדירים פונקציה פשוטה להמרת כל הטקסט לאותיות קטנות כדי להחיל אותה על כל ציוץ במערך הנתונים.
  • ואז מציג את הגירסאות המקוריות והנקיות של הציוצים הראשונים.
Python
   def   clean_text  (  text  ):   return   text  .  lower  ()   df  [  'clean_text'  ]   =   df  [  'text'  ]  .  apply  (  clean_text  )   print  (  df  [[  'text'     'clean_text'  ]]  .  head  ())   

תְפוּקָה:

תְפוּקָהתְפוּקָה

שלב 5: פיצול מבחן הרכבת

  • קוד זה מפצל את עמודות ה-clean_text והקוטביות לקבוצות אימון ובדיקות באמצעות פיצול של 80/20.
  • random_state=42 מבטיח שחזור.
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  ))   

תְפוּקָה:

גודל רכבת: 1280000
גודל בדיקה: 320000

שלב 6: בצע וקטוריזציה

  • קוד זה יוצר וקטורייזר TF IDF הממיר טקסט לתכונות מספריות באמצעות אוניגרמות וביגרמות מוגבלות ל-5000 תכונות.
  • זה מתאים והופך את נתוני האימון והופך את נתוני הבדיקה ולאחר מכן מדפיס את הצורות של מטריצות 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  )   

תְפוּקָה:

צורת TF-IDF (רכבת): (1280000 5000)
צורת TF-IDF (בדיקה): (320000 5000)

שלב 7: הרכבת דגם ברנולי נאיבי בייס

  • כאן אנו מאמנים א ברנולי נאיב בייס מסווג על תכונות TF צה"ל מנתוני האימונים.
  • הוא חוזה סנטימנטים עבור נתוני הבדיקה ולאחר מכן מדפיס את הדיוק ודוח סיווג מפורט.
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  ))   

תְפוּקָה:

תְפוּקָהתְפוּקָה

שלב 9: הרכבת דגם מכונה וקטור תמיכה (SVM).

  • קוד זה מאמן את א תמיכה ב-Vector Machine (SVM) עם מקסימום 1000 איטרציות על תכונות TF IDF.
  • הוא מנבא תוויות בדיקה ואז מדפיס את הדיוק ודוח סיווג מפורט המציג את ביצועי ה-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  ))   

תְפוּקָה:

תְפוּקָהתְפוּקָה

שלב 10: הרכבת מודל רגרסיה לוגיסטית

  • קוד זה מאמן את א רגרסיה לוגיסטית דגם עם עד 100 איטרציות על תכונות TF IDF.
  • הוא מנבא תוויות סנטימנט עבור נתוני הבדיקה ומדפיס את דוח הדיוק והסיווג המפורט להערכת המודל.
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  ))   

תְפוּקָה:

תְפוּקָהתְפוּקָה

שלב 11: בצע תחזיות על ציוצים לדוגמה

  • קוד זה לוקח שלושה ציוצים לדוגמה והופך אותם לתכונות TF IDF באמצעות אותו וקטורייזר.
  • לאחר מכן, הוא חוזה את הסנטימנט שלהם באמצעות המודלים המיומנים של BernoulliNB SVM ושל רגרסיה לוגיסטית ומדפיס את התוצאות עבור כל מסווג.
  • כאשר 1 מייצג חיובי ו-0 עבור שלילי.
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  ))   

תְפוּקָה:

תְפוּקָהתְפוּקָה

אנו יכולים לראות שהמודלים שלנו עובדים מצוין ונותנים תחזיות זהות אפילו עם גישות שונות.

אתה יכול להוריד את קוד המקור מכאן- ניתוח סנטימנטים של טוויטר באמצעות Python

צור חידון