R ve Gephi'de Sosyal Ağ Analizi: Twitter'a Girmek

Yayınlanan: 2022-03-11

Sosyal ağ analizi, 1934'te Jacob Levy Moreno'nun sosyal etkileşimlerin soyutlamaları olan sosyogramları yarattığı zaman doğdu. Spesifik olarak, bir sosyogram, her düğümün bir kişiyi temsil ettiği ve kenarların aralarındaki etkileşimleri temsil ettiği bir grafiktir. Moreno, küçük insan gruplarının davranışlarını incelemek için sosyogramları kullandı.

Neden küçük? Çünkü çalıştığı çağda, çok sayıda kişisel etkileşim hakkında ayrıntılı bilgi almak zordu. Bu, Twitter gibi çevrimiçi sosyal ağların ortaya çıkmasıyla değişti. Günümüzde herkes, ilginç analizlere kapı açan, bizi nasıl davrandığımıza ve çeşitli davranışların toplum üzerindeki etkisine dair yeni anlayışlara yönlendiren hacimli Twitter verilerini ücretsiz olarak indirebilir.

Sosyal ağ analizi serimizin bu ilk bölümünde, verileri elde etmek ve önceden işlemek için R dilini ve şaşırtıcı görselleştirmeler üretmek için Gephi'yi kullanarak bu analizlerden bazılarının nasıl gerçekleştirileceğini gösteriyoruz. Gephi, her türlü ağı görselleştirmek için özel olarak tasarlanmış açık kaynaklı bir uygulamadır. Kullanıcıların çeşitli kriterler ve özellikler aracılığıyla görselleştirmeleri kolayca yapılandırmasını sağlar.

R'de Sosyal Ağ Analizi için Twitter Verilerini İndirme

Twitter geliştirici hesabınız yoksa, bir tane oluşturun ve Temel erişim için başvurun. Ardından, Twitter verilerini indirmek için Twitter Developer Portal'da bir uygulama oluşturun. Ardından, Projeler ve Uygulamalar bölümünde uygulamanızı seçin ve Anahtarlar ve Belirteçler sekmesine gidin. Orada kimlik bilgilerinizi oluşturmanız gerekecek. Bunlar, Twitter API'sine erişmek ve verileri indirmek için kullanılacaktır.

Kimlik bilgilerinizi oluşturduktan sonra analize başlayabilirsiniz. Üç R kütüphanesi kullanacağız:

  1. igraph , etkileşim grafiğini oluşturmak için.
  2. tidyverse , verileri hazırlamak için.
  3. rtweet , Twitter Dev API ile iletişim kurmak için.

Bu kitaplıkları install.packages() işleviyle kurabilirsiniz. Amaçlarımız için, R ve RStudio'yu kurduğunuzu ve bunlar hakkında temel bilgilere sahip olduğunuzu varsayacağız.

Gösterimizde, Paris Saint-Germain (PSG) Futbol Kulübü ile ilk haftasında ünlü Arjantinli futbolcu Lionel Messi hakkında hararetli çevrimiçi tartışmayı analiz edeceğiz. Ücretsiz Twitter API'si ile tweet'leri geçerli tarihten yalnızca yedi gün öncesine kadar indirebileceğinizi unutmamak önemlidir. Alıntı yaptığımız aynı verileri indiremeyeceksiniz, ancak güncel tartışmaları indirebileceksiniz.

İndirmeye başlayalım. Önce kütüphaneleri yükleyeceğiz, ardından kimlik bilgilerini kullanarak bir yetkilendirme jetonu oluşturacağız ve son olarak indirme kriterlerini belirleyeceğiz.

Bu kod bloğu, üç adımın da nasıl uygulanacağını ayrıntılarıyla anlatır:

 ## Load libraries library(rtweet) library(igraph) library(tidyverse) ## Create Twitter token token <- create_token( app = <YOUR_APP_NAME>, consumer_key = <YOUR_CONSUMER_KEY>, consumer_secret = <YOUR_CONSUMER_SECRET>, access_token =<YOUR_ACCESS_TOKEN>, access_secret = <YOUR_ACCESS_SECRET>) ## Download Tweets tweets.df <- search_tweets("messi", n=250000,token=token,retryonratelimit = TRUE,until="2021-08-13") ## Save R context image save.image("filename.RData")

Not: <> arasındaki tüm etiketleri, önceki kimlik bilgileri adımında oluşturduğunuz bilgilerle değiştirin.

