Аналіз настроїв Twitter за допомогою Python

Аналіз настроїв Twitter за допомогою Python

Аналіз настроїв у Твіттері — це процес використання Python для автоматичного розуміння емоцій або думок, висловлених у твітах. Аналізуючи текст, ми можемо класифікувати твіти як позитивні, негативні або нейтральні. Це допомагає компаніям і дослідникам відстежувати суспільний настрій, репутацію бренду або реакцію на події в реальному часі. Бібліотеки Python, такі як TextBlob Tweepy та NLTK, спрощують збір твітів, обробку тексту та ефективний аналіз настроїв. Аналіз настроїв Twitter за допомогою Python

Чим корисний аналіз настроїв у Twitter?

  • Аналіз настроїв у Twitter важливий, оскільки він допомагає людям і компаніям зрозуміти, що думає громадськість у реальному часі.
  • Щодня публікуються мільйони твітів, у яких діляться думками про події брендів, продукти чи соціальні проблеми. Аналізуючи цей величезний потік даних, компанії можуть на ранній стадії вимірювати тенденції задоволеності клієнтів, швидко реагувати на негативні відгуки та приймати кращі рішення на основі того, як люди насправді почуваються.
  • Дослідникам і урядам також корисно відстежувати суспільні настрої під час виборчих криз або великих подій, оскільки це перетворює необроблені твіти на цінну інформацію.

Покрокове впровадження

Крок 1: Встановіть необхідні бібліотеки

Цей блок встановлює та імпортує необхідні бібліотеки. Це використовує панди для завантаження та обробки даних TfidfVectorizer перетворити текст на числа та scikit навчитися тренувати модель.

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 і polarity на навчальні та тестові набори за допомогою розподілу 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 IDF з навчальних даних.
  • Він передбачає настрої для даних тесту, а потім друкує точність і детальний звіт про класифікацію.
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: модель Train Support Vector Machine (SVM).

  • Цей код навчає a Машина підтримки векторів (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: Навчіть модель логістичної регресії

  • Цей код навчає a Логістична регресія модель із до 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  ))   

Вихід:

ВихідВихід

Ми бачимо, що наші моделі добре працюють і дають однакові прогнози навіть із різними підходами.

Ви можете завантажити вихідний код тут- Аналіз настроїв Twitter за допомогою Python

Створіть вікторину