R ile Twitter’dan Nasıl Veri Çekilir?

Her gün atılan ortalama 500 milyon tweet ile, Twitter en büyük sosyal medya platformlarından biri. Gün geçtikçe büyüyen ve gündeme bağlı olarak değişen bu devasa içerik, doğru kullanıldığında politikadan magazine kadar çok çeşitli konularda güvenilir bir veri kaynağı olabiliyor.

Bu yazıda Twitter adlı veri madeninden nasıl veri cevheri çıkarabileceğimizi ve bu cevheri nasıl işleyeceğimize göz atacağız. Bu amaçla kullanacağımız R paketinin adı twitteR. Bu paket, Twitter üzerindeki içerikleri çekmek için Twitter’ın kendisinin sağlamış olduğu API’leri kullanıyor.

Paket Kurulumu:

Twitter’a erişim için 2 pakete ihtiyacımız bulunuyor. Bunlardan biri twitter’ın web API’sine arayüz sağlayan twitteR, diğer ise Twitter hesabımıza R üzerinden erişim yetkisi sağlayacak olan ROAuth paketi.

install.packages("twitteR")
install.packages("ROAuth")

library("twitteR")
library("ROAuth")

API İzinlerinin Alınması:

Programın Twitter içindeki verileri çekmek için API kullandığından bahsetmiştik. Bu kullanım için bir Twitter hesabınızın olması ve bu hesap üzerinden bir anahtar oluşturmanız gerekecek.  Ki bu oldukça kolay bir işlem. Bunun için gerekli basamakları aşağıda belirtiyoruz.