Bu kodla, 8 Ağustos 2021 ile 13 Ağustos 2021 tarihleri ​​arasında "messi" kelimesini içeren tüm tweet'ler (250.000'e kadar) için Twitter API'sini sorguladık. Twitter için 250.000 tweet sınırı belirledik çünkü Twitter miktar değeri ve sayı ilginç bir analize izin verecek kadar büyük olduğu için.

Twitter'ın indirme hızı 15 dakikada 45.000 tweet'tir, bu nedenle 250.000 tweet'in indirilmesi bir saatten fazla sürdü.

Son olarak, RStudio'yu kapattığımızda veya makineyi kapattığımızda geri yükleyebilmek için tüm bağlam değişkenlerini bir RData dosyasına kaydettik.

Etkileşim Grafiği Oluşturma

İndirme işlemi bittiğinde, tweet'leri tweets.df veri çerçevesi içinde alacağız. Bu veri çerçevesi matrisi, tweet başına bir satır ve tweet alanı başına bir sütun içerir. İlk olarak, her düğümün bir kullanıcıyı temsil ettiği ve kenarların aralarındaki etkileşimleri (retweetler veya bahsetmeler) temsil ettiği etkileşim grafiğini oluşturmak için kullanacağız. tidyverse ve igraph ile bu grafiği hızlı ve tek bir ifadede oluşturabiliriz:

 ## Create graph filter(tweets.df, retweet_count > 0) %>% select(screen_name, mentions_screen_name) %>% unnest(mentions_screen_name) %>% filter(!is.na(mentions_screen_name)) %>% graph_from_data_frame() -> net

Bu satırı çalıştırdıktan sonra net değişkende analize hazır bir grafiğimiz var. Örneğin, kaç tane düğüm ve kenar olduğunu görmek için:

 summary(net) # IGRAPH fd955b4 DN-- 138963 217362 --

Örnek verilerimiz 138.000 düğüm ve 217.000 kenar verir. Bu büyük bir grafik. İstesek R aracılığıyla görselleştirmeler üretebiliriz, ancak deneyimlerime göre hesaplamaları çok uzun sürüyor ve görsel olarak Gephi görselleştirmeleri kadar çekici değiller. Bu nedenle, Gephi ile devam edelim.

Grafiği Gephi ile Görselleştirme

Öncelikle Gephi'nin okuyabileceği bir dosya oluşturmamız gerekecek. write_graph işlevini kullanarak bir .gml dosyası oluşturabildiğimiz için bu kolaydır:

 write_graph(simplify(net), "messi_network.gml", format = "gml")

Şimdi Gephi'yi açın, "Grafik dosyasını aç"a gidin, messi_network.gml dosyasını arayın ve açın. Grafik bilgilerini özetleyen bir pencere açacaktır. Kabul Et'i seçin. Bu görünecektir:

Kullanıcıların yeni bir grafik dosyası açabilecekleri Gephi kullanıcı arayüzünü gösteren bir ekran görüntüsü.
Gephi'de yeni bir grafik dosyası açma

Söylemeye gerek yok, bu çok bilgilendirici değil. Çünkü henüz bir düzen uygulamadık.

Ağ Düzeni

Binlerce düğüm ve kenar içeren bir grafikte, düğümleri grafikte konumlandırmak hayati önem taşır. Düzenlerin amacı budur. Düğümleri tanımlanmış kriterlere göre belirlenen konumlara yerleştirirler.

Sosyal ağ analizi eğitimimizde, bu tür analizler için standart bir seçenek olan ForceAtlas2 düzenini kullanacağız. Düğümleri, aralarındaki fiziksel çekim ve itme kuvvetlerini simüle ederek konumlandırır. İki düğüm birbirine bağlıysa, birbirlerine daha yakın olacaklardır; eğer bağlı değillerse, birbirlerinden daha uzak olacaklardır. Bu düzen, topluluklar açısından bilgilendirici bir grafik sağlar, çünkü aynı topluluğa ait kullanıcılar birlikte gruplanırken, farklı topluluklardan kullanıcılar farklı bölgelerde olacaktır.

Bu düzeni bizim durumumuza uygulamak için, Düzen penceresine (sol alt köşede) gidiyoruz, ForceAltas 2'yi seçiyoruz ve Çalıştır'a tıklıyoruz. Bunu yaptığınızda, düğümlerin hareket etmeye başladığını ve birçok “bulut” oluşturduğunu göreceksiniz. Birkaç saniye sonra çok kararlı bir desene sahip olacaksınız ve Durdur'a tıklayabileceksiniz. Lütfen otomatik olarak durmanın çok zaman alabileceğini unutmayın.

