yuliianikolaenko 10 июня 2021

πŸ“Š NLP ΠΈ визуализация тСкста Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π²ΠΈΡ‚ΠΎΠ² ΠΎ прСзидСнтских Π²Ρ‹Π±ΠΎΡ€Π°Ρ… Π² БША

Π’ написанном совмСстно с Elbrus Coding Bootcamp Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Π΅ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ процСсс ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ тСматичСского модСлирования Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π²ΠΈΡ‚ΠΎΠ² ΠΎ Π²Ρ‹Π±ΠΎΡ€Π°Ρ… ΠΏΡ€Π΅Π·ΠΈΠ΄Π΅Π½Ρ‚Π° БША.
πŸ“Š NLP ΠΈ визуализация тСкста Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π²ΠΈΡ‚ΠΎΠ² ΠΎ прСзидСнтских Π²Ρ‹Π±ΠΎΡ€Π°Ρ… Π² БША

Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

        # ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°/ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ
import pandas as pd
import numpy as np
pd.options.mode.chained_assignment = None
import re
from unidecode import unidecode 
import warnings
warnings.filterwarnings("ignore",category=DeprecationWarning)

# Визуализация Π΄Π°Π½Π½Ρ‹Ρ…
import matplotlib.pyplot as plt
%matplotlib inline
from PIL import Image
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
import seaborn as sns

# Визуализация Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° тСматичСского модСлирования
import pyLDAvis.sklearn 

# Π‘Ρ‚ΠΎΠΏ-слова, Ρ‚ΠΎΠΊΠ΅Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€, стСммСр
import nltk  
from nltk.corpus import wordnet
from nltk.tokenize import word_tokenize
from nltk.stem import WordNetLemmatizer 

# Sklearn
from sklearn.decomposition import LatentDirichletAllocation
from sklearn.feature_extraction.text import CountVectorizer

# Gensim
import gensim
from gensim.parsing.preprocessing import remove_stopwords

# Spacy 
import spacy
    

Π”Π°Π½Π½Ρ‹Π΅

Kaggle dataset US Election 2020 Tweets ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Ρ‚Π²ΠΈΡ‚ΠΎΠ², собранных с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Twitter API ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов #donaldtrump ΠΈ #joebiden Π² ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ с 15.10.2020 Π³. ΠΏΠΎ 08.11.2020 Π³.

        # Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅
trump_df = pd.read_csv('hashtag_donaldtrump.csv', lineterminator='\n')
biden_df = pd.read_csv('hashtag_joebiden.csv', lineterminator='\n')

print('ΠžΠ±Ρ‰Π΅Π΅ количСство записСй Π² Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Trump: ', trump_df.shape)
print('ΠžΠ±Ρ‰Π΅Π΅ количСство записСй Π² Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Biden: ', biden_df.shape)

ΠžΠ±Ρ‰Π΅Π΅ количСство записСй Π² Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Trump:  (970919, 21)
ΠžΠ±Ρ‰Π΅Π΅ количСство записСй Π² Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Biden:  (776886, 21)
    

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…

ЦСль: ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ датасСт для Π΄Π²ΡƒΡ… ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Ρ‚Π²ΠΈΡ‚Ρ‹, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² БША ΠΈ Π½Π΅ содСрТит Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹.

        # УдаляСм Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ столбцы
irrelevant_columns = ['user_name','user_screen_name','user_description','user_join_date','collected_at']
trump_df = trump_df.drop(columns=irrelevant_columns)
biden_df = biden_df.drop(columns=irrelevant_columns)
 
# МСняСм ΠΈΠΌΠ΅Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… столбцов для удобства Π°Π½Π°Π»ΠΈΠ·Π°
trump_df = trump_df.rename(columns={"likes": "Likes", "retweet_count": "Retweets",
                                   "state": "State", "user_followers_count": "Followers"})
biden_df = biden_df.rename(columns={"likes": "Likes", "retweet_count": "Retweets",
                                   "state": "State", "user_followers_count": "Followers"})
 
# ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌ United States of America Π² United States 
d = {"United States of America":"United States"}
trump_df['country'].replace(d, inplace=True)
biden_df['country'].replace(d, inplace=True)
 
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ датасСт с Ρ‚Π²ΠΈΡ‚Π°ΠΌΠΈ, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² БША
trump_usa_df = trump_df.loc[trump_df['country'] == "United States"]
biden_usa_df = biden_df.loc[biden_df['country'] == "United States"]
 
# УдаляСм пустыС строки
trump_usa_df = trump_usa_df.dropna()
biden_usa_df = biden_usa_df.dropna()

# ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ…
print('ΠžΠ±Ρ‰Π΅Π΅ количСство записСй Π² Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Trump USA: ', trump_usa_df.shape)
print('ΠžΠ±Ρ‰Π΅Π΅ количСство записСй Π² Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Trump Biden USA: ', biden_usa_df.shape)

ΠžΠ±Ρ‰Π΅Π΅ количСство записСй Π² Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Trump USA: (101953, 16) 
ΠžΠ±Ρ‰Π΅Π΅ количСство записСй Π² Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Trump Biden USA: (90639, 16)
    
        trump_usa_df['initial_dataset'] = 'trump'
biden_usa_df['initial_dataset'] = 'biden'

# ОбъСдинСниС Π΄Π°Π½Π½Ρ‹Π΅ Π² Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… датасСт
twitter_usa_df = pd.concat([trump_usa_df,biden_usa_df],ignore_index=True)
 
# НайдСм Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹
twitter_usa_df_duplicates = twitter_usa_df[twitter_usa_df.duplicated(['tweet_id'], keep=False)]
 
#УдаляСм Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹ 
trump_usa_df = trump_usa_df[~trump_usa_df.tweet_id.isin(twitter_usa_df_duplicates.tweet_id)]
biden_usa_df = biden_usa_df[~biden_usa_df.tweet_id.isin(twitter_usa_df_duplicates.tweet_id)]
twitter_usa_df.drop_duplicates(subset ="tweet_id", keep = False, inplace = True) 
 
# ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌ датасСтС
print('ΠžΠ±Ρ‰Π΅Π΅ количСство записСй Π² Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Trump ΠΈ Biden USA: ', twitter_usa_df.shape)

ΠžΠ±Ρ‰Π΅Π΅ количСство записСй Π² Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Trump ΠΈ Biden USA: (152376, 17)
    

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° тСкста

ЦСль: ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ тСкст ΠΊ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·Ρƒ, ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС символы, частотныС слова, ссылки ΠΈ упоминания Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, привСсти слова ΠΊ Π»Π΅ΠΌΠΌΠ΅ ΠΈ Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌ.

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° тСкста

        # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для очистки тСкста
