logo

Twitter noskaņojuma analīze, izmantojot Python

Twitter noskaņojuma analīze ir process, kurā tiek izmantots Python, lai automātiski izprastu tvītā paustās emocijas vai viedokļus. Analizējot tekstu, mēs varam klasificēt tvītus kā pozitīvus negatīvus vai neitrālus. Tas palīdz uzņēmumiem un pētniekiem reāllaikā izsekot sabiedriskā noskaņojuma zīmola reputācijai vai reakcijai uz notikumiem. Python bibliotēkas, piemēram, TextBlob Tweepy un NLTK, ļauj viegli apkopot tvītus, apstrādāt tekstu un veikt efektīvu noskaņojuma analīzi. Twitter noskaņojuma analīze, izmantojot Python

Kā Twitter noskaņojuma analīze ir noderīga?

  • Twitter noskaņojuma analīze ir svarīga, jo tā palīdz cilvēkiem un uzņēmumiem saprast, ko sabiedrība domā reāllaikā.
  • Katru dienu tiek publicēti miljoniem tvītu, kuros dalās viedokļi par zīmolu produktu notikumiem vai sociālajām problēmām. Analizējot šo milzīgo datu plūsmu, uzņēmumi var izmērīt klientu apmierinātības pamanīšanas tendences, lai ātri apstrādātu negatīvās atsauksmes un pieņemtu labākus lēmumus, pamatojoties uz to, kā cilvēki patiesībā jūtas.
  • Pētniekiem un valdībām ir arī noderīgi uzraudzīt sabiedrības noskaņojumu vēlēšanu krīžu vai lielu notikumu laikā, jo tas pārvērš neapstrādātus tvītus vērtīgos ieskatos.

Soli pa solim ieviešana

1. darbība. Instalējiet nepieciešamās bibliotēkas

Šis bloks instalē un importē vajadzīgās bibliotēkas. Tā izmanto pandas lai ielādētu un apstrādātu datus TfidfVektorizer lai tekstu pārvērstu skaitļos un scikit mācīties apmācīt modeli.

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. darbība: ielādējiet datu kopu

  • Šeit mēs ielādējam Sentiment140 datu kopa no zip CSV faila varat to lejupielādēt no Kaggle.
  • Mēs saglabājam tikai polaritāti, un tvīta teksta kolonnas tās pārdēvē skaidrības labad un izdrukā dažas pirmās rindas, lai pārbaudītu datus.
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()) 

Izvade:



Izvade' loading='lazy' title=Izvade

3. darbība: saglabājiet tikai pozitīvas un negatīvas noskaņas

  • Šeit mēs noņemam neitrālos tvītus, kur polaritāte ir 2, iezīmē etiķetes, tāpēc 0 paliek negatīva, bet 4 kļūst par 1 pozitīvai.
  • Pēc tam izdrukājam, cik pozitīvo un negatīvo tvītu ir palicis datos.
Python
df = df[df.polarity != 2] df['polarity'] = df['polarity'].map({0: 0 4: 1}) print(df['polarity'].value_counts()) 

Izvade:

Ekrānuzņēmums-2025-07-09-092140' loading='lazy' title=Izvade

4. darbība: notīriet tvītus

  • Šeit mēs definējam vienkāršu funkciju, lai visu tekstu pārveidotu par mazajiem burtiem, lai nodrošinātu konsekvenci, to piemēro katram datu kopas tvītam.
  • Pēc tam tiek rādītas dažu pirmo tvītu sākotnējās un notīrītās versijas.
Python
def clean_text(text): return text.lower() df['clean_text'] = df['text'].apply(clean_text) print(df[['text' 'clean_text']].head()) 

Izvade:

Izvade' loading='lazy' title=Izvade

5. darbība: vilciena testa sadalījums

  • Šis kods sadala tīrā_teksta un polaritātes kolonnas apmācības un testēšanas komplektos, izmantojot 80/20 sadalījumu.
  • random_state=42 nodrošina reproducējamību.
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)) 

Izvade:

Vilciena izmērs: 1280000
Testa izmērs: 320000

6. darbība: veiciet vektorizāciju

  • Šis kods izveido TF IDF vektorizētāju, kas pārvērš tekstu skaitļos, izmantojot unigrammas un bigrammas, kuru skaits ir ierobežots līdz 5000 elementiem.
  • Tas pielāgo un pārveido apmācības datus un pārveido testa datus un pēc tam izdrukā iegūto TF IDF matricu formas.
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) 

Izvade:

TF-IDF forma (vilciens): (1280000 5000)
TF-IDF forma (pārbaude): (320000 5000)

7. solis: apmāciet Bernulli Naive Bayes modeli

  • Šeit mēs apmācām a Bernulli Naive Bayes klasifikators par TF IDF līdzekļiem no apmācības datiem.
  • Tas prognozē testa datu noskaņojumu un pēc tam izdrukā precizitāti un detalizētu klasifikācijas ziņojumu.
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)) 

Izvade:

Izvade' loading='lazy' title=Izvade

9. darbība. Apmācības atbalsta vektora mašīnas (SVM) modelis

  • Šis kods apmāca a Atbalsta vektora mašīnu (SVM) ar ne vairāk kā 1000 iterācijām TF IDF līdzekļiem.
  • Tas paredz testa uzlīmes, pēc tam izdrukā precizitāti un detalizētu klasifikācijas ziņojumu, kas parāda, cik labi SVM darbojās.
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)) 

Izvade:

virkņu masīvs c valodā
Izvade' loading='lazy' title=Izvade

10. darbība: apmāciet loģistikas regresijas modeli

  • Šis kods apmāca a Loģistiskā regresija modelis ar līdz pat 100 iterācijām TF IDF funkcijām.
  • Tas paredz testa datu noskaņojuma etiķetes un izdrukā precizitāti un detalizētu klasifikācijas ziņojumu modeļa novērtēšanai.
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)) 

Izvade:

Izvade' loading='lazy' title=Izvade

11. darbība. Veiciet prognozes par tvītu paraugiem

  • Šis kods ņem trīs paraugus tvītus un pārveido tos TF IDF funkcijās, izmantojot to pašu vektorizētāju.
  • Pēc tam tas prognozē viņu noskaņojumu, izmantojot apmācītos BernoulliNB SVM un loģistikas regresijas modeļus, un izdrukā katra klasifikatora rezultātus.
  • Kur 1 apzīmē pozitīvu un 0 negatīvu.
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)) 

Izvade:

Izvade' loading='lazy' title=Izvade

Mēs redzam, ka mūsu modeļi darbojas labi un sniedz vienādas prognozes pat ar dažādām pieejām.

Jūs varat lejupielādēt avota kodu no šejienes - Twitter noskaņojuma analīze, izmantojot Python

Izveidojiet viktorīnu