Анализа расположења на Твиттер-у је процес коришћења Питхон-а за аутоматско разумевање емоција или мишљења изражених у твитовима. Анализом текста можемо класификовати твитове као позитивно негативне или неутралне. Ово помаже предузећима и истраживачима да прате репутацију бренда расположеног у јавности или реакције на догађаје у реалном времену. Питхон библиотеке попут ТектБлоб Твеепи и НЛТК олакшавају прикупљање твитова, обрађују текст и ефикасно врше анализу расположења. 
Како је корисна анализа расположења на Твитеру?
- Анализа расположења на Твиттер-у је важна јер помаже људима и предузећима да разумеју шта јавност мисли у реалном времену.
- Сваки дан се објављују милиони твитова у којима се деле мишљења о догађајима брендова или друштвеним питањима. Анализом овог огромног тока података компаније могу да измере задовољство купаца уочавају трендове рано да се изборе са негативним повратним информацијама и донесу боље одлуке на основу тога како се људи заправо осећају.
- Такође је корисно за истраживаче и владе да прате расположење јавности током изборних криза или великих догађаја јер претвара сирове твитове у вредне увиде.
Корак по корак имплементација
Корак 1: Инсталирајте потребне библиотеке
Овај блок инсталира и увози потребне библиотеке. It uses панде за учитавање и руковање подацима ТфидфВецторизер да се текст претвори у бројеве и сцикит леарн да обуче модел.
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: Учитајте скуп података
- Овде учитавамо Сентимент140 сет података из зиповане ЦСВ датотеке можете је преузети са Каггле-а.
- Задржавамо само поларитет и колоне текста твита преименујемо их ради јасноће и штампамо првих неколико редова да бисмо проверили податке.
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: Траин Тест Сплит
- Овај код дели цлеан_тект и колоне поларитета у скупове за обуку и тестирање користећи поделе 80/20.
- рандом_стате=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: Извршите векторизацију
- Овај код креира ТФ ИДФ векторизатор који претвара текст у нумеричке карактеристике користећи униграме и биграме ограничене на 5000 карактеристика.
- Он уклапа и трансформише податке о обуци и трансформише податке теста, а затим штампа облике резултујућих ТФ ИДФ матрица.
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)
Излаз:
ТФ-ИДФ облик (воз): (1280000 5000)
ТФ-ИДФ облик (тест): (320000 5000)
Корак 7: Обучите Бернулијев наивни Бајесов модел
- Овде тренирамо а Бернули наивни Бајес класификатор о карактеристикама ТФ ИДФ-а из података о обуци.
- Предвиђа осећања за податке теста, а затим штампа тачност и детаљан извештај о класификацији.
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: Модел векторске машине за подршку воза (СВМ).
- Овај код обучава а Машина за векторску подршку (СВМ) са максимално 1000 итерација на ТФ ИДФ карактеристикама.
- Предвиђа тестне налепнице, а затим штампа тачност и детаљан извештај о класификацији који показује колико је СВМ добро прошао.
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 итерација на ТФ ИДФ карактеристикама.
- Он предвиђа ознаке осећања за податке теста и штампа тачност и детаљан извештај о класификацији за процену модела.
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: Направите предвиђања на узорцима твитова
- Овај код узима три узорка твита и трансформише их у ТФ ИДФ карактеристике користећи исти векторизатор.
- Затим предвиђа њихово расположење користећи обучени БерноуллиНБ СВМ и моделе логистичке регресије и штампа резултате за сваки класификатор.
- Где 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))
Излаз:
Излаз
Креирај квизИзворни код можете преузети овде - Анализа расположења на Твиттер-у користећи Питхон