рдпрд╣ рддрд░реНрдХ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдЪрд┐рдд ETL рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЗрдВ рдбреЗрдЯрд╛ рд╡рд┐рдЬреНрдЮрд╛рди рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрдЧ рд╣реИрдВред рд╕рд╛рдл-рд╕реБрдерд░реЗ рдФрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдбреЗрдЯрд╛ рдХреЗ рдмрд┐рдирд╛, рдРрд╕реЗ рдЧреБрдгрд╡рддреНрддрд╛рдкреВрд░реНрдг рдЗрдирд╕рд╛рдЗрдЯреНрд╕ рдирд┐рдХрд╛рд▓рдирд╛ рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдирд┐рд░реНрдгрдпреЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдПрдВред
рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рд╣рдо рдпрд╣ рдЬрд╛рдиреЗрдВрдЧреЗ рдХрд┐ R рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реАрдпрд▓-рдЯрд╛рдЗрдо рдЯреНрд╡реАрдЯреНрд╕ рдХреЛ рд╕реАрдзреЗ рдПрдХ SQLite рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реНрдЯреНрд░реАрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ ETL рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдмрдирд╛рдирд╛ рдХреНрдпрд╛-рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЗрдВ рдЕрдХреНрд╕рд░ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХрд╛рд░реНрдп рд╣реИред
рдзреНрдпрд╛рди рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣рдг рдФрд░ рднрдВрдбрд╛рд░рдг рдХреА рд╕реЛрдЪ-рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд╣реЛрдЧрд╛, рд╕рд╛рде рд╣реА R рдореЗрдВ rtweet рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Twitter API рдХреЛ рдХреИрд╕реЗ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░реЗрдВ, рдЗрд╕ рдкрд░ рднреАред
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╕рднреА рд╕рд╣реА рдЯреВрд▓реНрд╕ рддреИрдпрд╛рд░ рд░рдЦреЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ Twitter API рддрдХ рдЕрдкрдиреА рдкрд╣реБрдБрдЪ рд╕реЗрдЯрдЕрдк рдХрд░рдиреА рд╣реЛрдЧреАред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдЖрдкрдХреЛ рдпреЗ рдЪрд░рдг рдЕрдкрдирд╛рдиреЗ рд╣реЛрдВрдЧреЗ:
рдпрджрд┐ рдЖрдкрдХрд╛ Twitter рдЦрд╛рддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдПрдХ рдмрдирд╛рдПрдВред
рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рдЬрд╛рдХрд░ рдбреЗрд╡рд▓рдкрд░ рдЕрдХрд╛рдЙрдВрдЯ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХрд░реЗрдВ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЕрдм рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рдРрд╕реЗ рдЖрд╡реЗрджрди рдХреА рдорд╛рдВрдЧ рдХрд░рддреА рд╣реИ рдЬрд┐рд╕реЗ Twitter рдХреЛ рд╕реНрд╡реАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрддрд╛ рд╣реИ)ред
рдирд┐рдореНрди рд╡реЗрдмрдкреЗрдЬ рдкрд░ рдПрдХ рдирдпрд╛ рдРрдк рдмрдирд╛рдПрдВред
рдЕрдкрдиреЗ рдРрдк рдХреЗ рд╕рднреА рд╡рд┐рд╡рд░рдг рднрд░реЗрдВ рдФрд░ рдЕрдкрдирд╛ рдРрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдмрдирд╛рдПрдБред
рдЕрдкрдирд╛ рдХрдВрдЬреНрдпреВрдорд░ рдХреА, рдХрдВрдЬреНрдпреВрдорд░ рд╕реАрдХреНрд░реЗрдЯ, рдРрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдФрд░ рдРрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рд╕реАрдХреНрд░реЗрдЯ рдПрдХрддреНрд░ рдХрд░реЗрдВ, рдЬрд┐рдирдХреА рдЖрдкрдХреЛ API рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк Twitter API рдХреЗ рд╕рд╛рде рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рдПрдВ, рддреЛ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ SQLite рдирд╣реАрдВ рд╣реИ рддреЛ рдЖрдкрдХреЛ рдЙрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ SQLite рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЗрд╕рдХреА рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП DataCamp рдкрд░ Beginners Guide to SQLite рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП SQLite рдЪреБрдирдиреЗ рдХрд╛ рдХрд╛рд░рдг рдЗрд╕рдХрд╛ рд╕рд░рд▓ рд╕рдВрдЪрд╛рд▓рди рд╣реИред
рдЪрд░рдг 1: Twitter рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдирд╛
Twitter API рдРрдХреНрд╕реЗрд╕ рдФрд░ SQLite рджреЛрдиреЛрдВ рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде, рд╣рдо рдЕрдВрддрддрдГ рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рдордп рдХреЗ рд╕рд╛рде рд╕реНрдЯреНрд░реАрдо рд╣реЛрддреЗ рдЯреНрд╡реАрдЯреНрд╕ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдиреАрдЪреЗ рдмрддрд╛рдП рдЕрдиреБрд╕рд╛рд░ R рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдирд╛ рдирдпрд╛ SQLite рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдПрдВрдЧреЗ:
# Import necessary libraries and functions
library ( RSQLite)
library ( rtweet)
library ( tm)
library ( dplyr)
library ( knitr)
library ( wordcloud)
library ( lubridate)
library ( ggplot2)
source ( "transform_and_clean_tweets.R" )
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
# Create our SQLite database
conn < - dbConnect ( RSQLite: : SQLite ( ) , "Tweet_DB.db" )
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЕрдВрджрд░ рдЯреНрд╡реАрдЯреНрд╕ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдирд┐рдореНрди рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗ:
Tweet_ID рдПрдХ INTEGER рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ
User TEXT рдХреЗ рд░реВрдк рдореЗрдВ
Tweet_Content TEXT рдХреЗ рд░реВрдк рдореЗрдВ
Date_Created INTEGER рдХреЗ рд░реВрдк рдореЗрдВ
рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ рддрд╛рд░реАрдЦреЛрдВ рдХреЛ рдЗрдВрдЯреАрдЬрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпреЛрдВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдБ? рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ SQLite рдореЗрдВ рддрд╛рд░реАрдЦреЛрдВ рдФрд░ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рддрд╛рд░реАрдЦреЗрдВ 1970-01-01 рд╕реЗ рдмреАрддреЗ рд╕реЗрдХрдВрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрдВрдЧреАред
рдЕрдм рдЖрдЗрдП рддрд╛рд▓рд┐рдХрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
dbExecute ( conn, "CREATE TABLE Tweet_Data (
Tweet_ID INTEGER PRIMARY KEY ,
User TEXT ,
Tweet_Content TEXT ,
Date_Created INTEGER ) ")
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк sqlite3.exe рдкрд░ рдЬрд╛рдХрд░ рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрди рдЧрдИ рд╣реИред рдЗрд╕рдХрд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдЖрдк рдиреАрдЪреЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
рдорд╛рдиреЗрдВ рдпрд╛ рди рдорд╛рдиреЗрдВ, рдПрдХ рд╕рд░рд▓, рдХрд╛рд░реНрдпрд╛рддреНрдордХ Twitter рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдФрд░ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рд▓рд┐рд╣рд╛рдЬ рд╕реЗ рдЖрдк рддреИрдпрд╛рд░ рд╣реИрдВред рдЕрдм рд╣рдореЗрдВ API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреНрд╡реАрдЯреНрд╕ рд╕реНрдЯреНрд░реАрдо рдХрд░рдиреЗ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдорд╛рдирдХ рдирд┐:рд╢реБрд▓реНрдХ API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдБрдЧрд╛ред рдкреНрд░реАрдорд┐рдпрдо, рд╕рд╢реБрд▓реНрдХ рд╡рд░реНрдЬрд╝рди рднреА рд╣реИрдВ рдЬреЛ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рд╢реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреА рдЯреНрд╡реАрдЯ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдмрд┐рдирд╛ рджреЗрд░ рдХрд┐рдП, рдЖрдЗрдП рдЕрдкрдирд╛ Twitter рд▓рд┐рд╕реНрдирд░ рд╕реЗрдЯрдЕрдк рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ rtweet рдкреИрдХреЗрдЬ рдЗрдореНрдкреЛрд░реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдРрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдФрд░ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдЗрдирдкреБрдЯ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ, рдЬреИрд╕рд╛ рдХрд┐ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛:
token < - create_token ( app = 'Your_App_Name' ,
consumer_key = 'Your_Consumer_Key' ,
consumer_secret = 'Your_Consumer_Secret' ,
access_token = 'Your_Access_Token' ,
access_secret = 'Your_Access_Secret' )
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдЯреЛрдХрди рд╕реЗрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдЧрд▓рд╛ рдХрджрдо рдпрд╣ рддрдп рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреМрди рд╕реЗ рдЯреНрд╡реАрдЯреНрд╕ рд╕реНрдЯреНрд░реАрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдпрд╛рдиреА, рдХрд┐рд╕реЗ рд╕реБрдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ)ред rtweet рдкреИрдХреЗрдЬ рдХрд╛ stream_tweets рдлрд╝рдВрдХреНрд╢рди рд╣рдореЗрдВ Twitter API рд╕реЗ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рджрд┐рдП рдЧрдП рд╣реИрд╢рдЯреИрдЧреНрд╕ рдпрд╛ рдХреАрд╡рд░реНрдбреНрд╕ (400 рддрдХ) рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рд╡рд╛рд▓реЗ рдЯреНрд╡реАрдЯреНрд╕ рд╕реНрдЯреНрд░реАрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдЯреНрд╡реАрдЯреНрд╕ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд░реИрдВрдбрдо рдЙрдкрд╕рдореБрдЪреНрдЪрдп, рдпреВрдЬрд╝рд░ IDs рдпрд╛ рд╕реНрдХреНрд░реАрди (рдпреВрдЬрд╝рд░) рдирд╛рдореЛрдВ (5000 рддрдХ) рдХреЗ рд╕рдореВрд╣ рдХреЗ рдЯреНрд╡реАрдЯреНрд╕ рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рднреМрдЧреЛрд▓рд┐рдХ рд▓реЛрдХреЗрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЯреНрд╡реАрдЯреНрд╕ рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдбреЗрдЯрд╛ рд╕рд╛рдЗрдВрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрд╢рдЯреИрдЧреНрд╕ рд╡рд╛рд▓реЗ рдЯреНрд╡реАрдЯреНрд╕ рд╕реНрдЯреНрд░реАрдо рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ (рдиреАрдЪреЗ рд╕реВрдЪреА рджреЗрдЦреЗрдВ)ред рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЬрд┐рди рд╣реИрд╢рдЯреИрдЧреНрд╕ рдХреЛ рд╕реНрдЯреНрд░реАрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЙрдирдХрд╛ рдлрд╝реЙрд░реНрдореЗрдЯ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрдм рдЖрдк рд╣реИрд╢рдЯреИрдЧреНрд╕ рдпрд╛ рдХреАрд╡рд░реНрдбреНрд╕ рдХреЛ рд╕реБрдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ stream_tweets рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдЗрд╕реА рдлрд╝реЙрд░реНрдореЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдирд┐рд╢реНрдЪрд┐рдд рдпреВрдЬрд╝рд░ рд╕реЗрдЯ рдпрд╛ рдХреЛрдСрд░реНрдбрд┐рдиреЗрдЯреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реБрдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдлрд╝реЙрд░реНрдореЗрдЯ рдмрджрд▓рддрд╛ рд╣реИред рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рджреЗрдЦреЗрдВред
keys < - "#nlp,#machinelearning,#datascience,#chatbots,#naturallanguageprocessing,#deeplearning"
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдХреАрд╡рд░реНрдбреНрд╕ рддрдп рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде, рдЕрдм рдЯреНрд╡реАрдЯ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд▓реВрдк рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдЗрд╕реЗ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдлрд╝реЙрд░реНрдореЗрдЯ рдЕрддреАрдд рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд░рд╣рд╛ рд╣реИ:
# Initialize the streaming hour tally
hour_counter < - 0
# Initialize a while loop that stops when the number of hours you want to stream tweets for is exceeded
while ( hour_counter <= 12 ) {
# Set the stream time to 2 hours each iteration ( 7200 seconds)
streamtime < - 7200
# Create the file name where the 2 hour stream will be stored. Note that the Twitter API outputs a . json file.
filename < - paste0 ( "nlp_stream_" , format ( Sys. time ( ) , '%d_%m_%Y__%H_%M_%S' ) , ".json" )
# Stream Tweets containing the desired keys for the specified amount of time
stream_tweets ( q = keys, timeout = streamtime, file_name = filename)
# Clean the streamed tweets and select the desired fields
clean_stream < - transform_and_clean_tweets ( filename, remove_rts = TRUE )
# Append the streamed tweets to the Tweet_Data table in the SQLite database
dbWriteTable ( conn, "Tweet_Data" , clean_stream, append = T )
# Delete the . json file from this 2 - hour stream
file. remove ( filename)
# Add the hours to the tally
hour_counter < - hour_counter + 2
}
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдореВрд▓ рд░реВрдк рд╕реЗ, рдпрд╣ рд▓реВрдк 2-2 рдШрдВрдЯреЗ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдХреБрд▓ 12 рдШрдВрдЯреЗ рддрдХ, рдХреА-рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рджрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рд╣реИрд╢рдЯреИрдЧ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЬрд┐рддрдиреЗ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдиреЗ рдЯреНрд╡реАрдЯреНрд╕ рд╕реНрдЯреНрд░реАрдо рдХрд░рддрд╛ рд╣реИред рд╣рд░ 2 рдШрдВрдЯреЗ рдореЗрдВ, Twitter рд▓рд┐рд╕реНрдирд░ рдЖрдкрдХреЗ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдХрд┐рдВрдЧ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ filename рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ .json рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИред
рдлрд┐рд░, рдпрд╣ рдЗрд╕ рдлрд╝рд╛рдЗрд▓рдирд╛рдо рдХреЛ transform_and_clean_tweets рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рд░рд┐рдЯреНрд╡реАрдЯреНрд╕ рд╣рдЯрд╛рддрд╛ рд╣реИ, Twitter API рджреНрд╡рд╛рд░рд╛ рджреА рдЧрдИ рд╕рднреА рдХреЙрд▓рдореЛрдВ рдореЗрдВ рд╕реЗ рд╡реЗ рдЪреБрдирддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЯреНрд╡реАрдЯреНрд╕ рдореЗрдВ рдирд┐рд╣рд┐рдд рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдпрд╣ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдмрдиреЗ рдбреЗрдЯрд╛ рдлреНрд░реЗрдо рдХреЛ рд╣рдорд╛рд░реЗ SQLite рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЕрдВрджрд░ рдкрд╣рд▓реЗ рдмрдирд╛рдИ рдЧрдИ Tweet_Data рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдпрд╣ рдШрдВрдЯреЛрдВ рдХреЗ рдХрд╛рдЙрдВрдЯрд░ рдореЗрдВ 2 рдЬреЛрдбрд╝рддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯреНрд░реАрдо 2 рдШрдВрдЯреЗ рддрдХ рдЪрд▓рддреА рд╣реИ), рдФрд░ рдмрдирд╛рдИ рдЧрдИ .json рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рд╣рдорд╛рд░реА рд╕рднреА рд░реБрдЪрд┐ рдХрд╛ рдбреЗрдЯрд╛ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╣реИ, рдФрд░ .json рдлрд╝рд╛рдЗрд▓реЗрдВ рд░рдЦрдирд╛ рд╕реНрдЯреЛрд░реЗрдЬ рдкрд░ рдмреЛрдЭ рдмрди рд╕рдХрддрд╛ рд╣реИред
рдЕрдм рдЖрдЗрдП transform_and_clean_tweets рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦреЗрдВ:
transform_and_clean_tweets < - function ( filename, remove_rts = TRUE ) {
# Import the normalize_text function
source ( "normalize_text.R" )
# Parse the . json file given by the Twitter API into an R data frame
df < - parse_stream ( filename)
# If remove_rst = TRUE , filter out all the retweets from the stream
if ( remove_rts == TRUE ) {
df < - filter ( df, df$is_retweet == FALSE )
}
# Keep only the tweets that are in English
df < - filter ( df, df$lang == "en" )
# Select the features that you want to keep from the Twitter stream and rename them
# so the names match those of the columns in the Tweet_Data table in our database
small_df < - df[ , c ( "screen_name" , "text" , "created_at" ) ]
names ( small_df) < - c ( "User" , "Tweet_Content" , "Date_Created" )
# Finally normalize the tweet text
small_df$Tweet_Content < - sapply ( small_df$Tweet_Content, normalize_text)
# Return the processed data frame
return ( small_df)
}
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдЬреИрд╕рд╛ рдХрд┐ рдиреЛрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рд░рд┐рдЯреНрд╡реАрдЯреНрд╕ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ, рд╡рд╛рдВрдЫрд┐рдд рдлреАрдЪрд░реНрд╕ рдмрдирд╛рдП рд░рдЦрдиреЗ рдФрд░ рдЯреНрд╡реАрдЯ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ, рдЗрд╕реЗ ETL рд╕рдВрдХреНрд╖реЗрдк рдХреЗ "T" рднрд╛рдЧ (рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди) рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдкреНрд░рдореБрдЦ рдШрдЯрдХ рдЯреНрд╡реАрдЯ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред
рдЖрдо рддреМрд░ рдкрд░, рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЯреЗрдХреНрд╕реНрдЯ рдбреЗрдЯрд╛ рдХреЛ рдХреБрдЫ рдкреНрд░реА-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЪрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЯреНрд╡реАрдЯреНрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрди рдЪрд░рдгреЛрдВ рдореЗрдВ URLs, рд╕реНрдЯреЙрдк рд╡рд░реНрдбреНрд╕ рдФрд░ рдореЗрдВрд╢рдиреНрд╕ рдХреЛ рд╣рдЯрд╛рдирд╛, рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд▓реЛрдЕрд░ рдХреЗрд╕ рдореЗрдВ рдмрджрд▓рдирд╛, рд╢рдмреНрджреЛрдВ рдХрд╛ рд╕реНрдЯреЗрдорд┐рдВрдЧ рдХрд░рдирд╛ рдЖрджрд┐ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпреЗ рд╕рднреА рдЪрд░рдг рд╣рд░ рд╕рдордп рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛрддреЗред рдлрд┐рд░ рднреА, рдлрд┐рд▓рд╣рд╛рд▓, рдореИрдВ рдиреАрдЪреЗ рд╡реЗ рдЯреНрд╡реАрдЯреНрд╕ рдкреНрд░реА-рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП normalize_text рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реВрдВрдЧрд╛:
normalize_text < - function ( text ) {
# Keep only ASCII characters
text = iconv ( text, "latin1" , "ASCII" , sub= "" )
# Convert to lower case characters
text = tolower ( text)
# Remove any HTML tags
text = gsub ( "<.*?>" , " " , text)
# Remove URLs
text = gsub ( "\\s?(f|ht)(tp)(s?)(://)([^\\.]*)[\\.|/](\\S*)" , "" , text)
# Keep letters and numbers only
text = gsub ( "[^[:alnum:]]" , " " , text)
# Remove stop words
text = removeWords ( text, c ( "rt" , "gt" , stopwords ( "en" ) ) )
# Remove any extra white space
text = stripWhitespace ( text)
text = gsub ( "^\\s+|\\s+$" , "" , text)
return ( text)
}
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ-рдХреЗрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдпреЗ рдЪрд░рдг рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЧрдпрд╛, рдЖрдк рд╕реНрдЯреЗрдорд┐рдВрдЧ рдпрд╛ рд▓реИрдореЗрдЯрд╛рдЗрдЬрд╝реЗрд╢рди рдЬреИрд╕реЗ рдФрд░/рдпрд╛ рднрд┐рдиреНрди рдЪрд░рдг рдЬреЛрдбрд╝рдирд╛ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдХреЗрд╡рд▓ рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рд░рдЦрдирд╛ (рдЕрдХреНрд╖рд░реЛрдВ рдФрд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдмрдЬрд╛рдп) рдкрд╕рдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЖрдкрдХреЛ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЛ рдЖрдЬрд╝рдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реВрдБред рдпрд╣ regex рдХреМрд╢рд▓ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░реАрди рдЬрдЧрд╣ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдЗрди рд╕рднреА рдЪрд░рдгреЛрдВ рдХреЗ рдмрд╛рдж, рдкрд░рд┐рдгрд╛рдореА рд╕реНрдерд┐рддрд┐ рдПрдХ рдРрд╕рд╛ SQLite рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ рдЬреЛ рд╕рднреА рд╕реНрдЯреНрд░реАрдо рдХрд┐рдП рдЧрдП рдЯреНрд╡реАрдЯреНрд╕ рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣реИред рдЖрдк, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд╕рд░рд▓ рдХреНрд╡реЗрд░реА рдЪрд▓рд╛рдХрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛:
data_test < - dbGetQuery ( conn, "SELECT * FROM Tweet_Data LIMIT 20" )
unique_rows < - dbGetQuery ( conn, "SELECT COUNT() AS Total FROM Tweet_Data" )
kable ( data_test)
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
print ( as . numeric ( unique_rows) )
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
## [ 1 ] 1863
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдЪрд░рдг 3: рд╡рд┐рд╢реНрд▓реЗрд╖рдг
рдЬрдм рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рдЬрд╛рдП рдХрд┐ ETL рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ, рддреЛ рдЕрдВрддрд┐рдо рдЪрд░рдг рд╣реИ рдХреБрдЫ рдЗрдирд╕рд╛рдЗрдЯреНрд╕ рдирд┐рдХрд╛рд▓рдирд╛ рдФрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░рд┐рдд рдбреЗрдЯрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдЬреЛ рдЯреНрд╡реАрдЯреНрд╕ рдПрдХрддреНрд░ рдХрд┐рдП рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рд╣рдо рдХреБрдЫ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪреАрдЬрд╝реЗрдВ рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ; рдЯреНрд╡реАрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╢рдмреНрджреЛрдВ рдХрд╛ рд╡рд░реНрдбрдХреНрд▓рд╛рдЙрдб, рдФрд░ рдПрдХ рдЯрд╛рдЗрдорд▓рд╛рдЗрди рдЬреЛ рдпрд╣ рджрд┐рдЦрд╛рдП рдХрд┐ рд╣рдорд╛рд░реЗ 12-рдШрдВрдЯреЗ рдХреЗ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдЕрд╡рдзрд┐ рдореЗрдВ рдХрд┐рд╕ рд╕рдордп рд╣рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЯреНрд╡реАрдЯреНрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реБрдПред рдпрд╣ рд╕реВрдЪреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрди рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╢реЛрдзреЛрдВ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рдЕрд╡рд▓реЛрдХрди рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЯреНрд╡реАрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╕реЗрдВрдЯрд┐рдореЗрдВрдЯ рдПрдирд╛рд▓рд┐рд╕рд┐рд╕ рд╕реЗ рд▓реЗрдХрд░ рд╕рд╛рдЗрдХреЛрдЧреНрд░рд╛рдлрд┐рдХ рд╕реНрдЯрдбреАрдЬрд╝ рдФрд░ рдЖрдЧреЗ рддрдХ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП, рдЪрд▓рд┐рдП рд╕реАрдзреЗ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд░реНрдбрдХреНрд▓рд╛рдЙрдб рдмрдирд╛рдиреЗ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ:
# Gather all tweets from the database
all_tweets < - dbGetQuery ( conn, "SELECT Tweet_ID, Tweet_Content FROM Tweet_Data" )
# Create a term- document matrix and sort the words by frequency
dtm < - TermDocumentMatrix ( VCorpus ( VectorSource ( all_tweets$Tweet_Content) ) )
dtm_mat < - as . matrix ( dtm)
sorted < - sort ( rowSums ( dtm_mat) , decreasing = TRUE )
freq_df < - data. frame ( words = names ( sorted) , freq = sorted)
# Plot the wordcloud
set. seed ( 42 )
wordcloud ( words = freq_df$words, freq = freq_df$freq, min. freq = 10 ,
max. words= 50 , random. order= FALSE , rot. per= 0.15 ,
colors= brewer. pal ( 8 , "RdYlGn" ) )
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рд╡рд╛рд╣, рдХреНрдпрд╛ рднрд╛рд░реА рдЖрд╢реНрдЪрд░реНрдп! machinelearning рдФрд░ datascience рд╣рдорд╛рд░реЗ рд╕рднреА рдЯреНрд╡реАрдЯреНрд╕ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╢рдмреНрдж рд╣реИрдВтАФрдпреЗ рд╡рд╣реА рджреЛ рд╣реИрд╢рдЯреИрдЧ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рд╣рдо рд╕реНрдЯреНрд░реАрдо рдХрд░ рд░рд╣реЗ рдереЗред рдЕрддрдГ, рдпрд╣ рдкрд░рд┐рдгрд╛рдо рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛ред рдмрд╛рдХреА рд╢рдмреНрдж рджреЗрдЦрдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд░реЛрдЪрдХ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, bigdata рдФрд░ artificialintelligence рд╣рдорд╛рд░реЗ рдХреАрдЬрд╝ рдореЗрдВ рд╣реИрд╢рдЯреИрдЧ рдирд╣реАрдВ рдереЗ, рдлрд┐рд░ рднреА рд╡реЗ рдЙрдЪреНрдЪ рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдкреНрд░рдХрдЯ рд╣реБрдП, рдЗрд╕рд▓рд┐рдП рдпрд╣ рддрд░реНрдХ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрди рдкрд░ рднреА рдЕрдиреНрдп рджреЛ рдХреЗ рд╕рд╛рде рдЕрдХреНрд╕рд░ рдЪрд░реНрдЪрд╛ рд╣реЛрддреА рд╣реИред рд╣рдордиреЗ рдЕрдиреНрдп рджрд┐рд▓рдЪрд╕реНрдк рд╢рдмреНрдж рднреА рдЙрдард╛рдП рдЬреИрд╕реЗ python рдпрд╛ tensorflow рдЬреЛ рд╣рдореЗрдВ рд╕рд┐рд░реНрдл рд╣реИрд╢рдЯреИрдЧреНрд╕ рд╕реЗ рдкрд░реЗ, рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдЯреНрд╡реАрдЯреНрд╕ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рд╕рдВрджрд░реНрдн рджреЗрддреЗ рд╣реИрдВред
рдЕрдм рдПрдХ рдФрд░ рд╕рд░рд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реА 12-рдШрдВрдЯреЗ рдХреА рд╕реНрдЯреНрд░реАрдо рдореЗрдВ, рд╣рдордиреЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЯреНрд╡реАрдЯреНрд╕ рдХрд┐рд╕ рд╕рдордп рдПрдХрддреНрд░ рдХрд┐рдП? рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреА рдЗрдВрдЯреАрдЬрд░ рддрд┐рдерд┐рдпрд╛рдБ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВрдЧреЗ, рдЙрдиреНрд╣реЗрдВ рдЙрдЪрд┐рдд рдлрд╝реЙрд░реНрдореЗрдЯ рдореЗрдВ рдмрджрд▓реЗрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рд╕рдордп рдХреЗ рд╕рд╛рде рдЯреНрд╡реАрдЯреНрд╕ рдХреА рдорд╛рддреНрд░рд╛ рдХрд╛ рдкреНрд▓реЙрдЯ рдмрдирд╛рдПрдВрдЧреЗ:
# Select the dates in which the tweets were created and convert them into UTC date- time format
all_tweets < - dbGetQuery ( conn, "SELECT Tweet_ID, Date_Created FROM Tweet_Data" )
all_tweets$Date_Created < - as . POSIXct ( all_tweets$Date_Created, origin = "1970-01-01" , tz = "UTC" )
# Group by the day and hour and count the number of tweets that occurred in each bucket
all_tweets_2 < - all_tweets % > %
mutate ( day = day ( Date_Created) ,
month = month ( Date_Created, label = TRUE ) ,
hour = hour ( Date_Created) ) % > %
mutate ( day_hour = paste ( month, "-" , day, "-" , hour, sep = "" ) ) % > %
group_by ( day_hour) % > %
tally ( )
# Simple line ggplot
ggplot ( all_tweets_2, aes ( x = day_hour, y = n) ) +
geom_line ( aes ( group = 1 ) ) +
theme_minimal ( ) +
ggtitle ( "Tweet Freqeuncy During the 12-h Streming Period" ) +
ylab ( "Tweet Count" ) +
xlab ( "Month-Day-Hour" )
рд╕рдВрдЪрд╛рд▓рд┐рдд рджреНрд╡рд╛рд░рд╛
рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! рдЕрдм рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЕрджреНрд╡рд┐рддреАрдп рдЯреНрд╡реАрдЯреНрд╕ 2 рд╕рд┐рддрдВрдмрд░ рдХреЛ 8:00 PM UTC рд╕реЗ 8:59 PM UTC рдХреЗ рдмреАрдЪ рдорд┐рд▓реЗ (рдпрд╣ рд╕реИрдиреНрдп рд╕рдордп рдореЗрдВ 20 рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрддрд╛ рд╣реИ)ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдмрдзрд╛рдИ рд╣реЛ! рдЕрдм рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ R рдореЗрдВ рдПрдХ рд╕рд░рд▓ ETL рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреИрд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВред рд╣рдордиреЗ рдЬреЛ рджреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдП, рд╡реЗ Twitter рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдмрд╣реБрдд рдмреБрдирд┐рдпрд╛рджреА рд╡рд┐рд╢реНрд▓реЗрд╖рдгреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЬреИрд╕реЗ рд╣реА рдЖрдк рдбреЗрдЯрд╛ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдордЬрд╝рдмреВрдд рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдмрдирд╛рддреЗ рд╣реИрдВ, рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рд╣реИред рдпрд╣реА рдкрд╣рд▓реВ рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдореБрдЦреНрдп рдлреЛрдХрд╕ рдерд╛ред
рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП, рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ Twitter рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП ETL рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдЪрд▓рдиреЗ рд╣реЗрддреБ рдХреЗрд╡рд▓ рдПрдХ рдмрд╣реБрдд рдЫреЛрдЯреЗ рдкреИрдорд╛рдиреЗ рдХрд╛ рдХреЗрд╕ рд╕реНрдЯрдбреА рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдкреВрд░реЗ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рдХреЗ рд▓рд┐рдП рдордЬрд╝рдмреВрдд рдФрд░ рд╕реНрдХреЗрд▓реЗрдмрд▓ ETL рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдмрдирд╛рдирд╛ рдПрдХ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдп рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдкрдХ рдХрдореНрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдФрд░ рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдмрд┐рдЧ рдбреЗрдЯрд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛред
рдореИрдВ рдЖрдкрдХреЛ рдЖрдЧреЗ рд╢реЛрдз рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдЫреЛрдЯреЗ рдкреИрдорд╛рдиреЗ рдХреА рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЗрдВ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реВрдБ, рдЬрд┐рд╕рдореЗрдВ Python рдореЗрдВ рдПрдХ рдмрдирд╛рдирд╛ рднреА рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╢рд╛рдпрдж, рдЖрдЧреЗ рдмрдврд╝реЗрдВ рдФрд░ рдХреБрдЫ рдмрд┐рдЧ рдбреЗрдЯрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рднреА рдЖрдЬрд╝рдорд╛рдПрдБред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, DataCamp рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдРрд╕реЗ рдХреЛрд░реНрд╕ рд╣реИрдВ рдЬреИрд╕реЗ рдпрд╣ Big Data Fundamentals via PySpark рдХреЛрд░реНрд╕, рдЬрд╣рд╛рдБ рд╡реЗ PySpark рдЬреИрд╕реЗ рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд┐рдЧ рдбреЗрдЯрд╛ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЖрдкрдХреЗ рдЬреНрдЮрд╛рди рдХреЛ рдФрд░ рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдк рдбреЗрдЯрд╛ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ DataCamp рдХрд╛ Introduction to Data Engineering рдХреЛрд░реНрд╕ рд▓реЗрдВред рдФрд░ рдпрджрд┐ рдЖрдк рдирд┐рдпреЛрдХреНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рдордиреЗ рдЕрдкрдиреЗ рдирдП рдХреМрд╢рд▓ рд╕рд┐рджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реА Data Engineer Certification рджреЗрдЦреЗрдВред┬а
рд╕рдВрджрд░реНрдн
Foley, D. (2019, May 11). Streaming Twitter Data into a MySQL Database. рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛: https://towardsdatascience.com/streaming-twitter-data-into-a-mysql-database-d62a02b050d6
рдпрд╣ рддрд░реНрдХ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдЪрд┐рдд ETL рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЗрдВ рдбреЗрдЯрд╛ рд╡рд┐рдЬреНрдЮрд╛рди рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрдЧ рд╣реИрдВред рд╕рд╛рдл-рд╕реБрдерд░реЗ рдФрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдбреЗрдЯрд╛ рдХреЗ рдмрд┐рдирд╛, рдРрд╕реЗ рдЧреБрдгрд╡рддреНрддрд╛рдкреВрд░реНрдг рдЗрдирд╕рд╛рдЗрдЯреНрд╕ рдирд┐рдХрд╛рд▓рдирд╛ рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдирд┐рд░реНрдгрдпреЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдПрдВред
рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рд╣рдо рдпрд╣ рдЬрд╛рдиреЗрдВрдЧреЗ рдХрд┐ R рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реАрдпрд▓-рдЯрд╛рдЗрдо рдЯреНрд╡реАрдЯреНрд╕ рдХреЛ рд╕реАрдзреЗ рдПрдХ SQLite рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реНрдЯреНрд░реАрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ ETL рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдмрдирд╛рдирд╛ рдХреНрдпрд╛-рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЗрдВ рдЕрдХреНрд╕рд░ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХрд╛рд░реНрдп рд╣реИред
рдзреНрдпрд╛рди рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣рдг рдФрд░ рднрдВрдбрд╛рд░рдг рдХреА рд╕реЛрдЪ-рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд╣реЛрдЧрд╛, рд╕рд╛рде рд╣реА R рдореЗрдВ rtweet рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Twitter API рдХреЛ рдХреИрд╕реЗ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░реЗрдВ, рдЗрд╕ рдкрд░ рднреАред
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╕рднреА рд╕рд╣реА рдЯреВрд▓реНрд╕ рддреИрдпрд╛рд░ рд░рдЦреЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ Twitter API рддрдХ рдЕрдкрдиреА рдкрд╣реБрдБрдЪ рд╕реЗрдЯрдЕрдк рдХрд░рдиреА рд╣реЛрдЧреАред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдЖрдкрдХреЛ рдпреЗ рдЪрд░рдг рдЕрдкрдирд╛рдиреЗ рд╣реЛрдВрдЧреЗ:
рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк Twitter API рдХреЗ рд╕рд╛рде рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рдПрдВ, рддреЛ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ SQLite рдирд╣реАрдВ рд╣реИ рддреЛ рдЖрдкрдХреЛ рдЙрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ SQLite рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЗрд╕рдХреА рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП DataCamp рдкрд░ Beginners Guide to SQLite рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП SQLite рдЪреБрдирдиреЗ рдХрд╛ рдХрд╛рд░рдг рдЗрд╕рдХрд╛ рд╕рд░рд▓ рд╕рдВрдЪрд╛рд▓рди рд╣реИред
рдЪрд░рдг 1: Twitter рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдирд╛
Twitter API рдРрдХреНрд╕реЗрд╕ рдФрд░ SQLite рджреЛрдиреЛрдВ рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде, рд╣рдо рдЕрдВрддрддрдГ рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рдордп рдХреЗ рд╕рд╛рде рд╕реНрдЯреНрд░реАрдо рд╣реЛрддреЗ рдЯреНрд╡реАрдЯреНрд╕ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдиреАрдЪреЗ рдмрддрд╛рдП рдЕрдиреБрд╕рд╛рд░ R рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдирд╛ рдирдпрд╛ SQLite рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдПрдВрдЧреЗ:
рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЕрдВрджрд░ рдЯреНрд╡реАрдЯреНрд╕ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдирд┐рдореНрди рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗ:
рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ рддрд╛рд░реАрдЦреЛрдВ рдХреЛ рдЗрдВрдЯреАрдЬрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпреЛрдВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдБ? рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ SQLite рдореЗрдВ рддрд╛рд░реАрдЦреЛрдВ рдФрд░ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рддрд╛рд░реАрдЦреЗрдВ 1970-01-01 рд╕реЗ рдмреАрддреЗ рд╕реЗрдХрдВрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрдВрдЧреАред
рдЕрдм рдЖрдЗрдП рддрд╛рд▓рд┐рдХрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк sqlite3.exe рдкрд░ рдЬрд╛рдХрд░ рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрди рдЧрдИ рд╣реИред рдЗрд╕рдХрд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдЖрдк рдиреАрдЪреЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
рдЪрд░рдг 2: рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рд╡рд┐рд╖рдпреЛрдВ рдкрд░ рдЯреНрд╡реАрдЯреНрд╕ рд╕реНрдЯреНрд░реАрдо рдХрд░реЗрдВ!
рдорд╛рдиреЗрдВ рдпрд╛ рди рдорд╛рдиреЗрдВ, рдПрдХ рд╕рд░рд▓, рдХрд╛рд░реНрдпрд╛рддреНрдордХ Twitter рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдФрд░ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рд▓рд┐рд╣рд╛рдЬ рд╕реЗ рдЖрдк рддреИрдпрд╛рд░ рд╣реИрдВред рдЕрдм рд╣рдореЗрдВ API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреНрд╡реАрдЯреНрд╕ рд╕реНрдЯреНрд░реАрдо рдХрд░рдиреЗ рд╣реИрдВред рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдорд╛рдирдХ рдирд┐:рд╢реБрд▓реНрдХ API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдБрдЧрд╛ред рдкреНрд░реАрдорд┐рдпрдо, рд╕рд╢реБрд▓реНрдХ рд╡рд░реНрдЬрд╝рди рднреА рд╣реИрдВ рдЬреЛ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рд╢реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреА рдЯреНрд╡реАрдЯ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдмрд┐рдирд╛ рджреЗрд░ рдХрд┐рдП, рдЖрдЗрдП рдЕрдкрдирд╛ Twitter рд▓рд┐рд╕реНрдирд░ рд╕реЗрдЯрдЕрдк рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ rtweet рдкреИрдХреЗрдЬ рдЗрдореНрдкреЛрд░реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдРрдХреНрд╕реЗрд╕ рдЯреЛрдХрди рдФрд░ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдЗрдирдкреБрдЯ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ, рдЬреИрд╕рд╛ рдХрд┐ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛:
рдЯреЛрдХрди рд╕реЗрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдЧрд▓рд╛ рдХрджрдо рдпрд╣ рддрдп рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреМрди рд╕реЗ рдЯреНрд╡реАрдЯреНрд╕ рд╕реНрдЯреНрд░реАрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдпрд╛рдиреА, рдХрд┐рд╕реЗ рд╕реБрдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ)ред rtweet рдкреИрдХреЗрдЬ рдХрд╛ stream_tweets рдлрд╝рдВрдХреНрд╢рди рд╣рдореЗрдВ Twitter API рд╕реЗ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рджрд┐рдП рдЧрдП рд╣реИрд╢рдЯреИрдЧреНрд╕ рдпрд╛ рдХреАрд╡рд░реНрдбреНрд╕ (400 рддрдХ) рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рд╡рд╛рд▓реЗ рдЯреНрд╡реАрдЯреНрд╕ рд╕реНрдЯреНрд░реАрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдЯреНрд╡реАрдЯреНрд╕ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд░реИрдВрдбрдо рдЙрдкрд╕рдореБрдЪреНрдЪрдп, рдпреВрдЬрд╝рд░ IDs рдпрд╛ рд╕реНрдХреНрд░реАрди (рдпреВрдЬрд╝рд░) рдирд╛рдореЛрдВ (5000 рддрдХ) рдХреЗ рд╕рдореВрд╣ рдХреЗ рдЯреНрд╡реАрдЯреНрд╕ рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рднреМрдЧреЛрд▓рд┐рдХ рд▓реЛрдХреЗрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЯреНрд╡реАрдЯреНрд╕ рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдбреЗрдЯрд╛ рд╕рд╛рдЗрдВрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрд╢рдЯреИрдЧреНрд╕ рд╡рд╛рд▓реЗ рдЯреНрд╡реАрдЯреНрд╕ рд╕реНрдЯреНрд░реАрдо рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ (рдиреАрдЪреЗ рд╕реВрдЪреА рджреЗрдЦреЗрдВ)ред рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЬрд┐рди рд╣реИрд╢рдЯреИрдЧреНрд╕ рдХреЛ рд╕реНрдЯреНрд░реАрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЙрдирдХрд╛ рдлрд╝реЙрд░реНрдореЗрдЯ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрдм рдЖрдк рд╣реИрд╢рдЯреИрдЧреНрд╕ рдпрд╛ рдХреАрд╡рд░реНрдбреНрд╕ рдХреЛ рд╕реБрдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ stream_tweets рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдЗрд╕реА рдлрд╝реЙрд░реНрдореЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдирд┐рд╢реНрдЪрд┐рдд рдпреВрдЬрд╝рд░ рд╕реЗрдЯ рдпрд╛ рдХреЛрдСрд░реНрдбрд┐рдиреЗрдЯреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реБрдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдлрд╝реЙрд░реНрдореЗрдЯ рдмрджрд▓рддрд╛ рд╣реИред рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рджреЗрдЦреЗрдВред
рдХреАрд╡рд░реНрдбреНрд╕ рддрдп рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде, рдЕрдм рдЯреНрд╡реАрдЯ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд▓реВрдк рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдЗрд╕реЗ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдлрд╝реЙрд░реНрдореЗрдЯ рдЕрддреАрдд рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд░рд╣рд╛ рд╣реИ:
рдореВрд▓ рд░реВрдк рд╕реЗ, рдпрд╣ рд▓реВрдк 2-2 рдШрдВрдЯреЗ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдХреБрд▓ 12 рдШрдВрдЯреЗ рддрдХ, рдХреА-рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рджрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рд╣реИрд╢рдЯреИрдЧ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЬрд┐рддрдиреЗ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдиреЗ рдЯреНрд╡реАрдЯреНрд╕ рд╕реНрдЯреНрд░реАрдо рдХрд░рддрд╛ рд╣реИред рд╣рд░ 2 рдШрдВрдЯреЗ рдореЗрдВ, Twitter рд▓рд┐рд╕реНрдирд░ рдЖрдкрдХреЗ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдХрд┐рдВрдЧ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ filename рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ .json рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИред
рдлрд┐рд░, рдпрд╣ рдЗрд╕ рдлрд╝рд╛рдЗрд▓рдирд╛рдо рдХреЛ transform_and_clean_tweets рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рд░рд┐рдЯреНрд╡реАрдЯреНрд╕ рд╣рдЯрд╛рддрд╛ рд╣реИ, Twitter API рджреНрд╡рд╛рд░рд╛ рджреА рдЧрдИ рд╕рднреА рдХреЙрд▓рдореЛрдВ рдореЗрдВ рд╕реЗ рд╡реЗ рдЪреБрдирддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЯреНрд╡реАрдЯреНрд╕ рдореЗрдВ рдирд┐рд╣рд┐рдд рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдпрд╣ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдмрдиреЗ рдбреЗрдЯрд╛ рдлреНрд░реЗрдо рдХреЛ рд╣рдорд╛рд░реЗ SQLite рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЕрдВрджрд░ рдкрд╣рд▓реЗ рдмрдирд╛рдИ рдЧрдИ Tweet_Data рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдпрд╣ рдШрдВрдЯреЛрдВ рдХреЗ рдХрд╛рдЙрдВрдЯрд░ рдореЗрдВ 2 рдЬреЛрдбрд╝рддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯреНрд░реАрдо 2 рдШрдВрдЯреЗ рддрдХ рдЪрд▓рддреА рд╣реИ), рдФрд░ рдмрдирд╛рдИ рдЧрдИ .json рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рд╣рдорд╛рд░реА рд╕рднреА рд░реБрдЪрд┐ рдХрд╛ рдбреЗрдЯрд╛ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╣реИ, рдФрд░ .json рдлрд╝рд╛рдЗрд▓реЗрдВ рд░рдЦрдирд╛ рд╕реНрдЯреЛрд░реЗрдЬ рдкрд░ рдмреЛрдЭ рдмрди рд╕рдХрддрд╛ рд╣реИред
рдЕрдм рдЖрдЗрдП transform_and_clean_tweets рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦреЗрдВ:
рдЬреИрд╕рд╛ рдХрд┐ рдиреЛрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рд░рд┐рдЯреНрд╡реАрдЯреНрд╕ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ, рд╡рд╛рдВрдЫрд┐рдд рдлреАрдЪрд░реНрд╕ рдмрдирд╛рдП рд░рдЦрдиреЗ рдФрд░ рдЯреНрд╡реАрдЯ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ, рдЗрд╕реЗ ETL рд╕рдВрдХреНрд╖реЗрдк рдХреЗ "T" рднрд╛рдЧ (рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди) рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдкреНрд░рдореБрдЦ рдШрдЯрдХ рдЯреНрд╡реАрдЯ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред
рдЖрдо рддреМрд░ рдкрд░, рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЯреЗрдХреНрд╕реНрдЯ рдбреЗрдЯрд╛ рдХреЛ рдХреБрдЫ рдкреНрд░реА-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЪрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЯреНрд╡реАрдЯреНрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрди рдЪрд░рдгреЛрдВ рдореЗрдВ URLs, рд╕реНрдЯреЙрдк рд╡рд░реНрдбреНрд╕ рдФрд░ рдореЗрдВрд╢рдиреНрд╕ рдХреЛ рд╣рдЯрд╛рдирд╛, рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд▓реЛрдЕрд░ рдХреЗрд╕ рдореЗрдВ рдмрджрд▓рдирд╛, рд╢рдмреНрджреЛрдВ рдХрд╛ рд╕реНрдЯреЗрдорд┐рдВрдЧ рдХрд░рдирд╛ рдЖрджрд┐ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпреЗ рд╕рднреА рдЪрд░рдг рд╣рд░ рд╕рдордп рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛрддреЗред рдлрд┐рд░ рднреА, рдлрд┐рд▓рд╣рд╛рд▓, рдореИрдВ рдиреАрдЪреЗ рд╡реЗ рдЯреНрд╡реАрдЯреНрд╕ рдкреНрд░реА-рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП normalize_text рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реВрдВрдЧрд╛:
рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ-рдХреЗрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдпреЗ рдЪрд░рдг рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЧрдпрд╛, рдЖрдк рд╕реНрдЯреЗрдорд┐рдВрдЧ рдпрд╛ рд▓реИрдореЗрдЯрд╛рдЗрдЬрд╝реЗрд╢рди рдЬреИрд╕реЗ рдФрд░/рдпрд╛ рднрд┐рдиреНрди рдЪрд░рдг рдЬреЛрдбрд╝рдирд╛ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдХреЗрд╡рд▓ рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рд░рдЦрдирд╛ (рдЕрдХреНрд╖рд░реЛрдВ рдФрд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдмрдЬрд╛рдп) рдкрд╕рдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЖрдкрдХреЛ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЛ рдЖрдЬрд╝рдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реВрдБред рдпрд╣ regex рдХреМрд╢рд▓ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░реАрди рдЬрдЧрд╣ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдЗрди рд╕рднреА рдЪрд░рдгреЛрдВ рдХреЗ рдмрд╛рдж, рдкрд░рд┐рдгрд╛рдореА рд╕реНрдерд┐рддрд┐ рдПрдХ рдРрд╕рд╛ SQLite рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ рдЬреЛ рд╕рднреА рд╕реНрдЯреНрд░реАрдо рдХрд┐рдП рдЧрдП рдЯреНрд╡реАрдЯреНрд╕ рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣реИред рдЖрдк, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд╕рд░рд▓ рдХреНрд╡реЗрд░реА рдЪрд▓рд╛рдХрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛:
рдЪрд░рдг 3: рд╡рд┐рд╢реНрд▓реЗрд╖рдг
рдЬрдм рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рдЬрд╛рдП рдХрд┐ ETL рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ, рддреЛ рдЕрдВрддрд┐рдо рдЪрд░рдг рд╣реИ рдХреБрдЫ рдЗрдирд╕рд╛рдЗрдЯреНрд╕ рдирд┐рдХрд╛рд▓рдирд╛ рдФрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░рд┐рдд рдбреЗрдЯрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдЬреЛ рдЯреНрд╡реАрдЯреНрд╕ рдПрдХрддреНрд░ рдХрд┐рдП рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рд╣рдо рдХреБрдЫ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪреАрдЬрд╝реЗрдВ рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ; рдЯреНрд╡реАрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╢рдмреНрджреЛрдВ рдХрд╛ рд╡рд░реНрдбрдХреНрд▓рд╛рдЙрдб, рдФрд░ рдПрдХ рдЯрд╛рдЗрдорд▓рд╛рдЗрди рдЬреЛ рдпрд╣ рджрд┐рдЦрд╛рдП рдХрд┐ рд╣рдорд╛рд░реЗ 12-рдШрдВрдЯреЗ рдХреЗ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдЕрд╡рдзрд┐ рдореЗрдВ рдХрд┐рд╕ рд╕рдордп рд╣рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЯреНрд╡реАрдЯреНрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реБрдПред рдпрд╣ рд╕реВрдЪреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрди рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╢реЛрдзреЛрдВ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рдЕрд╡рд▓реЛрдХрди рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЯреНрд╡реАрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╕реЗрдВрдЯрд┐рдореЗрдВрдЯ рдПрдирд╛рд▓рд┐рд╕рд┐рд╕ рд╕реЗ рд▓реЗрдХрд░ рд╕рд╛рдЗрдХреЛрдЧреНрд░рд╛рдлрд┐рдХ рд╕реНрдЯрдбреАрдЬрд╝ рдФрд░ рдЖрдЧреЗ рддрдХ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП, рдЪрд▓рд┐рдП рд╕реАрдзреЗ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд░реНрдбрдХреНрд▓рд╛рдЙрдб рдмрдирд╛рдиреЗ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ:
рд╡рд╛рд╣, рдХреНрдпрд╛ рднрд╛рд░реА рдЖрд╢реНрдЪрд░реНрдп! machinelearning рдФрд░ datascience рд╣рдорд╛рд░реЗ рд╕рднреА рдЯреНрд╡реАрдЯреНрд╕ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╢рдмреНрдж рд╣реИрдВтАФрдпреЗ рд╡рд╣реА рджреЛ рд╣реИрд╢рдЯреИрдЧ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рд╣рдо рд╕реНрдЯреНрд░реАрдо рдХрд░ рд░рд╣реЗ рдереЗред рдЕрддрдГ, рдпрд╣ рдкрд░рд┐рдгрд╛рдо рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛ред рдмрд╛рдХреА рд╢рдмреНрдж рджреЗрдЦрдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд░реЛрдЪрдХ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, bigdata рдФрд░ artificialintelligence рд╣рдорд╛рд░реЗ рдХреАрдЬрд╝ рдореЗрдВ рд╣реИрд╢рдЯреИрдЧ рдирд╣реАрдВ рдереЗ, рдлрд┐рд░ рднреА рд╡реЗ рдЙрдЪреНрдЪ рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдкреНрд░рдХрдЯ рд╣реБрдП, рдЗрд╕рд▓рд┐рдП рдпрд╣ рддрд░реНрдХ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрди рдкрд░ рднреА рдЕрдиреНрдп рджреЛ рдХреЗ рд╕рд╛рде рдЕрдХреНрд╕рд░ рдЪрд░реНрдЪрд╛ рд╣реЛрддреА рд╣реИред рд╣рдордиреЗ рдЕрдиреНрдп рджрд┐рд▓рдЪрд╕реНрдк рд╢рдмреНрдж рднреА рдЙрдард╛рдП рдЬреИрд╕реЗ python рдпрд╛ tensorflow рдЬреЛ рд╣рдореЗрдВ рд╕рд┐рд░реНрдл рд╣реИрд╢рдЯреИрдЧреНрд╕ рд╕реЗ рдкрд░реЗ, рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдЯреНрд╡реАрдЯреНрд╕ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рд╕рдВрджрд░реНрдн рджреЗрддреЗ рд╣реИрдВред
рдЕрдм рдПрдХ рдФрд░ рд╕рд░рд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реА 12-рдШрдВрдЯреЗ рдХреА рд╕реНрдЯреНрд░реАрдо рдореЗрдВ, рд╣рдордиреЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЯреНрд╡реАрдЯреНрд╕ рдХрд┐рд╕ рд╕рдордп рдПрдХрддреНрд░ рдХрд┐рдП? рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреА рдЗрдВрдЯреАрдЬрд░ рддрд┐рдерд┐рдпрд╛рдБ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВрдЧреЗ, рдЙрдиреНрд╣реЗрдВ рдЙрдЪрд┐рдд рдлрд╝реЙрд░реНрдореЗрдЯ рдореЗрдВ рдмрджрд▓реЗрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рд╕рдордп рдХреЗ рд╕рд╛рде рдЯреНрд╡реАрдЯреНрд╕ рдХреА рдорд╛рддреНрд░рд╛ рдХрд╛ рдкреНрд▓реЙрдЯ рдмрдирд╛рдПрдВрдЧреЗ:
рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! рдЕрдм рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЕрджреНрд╡рд┐рддреАрдп рдЯреНрд╡реАрдЯреНрд╕ 2 рд╕рд┐рддрдВрдмрд░ рдХреЛ 8:00 PM UTC рд╕реЗ 8:59 PM UTC рдХреЗ рдмреАрдЪ рдорд┐рд▓реЗ (рдпрд╣ рд╕реИрдиреНрдп рд╕рдордп рдореЗрдВ 20 рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрддрд╛ рд╣реИ)ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдмрдзрд╛рдИ рд╣реЛ! рдЕрдм рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ R рдореЗрдВ рдПрдХ рд╕рд░рд▓ ETL рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреИрд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВред рд╣рдордиреЗ рдЬреЛ рджреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдП, рд╡реЗ Twitter рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдмрд╣реБрдд рдмреБрдирд┐рдпрд╛рджреА рд╡рд┐рд╢реНрд▓реЗрд╖рдгреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЬреИрд╕реЗ рд╣реА рдЖрдк рдбреЗрдЯрд╛ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдордЬрд╝рдмреВрдд рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдмрдирд╛рддреЗ рд╣реИрдВ, рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рд╣реИред рдпрд╣реА рдкрд╣рд▓реВ рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдореБрдЦреНрдп рдлреЛрдХрд╕ рдерд╛ред
рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП, рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ Twitter рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП ETL рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдЪрд▓рдиреЗ рд╣реЗрддреБ рдХреЗрд╡рд▓ рдПрдХ рдмрд╣реБрдд рдЫреЛрдЯреЗ рдкреИрдорд╛рдиреЗ рдХрд╛ рдХреЗрд╕ рд╕реНрдЯрдбреА рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдкреВрд░реЗ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рдХреЗ рд▓рд┐рдП рдордЬрд╝рдмреВрдд рдФрд░ рд╕реНрдХреЗрд▓реЗрдмрд▓ ETL рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдмрдирд╛рдирд╛ рдПрдХ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдп рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдкрдХ рдХрдореНрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдФрд░ рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдмрд┐рдЧ рдбреЗрдЯрд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛред
рдореИрдВ рдЖрдкрдХреЛ рдЖрдЧреЗ рд╢реЛрдз рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдЫреЛрдЯреЗ рдкреИрдорд╛рдиреЗ рдХреА рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЗрдВ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реВрдБ, рдЬрд┐рд╕рдореЗрдВ Python рдореЗрдВ рдПрдХ рдмрдирд╛рдирд╛ рднреА рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╢рд╛рдпрдж, рдЖрдЧреЗ рдмрдврд╝реЗрдВ рдФрд░ рдХреБрдЫ рдмрд┐рдЧ рдбреЗрдЯрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рднреА рдЖрдЬрд╝рдорд╛рдПрдБред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, DataCamp рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдРрд╕реЗ рдХреЛрд░реНрд╕ рд╣реИрдВ рдЬреИрд╕реЗ рдпрд╣ Big Data Fundamentals via PySpark рдХреЛрд░реНрд╕, рдЬрд╣рд╛рдБ рд╡реЗ PySpark рдЬреИрд╕реЗ рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд┐рдЧ рдбреЗрдЯрд╛ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЖрдкрдХреЗ рдЬреНрдЮрд╛рди рдХреЛ рдФрд░ рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдк рдбреЗрдЯрд╛ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ DataCamp рдХрд╛ Introduction to Data Engineering рдХреЛрд░реНрд╕ рд▓реЗрдВред рдФрд░ рдпрджрд┐ рдЖрдк рдирд┐рдпреЛрдХреНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рдордиреЗ рдЕрдкрдиреЗ рдирдП рдХреМрд╢рд▓ рд╕рд┐рджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реА Data Engineer Certification рджреЗрдЦреЗрдВред┬а
рд╕рдВрджрд░реНрдн