logo

Analýza sentimentu Twitter pomocí Pythonu

Twitter Sentiment Analysis je proces, při kterém se pomocí Pythonu automaticky porozumí emocím nebo názorům vyjádřeným v tweetech. Analýzou textu můžeme tweety klasifikovat jako pozitivní negativní nebo neutrální. To pomáhá podnikům a výzkumníkům sledovat veřejnou náladu značky nebo reakce na události v reálném čase. Knihovny Pythonu jako TextBlob Tweepy a NLTK usnadňují shromažďování tweetů, zpracovávají text a efektivně provádějí analýzu sentimentu. Analýza sentimentu Twitter pomocí Pythonu

Jak je analýza sentimentu Twitter užitečná?

  • Twitter Sentiment Analysis je důležitá, protože pomáhá lidem a firmám pochopit, co si veřejnost myslí v reálném čase.
  • Každý den jsou zveřejňovány miliony tweetů, které sdílejí názory na události značek produktů nebo sociální problémy. Analýzou tohoto obrovského proudu dat mohou společnosti měřit spotové trendy spokojenosti zákazníků, rychle zvládat negativní zpětnou vazbu a činit lepší rozhodnutí na základě toho, jak se lidé skutečně cítí.
  • Pro výzkumníky a vlády je také užitečné sledovat náladu veřejnosti během volebních krizí nebo velkých událostí, protože surové tweety proměňují v cenné poznatky.

Krok za krokem implementace

Krok 1: Nainstalujte potřebné knihovny

Tento blok nainstaluje a importuje požadované knihovny. Používá pandy k načítání a zpracování dat TfidfVectorizer převést text na čísla a scikit učit se trénovat 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čtěte datovou sadu

  • Zde načteme Datový soubor Sentiment140 ze zazipovaného souboru CSV si jej můžete stáhnout z Kaggle.
  • Ponecháváme pouze polaritu a sloupce textu tweetu je pro přehlednost přejmenujeme a vytiskneme několik prvních řádků pro kontrolu dat.
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 pouze pozitivní a negativní pocity

  • Zde odstraníme neutrální tweety, kde polarita je 2, mapuje štítky, takže 0 zůstane negativní a 4 se stane 1 pro pozitivní.
  • Poté vytiskneme, kolik pozitivních a negativních tweetů zbývá v datech.
Python
df = df[df.polarity != 2] df['polarity'] = df['polarity'].map({0: 0 4: 1}) print(df['polarity'].value_counts()) 

výstup:

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

Krok 4: Vyčistěte tweety

  • Zde definujeme jednoduchou funkci pro převod veškerého textu na malá písmena, aby byla zajištěna konzistence, aplikovaná na každý tweet v datové sadě.
  • Poté zobrazí původní a vyčištěné verze prvních několika tweetů.
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: Trénujte testovací rozdělení

  • Tento kód rozděluje sloupce clean_text a polarity do školicích a testovacích sad pomocí rozdělení 80/20.
  • random_state=42 zajišťuje reprodukovatelnost.
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:

Velikost vlaku: 1280000
Velikost testu: 320 000

Krok 6: Proveďte vektorizaci

  • Tento kód vytváří vektorizátor TF IDF, který převádí text na numerické prvky pomocí unigramů a bigramů omezených na 5000 prvků.
  • Přizpůsobí a transformuje trénovací data a transformuje testovací data a poté vytiskne tvary výsledných TF IDF matic.
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): (320000 5000)

Krok 7: Trénujte model Bernoulli Naive Bayes

  • Zde trénujeme a Bernoulli Naivní Bayes klasifikátor na vlastnostech TF IDF z trénovacích dat.
  • Předpovídá pocity pro testovací data a poté vytiskne přesnost a podrobnou klasifikační zprá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 podpůrného vektorového stroje (SVM).

  • Tento kód trénuje a Support Vector Machine (SVM) s maximálně 1000 iteracemi na vlastnostech TF IDF.
  • Předpovídá testovací štítky a poté vytiskne přesnost a podrobnou klasifikační zprávu ukazující, jak dobře SVM fungoval.
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:

regexp_like v mysql
Výstup' loading='lazy' title=Výstup

Krok 10: Trénujte model logistické regrese

  • Tento kód trénuje a Logistická regrese model s až 100 iteracemi na funkcích TF IDF.
  • Předpovídá štítky sentimentu pro testovací data a vytiskne zprávu o přesnosti a podrobné klasifikaci pro vyhodnocení 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: Proveďte předpovědi na ukázkové tweety

  • Tento kód vezme tři ukázkové tweety a transformuje je do funkcí TF IDF pomocí stejného vektorizátoru.
  • Poté předpovídá jejich sentiment pomocí trénovaných modelů BernoulliNB SVM a Logistic Regression a vytiskne výsledky pro každý klasifikátor.
  • Kde 1 znamená kladný a 0 záporný.
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í dobře a poskytují stejné předpovědi i s různými přístupy.

Zdrojový kód si můžete stáhnout zde - Analýza sentimentu Twitter pomocí Pythonu

Vytvořit kvíz