Kategori arşivi: R Kodları

Twitter verisi üzerine metin madenciliği için R kodları

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.