Game of Thrones Tweet

Background

Halo! Pada artikel kali ini saya akan berbagi cara bagaimana melakukan crawling data dari twitter dengan menggunakan twitter’s API. Sebelum melakukan crawling data dari twitter, saya ingin memberi tahu bagaimana cara memperoleh API token twitter kita. Caranya gampang-gampang susah, tapi sebenarnya gampang, tergantung dari kita sudah menjawab dan mengisi form persyaratan pemerolehan API twitter dengan jelas atau belum.

Okey kalau begitu langsung saja. Ikuti langkah berikut untuk memperoleh twitter’s API.

  1. Buat akun twitter terlebih dahulu jika belum memiliki akun di http://twitter.com.
  2. Masuk ke https://dev.twitter.com/apps dan log in pada akun twittermu.
  3. Klik “Create New App” dan isilah seluruh form yang ada.
  4. Klik “Agree” pada user condition.
  5. Pada tab “Keys and Access Tokens”, copy consumer key, consumer secret, access token, dan access key yang akan digunakan untuk crawling.

Crawling Data

Authentication Token

Selanjutnya kita gunakan code berikut untuk melakukan autentikasi terhadap twitter kita.

Jika sudah berhasil melakukan connecting dan autentikasi, kita bisa menyimpan token yang telah kita dapatkan sehingga kita tidak perlu melakukan autentikasi ulang. Saya beri nama token pada token yang telah saya dapatkan tadi.

Setelah itu, kita bisa langsung mengambil data dari twitter sesuai yang kita inginkan. Perlu diingat, data yang diambil dari twitter bisa berupa tweet, hashtags, mentions, dan retweets.

Get Tweets

Untuk kali ini, saya akan mengambil data yang berisi tweet Game of Thrones dengan tweet maksimum sebanyak 10.000 tweet.

Selanjutnya saya melakukan crawling tweet lagi dengan hashtags #GameofThrones.

Untuk melihat gambaran data yang telah berhasil dicrawling, maka kita bisa lihat dengan 3 data awal saja pada tweet yang saya simpan dengan nama objek tweet.

##                                      
## 1 function (text, ...)               
## 2 {                                  
## 3     return(updateStatus(text, ...))

Tadi kita punya dua objek data yang berisi tweet yang berhasil kita crawling. Selanjutnya akan saya gabungkan menjadi satu data frame dengan nama objek all_tweet dan akan saya simpan berupa file .csv dan file .rds sehingga apabila sewaktu-waktu saya akan menggunakan datanya kembali saya tinggal melalukan import data.

# combine data frame
all_tweet <- rbind(tweets, got)

# change list data on data frame
all_tweet$hashtags <- vapply(all_tweet$hashtags, paste, collapse = ", ", character(1L))
all_tweet$symbols <- vapply(all_tweet$symbols, paste, collapse = ", ", character(1L))
all_tweet$urls_url <- vapply(all_tweet$urls_url, paste, collapse = ", ", character(1L))
all_tweet$urls_t.co <- vapply(all_tweet$urls_t.co, paste, collapse = ", ", character(1L))
all_tweet$urls_expanded_url <- vapply(all_tweet$urls_expanded_url, paste, collapse = ", ", character(1L))
all_tweet$media_url <- vapply(all_tweet$media_url, paste, collapse = ", ", character(1L))
all_tweet$media_t.co <- vapply(all_tweet$media_t.co, paste, collapse = ", ", character(1L))
all_tweet$media_expanded_url <- vapply(all_tweet$media_expanded_url, paste, collapse = ", ", character(1L))
all_tweet$media_type <- vapply(all_tweet$media_type, paste, collapse = ", ", character(1L))
all_tweet$ext_media_url <- vapply(all_tweet$ext_media_url, paste, collapse = ", ", character(1L))
all_tweet$ext_media_t.co <- vapply(all_tweet$ext_media_t.co, paste, collapse = ", ", character(1L))
all_tweet$ext_media_expanded_url <- vapply(all_tweet$ext_media_expanded_url, paste, collapse = ", ",
                                           character(1L))
all_tweet$mentions_user_id <- vapply(all_tweet$mentions_user_id, paste, collapse = ", ", character(1L))
all_tweet$mentions_screen_name <- vapply(all_tweet$mentions_screen_name, paste, collapse = ", ",
                                         character(1L))
all_tweet$geo_coords <- vapply(all_tweet$geo_coords, paste, collapse = ", ", character(1L))
all_tweet$coords_coords <- vapply(all_tweet$coords_coords, paste, collapse = ", ", character(1L))
all_tweet$bbox_coords <- vapply(all_tweet$bbox_coords, paste, collapse = ", ", character(1L))

Karena ada beberapa variabel yang mungkin tidak diperlukan nantinya, maka akan saya lakukan penghapusan beberapa variabel yang memiliki nilai NA atau missing value lebih dari 15.000.

Selanjutnya, saya ingin melihat summary dari tweets tentang Game of Thrones yang berhasil saya peroleh hari ini berdasarkan waktu tweet tersebut dibuat/dipost.

##                  Min.               1st Qu.                Median 
## "2019-05-13 08:22:19" "2019-05-13 09:13:45" "2019-05-13 10:01:46" 
##                  Mean               3rd Qu.                  Max. 
## "2019-05-13 10:37:48" "2019-05-13 12:03:49" "2019-05-13 12:08:44"

Dari sini kita dapat tahu bahwa tweets yang saya peroleh yaitu dimulai dari pukul 08:22 AM hingga 12:08 PM pada tanggal 13 Mei 2019.

Sebelumya saya sudah pernah melakukan crawling tweets tentang Game of Thrones. Berikut summary dari tweets tersebut dibuat.

##                  Min.               1st Qu.                Median 
## "2019-05-11 23:58:46" "2019-05-12 00:56:30" "2019-05-12 01:57:10" 
##                  Mean               3rd Qu.                  Max. 
## "2019-05-12 02:01:41" "2019-05-12 03:07:16" "2019-05-12 04:20:33"

Untuk tweets yang pernah saya crawling sebelumnya, saya memperoleh tweets mengenai Game of Thrones dari pukul 23:58 pada tanggal 11 Mei 2019 hingga 04:20 pada tanggal 12 Mei 2019.

Frequency of Game of Thrones

Jika kita bandingkan tweets yang muncul per menitnya tanpa menghiraukan hari yang ada adalah sebagai berikut.

Cleaning Text

Selanjutnya adalah proses cleaning text unutk dijadikan word cloud.

## [1] "game throne mother day quit remind everyon love die eat arbi"
##                    word freq
## gameofthron gameofthron 8114
## throne           throne 7739
## game               game 7691
## daeneri         daeneri 1917
## episod           episod 1727
## season           season 1696
## que                 que 1554
## cersei           cersei 1265
## like               like 1212
## got                 got 1212

Word Cloud Game of Thrones

Jika kita ingin melihat hubungan antar kata dari arya dengan nilai korelasi antara 0.3 dan 0.2 diperoleh kata yang berhubungan adalah sebagai berikut.

## $arya
##     dond reaparec   escena     muri    parec 
##     0.55     0.55     0.54     0.49     0.48

Inayatus

2019-05-13