Bir önceki yazımda Boğaziçi Üniversitesi’nde kayıt zamanı atılmış twitter verisi üzerine yaptığım bir takım analizlerin sonuçlarını paylaşmıştım. Şimdi sıra bunların kodlarını paylaşmaya geldi. Önceki yazıda bahsettiğim gibi bu kodlar R’da yazıldı. Eğer siz de benzer kodları kullanmak istiyorsanız, R programını http://www.r-project.org/ sitesinden yüklemeniz gerekmekte.
Twitter’dan veri alabilmek için bir takım işlemler yapmanız gerekiyor. Bunlar Berk Orbay’ın şu blog yazısında mevcut. O yazıda R kullanarak nasıl tivit atabileceğiniz anlatılıyor. Bize twitter api’sine bağlanmaya kadar olan kısmı lazım diyebilirim.
Burada paylaşacağım kodlar, bir şekilde twitter api’sine bağlandığınızı varsayacak. Ayrıca bu analizler Ubuntu 13.10 işletim sisteminde yapılmıştır ve kullanılan paketlerden bir tanesi bilgisayarınıza Curl yüklenmesini gerektirmektedir. Windows’ta da benzer kodlar kullanılabilir fakat, ‘encoding’ problemleri yüzünden bir takım Türkçe karakterler ile ilgili problem yaşayabileceğinizi belirtmek isterim.
require(twitteR) require(wordcloud) require(tm) require(RCurl) require(RJSONIO) #Twitter kayıt bilgilerinin olduğu R session verisini yükle load("/home/baydogan/Research/Twitter/twitter_auth.Rdata") registerTwitterOAuth(twitCred) aranacak_ifade='#boun' veri <- searchTwitter(aranacak_ifade, n=1500,since='2014-02-10', until='2014-02-14',retryOnRateLimit=200) #metinleri kaydet veri_yazilar <- sapply(veri, function(x) x$getText()) #derlemi (corpus) hazirla veri_derlem <- Corpus(VectorSource(veri_yazilar)) #temizle veri_derlem <- tm_map(veri_derlem, tolower) veri_derlem <- tm_map(veri_derlem, stripWhitespace) veri_derlem <- tm_map(veri_derlem, removePunctuation) #kelime bulutu ciz wordcloud(veri_derlem) #kelimelerin hangi tivitlerde geçtiğini belirten bir/sıfır matrisi oluştur dtm <- TermDocumentMatrix(veri_derlem) #az geçen kelimeleri at dtm_rem <- removeSparseTerms(dtm, sparse=0.95) #data frame tipine dönüştür dtm_df <- as.data.frame(inspect(dtm_rem)) #tüm sütunları aynı seviyeye çek dtm_df_scaled <- scale(dtm_df) #uzaklık matrisini oluştur d <- dist(dtm_df_scaled, method = "euclidean") #kümele fit <- hclust(d, method="ward") #kümeleme sonucunu çiz plot(fit)
Kodlar ile ilgili detaylı açıklamalar çok yakında.