Analiza raspoloženja na Twitteru proces je korištenja Pythona za automatsko razumijevanje emocija ili mišljenja izraženih u tweetovima. Analizom teksta tweetove možemo klasificirati kao pozitivne negativne ili neutralne. To pomaže tvrtkama i istraživačima da prate reputaciju brenda raspoloženja javnosti ili reakcije na događaje u stvarnom vremenu. Python biblioteke poput TextBlob Tweepy i NLTK olakšavaju prikupljanje tweetova, obradu teksta i učinkovitu analizu raspoloženja. 
Kako je Twitter analiza raspoloženja korisna?
- Analiza raspoloženja na Twitteru važna je jer pomaže ljudima i tvrtkama da razumiju što javnost misli u stvarnom vremenu.
- Milijuni tweetova objavljuju se svaki dan u kojima se dijele mišljenja o događajima proizvoda marki ili društvenim problemima. Analizom ovog ogromnog toka podataka tvrtke mogu rano mjeriti trendove zadovoljstva kupaca, brzo rješavati negativne povratne informacije i donositi bolje odluke na temelju toga kako se ljudi stvarno osjećaju.
- Također je korisno za istraživače i vlade da prate javno raspoloženje tijekom izbornih kriza ili velikih događaja jer sirove tweetove pretvara u vrijedne uvide.
Implementacija korak po korak
Korak 1: Instalirajte potrebne biblioteke
Ovaj blok instalira i uvozi potrebne biblioteke. Koristi se pande za učitavanje i rukovanje podacima TfidfVektorizator pretvoriti tekst u brojeve i scikit nauči trenirati 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
Korak 2: Učitajte skup podataka
- Ovdje učitavamo Skup podataka Sentiment140 iz komprimirane CSV datoteke koju možete preuzeti s Kagglea.
- Zadržavamo samo stupce polariteta i teksta tweeta, preimenujemo ih radi jasnoće i ispisujemo prvih nekoliko redaka za provjeru podataka.
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())
Izlaz:
IzlazKorak 3: Zadržite samo pozitivne i negativne osjećaje
- Ovdje uklanjamo neutralne tweetove gdje je polaritet 2 mapira oznake tako da 0 ostaje negativno, a 4 postaje 1 za pozitivno.
- Zatim ispisujemo koliko je pozitivnih i negativnih tweetova ostalo u podacima.
df = df[df.polarity != 2] df['polarity'] = df['polarity'].map({0: 0 4: 1}) print(df['polarity'].value_counts())
Izlaz:
IzlazKorak 4: Očistite Tweetove
- Ovdje definiramo jednostavnu funkciju za pretvaranje cijelog teksta u mala slova radi dosljednosti koja se primjenjuje na svaki tweet u skupu podataka.
- Zatim prikazuje izvorne i pročišćene verzije prvih nekoliko tweetova.
def clean_text(text): return text.lower() df['clean_text'] = df['text'].apply(clean_text) print(df[['text' 'clean_text']].head())
Izlaz:
IzlazKorak 5: Podjela testa vlaka
- Ovaj kod dijeli stupce clean_text i polarity u skupove za obuku i testiranje korištenjem podjele 80/20.
- random_state=42 osigurava ponovljivost.
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))
Izlaz:
Veličina vlaka: 1280000
Veličina testa: 320000
Korak 6: Izvedite vektorizaciju
- Ovaj kod stvara TF IDF vektorizator koji pretvara tekst u numeričke značajke pomoću unigrama i bigrama ograničenih na 5000 značajki.
- Uklapa i transformira podatke o obuci i transformira testne podatke, a zatim ispisuje oblike rezultirajućih TF IDF matrica.
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)
Izlaz:
TF-IDF oblik (vlak): (1280000 5000)
TF-IDF oblik (test): (320000 5000)
Korak 7: Obuka Bernoulli Naive Bayesovog modela
- Ovdje treniramo a Bernoulli Naivni Bayes klasifikator na značajkama TF IDF iz podataka o obuci.
- Predviđa osjećaje za testne podatke, a zatim ispisuje točnost i detaljno izvješće o klasifikaciji.
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))
Izlaz:
IzlazKorak 9: Model Vektorskog stroja za podršku vlaku (SVM).
- Ovaj kod trenira a Support Vector Machine (SVM) s maksimalno 1000 ponavljanja na TF IDF značajkama.
- Predviđa ispitne naljepnice, zatim ispisuje točnost i detaljno izvješće o klasifikaciji koje pokazuje koliko je SVM dobro radio.
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))
Izlaz:
java kodiranje if else iskaz
IzlazKorak 10: Obuka modela logističke regresije
- Ovaj kod trenira a Logistička regresija model s do 100 ponavljanja na značajkama TF IDF.
- Predviđa oznake osjećaja za testne podatke i ispisuje točnost i detaljno izvješće o klasifikaciji za procjenu modela.
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))
Izlaz:
IzlazKorak 11: Napravite predviđanja na uzorcima Tweetova
- Ovaj kod uzima tri uzorka tweetova i pretvara ih u TF IDF značajke pomoću istog vektorizatora.
- Zatim predviđa njihov sentiment koristeći uvježbane BernoulliNB SVM i modele logističke regresije i ispisuje rezultate za svaki klasifikator.
- Gdje 1 označava pozitivno, a 0 negativno.
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))
Izlaz:
IzlazVidimo da naši modeli dobro funkcioniraju i da daju ista predviđanja čak i s različitim pristupima.
Napravi kvizMožete preuzeti izvorni kod ovdje- Analiza raspoloženja na Twitteru pomoću Pythona