logo

Analiza razpoloženja na Twitterju z uporabo Pythona

Analiza razpoloženja na Twitterju je postopek uporabe Pythona za samodejno razumevanje čustev ali mnenj, izraženih v tvitih. Z analizo besedila lahko tvite razvrstimo na pozitivne negativne ali nevtralne. To podjetjem in raziskovalcem pomaga spremljati ugled blagovne znamke v javnem razpoloženju ali reakcije na dogodke v realnem času. Knjižnice Python, kot sta TextBlob Tweepy in NLTK, olajšajo zbiranje tvitov, obdelajo besedilo in učinkovito izvajajo analizo razpoloženja. Analiza razpoloženja na Twitterju z uporabo Pythona

Kako je koristna analiza razpoloženja na Twitterju?

  • Analiza razpoloženja na Twitterju je pomembna, ker ljudem in podjetjem pomaga razumeti, kaj si javnost misli v realnem času.
  • Vsak dan je objavljenih na milijone tvitov, ki delijo mnenja o dogodkih izdelkov blagovnih znamk ali družbenih vprašanjih. Z analizo tega ogromnega toka podatkov lahko podjetja zgodaj izmerijo trende zadovoljstva strank, hitro obravnavajo negativne povratne informacije in sprejemajo boljše odločitve na podlagi tega, kako se ljudje dejansko počutijo.
  • Prav tako je koristno za raziskovalce in vlade, da spremljajo javno razpoloženje med volilnimi krizami ali velikimi dogodki, saj neobdelane tvite spremeni v dragocene vpoglede.

Implementacija po korakih

1. korak: Namestite potrebne knjižnice

Ta blok namesti in uvozi zahtevane knjižnice. Uporablja se pande za nalaganje in obdelavo podatkov TfidfVectorizer spremeniti besedilo v številke in scikit nauči se usposobiti 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 

2. korak: Naložite nabor podatkov

  • Tukaj naložimo Nabor podatkov Sentiment140 iz stisnjene datoteke CSV, ki jo lahko prenesete iz Kaggle.
  • Hranimo samo stolpce s polarnostjo in besedilom tweeta, jih preimenujemo zaradi jasnosti in natisnemo prvih nekaj vrstic, da preverimo podatke.
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()) 

Izhod:



Izhod' loading='lazy' title=Izhod

3. korak: Ohranite samo pozitivna in negativna čustva

  • Tukaj odstranimo nevtralne tvite, kjer je polarnost 2, preslika oznake, tako da 0 ostane negativna, 4 pa postane 1 za pozitivno.
  • Nato natisnemo, koliko pozitivnih in negativnih tvitov je ostalo v podatkih.
Python
df = df[df.polarity != 2] df['polarity'] = df['polarity'].map({0: 0 4: 1}) print(df['polarity'].value_counts()) 

Izhod:

Posnetek zaslona-2025-07-09-092140' loading='lazy' title=Izhod

4. korak: Očistite tvite

  • Tukaj definiramo preprosto funkcijo za pretvorbo vsega besedila v male črke zaradi skladnosti, ki jo uporabi za vsak tvit v naboru podatkov.
  • Nato prikaže izvirne in očiščene različice prvih nekaj tvitov.
Python
def clean_text(text): return text.lower() df['clean_text'] = df['text'].apply(clean_text) print(df[['text' 'clean_text']].head()) 

Izhod:

Izhod' loading='lazy' title=Izhod

5. korak: Testna delitev vlaka

  • Ta koda razdeli stolpca clean_text in polarnost v nize za usposabljanje in testiranje z uporabo razdelitve 80/20.
  • random_state=42 zagotavlja 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)) 

Izhod:

Velikost vlaka: 1280000
Preizkusna velikost: 320000

6. korak: Izvedite vektorizacijo

  • Ta koda ustvari vektorizator TF IDF, ki pretvori besedilo v numerične funkcije z uporabo unigramov in bigramov, omejenih na 5000 funkcij.
  • Prilega in preoblikuje podatke o usposabljanju in preoblikuje testne podatke ter nato natisne oblike dobljenih matrik 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) 

Izhod:

Oblika TF-IDF (vlak): (1280000 5000)
Oblika TF-IDF (test): (320000 5000)

7. korak: Usposobite Bernoullijev naivni Bayesov model

  • Tukaj treniramo a Bernoullijev naivni Bayes klasifikatorja o funkcijah TF IDF iz podatkov o usposabljanju.
  • Napove razpoloženja za testne podatke in nato natisne točnost in podrobno poročilo 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)) 

Izhod:

Izhod' loading='lazy' title=Izhod

Korak 9: Model Train Support Vector Machine (SVM).

  • Ta koda usposablja a Podporni vektorski stroj (SVM) z največ 1000 ponovitvami funkcij TF IDF.
  • Predvidi testne nalepke, nato natisne točnost in podrobno poročilo o klasifikaciji, ki prikazuje, kako dobro je deloval 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)) 

Izhod:

preprost program python
Izhod' loading='lazy' title=Izhod

10. korak: Usposobite model logistične regresije

  • Ta koda usposablja a Logistična regresija model z do 100 ponovitvami funkcij TF IDF.
  • Predvidi oznake razpoloženja za testne podatke in natisne poročilo o natančnosti in podrobni klasifikaciji za oceno 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)) 

Izhod:

Izhod' loading='lazy' title=Izhod

11. korak: Naredite napovedi na podlagi vzorčnih tvitov

  • Ta koda vzame tri vzorčne tvite in jih pretvori v funkcije TF IDF z uporabo istega vektorizatorja.
  • Nato napove njihovo razpoloženje z uporabo usposobljenih modelov BernoulliNB SVM in logistične regresije ter natisne rezultate za vsak klasifikator.
  • Pri čemer 1 pomeni pozitivno in 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)) 

Izhod:

Izhod' loading='lazy' title=Izhod

Vidimo lahko, da naši modeli dobro delujejo in dajejo enake napovedi tudi z različnimi pristopi.

Izvorno kodo lahko prenesete tukaj- Analiza razpoloženja na Twitterju z uporabo Pythona

Ustvari kviz