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. 
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.
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
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.
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șirePasul 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.
df = df[df.polarity != 2] df['polarity'] = df['polarity'].map({0: 0 4: 1}) print(df['polarity'].value_counts())
Ieșire:
IeșirePasul 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.
def clean_text(text): return text.lower() df['clean_text'] = df['text'].apply(clean_text) print(df[['text' 'clean_text']].head())
Ieșire:
IeșirePasul 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.
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.
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.
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șirePasul 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.
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șirePasul 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.
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șirePasul 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.
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șirePutem vedea că modelele noastre funcționează bine și oferă aceleași predicții chiar și cu abordări diferite.
Creați un testPuteți descărca codul sursă de aici - Analiza sentimentelor Twitter folosind Python