Анализа расположења на Твиттер-у користећи Питхон
Анализа расположења на Твиттер-у је процес коришћења Питхон-а за аутоматско разумевање емоција или мишљења изражених у твитовима. Анализом текста можемо класификовати твитове као позитивно негативне или неутралне. Ово помаже предузећима и истраживачима да прате репутацију бренда расположеног у јавности или реакције на догађаје у реалном времену. Питхон библиотеке попут ТектБлоб Твеепи и НЛТК олакшавају прикупљање твитова, обрађују текст и ефикасно врше анализу расположења.
Како је корисна анализа расположења на Твитеру?
- Анализа расположења на Твиттер-у је важна јер помаже људима и предузећима да разумеју шта јавност мисли у реалном времену.
- Сваки дан се објављују милиони твитова у којима се деле мишљења о догађајима брендова или друштвеним питањима. Анализом овог огромног тока података компаније могу да измере задовољство купаца уочавају трендове рано да се изборе са негативним повратним информацијама и донесу боље одлуке на основу тога како се људи заправо осећају.
- Такође је корисно за истраживаче и владе да прате расположење јавности током изборних криза или великих догађаја јер претвара сирове твитове у вредне увиде.
Корак по корак имплементација
Корак 1: Инсталирајте потребне библиотеке
Овај блок инсталира и увози потребне библиотеке. It uses панде за учитавање и руковање подацима ТфидфВецторизер да се текст претвори у бројеве и сцикит леарн да обуче модел.
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
Корак 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 = ( 1 2 )) 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 ( ' n BernoulliNB 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 ( ' n SVM 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 ( ' n Logistic 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 ( ' n Sample Predictions:' ) print ( 'BernoulliNB:' bnb . predict ( sample_vec )) print ( 'SVM:' svm . predict ( sample_vec )) print ( 'Logistic Regression:' logreg . predict ( sample_vec ))
Излаз:
Излаз
Креирај квизИзворни код можете преузети овде - Анализа расположења на Твиттер-у користећи Питхон