• Konuk Yazar

Whatsapp'ın En Renkli Grubunun Sohbet Analizi - Konumuz: Pyhton


Yazar: Yasin DURSUN - İş Zekası Uzmanı


Merhaba arkadaşlar öncelikle kendimden biraz bahsedip sonrasında hızlıca konuya girmek istiyorum. Adım Yasin. 2016 Yılı Sakarya Üniversitesi Bilgisayar Mühendisliği mezunu olup aynı Üniversitede Endüstri Mühendisliği Bölümünde Çift ana dal yaptım. Şu an özel bir firmada İş Zekası Danışmanı olarak çalışmaktayım. Uzun zaman sonra bir şeyler yazmayı deneyeceğim. Burası klasik olacak ama bu yüzden sürç-i lisan edecek olursam affola. Umarım okuyanlar için verimli bir yazı olur. 😊


İnsanın kendisinin veri haline geldiği, bizi bizden eşimizden daha iyi tanıyan algoritmaların, hukuk davalarını hakimlerden daha doğru tahmin eden yapay zekaların ortaya çıktığı, bir doktorun kendini geliştirmek için ayda 6 adet okuduğu makaleye karşılık Yapay zeka programı IBM Watson’ın 15 saniyede 500 bin tane okuduğu bir devirde veriden bahsedip veri ile ilgili bir şeyler yazalım, yapalım, uygulayalım dedik.


Evet arkadaşlar bu yazımda veri analizi, veriler üzerinde bazı işlemler, görselleştirme ve text mining yapacağız. Tüm bu işlemleri Python ile uygulayıp sonuçlarını göreceğiz. Dataset olarak ise whatsapp grup konuşmalarını kullanacağız. İnceleyeceğimiz whatsapp grubu benimde bir üyesi olduğum ve whatsapp aleminin en iyi gruplarından biri olan gruptur. İçerisinde optimum sayıda endüstri mühendisi barındıran bu grubun içinde olmakta bu grubu incelemekte benim için çok keyifli bir deneyim oldu. Hadi lafı fazla uzatmadan devam edelim.

Veriyi analiz etmeye başlamadan önce biraz text mining ve veri analizinden bahsetmek istiyorum.


En basit anlamıyla text mining için metinden veri çıkarma işlemi olduğu söylenebilir. Veri madenciliği çalışmalarında eğer kaynağımız bir metin ise bu bir text mining çalışmasıdır diyebiliriz.


Text miming çalışmalarına biraz örnek verecek olursak;

- Metinlerin sınıflandırılması,

- Metinlerden konu çıkarılması,

- Metinler üzerinden duygu analizi yapılması,

- Bir metnin özetinin çıkarılmasını örnek olarak verilebiliriz.

Metin madenciliği çalışmalarındaki bu metinler genelde doğal dil ile yazılmış kaynaklardır. Bir kitap, bir dergideki makale bir köşe yazısı veya bir alışveriş sitesindeki ürünlere yapılan yorumlar ,instagram ,facebook, twitter gibi sosyal medya ortamlarında yapılan paylaşımlar, yorumlar ,atılan tweetler bile text mining için kaynak olabilir.


Günümüzde, yapısal olmayan ve düzensiz haldeki elektronik metin yığınlarının miktarı geometrik bir hızda artmakta ve bu verilerden kullanışlı, yapısal ve düzenli bilgi elde etme giderek daha büyük önem kazanmaktadır. Veri analizi ise Wikipedia’nın tanımına göre, yararlı bilgiler bulma, sonuçlar çıkarma ve karar vermeyi destekleme amacıyla verileri inceleme, temizleme, dönüştürme ve modelleme işlemidir.


Veri analizi bir süreç olup başlıca adımlarını veri toplama, veri işleme, veri temizleme, keşifsel analiz modelleme ve bir modele dayalı girdilere çıktı veren bir ürün ortaya çıkarma diye sıralayabiliriz.


Analize başlamadan önce keşifsel analiz ile bağlantı kurduğum ve çok beğendiğim bir dizinin bir sahnesini burada paylaşmak istiyorum.

İsterseniz şimdi analizimize başlayalım.


Whatsapp uygulaması üzerinden grup sohbetinin bir dökümünü kendimize e-posta olarak göndererek veri setimizi elde ediyoruz.


Başlangıçta elde edilen veriler analiz için işlenmesi gerekebilir. Whatsapp bu dökümü bize txt formatında gönderiyor biz txt formatında elde ettiğimiz veriyi çalışmamızda csv formatına dönüştürerek kullanacağız. Bu bizim veri işleme sürecimizin bir parçasıdır.


İşlenen bu veri de eksik veriler, tekrarlayan kayırlar hatalı veriler olabilir. Veri temizleme bu hataları önleme ve düzeltme işlemidir. Veri temizlemenin görevleri arasında; kayıt eşleştirme, verilerin yanlışlığını belirleme, mevcut verilerin genel kalitesi, tekilleştirme ve sütun bölümlemesi bulunur. Aykırı değerler tespit edilip analiz öncesi datadan çıkarılabilir.

Bizim veri setimizde medyalar dahil edilmediği için veri de anlamsız kayıtlar gelmekteydi. Bunlar veri setinden temizlendi. Ayrıca başka bir konuşmadan iletilen mesajlar gönderilen konum bilgileri de datanın anlamlılığını bozmaktaydı bu kayıtlarda veriden temizlendi.

Analize datamızı import edip datamızı tanıyarak başlayabiliriz. Analizi python programlama dili kullanarak yapacağız. Çalışmada kullanacağımız kütüphaneleri import ederek başlayalım.

