ניתוח סנטימנטים של טוויטר הוא תהליך השימוש ב-Python כדי להבין את הרגשות או הדעות המובעים בציוצים באופן אוטומטי. על ידי ניתוח הטקסט נוכל לסווג ציוצים כשליליים חיוביים או ניטרליים. זה עוזר לעסקים ולחוקרים לעקוב אחר המוניטין של מותג מצב הרוח הציבורי או התגובות לאירועים בזמן אמת. ספריות Python כמו TextBlob Tweepy ו- NLTK מקלות על איסוף ציוצים לעבד את הטקסט ולבצע ניתוח סנטימנט ביעילות. 
כיצד ניתוח סנטימנטים של טוויטר שימושי?
- ניתוח סנטימנטים בטוויטר חשוב מכיוון שהוא עוזר לאנשים ועסקים להבין מה הציבור חושב בזמן אמת.
- מיליוני ציוצים מתפרסמים מדי יום וחולקים דעות על אירועי מותגים או נושאים חברתיים. על ידי ניתוח זרם נתונים עצום זה, חברות יכולות למדוד את מגמות שביעות רצון לקוחות מוקדם לטפל במשוב שלילי במהירות ולקבל החלטות טובות יותר על סמך איך אנשים מרגישים בפועל.
- זה גם שימושי לחוקרים ולממשלות לעקוב אחר מצב הרוח הציבורי במהלך משברי בחירות או אירועים גדולים שכן זה הופך ציוצים גולמיים לתובנות חשובות.
יישום צעד אחר צעד
שלב 1: התקן את הספריות הדרושות
בלוק זה מתקין ומייבא את הספריות הנדרשות. זה משתמש פנדות לטעון ולטפל בנתונים TfidfVectorizer להפוך טקסט למספרים ו סקיט ללמוד להכשיר מודל.
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: טען מערך נתונים
- כאן אנו טוענים את מערך נתונים של Sentiment140 מקובץ CSV דחוס אתה יכול להוריד אותו מ- Kaggle.
- אנו שומרים רק על הקוטביות ועמודות הטקסט של הציוץ משנים את שמותיהם לצורך הבהירות ומדפיסים את השורות הראשונות כדי לבדוק את הנתונים.
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())
תְפוּקָה:
תְפוּקָהשלב 3: שמור רק על רגשות חיוביים ושליליים
- כאן אנו מסירים ציוצים ניטרליים שבהם הקוטביות היא 2 ממפה את התוויות כך ש-0 נשאר שלילי ו-4 הופך ל-1 עבור חיובי.
- לאחר מכן אנו מדפיסים כמה ציוצים חיוביים ושליליים נותרו בנתונים.
df = df[df.polarity != 2] df['polarity'] = df['polarity'].map({0: 0 4: 1}) print(df['polarity'].value_counts())
תְפוּקָה:
תְפוּקָהשלב 4: נקה את הציוצים
- כאן אנו מגדירים פונקציה פשוטה להמרת כל הטקסט לאותיות קטנות כדי להחיל אותה על כל ציוץ במערך הנתונים.
- ואז מציג את הגירסאות המקוריות והנקיות של הציוצים הראשונים.
def clean_text(text): return text.lower() df['clean_text'] = df['text'].apply(clean_text) print(df[['text' 'clean_text']].head())
תְפוּקָה:
תְפוּקָהשלב 5: פיצול מבחן הרכבת
- קוד זה מפצל את עמודות ה-clean_text והקוטביות לקבוצות אימון ובדיקות באמצעות פיצול של 80/20.
- random_state=42 מבטיח שחזור.
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))
תְפוּקָה:
גודל רכבת: 1280000
גודל בדיקה: 320000
שלב 6: בצע וקטוריזציה
- קוד זה יוצר וקטורייזר TF IDF הממיר טקסט לתכונות מספריות באמצעות אוניגרמות וביגרמות מוגבלות ל-5000 תכונות.
- זה מתאים והופך את נתוני האימון והופך את נתוני הבדיקה ולאחר מכן מדפיס את הצורות של מטריצות 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)
תְפוּקָה:
צורת TF-IDF (רכבת): (1280000 5000)
צורת TF-IDF (בדיקה): (320000 5000)
שלב 7: הרכבת דגם ברנולי נאיבי בייס
- כאן אנו מאמנים א ברנולי נאיב בייס מסווג על תכונות TF צה"ל מנתוני האימונים.
- הוא חוזה סנטימנטים עבור נתוני הבדיקה ולאחר מכן מדפיס את הדיוק ודוח סיווג מפורט.
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))
תְפוּקָה:
תְפוּקָהשלב 9: הרכבת דגם מכונה וקטור תמיכה (SVM).
- קוד זה מאמן את א תמיכה ב-Vector Machine (SVM) עם מקסימום 1000 איטרציות על תכונות TF IDF.
- הוא מנבא תוויות בדיקה ואז מדפיס את הדיוק ודוח סיווג מפורט המציג את ביצועי ה-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))
תְפוּקָה:
אליסה מאנונוק
תְפוּקָהשלב 10: הרכבת מודל רגרסיה לוגיסטית
- קוד זה מאמן את א רגרסיה לוגיסטית דגם עם עד 100 איטרציות על תכונות TF IDF.
- הוא מנבא תוויות סנטימנט עבור נתוני הבדיקה ומדפיס את דוח הדיוק והסיווג המפורט להערכת המודל.
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))
תְפוּקָה:
תְפוּקָהשלב 11: בצע תחזיות על ציוצים לדוגמה
- קוד זה לוקח שלושה ציוצים לדוגמה והופך אותם לתכונות TF IDF באמצעות אותו וקטורייזר.
- לאחר מכן, הוא חוזה את הסנטימנט שלהם באמצעות המודלים המיומנים של BernoulliNB SVM ושל רגרסיה לוגיסטית ומדפיס את התוצאות עבור כל מסווג.
- כאשר 1 מייצג חיובי ו-0 עבור שלילי.
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))
תְפוּקָה:
תְפוּקָהאנו יכולים לראות שהמודלים שלנו עובדים מצוין ונותנים תחזיות זהות אפילו עם גישות שונות.
צור חידוןאתה יכול להוריד את קוד המקור מכאן- ניתוח סנטימנטים של טוויטר באמצעות Python