1. https://apps.twitter.com adresine girin.
2. Sağ üst taraftan “Create New App” butonuna basın.
3. Açılan sayfada

  • Name kısmına herhangi bir ad (örneğin “r_twitbot”)
  • Description herhangi bir açıklama (örneğin “twitteR paketi ile veri madenciliği”)
  • Website kısmına kodu yayınlayacağınızı ilettiğiniz websitesi (Buraya herhangi bir site yazabilirsiniz şimdilik. örneğin “http://www.rkonsol.com”)
  • Callback URL kısmını boş bırakın ve “Yes, I have read and agree to the Twitter Developer Agreement.” kısmına onay verip “Create your Twitter Application” butonuna tıklayın.

4. Açılan sayfada Consumer Key (API Key) kısmındaki “manage keys and access tokens” bağlantısına tıklayın.

5. Açılan sayfada Consumer Key (API Key) ve Consumer Secret (API Secret) değerlerini bir yere not alın.

6. Your Access Token başlığı altındaki “Create my access” token butonuna tıklayın.

7. Sayfanın altında yeni bilgiler oluşacaktır. Bu bilgilerden Access Token ve Access Token Secret değerlerini de bir yere not alın. Bu kadar.

Uygulama:

Yetki Verilmesi:

Öncelikle yukarıda, not ettiğimiz yetki değerlerini paketimize tanıtmamız gerekiyor. Bu amaçla kullanacağımız setup_twitter_oauth fonksiyonunu bir defaya özgü olarak çalıştırıyoruz. Aşağıdaki örnekte olduğu gibi not ettiğiniz anahtarları, tırnak içinde uygun parametreye yazıp fonksiyonu çalıştırıyoruz.

setup_twitter_oauth(consumer_key = "buraya Consumer Key (API Key) değeri girilecek",
                    consumer_secret = "buraya Consumer Secret (API Secret) değeri girilecek",
                    access_token = "Buraya Access Token değeri girilecek",
                    access_secret = "Buraya Access Token Secret değeri girilecek")
Belirli Bir Kelimeyi İçeren Tweet’lerin Çekilmesi

Bir hashtag (diyez) veya herhangi başka bir kelime içeren tweetlerin çekilmesi için searchTwitter() fonksiyonu kullanılıyor. Çoklu kelime aranacağı zaman + operatorü ile ayrılması gerekiyor. Dilenirse lang parametresi ile dil de belirtilebiliyor. n parametresi ile kaç tweet çekileceği belirtilebiliyor. Bu parametre için bir sınır olmamasına rağmen Twitter’ın kısıtlamaları sebebiyle her zaman belirttiğiniz kadar tweet çekemeyebiliyorsunuz.

hashtag <- searchTwitter("#rstats", n=2, lang="en")
[[1]]
[1] "sellorm: RT @yoniceedee: Easily convert raw R script into an Rmarkdown with chunky! \nAn RStudio addin to wrap script in Rmarkdown chunks #rstats htt…"

[[2]]
[1] "estlanejones: RT @hadleywickham: Early New Years resolution: only speak at @RLadiesGlobal’s meetups next year #rstats"

Çekilen tweetler ile ilgili daha fazla veri öğrenmek için twListToDF() fonksiyonu ile birlikte de kullanılabilir. Bu fonksiyon, bir tablo oluşturarak her bir tweetin hangi tarihte kim tarafından yayınlandığını, kime cevap olarak mı yazıldığını, kaç defa favori ve retweet aldığını, paylaşılmış ise  coğrafi koordinatlarını ve benzeri çok sayıda veriye ulaşmanızı sağlıyor.

twListToDF(hashtag)
Bir Kullanıcıya Verilerin Çekilmesi

Bir kullanıcıya ait verilerin çekilmesi için getUser() fonksiyonu kullanılır. Bu fonksiyon ile sadece açık profile sahip veya arkadaşınız olarak ekli kişilere erişebileceğinizi de hatırlatmakta fayda var.

twitter_user <- getUser("newscientist")

twitter_user$created
[1] "2009-01-28 16:05:49 UTC"

twitter_user$description
[1] "The best place to find out what’s new in science – and why it matters. To subscribe go to: https://t.co/nsC9MjQzmh"

twitter_user$favoritesCount
[1] 15887

twitter_user$getFriends()
$`2277961849`
[1] "AylinWoodward"

$`18393773`
[1] "neilhimself"

$`110509537`
[1] "thomyorke"
Bir Kullanıcıya Ait Tweetlerin Çekilmesi

Profilini görebildiğiniz bir kullanıcının tweetlerini çekmek için userTimeline() fonksiyonunu kullanıyoruz. Benzer şekilde n parametresi ile (en fazla 3200 olacak şekilde) kaç adet tweetinin çekileceğini belirtebiliyorsunuz. (Aslına bakarsanız çoğu kısıtlamalar sebebiyle 3200 de çekemiyorsunuz.) Kaydettiğiniz tweetlerin detaylarını öğrenmek isterseniz twListToDF() komutu ile tablo olarak da görebiliyorsunuz.

tweets <- userTimeline("newscientist", n=2)

[[1]]
[1] "newscientist: Language: Unlocking the past’s most powerful secret https://t.co/YS9bi2ybJs https://t.co/AblTO2wVUU"

[[2]]
[1] "newscientist: Top tips to get a better night’s sleep and improve your health https://t.co/YyGGgiSMP7 https://t.co/euBOG0HIac"
twListToDF(tweets)

Oluşturacağınız tablodan, kullanıcının hangi saat aralıklarında tweet attığını çıkarabilir, tweetlerinin ortalama kaç defa beğenildiğini, beğenilen tweetlerin ortak kelimelere sahip olup olmadığını inceleyebilirsiniz.

twitteR paketi güncel durumlar ile ilgili bu devasa veri madenine giriş bileti sağlasa da, çok eski tweetlere erişim imkanı vermiyor. Bu durum da tamamen Twitter’ın API’si ile ilgili. Yani, Arap Baharı zamanındaki tweetleri incelemeniz ne yazık ki mümkün değil. Bunun çözümü belki de bir anahtar kelimeye ait düzenli olarak veri çekip kendi veritabanını oluşturmak…


Umarım bu yazı yararlı olmuştur. Gelecek yazılarda bu verilerin nasıl değerlendirileceğine dair veri görselleştirme projelerine yer verebiliriz.

Moleküler Biyolog ve Genetikçi.İstanbul Teknik Üniversitesi'nde doktora öğrencisi. 5 yıldır biyoinformatik ve yeni nesil dizileme üzerine çalışıyor. Genetik ve biyoinformatik üzerine Variant adlı blogda yazıyor.

2 comments On R ile Twitter’dan Nasıl Veri Çekilir?

  • login olmadan bu verileri çekmek mümkün değil sanırım ? kişinin kaç twit attığı, kaç takipçisi olduğunu ?

    • Merhaba. Evet API anahtarı almanız için öncelikle login olmanız gerekiyor. Bir kere anahtarı aldıktan kodun çalışması için tekrar login olmanıza gerek yok.

Yorum bırakın:

Your email address will not be published.

Site Footer

Sliding Sidebar

Hakkımda

Hakkımda

Moleküler Biyolog ve Genetikçi. İstanbul Teknik Üniversitesi'nde doktora öğrencisi. 5 yıldır biyoinformatik ve yeni nesil dizileme üzerine çalışıyor.

Tweets

Message: Invalid or expired token., Please check your Twitter Authentication Data or internet connection.