R ile tweet verisi nasıl çekilir ve analiz edilir?

Sadettin Demirel
Veri Jurnali
Published in
6 min readOct 18, 2018

Twitter birçoğumuzun günlük sosyalleşme, eğlence, dünyadan haberdar olma gibi ihtiyaçlarını karşıladığı sosyal ağlardan birisi. Aynı zamanda, markaların, kamu kuruluşlarının kullanıcısı olduğu dev bir bilgi üretim, dağıtım ve tüketim merkezi. Bu yapısı itibariyle gazeteciler için önemli bir haber kaynağı ve dağıtım kanalı. Fakat bunun da ötesinde Twitter, işlemeyi bilen için zengin bir veri madeni. Ve bu veri madenini kullanarak bir siyasetçinin Twitter’da sadece ne paylaştığını değil, son 6 ayda en çok hangi kelimeleri kullandığına, ne kadar etkileşim aldığına, günün hangi saati tweet attığına, diğer politikacılara oranla aldığı etkileşim oranına, tweetlerinin duygusal analizine ulaşabilirsiniz. Peki bu veri madenini işlemeye nasıl ve nereden başlamalı?

Tweet verisinin kazınması için birçok yol mevcut. Bunu bir eklenti yardımıyla da yapabilirsiniz, R programlama dilini ve R paketlerini kullanarak da. R programlama dilinin avantajı daha önceki yazımda da belirttiğim gibi veri kazımadan temizlemeye, veri analizinden görselleştirmeye tüm çalışma akışında etkili bir şekilde kullanılabilmesi.

Teknik aşamaya geçmeden, tweet verisinin gelenekselin dışında, veri gazeteciliği pratiği için nasıl kullanıldığına göz atalım. Buzzfeed veri gazetecisi Peter Aldhous, Trump’ın ve kongre üyelerinin 1 yıl boyunca paylaştığı tweetleri incelediği haberinde veri analizi ve görselleştirme süreçlerinde R ve paketlerini kullanmış. Aldhous haberinde Trump’ın, Demokratların ve Cumhuriyetçilerin tweetlerinde sıklıkla kullandığı kelimeleri ve atılan tweetlerin duygu analizini yapmış.

By Peter Aldhous from Buzzfeed

Rtweet Paketi ile Veri Kazımaya Giriş

Twitter’dan veri çekebilmek için Twitter’ın uygulama geliştiriciler ve üçüncü parti hizmetler için sunduğu API (Application Programming Interface / Uygulama Programlama Arayüzü) hizmetinden yararlanacağız. Bunu R üzerinden yapabilmek için akademisyen Michael Kearney tarafından geliştirilmiş rtweet paketini kullanacağız. Teknik detaylara başlamadan hemen önce, izleyeceğimiz adımları sıralayalım:

Adım 1 — Twitter geliştirici hesabına başvuru

Adım 2 — API hizmetine erişmek için kapı görevi görecek uygulama oluşturma

Adım 3 — R studio üzerinden API’a erişim

Adım 4 — Trump’ın paylaşmış olduğu son 3000 tweetin kazınması

Adım 5 — Trump’ın paylaştığı son 1000 tweetin aldığı etkileşim değerlerinin incelenmesi

1 — Twitter geliştirici hesabının açılması

Twitter üzerinden API hizmeti için uygulama oluşturma eskiye göre daha meşakkatli. Normalde apps.twitter.com adresinden uygulamalar oluşturarak tweet verilerini çekebiliyorduk ama Ağustos 2018 itibariyle API’a erişmek için geliştirici hesabına başvurmak zorunlu hâle geldi. Başvuru sonrasında hesabın aktive edilmesi için bir süre beklemek zorunda kalabilirsiniz.

Geliştirici hesabınız kabul edildikten sonra API hizmetlerinin sunulduğu yeni site üzerinden ilk uygulamamızı oluşturmaya başlayabiliriz.

2 — API hizmetine erişmek için uygulama oluşturma

Yukarıdaki görselin sağ üst köşesinde yer alan “Twitter Engagement Analysis” menüsüne tıklayarak ilk uygulamamızı oluşturabiliriz. Karşımıza çıkan sayfadan uygulama oluştur seçeneğine tıklıyoruz. Öncelikle uygulamaya bir isim veriyoruz ve uygulamanın ne amaçla oluşturulduğuna dair birkaç cümlelik bir açıklama yazıyoruz.

Web sayfa adresine twitter profil adresinizi ekleyebilirsiniz. Twitter ile giriş yapmayı işaretledikten sonra Callback URL kısmına http://127.0.0.1:1410/ adresini ekliyoruz. R ile API’ı bağlandığımızda tarayıcı tarafından bu adrese yönlendirileceğiz.

En alttaki kısma ise uygulamanın ne için kullanılacağına dair daha detaylı bir bilgi eklememiz gerekiyor. Bu kısma, uygulamayı akademik çalışmalar veya gazetecilik amaçları için kullanacağınız veya kod öğrenmek için kullandığınızı ekleyebilirsiniz.

Uygulama detaylarını tamamladıktan sonra en önemli kısma geldik. Bu kısımda kodlar API’e erişimimizi sağlayacak. Kendi uygulamanızdaki API Key ve API Secret Key’leri bir yere not etmeniz önemli. R üzerinden uygulamaya erişmek için bu token’leri kullanacağız.

