logo

Analýza sentimentu Twitter pomocou Pythonu

Analýza sentimentu na Twitteri je proces používania Pythonu na automatické pochopenie emócií alebo názorov vyjadrených v tweetoch. Analýzou textu môžeme tweety klasifikovať ako pozitívne negatívne alebo neutrálne. To pomáha podnikom a výskumníkom sledovať verejnú náladu značky alebo reakcie na udalosti v reálnom čase. Knižnice Pythonu ako TextBlob Tweepy a NLTK uľahčujú zhromažďovanie tweetov, spracovávajú text a efektívne vykonávajú analýzu sentimentu. Analýza sentimentu Twitter pomocou Pythonu

Ako je analýza sentimentu na Twitteri užitočná?

  • Analýza sentimentu na Twitteri je dôležitá, pretože pomáha ľuďom a firmám pochopiť, čo si verejnosť myslí v reálnom čase.
  • Každý deň sa zverejňujú milióny tweetov, v ktorých sa zdieľajú názory na udalosti značiek produktov alebo sociálne problémy. Analýzou tohto obrovského toku údajov môžu spoločnosti merať trendy na mieste spokojnosti zákazníkov, rýchlo zvládnuť negatívnu spätnú väzbu a robiť lepšie rozhodnutia na základe toho, ako sa ľudia skutočne cítia.
  • Pre výskumníkov a vlády je tiež užitočné monitorovať náladu verejnosti počas volebných kríz alebo veľkých udalostí, pretože surové tweety premieňajú na cenné informácie.

Krok za krokom implementácia

Krok 1: Nainštalujte potrebné knižnice

Tento blok nainštaluje a importuje požadované knižnice. Používa sa pandy na načítanie a spracovanie údajov TfidfVectorizer zmeniť text na čísla a scikit učiť sa trénovať model.

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 

Krok 2: Načítajte množinu údajov

  • Tu načítame Súbor údajov Sentiment140 zo zazipovaného súboru CSV si ho môžete stiahnuť z Kaggle.
  • Zachovávame iba polaritu a stĺpce textu tweetu ich pre prehľadnosť premenujeme a vytlačíme niekoľko prvých riadkov na kontrolu údajov.
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()) 

výstup:



Výstup' loading='lazy' title=Výstup

Krok 3: Udržujte iba pozitívne a negatívne pocity

  • Tu odstraňujeme neutrálne tweety, kde polarita je 2, mapuje štítky, takže 0 zostáva záporná a 4 sa stáva 1 kladnou.
  • Potom vytlačíme, koľko pozitívnych a negatívnych tweetov zostalo v údajoch.
Python
df = df[df.polarity != 2] df['polarity'] = df['polarity'].map({0: 0 4: 1}) print(df['polarity'].value_counts()) 

výstup:

Snímka obrazovky-2025-07-09-092140' loading='lazy' title=Výstup

Krok 4: Vyčistite tweety

  • Tu definujeme jednoduchú funkciu na konverziu celého textu na malé písmená, aby sa zabezpečila konzistentnosť, aplikovaná na každý tweet v množine údajov.
  • Potom zobrazí pôvodné a vyčistené verzie niekoľkých prvých tweetov.
Python
def clean_text(text): return text.lower() df['clean_text'] = df['text'].apply(clean_text) print(df[['text' 'clean_text']].head()) 

výstup:

Výstup' loading='lazy' title=Výstup

Krok 5: Rozdelenie testu vlaku

  • Tento kód rozdeľuje stĺpce clean_text a polarity na tréningové a testovacie sady pomocou rozdelenia 80/20.
  • random_state=42 zaisťuje reprodukovateľnosť.
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)) 

výstup:

Veľkosť vlaku: 1280000
Veľkosť testu: 320 000

Krok 6: Vykonajte vektorizáciu

  • Tento kód vytvára vektorizér TF IDF, ktorý konvertuje text na numerické prvky pomocou unigramov a bigramov obmedzených na 5000 prvkov.
  • Prispôsobí a transformuje trénovacie údaje a transformuje testovacie údaje a potom vytlačí tvary výsledných matíc 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) 

výstup:

Tvar TF-IDF (vlak): (1280000 5000)
Tvar TF-IDF (test): (320 000 5 000)

Krok 7: Trénujte model Bernoulli Naive Bayes

  • Tu trénujeme a Bernoulli Naivný Bayes klasifikátor na vlastnostiach TF IDF z tréningových údajov.
  • Predpovedá pocity pre testovacie údaje a potom vytlačí presnosť a podrobnú klasifikačnú správu.
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)) 

výstup:

Výstup' loading='lazy' title=Výstup

Krok 9: Model vlakového podporného vektorového stroja (SVM).

  • Tento kód trénuje a Support Vector Machine (SVM) s maximálne 1000 iteráciami na vlastnostiach TF IDF.
  • Predpovedá testovacie štítky a potom vytlačí presnosť a podrobnú klasifikačnú správu ukazujúcu, ako dobre fungoval 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)) 

výstup:

porovnať s javou
Výstup' loading='lazy' title=Výstup

Krok 10: Trénujte model logistickej regresie

  • Tento kód trénuje a Logistická regresia model s až 100 iteráciami na vlastnostiach TF IDF.
  • Predpovedá štítky sentimentu pre testovacie údaje a vytlačí presnú a podrobnú klasifikačnú správu na vyhodnotenie modelu.
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)) 

výstup:

Výstup' loading='lazy' title=Výstup

Krok 11: Urobte predpovede na vzorových Tweetoch

  • Tento kód vezme tri vzorové tweety a transformuje ich na funkcie TF IDF pomocou rovnakého vektorizátora.
  • Potom predpovedá ich sentiment pomocou trénovaných modelov BernoulliNB SVM a Logistic Regression a vytlačí výsledky pre každý klasifikátor.
  • Kde 1 znamená pozitívny a 0 negatívny.
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)) 

výstup:

Výstup' loading='lazy' title=Výstup

Vidíme, že naše modely fungujú dobre a poskytujú rovnaké predpovede aj pri rôznych prístupoch.

Zdrojový kód si môžete stiahnuť tu - Analýza sentimentu Twitter pomocou Pythonu

Vytvoriť kvíz