logo

Analiza raspoloženja na Twitteru pomoću Pythona

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. Analiza raspoloženja na Twitteru pomoću Pythona

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.

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 

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.
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()) 

Izlaz:



Izlaz' loading='lazy' title=Izlaz

Korak 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.
Python
df = df[df.polarity != 2] df['polarity'] = df['polarity'].map({0: 0 4: 1}) print(df['polarity'].value_counts()) 

Izlaz:

Snimka zaslona-2025-07-09-092140' loading='lazy' title=Izlaz

Korak 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.
Python
def clean_text(text): return text.lower() df['clean_text'] = df['text'].apply(clean_text) print(df[['text' 'clean_text']].head()) 

Izlaz:

Izlaz' loading='lazy' title=Izlaz

Korak 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.
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)) 

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.
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) 

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.
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)) 

Izlaz:

Izlaz' loading='lazy' title=Izlaz

Korak 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.
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)) 

Izlaz:

java kodiranje if else iskaz
Izlaz' loading='lazy' title=Izlaz

Korak 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.
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)) 

Izlaz:

Izlaz' loading='lazy' title=Izlaz

Korak 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.
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)) 

Izlaz:

Izlaz' loading='lazy' title=Izlaz

Vidimo da naši modeli dobro funkcioniraju i da daju ista predviđanja čak i s različitim pristupima.

Možete preuzeti izvorni kod ovdje- Analiza raspoloženja na Twitteru pomoću Pythona

Napravi kviz