Şimdi analiz edeceğimiz datayı import edelim. Datayı pandas kütüphanesi kullanarak içe aktarıyoruz.

Evet datamızı import ettik şimdi datamızdaki ilk 10 satırı görüntülemeye çalışalım.



Görüldüğü gibi datamız “Tarih, Saat, Kişi, Mesaj, Cinsiyet” alanlarından oluşmaktadır.

Her satır atılan bir mesajı göstermektedir. Veri setimiz tarih aralığı 21 Kasım 2017’den 18 Aralık 2018’e kadar olan konuşmaları kapsamakta olup yaklaşık olarak 55 bin satır kayıttan oluşmaktadır.


Not: Görseller de kişilerin isimleri gizlilik gereği gösterilmemiştir.


Data. info() komutuyla datamız hakkında bazı bilgilere bakalım.



Görüldüğü gibi 54.838 kayıt olup 5 kolondan oluşan datamızda bir tane integer 4 tane ise object türünden alan vardır. Şimdi datamıza yeni bir kolon nasıl ekleyebiliriz buna bakalım.

Her bir mesajdaki karakter sayısını str.len() fonksiyonu ile bulup bunu “Karaktersayisi” adında yeni bir kolon olarak veri setimize ekleyelim. Daha sonra datamızı tekrar görüntüleyelim.




Evet yukarıdaki görüntüde görüldüğü gibi her bir mesajdaki karakter sayılarını da datamıza yeni bir kolon olarak eklemeyi başardık. Şimdi de kişilerin mesajlarında kullandığı ortalama karakter sayılarını bulup bunları kişilere göre gruplayalım.




Datamızdaki her bir kişinin mesajlarında kullanmış olduğu ortalama karakter sayısını bulup bunu grupladık. İlk grafiğimizi çizdirmeye ne dersiniz?




Yukarıdaki grafikte kişilerin cinsiyet bilgilerine göre kullandığı ortalama karakter sayılarını görselleştirdik. Grafiği yorumlayacak olursak kullanılan ortalama karakter sayısı en az 16 olup bu kişinin cinsiyeti erkek, kullanılan ortalama karakter sayısı en fazla ise 53 olup bu kişinin cinsiyeti ise kadındır. (Cinsiyet bilgisi 1=Erkek,0=Kadın olarak kodlanmıştır.) Şimdi ise kişilerin kullanmış olduğu toplam karakter sayılarını bulup aynı işlemleri yapalım.




En fazla karakter kullanan kişinin kullandığı toplam karakter sayısı 400 binin üzerinde olup bu kişi erkek iken en az kullanan kişinin kullandığı karakter sayısı 150 civarında olup kadındır. Bu kişinin grup kurulduktan kısa bir zaman sonra gruptan ayrılan bir kişi olma ihtimali çok yüksek.

Şimdi analizimizi farklı bir boyuta taşıyıp 54 bin mesaj kaydının kaç tanesinin kadın kaç tanesinin ise erkekler tarafından atıldığına bakalım. Bunun için iki tane değişken oluşturup atılan mesajları cinsiyetlerine göre ayırıp saydıralım.



Number of male message count: 27482

Number of female message count: 27356


27.482 mesaj erkekler tarafından atılırken 27.356 mesaj ise kadınlar tarafından atılmış görünüyor. Toplamda ki 54.838 adet neredeyse kadın ve erkeklere eşit olarak dağılmış gözükmektedir. Şimdi ise kadın ve erkeklerin kullanmış olduğu ortalama karakter sayılarına bakalım.




Kadınların ortalama kelime sayıları: 29.128

Erkeklerin ortalama kelime sayıları: 28.522


Yukarıda görüldüğü gibi kadınların mesajlarının karakter uzunluğu erkekler göre fazla çıktı.

Toplam mesaj sayılarını cinsiyete göre görselleştirelim.



Yukardaki grafikte görüldüğü gibi erkek ve kadınların mesaj sayıları birbirine çok yakın gözükmekte olup. Yüzde 50.11’i erkeklere ait iken yüzde 49.89’u ise kadınlara aittir. Şimdi mesaj sayılarını kişiye indirgeyip görselleştirmeye çalışalım.




En fazla mesaj atan kişinin 16 bin küsür mesaj attığı gözükmektedir. Bu grafiği cinsiyete göre göstersek nasıl olurdu? Bence daha iyi olur isimleri göremiyoruz bari cinsiyetlerini görelim değil mi? 😊



Evet cinsiyete göre kişileri sınıflandırıp görselleştirdik. Grafikte erkekler turuncu kadınlar ise mavi ile gösterildi. İsimleri gizlilik nedeniyle göremeseniz de şimdi en azından en fazla mesaj atan kişinin cinsiyeti hakkında bilgi sahibiyiz.


Yazının çok fazla uzamaması adına analizi şimdilik burada bitirmek istiyorum.

Bir sonraki yazımda gruptaki kişilerin günlük ortalama mesaj sayılarına, en fazla konuşulan günlere, grupta en fazla konuşulan kelimelerin çıkarımına, kişilerin konuşma oranlarını pasta dilimi şeklinde görselleştirmeye, hangi aylarda daha çok konuşulduğuna, genellikle insanların hangi saatlerde mesaj attığına, verimizi filtrelemeye ve filtreli veri üzerinde görselleştirme yapmaya değineceğim. Yorum ve geri dönüşleriniz olursa yukarıda saydıklarımın dışında önereceğiniz konuları da yapmaya çalışırım. Şimdilik kalın sağlıcakla.

356 görüntüleme