logo

Twitterin tunneanalyysi Pythonilla

Twitter Sentiment Analysis on prosessi, jossa Pythonilla ymmärretään automaattisesti twiiteissä ilmaistut tunteet tai mielipiteet. Analysoimalla tekstiä voimme luokitella tweetit positiivisiksi negatiivisiksi tai neutraaleiksi. Tämä auttaa yrityksiä ja tutkijoita seuraamaan julkisen mielialan brändin mainetta tai reaktioita tapahtumiin reaaliajassa. Python-kirjastot, kuten TextBlob Tweepy ja NLTK, helpottavat tweettien keräämistä, prosessoivat tekstiä ja suorittavat tunteiden analysoinnin tehokkaasti. Twitterin mielipideanalyysi Pythonilla

Kuinka Twitter-tunneanalyysistä on hyötyä?

  • Twitterin mielipideanalyysi on tärkeä, koska se auttaa ihmisiä ja yrityksiä ymmärtämään, mitä yleisö ajattelee reaaliajassa.
  • Miljoonia twiittejä julkaistaan ​​päivittäin, ja niissä jaetaan mielipiteitä brändituotteiden tapahtumista tai sosiaalisista ongelmista. Analysoimalla tätä valtavaa tietovirtaa yritykset voivat mitata asiakastyytyväisyystrendejä varhaisessa vaiheessa käsitellä negatiivista palautetta nopeasti ja tehdä parempia päätöksiä sen perusteella, miltä ihmiset todella tuntevat.
  • Tutkijoille ja hallituksille on myös hyödyllistä seurata yleistä mielialaa vaalikriisien tai suurten tapahtumien aikana, koska se muuttaa raakatviiteistä arvokkaita oivalluksia.

Askel askeleelta toteutus

Vaihe 1: Asenna tarvittavat kirjastot

Tämä lohko asentaa ja tuo tarvittavat kirjastot. Se käyttää pandat ladata ja käsitellä tietoja TfidfVektorizer muuttaaksesi tekstin numeroiksi ja scikit oppia kouluttaa mallia.

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 

Vaihe 2: Lataa tietojoukko

  • Täällä lataamme Sentiment140-tietojoukko pakatusta CSV-tiedostosta voit ladata sen Kagglesta.
  • Säilytämme vain napaisuuden, ja twiitin tekstisarakkeet nimeää ne uudelleen selvyyden vuoksi ja tulostaa ensimmäiset rivit tietojen tarkistamiseksi.
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()) 

Lähtö:



Lähtö' loading='lazy' title=Lähtö

Vaihe 3: Pidä vain positiiviset ja negatiiviset tunteet

  • Tässä poistamme neutraalit twiitit, joissa napaisuus on 2, kartoittaa tarrat siten, että 0 pysyy negatiivisena ja 4 muuttuu 1:ksi positiivisille.
  • Sitten tulostetaan kuinka monta positiivista ja negatiivista twiittiä tiedoissa on jäljellä.
Python
df = df[df.polarity != 2] df['polarity'] = df['polarity'].map({0: 0 4: 1}) print(df['polarity'].value_counts()) 

Lähtö:

Kuvakaappaus-2025-07-09-092140' loading='lazy' title=Lähtö

Vaihe 4: Puhdista twiitit

  • Tässä määritämme yksinkertaisen toiminnon, joka muuntaa kaiken tekstin pieniksi kirjaimiin johdonmukaisuuden vuoksi, ja sitä sovelletaan jokaiseen tietojoukon twiittiin.
  • Sen jälkeen näyttää muutaman ensimmäisen twiitin alkuperäiset ja puhdistetut versiot.
Python
def clean_text(text): return text.lower() df['clean_text'] = df['text'].apply(clean_text) print(df[['text' 'clean_text']].head()) 

Lähtö:

Lähtö' loading='lazy' title=Lähtö

Vaihe 5: Junatestin jako

  • Tämä koodi jakaa puhdas_teksti- ja polariteettisarakkeet harjoitus- ja testaussarjoiksi käyttämällä 80/20-jakoa.
  • random_state=42 varmistaa toistettavuuden.
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)) 

Lähtö:

Junan koko: 1280000
Testin koko: 320000

Vaihe 6: Suorita vektorointi

  • Tämä koodi luo TF IDF -vektorisoittimen, joka muuntaa tekstin numeerisiksi ominaisuuksiksi käyttämällä unigrammeja ja bigrammeja, joiden enimmäismäärä on 5000.
  • Se sovittaa ja muuntaa harjoitustiedot ja muuntaa testitiedot ja tulostaa sitten tuloksena olevien TF IDF -matriisien muodot.
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) 

Lähtö:

TF-IDF-muoto (juna): (1280000 5000)
TF-IDF-muoto (testi): (320000 5000)

Vaihe 7: Harjoittele Bernoulli Naive Bayes -mallia

  • Täällä treenataan a Bernoulli Naive Bayes luokitin TF IDF -ominaisuuksista harjoitustiedoista.
  • Se ennustaa testitiedon tunteita ja tulostaa sitten tarkkuuden ja yksityiskohtaisen luokitusraportin.
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)) 

Lähtö:

Lähtö' loading='lazy' title=Lähtö

Vaihe 9: Kouluta tukivektorikoneen (SVM) malli

  • Tämä koodi kouluttaa a Tuki Vector Machine (SVM) enintään 1000 iteraatiolla TF IDF:n ominaisuuksilla.
  • Se ennustaa testitarrat ja tulostaa sitten tarkkuuden ja yksityiskohtaisen luokitusraportin, joka osoittaa, kuinka hyvin SVM toimi.
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)) 

Lähtö:

kokonaisluku merkkijonoksi javassa
Lähtö' loading='lazy' title=Lähtö

Vaihe 10: Harjoittele logistinen regressiomalli

  • Tämä koodi kouluttaa a Logistinen regressio malli, jossa on jopa 100 iteraatiota TF IDF -ominaisuuksilla.
  • Se ennustaa testitiedon tunnetarrat ja tulostaa tarkkuuden ja yksityiskohtaisen luokitusraportin mallin arviointia varten.
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)) 

Lähtö:

Lähtö' loading='lazy' title=Lähtö

Vaihe 11: Tee ennusteita esimerkkitviiteistä

  • Tämä koodi ottaa kolme esimerkkitviittiä ja muuntaa ne TF IDF -ominaisuuksiksi käyttämällä samaa vektorointia.
  • Sen jälkeen se ennustaa heidän tunteensa käyttämällä koulutettuja BernoulliNB SVM- ja Logistic Regression -malleja ja tulostaa kunkin luokittelijan tulokset.
  • Missä 1 tarkoittaa positiivista ja 0 negatiivista.
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)) 

Lähtö:

Lähtö' loading='lazy' title=Lähtö

Näemme, että mallimme toimivat hyvin ja antavat samoja ennusteita jopa erilaisilla lähestymistavoilla.

Voit ladata lähdekoodin täältä - Twitterin mielipideanalyysi Pythonilla

Luo tietokilpailu