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. 
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.
Pythonpip 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.
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ýstupKrok 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.
df = df[df.polarity != 2] df['polarity'] = df['polarity'].map({0: 0 4: 1}) print(df['polarity'].value_counts())
výstup:
VýstupKrok 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ů.
def clean_text(text): return text.lower() df['clean_text'] = df['text'].apply(clean_text) print(df[['text' 'clean_text']].head())
výstup:
VýstupKrok 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.
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.
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.
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ýstupKrok 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.
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ýstupKrok 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.
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ýstupKrok 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ý.
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ýstupVidíme, že naše modely fungují dobře a poskytují stejné předpovědi i s různými přístupy.
Vytvořit kvízZdrojový kód si můžete stáhnout zde - Analýza sentimentu Twitter pomocí Pythonu