Yukarıdaki görselde yer alan API key değerlerini “regenerate” seçeneğine tıklayarak değiştirebilirsiniz. Uygulamaya başkalarının erişmesini istemiyorsanız bu token’leri paylaşmamanızı öneririm.

3 — R Studio üzerinden API’a erişim

R studio üzerinden API’a erişebilmek için ilk olarak rtweet, httpuv ve tidyverse paketlerini kuruyoruz. İkinci adımda bu paketleri library( ) fonksiyonu ile etkinleştiriyoruz.

Sonraki adım en önemlisi. İlk olarak uygulamanın adını (appname), API anahtarını (key) ve API gizli anahtarını (secret) yukarıdaki görselde ve kaynak kodda olduğu gibi konsola giriyoruz. Bu aşamada API’e erişim sağladığımızı belirten boş bir tarayıcı sayfası açılmalı. R studio konsolda da bunu açık bir şekilde görebiliriz.

4 — Trump’ın paylaşmış olduğu son 1000 tweeti kazıyalım

Trump’ın veya bir başka Twitter kullanıcısının tavan değeri 3200 olmak üzere paylaştığı tweetleri kolaylıkla kazıyabiliriz. Bunun için aşağıdaki kodu kullanmanız yeterli

“trump_tweets <- get_timeline(“twitter id”, n= tweet sayısı))

Peki bir Twitter kullanıcısının verisini kazıdığımızda hangi tip verilere ulaşabiliyoruz? Kazıdığımız veride Trump’ın ne zaman tweet attığı, tweetin içeriği, retweet mi yoksa alıntılı retweet mi olduğu, aldığı beğeni ve retweet sayısı, kullandığı semboller, emojiler, hashtag’ler ve web adresleri, kimi retweetlediği, kimden mention aldığı, takipçi sayısı, tweeti attığı konuma kadar 88 farklı değişken bulunuyor. Fakat bu değişkenlerin bazısı her zaman uygulanabilir olmayabiliyor. Örneğin, kullanıcılar Twitter kullanırken konum verisini açmamış olabiliyorlar.

Ve bu, sadece bir kullanıcının tweetlerini çekmek istersek elde edebileceğimiz bir veri seti. Bununla birlikte, rtweet paketi sayesinde dünyada veya herhangi bir ülkedeki hashtag analizi, tweetlerin paylaşıldığı lokasyonlar, herhangi bir kullanıcının takipçi sayısı, veyahut Trump’ın beğendiği tweetlere kadar farklı türde ve boyutta çok çeşitli verilere ulaşabiliriz.

5 — Trump’ın paylaştığı son 1000 tweetin aldığı etkileşim değerlerini inceleyelim

Artık veriyi elde ettiğimize göre bir sonraki aşamaya hazırız. Öncelikle kazıdığımız veriyi Trump’ın tweet attığı saati ve aldığı beğeni sayısını dahil edecek şekilde düzenleyelim. Ve aldığı retweet ve beğeni sayısını toplayıp ikiye bölerek tweet başına aldığı etkileşim değerini hesaplayalım. Trump’ın Twitter’da aldığı etkileşimi görselleştirelim.

Görselleştirmede ggplot2 paketini kullanacağız. Öyle görünüyor ki Trump’ın son 1000 paylaşımında beğenilme sayıları retweet edilmesinden bir hayli fazla.

Bunun dışında Trump en çok kendi tweetlerini retweet etmiş.

Ayrıca Ağustos — Ekim ayları içinde en çok paylaşım yaptığı gün 14 Eylül.

Tweet verisi kazındıktan sonra birçok şekilde analiz edilebilir. Bu yazıda değindiklerim bunun yalnızca bir kısmı. Bu veriyle neler yapılabileceğini Veri Bilimci David Robinson’ın şu paylaşımında görebilirsiniz. Buna benzer bir başka örnek için 24 Haziran seçimleri öncesi Cumhurbaşkanı adaylarının 1 Mayıs — 22 Haziran tarihleri arasında aldıkları etkileşim oranlarını incelediğim tweet zincirine göz atabilirsiniz. Bir sonraki yazıda R’ın ve ggplot2 (veri görselleştirme) paketlerini kullanarak bu adayların veri setini ayrıntılı bir şekilde inceleyeceğim. dplyr (veri manipülasyonu)

Bu analizi kendi cihazında tekrarlamak isteyenler, Twitter uygulamalarını oluşturduktan sonra, aşağıda görünen R dosyasını indirip R studio programında açarak Trump’ın tweetlerini analiz edebilirler. Farklı kullanıcı adlarını deneyerek farklı analizler de yapabilirsiniz. Bunu gerçekleştirmek için yalnızca kendi uygulamanızı oluşturmanız ve kod dosyasında yer alan uygulama adını ( appname), API key ( key) ve API secret key ( secret) değerlerini değiştirmeniz gerekiyor. Sonrasında aşağıdaki görselde yer alan “Run” butonuna tıklamanız yeterli olacaktır.

Bu analizi kendi bilgisayarında yapmak isteyenlerin indirmesi gereken dosya ve yazılımlar.

--

--

Sadettin Demirel
Veri Jurnali

Researcher at Uskudar University, Co-founder of @voydorg, #rstats #dataviz, #datajournalism