logo

Анализ на настроението в Twitter с помощта на Python

Анализът на настроението в Twitter е процес на използване на 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()) 

Изход:



Изход' loading='lazy' title=Изход

Стъпка 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' loading='lazy' title=Изход

Стъпка 4: Почистете туитовете

  • Тук дефинираме проста функция за преобразуване на целия текст в малки букви за последователност, която я прилага към всеки туит в набора от данни.
  • След това показва оригиналните и изчистени версии на първите няколко туита.
Python
def clean_text(text): return text.lower() df['clean_text'] = df['text'].apply(clean_text) print(df[['text' 'clean_text']].head()) 

Изход:

Изход' loading='lazy' title=Изход

Стъпка 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=(12)) 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: Тренирайте модела на Бернули Наивен Бейс

  • Тук тренираме a Наивен Байес на Бернули класификатор на характеристиките на 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('nBernoulliNB Classification Report:n' classification_report(y_test bnb_pred)) 

Изход:

Изход' loading='lazy' title=Изход

Стъпка 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('nSVM Classification Report:n' classification_report(y_test svm_pred)) 

Изход:

съюз срещу всички съюз
Изход' loading='lazy' title=Изход

Стъпка 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('nLogistic Regression Classification Report:n' classification_report(y_test logreg_pred)) 

Изход:

Изход' loading='lazy' title=Изход

Стъпка 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('nSample Predictions:') print('BernoulliNB:' bnb.predict(sample_vec)) print('SVM:' svm.predict(sample_vec)) print('Logistic Regression:' logreg.predict(sample_vec)) 

Изход:

Изход' loading='lazy' title=Изход

Виждаме, че нашите модели работят добре и дават едни и същи прогнози дори с различни подходи.

Можете да изтеглите изходния код от тук- Анализ на настроението в Twitter с помощта на Python

Създаване на тест