„Twitter“ nuotaikų analizė naudojant Python
„Twitter“ nuotaikų analizė yra „Python“ naudojimo procesas, siekiant automatiškai suprasti tviterio žinutėmis išsakytas emocijas ar nuomones. Analizuodami tekstą galime klasifikuoti tviterius kaip teigiamus neigiamus arba neutralius. Tai padeda įmonėms ir tyrėjams stebėti visuomenės nuotaikos prekės ženklo reputaciją arba reakciją į įvykius realiuoju laiku. Python bibliotekos, tokios kaip TextBlob Tweepy ir NLTK, leidžia lengvai rinkti tviterius, apdoroti tekstą ir efektyviai atlikti nuotaikų analizę.
Kuo naudinga „Twitter“ nuotaikų analizė?
- „Twitter“ nuotaikų analizė yra svarbi, nes padeda žmonėms ir įmonėms suprasti, ką visuomenė galvoja realiu laiku.
- Kiekvieną dieną skelbiama milijonai tviterinių žinučių, kuriose dalijamasi nuomonėmis apie prekės ženklų produktų įvykius ar socialines problemas. Analizuodamos šį didžiulį duomenų srautą, įmonės gali išmatuoti klientų pasitenkinimo tendencijas, greitai susidoroti su neigiamais atsiliepimais ir priimti geresnius sprendimus pagal tai, kaip žmonės iš tikrųjų jaučiasi.
- Mokslininkams ir vyriausybėms taip pat naudinga stebėti visuomenės nuotaiką rinkimų krizių ar didelių įvykių metu, nes tai paverčia neapdorotus tviterius vertingomis įžvalgomis.
Žingsnis po žingsnio įgyvendinimas
1 veiksmas: įdiekite būtinas bibliotekas
Šis blokas įdiegia ir importuoja reikiamas bibliotekas. Tai naudoja pandos įkelti ir tvarkyti duomenis TfidfVektorizer tekstą paversti skaičiais ir scikit mokytis treniruoti 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 veiksmas: įkelkite duomenų rinkinį
- Čia mes įkeliame Sentiment140 duomenų rinkinys iš supakuoto CSV failo galite jį atsisiųsti iš Kaggle.
- Mes išlaikome tik poliškumą, o tviterinio pranešimo teksto stulpeliai juos pervadina, kad būtų aiškumo, ir išspausdinamos kelios pirmosios eilutės, kad patikrintų duomenis.
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 ())
Išvestis:
Išvestis 3 veiksmas: laikykite tik teigiamus ir neigiamus jausmus
- Čia pašaliname neutralius tviterius, kurių poliškumas yra 2, susieja etiketes, todėl 0 lieka neigiami, o 4 tampa 1 teigiamu.
- Tada atspausdiname, kiek teigiamų ir neigiamų tviterių liko duomenyse.
df = df [ df . polarity != 2 ] df [ 'polarity' ] = df [ 'polarity' ] . map ({ 0 : 0 4 : 1 }) print ( df [ 'polarity' ] . value_counts ())
Išvestis:
Išvestis 4 veiksmas: išvalykite „Tweets“.
- Čia apibrėžiame paprastą funkciją, skirtą visam tekstui paversti mažosiomis raidėmis, kad būtų nuoseklus, tai taikoma kiekvienam duomenų rinkinio tviteriui.
- Tada rodomos originalios ir išvalytos kelių pirmųjų tviterių versijos.
def clean_text ( text ): return text . lower () df [ 'clean_text' ] = df [ 'text' ] . apply ( clean_text ) print ( df [[ 'text' 'clean_text' ]] . head ())
Išvestis:
Išvestis 5 veiksmas: traukinio testo padalijimas
- Šis kodas padalija švaraus_teksto ir poliškumo stulpelius į mokymo ir testavimo rinkinius, naudojant 80/20 padalijimą.
- random_state=42 užtikrina atkuriamumą.
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 ))
Išvestis:
Traukinio dydis: 1280000
Bandymo dydis: 320000
6 veiksmas: atlikite vektorizavimą
- Šis kodas sukuria TF IDF vektorių, kuris konvertuoja tekstą į skaitines ypatybes, naudodamas unigramas ir bigramas, apribotas iki 5000 funkcijų.
- Jis pritaiko ir transformuoja treniruočių duomenis ir transformuoja testo duomenis, tada atspausdina gautų TF IDF matricų formas.
vectorizer = TfidfVectorizer ( max_features = 5000 ngram_range = ( 1 2 )) 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 )
Išvestis:
TF-IDF forma (traukinys): (1280000 5000)
TF-IDF forma (bandymas): (320000 5000)
7 veiksmas: išmokykite Bernoulli Naive Bayes modelį
- Čia treniruojame a Bernoulli Naive Bayes TF IDF savybių klasifikatorius iš treniruočių duomenų.
- Jis numato bandymo duomenų nuotaikas ir išspausdina tikslumą bei išsamią klasifikavimo ataskaitą.
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 ( ' n BernoulliNB Classification Report: n ' classification_report ( y_test bnb_pred ))
Išvestis:
Išvestis 9 veiksmas: Train Support Vector Machine (SVM) modelis
- Šis kodas treniruoja a Palaikykite vektorinį įrenginį (SVM) su ne daugiau kaip 1000 TF IDF funkcijų iteracijų.
- Jis numato bandymo etiketes, tada išspausdina tikslumą ir išsamią klasifikavimo ataskaitą, rodančią, kaip gerai veikė 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 ( ' n SVM Classification Report: n ' classification_report ( y_test svm_pred ))
Išvestis:
Išvestis 10 veiksmas: parengkite logistinės regresijos modelį
- Šis kodas treniruoja a Logistinė regresija modelis su iki 100 TF IDF funkcijų iteracijų.
- Jis numato bandymo duomenų nuotaikų etiketes ir atspausdina tikslumą bei išsamią klasifikavimo ataskaitą modelio įvertinimui.
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 ( ' n Logistic Regression Classification Report: n ' classification_report ( y_test logreg_pred ))
Išvestis:
Išvestis 11 veiksmas: numatykite pavyzdinius tviterius
- Šis kodas paima tris pavyzdinius tviterius ir paverčia juos TF IDF funkcijomis, naudodamas tą patį vektorių.
- Tada jis numato jų nuotaikas naudodamas apmokytus BernoulliNB SVM ir logistikos regresijos modelius ir atspausdina kiekvieno klasifikatoriaus rezultatus.
- Kur 1 reiškia teigiamą, o 0 – neigiamą.
sample_tweets = [ 'I love this!' 'I hate that!' 'It was okay not great.' ] sample_vec = vectorizer . transform ( sample_tweets ) print ( ' n Sample Predictions:' ) print ( 'BernoulliNB:' bnb . predict ( sample_vec )) print ( 'SVM:' svm . predict ( sample_vec )) print ( 'Logistic Regression:' logreg . predict ( sample_vec ))
Išvestis:
Išvestis Matome, kad mūsų modeliai veikia gerai ir pateikia tas pačias prognozes net ir taikant skirtingus metodus.
Sukurti viktorinąŠaltinio kodą galite atsisiųsti iš čia - „Twitter“ nuotaikų analizė naudojant Python