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. 
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.
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
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.
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:
Izhod3. 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.
df = df[df.polarity != 2] df['polarity'] = df['polarity'].map({0: 0 4: 1}) print(df['polarity'].value_counts())
Izhod:
Izhod4. 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.
def clean_text(text): return text.lower() df['clean_text'] = df['text'].apply(clean_text) print(df[['text' 'clean_text']].head())
Izhod:
Izhod5. 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.
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.
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.
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:
IzhodKorak 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.
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
Izhod10. 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.
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:
Izhod11. 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.
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:
IzhodVidimo lahko, da naši modeli dobro delujejo in dajejo enake napovedi tudi z različnimi pristopi.
Ustvari kvizIzvorno kodo lahko prenesete tukaj- Analiza razpoloženja na Twitterju z uporabo Pythona