Bu stokastik bir algoritma olduğundan, her çalıştırmada biraz farklı çıktılarınız olacaktır. Çıktınız şuna benzer olmalıdır:

ForceAtlas2 düzeninin çıktısını siyah beyaz olarak gösteren ve hiçbir renk veya gri gölgesi olmayan bir grafikle sonuçlanan bir görüntü.
ForceAtlas2 düzenini kullanan tek renkli Gephi çıktısı

Grafik çekici görünmeye başlıyor. Şimdi ona biraz renk katalım.

Topluluk Algılama

Düğümleri birkaç kriter kullanarak renklendirebiliriz; en standart yaklaşım topluluktur. Grafiğimizde dört topluluğumuz varsa, dört rengimiz olacaktır. Renk sayesinde, verileriniz göz önüne alındığında grupların nasıl etkileşime girdiğini anlamak daha kolaydır.

Düğümleri renklendirmek için önce toplulukları tanımlamalıyız. Gephi'de, İstatistikler sekmesi altındaki pencerede Modülerlik düğmesini tıklayın; bu düğme, yüksek performansı nedeniyle son teknoloji olarak kabul edilen, mevcut en hızlı algoritmalardan biri olan popüler Louvain grafik küme algoritmasını uygular. Görünen pencerede Kabul Et'i tıklayın. Boyuta göre dağıtılmış toplulukların dağılım grafiğini içeren başka bir pencere görünecektir. Artık her düğümde, kullanıcının sahip olduğu topluluğu içeren Modularity Class adlı yeni bir özniteliğe sahibiz.

Önceki adımları tamamladıktan sonra artık grafiği kümelere göre renklendirebiliriz. Bunu yapmak için Görünüm sekmesinde Uygula'yı tıklayın.

Bir Gephi çalışma alanında "Görünüm" sekmesini gösteren bir ekran görüntüsü. Resim, grafikte kullanılan bir dizi rengi göstermektedir.
Renk eklemek için Gephi'nin Görünümünü kullanma

Burada her bir topluluğun boyutunu (kullanıcı yüzdesi olarak) görebiliriz. Bizim durumumuzda, başlıca topluluklar (mor ve yeşil) toplam nüfusun sırasıyla %11,34 ve %9,29'unu oluşturmaktadır.

Mevcut düzeni ve paleti kullanarak grafik şöyle görünecektir:

Renkli bir grafiğin görüntüsü. Şekil, önceki tek renkli grafikle aynıdır, ancak renkler, en büyük topluluk (mor) sol alt köşede ve ikinci en büyük topluluk (yeşil) sağ üst köşede olacak şekilde belirli toplulukları tanımlamaya yardımcı olur. Aralarında, daha küçük topluluklar, camgöbeği, turuncu, kırmızı ve siyah dahil olmak üzere diğer renklerle temsil edilir.
Renkli bir grafik, farklı toplulukları kolayca tanımlamamızı sağlar.

Twitter Etkileyen Algılama

Son olarak, örneğin kimin hangi topluluğa ait olduğunu anlamak için tartışmadaki başlıca katılımcıları belirlemek istiyoruz. Her kullanıcının etkisini farklı özelliklerle ölçebiliriz; onlardan biri derecelerine göre. Bu, kaç kullanıcının onları retweetlediğini veya onlardan bahsettiğini gösterir.

Çok sayıda etkileşime sahip kullanıcıları vurgulamak için, Derece özelliğini kullanarak düğümlerin boyutunu değiştireceğiz:

Önceki şekillerde bahsedilen Görünüm sekmesi altında, Gephi'de Derece özelliğinin nasıl değiştirileceğini gösteren bir ekran görüntüsü. Minimum boyut 0,1'e ve maksimum boyut 10'a ayarlanmıştır.
Gephi'de Derece özelliğini değiştirme

Grafik şimdi etkileyicileri daha büyük dairelerle temsil edilen düğümler olarak gösterecek:

Bir öncekine benzer, ancak etkileyici düğümleri temsil eden dairelerin eklendiği renkli bir grafiğin görüntüsü. Her renk grubu, bu tür bir avuç düğüm içerir.
Etkileyicileri daha büyük düğümler olarak gösteren renkli çıktı

