logo

Analiza sentimentelor Twitter folosind Python

Twitter Sentiment Analysis este procesul de utilizare a Python pentru a înțelege automat emoțiile sau opiniile exprimate în tweet-uri. Analizând textul, putem clasifica tweet-urile ca pozitive negative sau neutre. Acest lucru ajută companiile și cercetătorii să urmărească reputația mărcii în starea de spirit publică sau reacțiile la evenimente în timp real. Bibliotecile Python precum TextBlob Tweepy și NLTK facilitează colectarea tweet-urilor, procesează textul și efectuează eficient analiza sentimentelor. Analiza sentimentelor Twitter folosind Python

Cum este utilă analiza sentimentelor Twitter?

  • Analiza sentimentelor Twitter este importantă deoarece ajută oamenii și companiile să înțeleagă ceea ce gândește publicul în timp real.
  • Milioane de tweet-uri sunt postate în fiecare zi, împărtășind opinii despre evenimentele produselor mărcii sau problemele sociale. Analizând acest flux uriaș de date, companiile pot măsura satisfacția clienților, tendințele la fața locului, gestionează rapid feedback-ul negativ și pot lua decizii mai bune pe baza modului în care oamenii se simt cu adevărat.
  • De asemenea, este util pentru cercetători și guverne să monitorizeze starea de spirit a publicului în timpul crizelor electorale sau a evenimentelor mari, deoarece transformă tweet-urile brute în informații valoroase.

Implementare pas cu pas

Pasul 1: Instalați bibliotecile necesare

Acest bloc instalează și importă bibliotecile necesare. Se foloseste panda pentru a încărca și gestiona date TfidfVectorizer pentru a transforma textul în numere și scikit invata a antrena modelul.

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 

Pasul 2: Încărcați setul de date

  • Aici încărcăm Set de date Sentiment140 dintr-un fișier CSV arhivat îl puteți descărca de la Kaggle.
  • Păstrăm doar polaritatea și coloanele de text tweet le redenumim pentru claritate și tipărim primele câteva rânduri pentru a verifica datele.
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()) 

Ieșire:



Ieșire' loading='lazy' title=Ieșire

Pasul 3: Păstrați numai sentimentele pozitive și negative

  • Aici eliminăm tweet-urile neutre unde polaritatea este de 2 mapează etichetele, astfel încât 0 rămâne negativ și 4 devine 1 pentru pozitiv.
  • Apoi imprimăm câte tweet-uri pozitive și negative au rămas în date.
Python
df = df[df.polarity != 2] df['polarity'] = df['polarity'].map({0: 0 4: 1}) print(df['polarity'].value_counts()) 

Ieșire:

Captură de ecran-2025-07-09-092140' loading='lazy' title=Ieșire

Pasul 4: Curățați tweet-urile

  • Aici definim o funcție simplă pentru a converti tot textul în litere mici, pentru consecvență, se aplică fiecărui tweet din setul de date.
  • Apoi arată versiunile originale și curățate ale primelor câteva tweet-uri.
Python
def clean_text(text): return text.lower() df['clean_text'] = df['text'].apply(clean_text) print(df[['text' 'clean_text']].head()) 

Ieșire:

Ieșire' loading='lazy' title=Ieșire

Pasul 5: Tren Test Split

  • Acest cod împarte coloanele clean_text și polaritate în seturi de antrenament și testare folosind o împărțire 80/20.
  • random_state=42 asigură reproductibilitatea.
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)) 

Ieșire:

Dimensiunea trenului: 1280000
Dimensiunea testului: 320000

Pasul 6: Efectuați vectorizarea

  • Acest cod creează un vectorizator TF IDF care convertește textul în caracteristici numerice folosind unigrame și bigrame limitate la 5000 de caracteristici.
  • Se potrivește și transformă datele de antrenament și transformă datele de testare și apoi imprimă formele matricelor TF IDF rezultate.
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) 

Ieșire:

Forma TF-IDF (tren): (1280000 5000)
Forma TF-IDF (test): (320000 5000)

Pasul 7: Antrenează modelul Bernoulli Naive Bayes

  • Aici antrenăm un Bernoulli Naive Bayes clasificator pe caracteristicile TF IDF din datele de antrenament.
  • Acesta prezice sentimentele pentru datele de testare și apoi tipărește acuratețea și un raport de clasificare detaliat.
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)) 

Ieșire:

Ieșire' loading='lazy' title=Ieșire

Pasul 9: Modelul de mașină vectorială de sprijin pentru tren (SVM).

  • Acest cod antrenează a Suport Vector Machine (SVM) cu maximum 1000 de iterații ale caracteristicilor TF IDF.
  • Acesta prezice etichetele de testare, apoi tipărește acuratețea și un raport de clasificare detaliat care arată cât de bine a funcționat 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)) 

Ieșire:

matematică pow java
Ieșire' loading='lazy' title=Ieșire

Pasul 10: Antrenează modelul de regresie logistică

  • Acest cod antrenează a Regresia logistică model cu până la 100 de iterații ale caracteristicilor TF IDF.
  • Acesta prezice etichetele de sentiment pentru datele de testare și tipărește raportul de precizie și clasificare detaliat pentru evaluarea modelului.
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)) 

Ieșire:

Ieșire' loading='lazy' title=Ieșire

Pasul 11: Faceți predicții pe exemple de tweet-uri

  • Acest cod preia trei eșantion de tweet-uri și le transformă în caracteristici TF IDF folosind același vectorizator.
  • Apoi prezice sentimentul lor folosind modelele antrenate BernoulliNB SVM și Logistic Regression și tipărește rezultatele pentru fiecare clasificator.
  • Unde 1 înseamnă pozitiv și 0 pentru negativ.
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)) 

Ieșire:

Ieșire' loading='lazy' title=Ieșire

Putem vedea că modelele noastre funcționează bine și oferă aceleași predicții chiar și cu abordări diferite.

Puteți descărca codul sursă de aici - Analiza sentimentelor Twitter folosind Python

Creați un test