def clean_text(text):
    text=unidecode(text)
    text=text.lower() # ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊ строчной Ρ„ΠΎΡ€ΠΌΠ΅
    text=re.sub(r'&',' ',text) # УдаляСм ampersand (замСняСт and)
    text=re.sub(r'[^\sa-zA-Z0-9@\[\]]',' ',text)# УдаляСм ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π·Π½Π°ΠΊΠΈ
    text=re.sub(r'@[A-Za-z0-9]+','',text) # УдаляСм упоминания Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Twitter 
    text=re.sub(r'#','',text)    
    text=re.sub(r'RT[\s]+','',text)
    text=remove_stopwords(text) # УдаляСм стоп-слова
    text=re.sub(r'http\S+'', '', text) # УдаляСм всС ссылки 
    text=re.sub(r'https?:\/\/\S+','',text)
    text=re.sub(r'donal\S+'', ' ', text) # УдаляСм упоминания ΠΈΠΌΠ΅Π½ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠ²
    text=re.sub(r'trum\S+'', ' ', text)
    text=re.sub(r'donaldtrum\S+'', ' ', text)
    text=re.sub(r'joe\S+'', ' ', text)   
    text=re.sub(r'biden\S+'', ' ', text)
    text=re.sub(r'joebide\S+'', ' ', text)
    text=re.sub(r'vot\S+'', ' ', text) # УдаляСм частотныС слова vote ΠΈ election
    text=re.sub(r'electio\S+'', ' ', text)
    text=re.sub(r'/s\s', '', text) # УдаляСм Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹Π΅ Π±ΡƒΠΊΠ²Ρ‹ s ΠΈ t 
    text=re.sub(r'/t\s', '', text)
    return text
    
        # ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для очистки тСкста
trump_usa_df['cleaned_tweet'] = trump_usa_df.tweet.apply(lambda x: clean_text(x))
biden_usa_df['cleaned_tweet'] = biden_usa_df.tweet.apply(lambda x: clean_text(x))
twitter_usa_df['cleaned_tweet'] = twitter_usa_df['tweet'].apply(lambda x: clean_text(x))
    

ЛСмматизация

ЛСмматизация – процСсс привСдСния словоформы ΠΊ Π»Π΅ΠΌΠΌΠ΅ – Π΅Ρ‘ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ (словарной) Ρ„ΠΎΡ€ΠΌΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π² английском языкС:
Walk, walked, walks, walking β†’ to walk
Π’ русском:
Кошками, кошки, кошкам β†’ кошка
        # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π΅Π³Π° nltk Π² Ρ‚Π΅Π³ wordnet
lemmatizer = WordNetLemmatizer()
def nltk_tag_to_wordnet_tag(nltk_tag):
    if nltk_tag.startswith('J'):
        return wordnet.ADJ
    elif nltk_tag.startswith('V'):
        return wordnet.VERB
    elif nltk_tag.startswith('N'):
        return wordnet.NOUN
    elif nltk_tag.startswith('R'):
        return wordnet.ADV
    else:         
        return None
      
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для Π»Π΅ΠΌΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ тСкста
def lemmatize_sentence(sentence):
    nltk_tagged = nltk.pos_tag(nltk.word_tokenize(sentence)) 
    wordnet_tagged = map(lambda x: (x[0], nltk_tag_to_wordnet_tag(x[1])), nltk_tagged)
    lemmatized_sentence = []
    for word, tag in wordnet_tagged:
        if tag is None:
            lemmatized_sentence.append(word)
        else:  
                lemmatized_sentence.append(lemmatizer.lemmatize(word, tag))
    return " ".join(lemmatized_sentence)
    
        # ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для Π»Π΅ΠΌΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ тСкста
trump_usa_df['lemmat_tweet'] = trump_usa_df.cleaned_tweet.apply(lambda x: lemmatize_sentence(x))
biden_usa_df['lemmat_tweet'] = biden_usa_df.cleaned_tweet.apply(lambda x: lemmatize_sentence(x))
twitter_usa_df['lemmat_tweet'] = twitter_usa_df.cleaned_tweet.apply(lambda x: lemmatize_sentence(x))
    
        # Π‘Ρ€Π°Π²Π½ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ очистки ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ Ρ‚Π²ΠΈΡ‚ΠΎΠ² с ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ тСкстов
pd.options.display.max_colwidth = 50
print(twitter_usa_df[['tweet', 'cleaned_tweet', 'lemmat_tweet']].head(3))

                                               tweet  \
0  #Trump: As a student I used to hear for years,...   
1  You get a tie! And you get a tie! #Trump β€˜s ra...   
3  #Trump #PresidentTrump #Trump2020LandslideVict...   

                                       cleaned_tweet  \
0    student hear years years heard china 2019 1 ...   
1               tie tie   s rally iowa  t jjaluumh5d   
3    president      maga kag 4moreyears america a...   

                                        lemmat_tweet  
0  student hear year year heard china 2019 1 5 t ...  
1                  tie tie s rally iowa t jjaluumh5d  
3  president maga kag 4moreyears america americaf...  
    

ВокСнизация

ВокСнизация – способ раздСлСния Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° тСкста Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌΠΈ, ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π°ΠΌΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ слова ΠΈΠ»ΠΈ символы.

        # ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° тСкста для Π°Π½Π°Π»ΠΈΠ·Π° частотности для всСх Ρ‚Π²ΠΈΡ‚ΠΎΠ²
list_text = []
for string in twitter_usa_df['lemmat_tweet']:
    list_text.append(string)
list_text

str_text = str(list_text)
tokens = word_tokenize(str_text)
txt_tokens = [word.lower() for word in tokens if word.isalpha()]
    

Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ…

ЦСль: ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова ΠΈ Ρ„Ρ€Π°Π·Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Ρ‚Π²ΠΈΡ‚Π°Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ распрСдСлСниС частотности Ρ‚Π²ΠΈΡ‚ΠΎΠ² Π΄ΠΎ ΠΈ Π²ΠΎ врСмя ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° Π²Ρ‹Π±ΠΎΡ€ΠΎΠ².

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρ‚Π²ΠΈΡ‚ΠΎΠ² ΠΏΠΎ Π΄Π°Ρ‚Π°ΠΌ

        # ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Π΄Π°Ρ‚Ρƒ Π² pandas datetime Ρ„ΠΎΡ€ΠΌΠ°Ρ‚
twitter_usa_df['created_at'] =  pd.to_datetime(twitter_usa_df['created_at'])
# ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π²ΠΎ врСмя ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±Ρ‹Π»ΠΈ собраны Π΄Π°Π½Π½Ρ‹Π΅ 
print(f" Π”Π°Π½Π½Ρ‹Π΅ собраны с {twitter_usa_df.created_at.min()}")
print(f" Π”Π°Π½Π½Ρ‹Π΅ собраны ΠΏΠΎ {twitter_usa_df.created_at.max()}")

Π”Π°Π½Π½Ρ‹Π΅ собраны с 2020-10-15 00:00:02
Π”Π°Π½Π½Ρ‹Π΅ собраны ΠΏΠΎ 2020-11-08 23:58:44
    
        # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ датасСт с Ρ‡Π°ΡΡ‚ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ Ρ‚Π²ΠΈΡ‚ΠΎΠ² согласно Π΄Π°Ρ‚Π΅
cnt_srs = twitter_usa_df['created_at'].dt.date.value_counts()
cnt_srs = cnt_srs.sort_index()
    
        # Визуализация количСства Ρ‚Π²ΠΈΡ‚ΠΎΠ² согласно Π΄Π°Ρ‚Π΅
plt.figure(figsize=(14,6))
sns.barplot(cnt_srs.index, cnt_srs.values, alpha=0.8, color='lightblue')
plt.xticks(rotation='vertical')
plt.xlabel('Date', fontsize=12)
plt.ylabel('Number of tweets', fontsize=12)
plt.title("Number of tweets according to dates")
plt.show()
    
πŸ“Š NLP ΠΈ визуализация тСкста Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π²ΠΈΡ‚ΠΎΠ² ΠΎ прСзидСнтских Π²Ρ‹Π±ΠΎΡ€Π°Ρ… Π² БША

Анализ частности слов

Word Clouds

        # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ тСкст для ΠΎΠ±Π»Π°ΠΊΠ° частотных слова
text_wordcloud= ' '.join(map(str, txt_tokens)) 
wordcloud = WordCloud(width=1600, height=800, max_font_size=200, max_words=100, colormap='vlag',background_color="white", collocations=True).generate(text_wordcloud)

# Визуализация 
plt.figure(figsize=(20,10))
plt.imshow(wordcloud)
plt.title('Wordcloud of TOP 100 frequent words for all tweets')
plt.axis("off")
plt.show()
    
πŸ“Š NLP ΠΈ визуализация тСкста Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π²ΠΈΡ‚ΠΎΠ² ΠΎ прСзидСнтских Π²Ρ‹Π±ΠΎΡ€Π°Ρ… Π² БША

Для создания ΠΎΠ±Π»Π°ΠΊΠΎΠ² частотных слов для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠ², ΠΌΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ маской с ΠΈΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

Для Π’Ρ€Π°ΠΌΠΏΠ°:

πŸ“Š NLP ΠΈ визуализация тСкста Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π²ΠΈΡ‚ΠΎΠ² ΠΎ прСзидСнтских Π²Ρ‹Π±ΠΎΡ€Π°Ρ… Π² БША

Для Π‘Π°ΠΉΠ΄Π΅Π½Π°:

πŸ“Š NLP ΠΈ визуализация тСкста Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π²ΠΈΡ‚ΠΎΠ² ΠΎ прСзидСнтских Π²Ρ‹Π±ΠΎΡ€Π°Ρ… Π² БША
        list_text = []
for string in biden_usa_df['lemmat_tweet']:
    list_text.append(string)
list_text

text_biden = str(list_text)
tkns_biden = word_tokenize(text_biden)
tokens_biden = [word.lower() for word in tkns_biden if word.isalpha()]
tokens_biden= ' '.join(map(str, tokens_biden)) 

# Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ ΠΏΠΎΡ€Ρ‚Ρ€Π΅Ρ‚ Π‘Π°ΠΉΠ΄Π΅Π½Π° ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ np.array для прСобразования Ρ„Π°ΠΉΠ»Π° Π² массив
biden_mask=np.array(Image.open('biden.png'))
biden_mask=np.where(biden_mask > 3, 255, biden_mask)

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±Π»Π°ΠΊΠΎ частотных слова
wordcloud = WordCloud(background_color='white',
                      contour_color='blue',
                      mask=biden_mask, colormap='Blues',
                      contour_width=4).generate(tokens_biden)

# Визуализация
plt.figure(figsize=(20,10))
plt.imshow(wordcloud, interpolation='bilinear')
plt.title('Wordcloud of TOP frequent words for Biden tweets', fontsize = 20)
plt.axis('off')
plt.show()
    
πŸ“Š NLP ΠΈ визуализация тСкста Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π²ΠΈΡ‚ΠΎΠ² ΠΎ прСзидСнтских Π²Ρ‹Π±ΠΎΡ€Π°Ρ… Π² БША
        # ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌ для Π’Ρ€Π°ΠΌΠΏΠ°
list_text = []
for string in trump_usa_df['lemmat_tweet']:
    list_text.append(string)
list_text

text_trump = str(list_text)
tokens_trump = word_tokenize(text_trump)
tokens_trump = [word.lower() for word in tokens_trump if word.isalpha()]
tokens_trump = ' '.join(map(str, tokens_trump)) 
trump_mask=np.array(Image.open('trump.png'))
trump_mask=np.where(trump_mask > 3, 255, trump_mask)

wordcloud = WordCloud(background_color='white',
                      contour_color='red',
                      mask=trump_mask, colormap='Reds',
                      contour_width=1).generate(tokens_trump)


# Визуализация 
plt.figure(figsize=(20,10))
plt.imshow(wordcloud, interpolation='bilinear')
plt.title('Wordcloud of TOP frequent words for Trump tweets')
plt.axis('off')
plt.show()
    
πŸ“Š NLP ΠΈ визуализация тСкста Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π²ΠΈΡ‚ΠΎΠ² ΠΎ прСзидСнтских Π²Ρ‹Π±ΠΎΡ€Π°Ρ… Π² БША
Π˜Π΄Π΅ΡπŸ’‘
Для создания пСрсонализированной Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠΉ Π³Π°ΠΌΠΌΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ Colormaps in Matplotlib.

Анализ частотности Π±ΠΈ-Π³Ρ€Π°ΠΌΠΌΠΎΠ²

ЦСль: ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ список Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π±ΠΈΠ³Ρ€Π°ΠΌΠΌ (ΠΏΠ°Ρ€Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… слов) Π² Ρ‚Π²ΠΈΡ‚Π°Ρ… для Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ изучСния тСкста.

        # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ датасСт самых частотных Π±ΠΈΠ³Ρ€Π°ΠΌΠΌΠΎΠ²
bigrams_series = (pd.Series(nltk.ngrams(txt_tokens, 2)).value_counts())[:10]
bigrams_top = pd.DataFrame(bigrams_series.sort_values(ascending=False))
bigrams_top = bigrams_top.reset_index().rename(columns={'index': 'bigrams', 0:'counts'})

# Визуализация Π±ΠΈΠ³Ρ€Π°ΠΌΠΌΠΎΠ²
plt.figure(figsize=(20,10))
sns.catplot(x = 'counts' , y='bigrams', kind="bar", palette="vlag", data=bigrams_top, height=8.27, aspect=11.7/8.27)
plt.title('TOP 10 pair of words which occurred the texts')
    
πŸ“Š NLP ΠΈ визуализация тСкста Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π²ΠΈΡ‚ΠΎΠ² ΠΎ прСзидСнтских Π²Ρ‹Π±ΠΎΡ€Π°Ρ… Π² БША

Анализ популярности Ρ‚Π²ΠΈΡ‚ΠΎΠ²

ЦСль: ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ самый популярный Ρ‚Π²ΠΈΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ выявлСния максимального количСства Ρ€Π΅Ρ‚Π²ΠΈΡ‚ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π·Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ всСх Ρ‚Π²ΠΈΡ‚ΠΎΠ².

        # Π‘Π°ΠΌΡ‹ΠΉ популярный Ρ‚Π²ΠΈΡ‚ Π² датасСтС согласно количСству Ρ€Π΅Ρ‚Π²ΠΈΡ‚ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ
tweet_retweet_max = twitter_usa_df.loc[twitter_usa_df['Retweets'].idxmax()]
tweet_retweet_max

created_at                                       2020-11-06 16:31:06
tweet              America Assembled!πŸ‡ΊπŸ‡ΈπŸŽ‰\n\n@JoeBiden @KamalaHarr...
Likes                                                          74528
Retweets                                                       20615
source                                            Twitter for iPhone
Followers                                                       8080
user_location                                           Brooklyn, NY
lat                                                          40.6501
long                                                        -73.9496
city                                                        New York
country                                                United States
continent                                              North America
State                                                       New York
state_code                                                        NY
initial_dataset                                                biden
clean_tweets       america assembled            brothers election...
tokenize_tweets    [america, assembled, brothers, election2020, e...
Name: 170447, dtype: object
    
        # ΠŸΠΎΠ»Π½Ρ‹ΠΉ тСкст Ρ‚Π²ΠΈΡ‚Π°
print(f" The tweet '{tweet_retweet_max.tweet}' was retweeted the most with {tweet_retweet_max.Retweets} number of retweets.")
    
Π‘Π°ΠΌΡ‹ΠΉ популярный Ρ‚Π²ΠΈΡ‚ Π² датасСтС:
America Assembled!πŸ‡ΊπŸ‡ΈπŸŽ‰@JoeBiden @KamalaHarris @BarackObama @ChrisEvans @MarkRuffalo @RobertDowneyJr @brielarson @AOC @staceyabrams @michaelb4jordan @Russo_Brothers #Election2020 #ElectionResults2020 #joebiden #DonaldTrump #BidenHarris2020 #avengers #endgame

ВСматичСскоС ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

ЦСль: автоматичСски ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΌΡ‹ Π² Π½Π°Π±ΠΎΡ€Π΅ тСкстов ΠΈ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠΏΠΈΠΊ для Π½ΠΎΠ²Ρ‹Ρ… Ρ‚Π²ΠΈΡ‚ΠΎΠ².

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ

        vectorizer = CountVectorizer(analyzer='word',       
min_df=3, # минимально Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ вхоТдСния слова
stop_words='english',# удаляСм стоп-слова
lowercase=True,# ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ всСх слов Π² Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр
token_pattern='[a-zA-Z0-9]{3,}',# удаляСм ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π·Π½Π°ΠΊΠΈ
max_features=5000,# максимальноС количСство ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… слов
)

data_matrix = vectorizer.fit_transform(twitter_usa_df.lemmat_tweet)

lda_model = LatentDirichletAllocation(
n_components=12, # Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ количСство Ρ‚Π΅ΠΌ
learning_method='online',
random_state=62,       
n_jobs = -1  
)

lda_output = lda_model.fit_transform(data_matrix)
    

Визуализация ΠΌΠΎΠ΄Π΅Π»ΠΈ с pyLDAvis

        pyLDAvis.enable_notebook()
p = pyLDAvis.sklearn.prepare(lda_model, data_matrix, vectorizer, mds='tsne')
pyLDAvis.save_html(p, 'lda.html')
    
Π˜Π΄Π΅ΡπŸ’‘
Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ html.
πŸ“Š NLP ΠΈ визуализация тСкста Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π²ΠΈΡ‚ΠΎΠ² ΠΎ прСзидСнтских Π²Ρ‹Π±ΠΎΡ€Π°Ρ… Π² БША

Визуализация ΠΌΠΎΠ΄Π΅Π»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… частотных слов Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚Π΅ΠΌΠ΅

        for i,topic in enumerate(lda_model.components_):
    print(f'Top 10 words for topic #{i + 1}:')
    print([vectorizer.get_feature_names()[i] for i in topic.argsort()[-10:]])
    print('\n')

Top 10 words for topic #1:
['leader', 'corruption', 'nevada', 'gop', 'politics', 'video', 'real', 'georgia', 'ballot', 'hunter']


Top 10 words for topic #2:
['united', 'medium', 'michigan', 'believe', 'look', 'people', 'country', 'news', 'need', 'state']


Top 10 words for topic #3:
['people', 'mail', 'today', 'man', 'work', 'obama', 'american', 'count', 'pennsylvania', 'let']


Top 10 words for topic #4:
['time', 'gon', 'matter', 'turn', 'thing', 'hear', 'kamala', 'win', 'life', 'good']


Top 10 words for topic #5:
['like', 'lose', 'poll', 'time', 'talk', 'debate', 'try', 'maga', 'know', 'win']


Top 10 words for topic #6:
['tax', 'cnn', 'que', 'china', 'hope', 'usa', 'day', 'elect', '2020', 'president']


Top 10 words for topic #7:
['arizona', 'party', 'florida', 'stop', 'covid', '000', 'covid19', 'win', 'republican', 'democrat']


Top 10 words for topic #8:
['racist', 'fraud', 'guy', 'say', 'speech', 'presidential', 'house', 'white', 'lie', 'presidentelect']


Top 10 words for topic #9:
['case', 'claim', 'anti', 'feel', 'fuck', 'lead', 'blm', 'dump', 'new', 'come']


Top 10 words for topic #10:
['red', 'lol', 'political', 'truth', 'child', 'person', 'demvoice1', 'bluewave', 'care', 'end']


Top 10 words for topic #11:
['msnbc', 'black', 'thank', 'support', 'wtpsenate', 'year', 'love', 'harris', 'america', 'kamalaharris']


Top 10 words for topic #12:
['campaign', 'democracy', 'watch', 'debates2020', 'family', 'supporter', 'great', 'wtpblue', 'like', 'think']
    

БоСдиняСм Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ Ρ‚Π΅ΠΌΡ‹ с Ρ‚Π²ΠΈΡ‚Π°ΠΌΠΈ

        topic_values = lda_model.transform(data_matrix)
twitter_usa_df['Topic'] = topic_values.argmax(axis=1)

twitter_usa_df[['tweet', 'Topic']].head(4)

	tweet	Topic
0	#Trump: As a student I used to hear for years,...	0
1	You get a tie! And you get a tie! #Trump β€˜s ra...	11
3	#Trump #PresidentTrump #Trump2020LandslideVict...	8
4	#Trump: Nobody likes to tell you this, but som...	7
    

ΠŸΡ€ΠΎΠ³Π½ΠΎΠ·Π½Π°Ρ модСль для Π½ΠΎΠ²Ρ‹Ρ… Ρ‚Π²ΠΈΡ‚ΠΎΠ²

        # ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ Ρ‚ΠΎΠΏ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚Π΅ΠΌΠ΅ 
def show_topics(vectorizer=vectorizer, lda_model=lda_model, n_words=100):
    keywords = np.array(vectorizer.get_feature_names())
    topic_keywords = []
    for topic_weights in lda_model.components_:
        top_keyword_locs = (-topic_weights).argsort()[:n_words]
        topic_keywords.append(keywords.take(top_keyword_locs))
    return topic_keywords
topic_keywords = show_topics(vectorizer=vectorizer, lda_model=lda_model, n_words=100)        

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ датасСт Ρ‚Π΅ΠΌΠ° - ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово 
df_topic_keywords = pd.DataFrame(topic_keywords)
df_topic_keywords.columns = ['Word '+str(i) for i in range(df_topic_keywords.shape[1])]
df_topic_keywords.index = ['Topic '+str(i) for i in range(df_topic_keywords.shape[0])]
    
        # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ тСкста
def sent_to_words(sentences):
    for sentence in sentences:
        yield(gensim.utils.simple_preprocess(str(sentence), deacc=True)) 

def lemmatization(texts, allowed_postags=['NOUN', 'ADJ', 'VERB', 'ADV']):
    texts_out = []
    for sent in texts:
        doc = nlp(" ".join(sent)) 
        texts_out.append(" ".join([token.lemma_ if token.lemma_ not in ['-PRON-'] else '' for token in doc if token.pos_ in allowed_postags]))
    return texts_out

# Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ модСль 
nlp = spacy.load("en_core_web_sm")

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для прогнозирования Ρ‚Π΅ΠΌΡ‹ для Π½ΠΎΠ²Ρ‹Ρ… Ρ‚Π²ΠΈΡ‚ΠΎΠ²
def predict_topic(text, nlp=nlp):
    global sent_to_words
    global lemmatization
    # ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠΌ тСкст
    mytext_2 = list(sent_to_words(text))
    # ЛСмматизация
    mytext_3 = lemmatization(mytext_2, allowed_postags=['NOUN', 'ADJ', 'VERB', 'ADV'])
    # ВСкторизация
    mytext_4 = vectorizer.transform(mytext_3)
    # Врансформация ΠΌΠΎΠ΄Π΅Π»ΠΈ
    topic_probability_scores = lda_model.transform(mytext_4)
    topic = df_topic_keywords.iloc[np.argmax(topic_probability_scores), :].values.tolist()
    return topic, topic_probability_scores
    
        # ΠŸΡ€ΠΎΠ³Π½ΠΎΠ· для Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚Π²ΠΈΡ‚Π° "Biden is the best president for this country vote for him"
mytext =  ["Biden is the best president for this country vote for him"]
topic, prob_scores = predict_topic(text = mytext)

# Визуализация ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов для Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚Π²ΠΈΡ‚Π°
fig, ax = plt.subplots(figsize=(20,10))
plt.bar(topic[:12], prob_scores[0])
axes = plt.gca()
axes.set_ylim(0, 0.5)
axes.set_xlabel('Related keywords', fontsize = 20)
axes.set_ylabel('Probability score', fontsize = 20)

fig.tight_layout()
plt.show()
    
πŸ“Š NLP ΠΈ визуализация тСкста Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π²ΠΈΡ‚ΠΎΠ² ΠΎ прСзидСнтских Π²Ρ‹Π±ΠΎΡ€Π°Ρ… Π² БША

Новый Ρ‚Π²ΠΈΡ‚ Π±Ρ‹Π» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ Π’Π΅ΠΌΠ° 6 с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ словами DAY ΠΈ HOPE.

        # ΠŸΡ€ΠΎΠ³Π½ΠΎΠ· для Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚Π²ΠΈΡ‚Π° "CNN lies to people"
mytext = ["CNN lies to people"]
topic, prob_scores = predict_topic(text = mytext)
# Визуализация ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов для Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚Π²ΠΈΡ‚Π°

fig, ax = plt.subplots(figsize=(20,10))
plt.bar(topic[:12], prob_scores[0])
axes = plt.gca()
axes.set_ylim(0, .4)
axes.set_xlabel('Related keywords', fontsize = 20)
axes.set_ylabel('Probability score', fontsize = 20)

fig.tight_layout()
plt.show()
    
πŸ“Š NLP ΠΈ визуализация тСкста Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚Π²ΠΈΡ‚ΠΎΠ² ΠΎ прСзидСнтских Π²Ρ‹Π±ΠΎΡ€Π°Ρ… Π² БША

Новый Ρ‚Π²ΠΈΡ‚ Π±Ρ‹Π» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ Π’Π΅ΠΌΠ° 8 с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ словами LIE ΠΈ GUY.

Π˜Π΄Π΅ΡπŸ’‘
Π£Π·Π½Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Ρ‚ΠΎΠΌ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ grid search Π»ΡƒΡ‡ΡˆΠΈΡ… тСматичСских ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ тСкст ΠΊ Π°Π½Π°Π»ΠΈΠ·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ дискурс Π²ΠΎΠΊΡ€ΡƒΠ³ Π²Ρ‹Π±ΠΎΡ€ΠΎΠ² оказалось нСслоТно, Π° Π΅Ρ‰Π΅ ΠΌΡ‹ смогли ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ модСль для опрСдСлСния Ρ‚Π΅ΠΌΡ‹ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚Π²ΠΈΡ‚Π°. Π—Π° этой каТущСйся простотой кроСтся довольно ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Π°Ρ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°, ΠΏΡ€ΠΈΡ‚ΠΎΠΌ ΠΏΠΎΠΌΠΈΠΌΠΎ тСорСтичСских Π·Π½Π°Π½ΠΈΠΉ настоящий Data Scientist Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΈ практичСскиС умСния. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это сидя Π·Π° ΠΊΠ½ΠΈΠ³Π°ΠΌΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ – Π»ΡƒΡ‡ΡˆΠ΅ сразу Π²Π²ΡΠ·Π°Ρ‚ΡŒΡΡ Π² Π΄Ρ€Π°ΠΊΡƒ. Разработанная Π² БША ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° Bootcamp ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ интСнсивноС ΠΎΡ‡Π½ΠΎΠ΅ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² процСсс. Π’ России этот Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Elbrus: студСнты практичСски ΠΆΠΈΠ²ΡƒΡ‚ Π² московском кампусС, посвящая Π½Π°ΡƒΠΊΠ΅ ΠΎ Π΄Π°Π½Π½Ρ‹Ρ… всС Π±ΡƒΠ΄Π½ΠΈΠ΅ Π΄Π½ΠΈ с 9 Π΄ΠΎ 18 часов.

***

Π—Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ Π² ΠΎΠ½Π»Π°ΠΉΠ½Π΅ Π±Π΅Π· ΠΎΡ‚Ρ€Ρ‹Π²Π° ΠΎΡ‚ производства Π½Π΅ получится, Π½ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π±ΡƒΡ‚ΠΊΠ°ΠΌΠΏΠ° обСспСчиваСт Π²Ρ‹ΡΠΎΡ‡Π°ΠΉΡˆΡƒΡŽ Π²ΠΎΠ²Π»Π΅Ρ‡Π΅Π½Π½ΠΎΡΡ‚ΡŒ всСх участников Π² ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ процСсс. Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 12 нСдСль ΠΏΠΎΠ΄ руководством ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΡŽΡ‰Π΅Π³ΠΎ Data Scientist студСнты ΠΎΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ сбор ΠΈ Π°Π½Π°Π»ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ΠΉΡ€ΠΎΠ½Π½Ρ‹Π΅ сСти, машинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ hard ΠΈ soft skills: количСство практичСских занятий ΠΏΡ€ΠΈ этом сравнимо со стаТировкой Π² ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΉ ИВ-ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. УспСшно Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ² курс, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π½Π½Ρ‹Π΅ знания, Π½ΠΎ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ нСсколько ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π² своС ΠΏΠΎΡ€Ρ‚Ρ„ΠΎΠ»ΠΈΠΎ. Π£Π΄Π°Ρ‡ΠΈ!

ΠœΠ•Π ΠžΠŸΠ Π˜Π―Π’Π˜Π―

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

Π’ΠΠšΠΠΠ‘Π˜Π˜

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ вакансию
ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊ
Π•ΠΊΠ°Ρ‚Π΅Ρ€ΠΈΠ½Π±ΡƒΡ€Π³, ΠΏΠΎ ΠΈΡ‚ΠΎΠ³Π°ΠΌ собСсСдования
PHP Developer
ΠΎΡ‚ 200000 RUB Π΄ΠΎ 270000 RUB

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•