Artık çok sayıda etkileşime sahip kullanıcıları belirlediğimize göre, isimlerini ortaya çıkarabiliriz. Bunu yapmak için ekranın altındaki çubukta bulunan siyah oka tıklayın:

Kullanıcı arayüzünün sağ alt köşesindeki siyah oku gösteren Gephi çalışma alanının ekran görüntüsü.
Gephi'de etiket yapılandırmasına erişme

Ardından Etiketler ve Yapılandırma'ya tıklayın. Görünen pencerede Ad onay kutusunu seçin ve Kabul Et'i tıklayın. Ardından, Düğümler onay kutusunu tıklayın. Grafikte küçük siyah çizgiler görünecektir. Bunlar tüm kullanıcıların adlarıdır. Ama hepsini görmek istemiyoruz, sadece en önemlilerini.

Bunları tanımlamak için, düğüm boyutu için kullandığımız pencereyi kullanarak boyutlarını düğüm derecesine göre değiştirin. Minimum boyutu 0,1'den 10'a ve maksimum boyutu 10'dan 300'e çıkardık.

Adların eklenmesiyle, grafik, farklı toplulukların etkileyicilerle nasıl etkileşime girdiğini gösterdiği için önemli ölçüde daha bilgilendirici hale gelir:

En önemli kullanıcıların adlarının üstte yer aldığı, önemli kullanıcıları temsil eden dairelerin bulunduğu renkli bir grafiğin görüntüsü. Metnin boyutu, her kullanıcının boyutuna (etkisine) karşılık gelir ve en büyüklerinden bazıları mor renkte ESPNFC, gri renkte TrollFootball ve pembe renkte PSG_inside'dır.
Ad eklemek, farklı toplulukların etkileyicilerle nasıl etkileşime girdiğini görmemizi sağlar.

Artık bu özel Twitter tartışması hakkında çok daha fazla şey anlıyoruz. Örneğin, yeşil topluluğun mundodabola ve neymarjrdepre gibi hesapları dahil etmesi, Brezilya'daki yerini ortaya koyuyor. Turuncu ve gri topluluklar, sc_espn ve InvictosSomos gibi İspanyolca konuşan kullanıcıları içerir. Özellikle gri ve siyah topluluklar, IbaiOut, LaScaloneta ve popüler yayıncı IbaiLlanos gibi kullanıcıları olduğu için İspanyolca konuşuyor gibi görünüyor. Son olarak, menekşe ve kırmızı topluluklar, ESPNFC ve brfootball gibi hesaplara sahip oldukları için İngilizce konuşuyor gibi görünüyor.

Şimdi bu kullanıcıların neden sadece grafik hesaplama değil, sosyolojik olarak da farklı topluluklardan oluştuğunu daha iyi anlayabiliriz: Farklı diller konuşuyorlar! Hepsi Messi ve yeni takımı hakkında tweet atıyorlar ama İspanyolca konuşanların diğer İspanyolca konuşanlarla Portekizce veya İngilizce konuşanlardan daha fazla etkileşim kurması mantıklı. Ayrıca gri ve turuncu toplulukların İspanyolca konuşsalar da bunu farklı açılardan yaptıklarını da anlayabiliriz. Gri topluluk, resmi futbol veya gazeteci hesaplarından ziyade birbirleriyle neden daha fazla etkileşime girdiklerini açıklayan daha mizahi bir yaklaşım kullanıyor.

R ve Gephi'nin Potansiyelinin Kilidini Açmak

Gephi'yi grafik için kullanmasaydık, R'nin Ggplot kitaplığını kullanabilirdik. Ancak benim açımdan, bu kütüphane ağ grafiği açısından çok daha sınırlıdır. Gephi gibi dinamik değildir, yapılandırılması daha zordur ve ortaya çıkan görüntü daha az nettir.

Serinin geri kalanında, bu analizi daha da ileri götüreceğiz. Kullanıcıların ne kadar konuştuğunu ve hangi konuların ilgilerini çektiğini görmek için bazı konu modelleme metin analizleri yapacağız; olumlu mu yoksa olumsuz mu olduklarını görmek için bir duygu analizi yapacağız; ve Twitter'ın en büyük etkileyicilerini analiz etmek için daha derin bir grafik analizi yapacağız.

Bu adımları, yeni Twitter tartışmalarını analiz etmek ve arsa grafiklerinizden ne gibi bilgiler elde edebileceğinizi görmek için kullanabilirsiniz.