Bildergebnis für trump fanatics

Bu yazıda eylülden şubat sonuna kadar ne yaptığımı, akademiye nasıl bir katkım olduğunu kısaca ve basitçe özetleyeceğim. (Fazla teknik ayrıntılara girmeyeceğim, istek olursa ve zamanım da olursa başka bir yazıda daha ayrıntılı yazarım.)

Proje:

Hocamın şu anda ilgilendiği ana konu sosyal medyada dolaşan yalan haberler ve tabii bunların saptanması. Araştırmalar gösteriyor ki bu tip yalan haberleri en çok yobazlar paylaşıyor, ülke fark etmeksizin. Amerika'da bu yobazlar = kronik Trumpçılar. Kronik Trumpçıları saptamak demek yalan haber kaynaklarını saptamak demek. Bana da bu kronik Trumpçıları saptama görevini verdi.

Konuya ilişkin bana bir makale attı. Makalenin yazarları ABD seçimleri sırasında Hillary ve Trump isimlerini kullanarak tweet toplamış yaklaşık 200 milyon tane (oha) Tweetleri "Trumpçı" veya"Hillary"ci diye sınırlandırmaları gerekiyor. Bunun için önce #hashtag kullanıyorlar. Örneğin bir tweet'te #MAGA geçiyorsa ona direk "Trumpçı" diyorlar. Tabii bu tip hashtagleri saptamak için de bir şey yapmaları gerek, onun için de hashtaglerin aynı tweet içinde birarada bulunmasından çıkarım yaparak tweet sınıflandırmada kullanılacak daha fazla hashtag elde ediyorlar (örneğin #MAGA ile #MAGA3X, #TrumpTrain #BuildTheWall birçok tweette aynı anda bulunuyor, böylece bunları da tweet sınıflandırmada kullanıyorlar.)

Tweetleri sınıflandırdıktan sonra bu tweetleri bir machine learning programına sokuyorlar ve bu program sınıflandırmadıkları tweetlerin de (hashtagi olmayan tweetler yani) sınıfını tahmin ediyor.

Bütün tweetleri sınıflandırdıktan sonra bu tweetleri kullanarak twitter kullanıcılarını sınıflandırıyorlar. Sonra bu sınıflandırmayı zaman / Trumpçı sayısı grafiğinde gösteriyorlar. Grafiklerle ABD seçim anketleri eşleşiyor. "Twitter'ı kullanarak seçim anketlerini tahmin edebiliriz." çıkarımında bulunuyorlar.

Aşağıdaki resimde NYT National Polls dedikleri anket, Clinton - Twitter Opinion da kendileri tweetleri sınıflandırıp tweet sınıfına göre kullanıcıları da sınıflandırıp oluşturdukları "yapay anket".




Hoca ise bunun aynısını ABD vatandaşlarının Trump memnuniyeti anketlerine uygulamamı istiyor. Tabii farklı teknikler kullanarak.

İlk buluşmamızda bana bu makaleyi koda geçirmemi, makaledeki tweetleri kullanarak kullanıcı sınıflandırmaya ek olarak twitter kullanıcılarının birbirini retweet etmeleri bilgisinden de yararlanmamı (örneğin bir kullanıcı hiç tweet atmasa bile o kişi paso Trump'ı rtliyorsa onu da "Trumpçı" olarak sınıflandırabiliriz) ve word2vec isimli alternatif bir makine öğrenmesi metodu kullanarak hashtag bulmamı söyledi.

"Ne zaman biter?" dedi.

"Bilmiyorum siz daha iyi bilirsiniz öğrencilerle deneyeminiz var." dedim.

"Ama Python'da ne kadar iyi olduğunu bilmiyorum." dedi.

"Valla bir tahminim yok." dedim.

"Tamam sana üç hafta veriyorum." dedi.

("Hass" dedim.)

1. Hafta (Eylül)
Hocadan veriyi alamadığım için bu hafta hiç çalışmadım. Sadece hocanın verdiği makaleyi okudum. Geri kalan zamanda yattım. (Keşke yatmasaydım. Acısı sonradan çıktı.)

2. Hafta  (Ekim)
Hala veri olmadığı için bu hafta da yatmakla geçti. Yatıyorum üzerine maaş alıyorum.



3. Hafta
Sonunda veri geldi. İlk gün veritabanını kurup tablolara tek tek baktım, nerede ne var not ettim. Sonra mesai saatim bitti diyip çıktım gittim ofisten. İki gün sonra hoca "Bir gelişme var mı?" diye sordu ahaha. Makaledeki kodu yazmayı bitirdim ama çok yavaş çalışıyordu, bitmiyordu bir türlü. Hoca daha önce "hız sorunu olabilir" demişti. Dedim herhalde şimdi oldu. Mail atıp yardım lazım dedim.

4. Hafta
Hocayla görüştüm, "hız sorunu falan olmaması gerek, makaleyi yazanlar nasıl yaptı?" dedi. Biraz kod ile ilgili soru sordu, sonra benimle dalga geçti. Biraz üzerine düşündükten sonra harbiden dalga geçilecek bir kod yazdığımı fark ettim. (Tek row için hususi SQL sorgusu gönderiyordum, Pythonla database kullanmamıştım daha önce. Bir de makaledeki bir noktayı kaçırmışım, döngüyü veri kalmayana kadar çalıştırıyordum meğerse üç kere çalıştırmak yetiyormuş.) Basit hataları düzelttikten sonra kod tıkır tıkır çalışmaya başladı.



5. Hafta
Hashtag bulma işiyle uğraştım, hashtagleri gösteren grafik falan çıkardım. Grafik işlerinden pek anlamadığım için zor oldu.

6. Hafta (Kasım)
Üç hafta dolmuştu, ama ben sadece hashtag bulma algoritmasını yazabilmiştim. Projenin %30'u falan bitmişti yani. Ama hocaya korkarak attığım maile hocanın cevabı "İşlerin ilerlediğini görmek güzel." oldu. Buluştuk. Gösterdim grafikleri vs. Yalnız bu makaledeki metot iyi çalışmıyor falan dedim. Bana başka bir metot önerdi. En sonunda söyledim "Hocam bak üç hafta demiştiniz üç hafta oldu proje bitmedi. Yavaş mıyım bir geri bildirim verin." dedim. "Naa it's okay." dedi. Bir rahat nefes aldım. (Şimdi anlıyorum ki projeyi üç haftada bitirmek imkansızdı. Hoca neye üç hafta verdi hala bilmiyorum.) (Bu arada metot aslında çalışıyor. Sonradan fark ettimki ben yazmayı becerememişim.)

7. Hafta

Bu hafta da bir şeyler yaptım ama yetiştiremedim. Kod yavaştı biraz.

Haftanın sonunda önemli bir şey oldu. Lauzhack isimli hackhathon'a girdim. (Hackhaton 24 saatte sıfırdan ürün ortaya çıkarma amaçlı yarışma.) Burada pek bir şey beceremeyip takımımı batırsam da (hatta ben bizim takımımı batırınca Bilkent'ten gelen takım birinci oldu.) pandas isimli data science ile uğraşanan birinin mutlaka bilmesi gereken, benim de biraz bildiğim ama mal olduğumdan projede kullanmadığım kütüphaneyi (hazır kod) iyice öğrendim ve projede uygulamaya başladım.



8. Hafta

Koddaki yavaşlıkları giderip hocaya bir daha gittim. Şimdi şöyle bir durum var, bir kullanıcıyı tweetlerine bakarak Trumpçı mı değil mi diye sınıflandırmam gerekiyor ama nasıl? Hani adam toplamda 100 tane "Yaşasın Trump!" 99 tane "Trump İsa belanı versin" diye tweet atmışsa bu adam neci? Bunu saptamak için çeşitli yöntemler geliştirdim. (Örneğin Trumpçı / AntiTrumpçı tweet sayısı oranı şundan büyükse Trumpçı de falan) Geliştirdim dediğim kafadan attım. (Büyük hata) Hocayla görüştüm, anlatmaya çalıştım ama en sonunda sabrı taştı yahu hangi tür tweetten fazla atıyorsa ona göre sınıflandır. Önemli olan bana tweet içeriğiyle sınıflandırma ve kullanıcılar arasındaki retweet ilişkisinden sınıflandırması arasındaki örüntüyü gösteren tablolar çıkar dedi.

9. Hafta

Bu hafta naptığımı hatırlamıyorum. İşe devam ettim ama bu hafta hocaya rapor atmamışım. Kod çok yavaş çalışıyordu ama çözümü buldum neyse ki.

10. Hafta 
Bu hafta hoca ortalarda yoktu. Hocaya ulaşamadığım için geri-bildirim alamıyordum. Dolayısıyla bir şey yapmadım bende. Ders falan çalıştım.

11. Hafta (Aralık)
Hoca nihayet ortaya çıktı. Çıkardığım tabloyu gösterdim. Sorun şu ki adam bana dört kareli tablo göstermişti, ben fazla kare göz çıkarmaz diyip bir sürü kareli tablo çıkarmıştım. Baktı, kızdı, kendi kafasındaki tabloyu (bu sefer dokuz kareliydi) çizdi "Bunu yapmak çok mu zordu?" dedi. Bir anda peyda olan ekstra beş kareyi hesap etmemiştim ama "Gerisi yarım yamalak da olsa var." dedim. Baktı "Hmm burada bir örüntü (pattern) gözüküyor. Sen buna yeni bir parametre ekle, belli bir sayıdan fazla tweet atan kullanıcılar için tablo çıkar." dedi.

12. Hafta
Hoca mailimi sallamadı. Öğrencilerinden birinin doktora savunmasına gittim, orada "çok meşgulüm bu aralar." dedi. Ben de bir şey yapmadım.

PHD Comics (@PHDcomics) on Twitter

13. Hafta
Hocayla (bu yazının yayınlanma tarihine kadarki) son birebir görüşmemizi 21 Aralık 2017'de yaptık. Tarihini hiç unutmayacağım oldukça epik feyil bir görüşmeydi.

Sorun şu hoca benden tablo istemişti. Ben 5000 tablo çıkarmıştım. Sonra bu tabloların da tablosunu çıkarmıştım. Ama bu tabloyu anlatırken göbeğim çatladı.

Proje çok karmaşıklaşmıştı. Hoca önceki haftalardaki gibi çıkardığım şeylere bakıp sonuç yorumlamıyordu, yorumlamaya uğraşmıyordu. Benimle dalga geçti. "Bir şeyler yapmışsın, buluşların var ama sunamıyorsun." dedi. "Senin sunmayı öğrenmen lazım." dedi. "Bunu ocak ortası gibi laba sun." dedi. "Hocam 17 Ocak'ta Machine Learning sınavım var, ondan sonra sunsam?" dedim peki dedi.

Diriliş

Bundan sonra bana bir aydınlanma geldi. Saçmalamıştım. Hatalarımı anlamıştım sonunda.

1- Her hafta hocaya rapor atıyordum ama raporlar araştırmanın sonuçlarından çok programlama günlüğüydü. Bu yüzden elde anlatacak somut bir şey olmadan görüşmelere girip dalga geçilip dönüyordum.

2- Kodum çok iğrenç olduğundan hızımı kesiyordu. Kodu yazarken öğrenmiştim, dolayısıyla öğrenmiş halimle kodu tekrar yazmalıydım.

3- Aşırı derecede kafadan atıyordum, halbuki benim konumu çalışan onca başka bilim insanı vardı ve bunların ne yaptıklarını internette hazır olarak vardı.

Dolayısıyla

1- Hocaya her hafta rapor atmayı kestim. Raporlarımı artık sunum haline getirip sınıfa sunacakmış gibi yazıyorum, hatta direkt sunuyorum. (Gerçi daha iki kere sundum.)

2- Kodumu temizledim, bir çok şeyi sıfırdan classlı mlasslı yazdım. Kod seksi oldu.

3- Hocanın verdiği makalenin referans ettiği makaleleri indirdim, onların referans ettiklerini de indirdim. Hocanın verdiği makaledeki anahtar kelimelerle arama yapıp o makaleleri de indirdim. Sonuçta elimde yüz tane makale oldu. Bu makaleleri klasik pdf okuma yöntemiyle okuyup notlandırmam zordu, makale okuma programı aradım, Mendeleyev isimli programı buldum, kurdum süper. Epey bir makale okudum, işime yarayacak kısımları not aldım.

Bu okumalar sonucu aklıma bir sürü fikir geldi, öyle ki araştırma işinden zevk almaya başladım. Yeni metotlar aklıma geldikçe denemek için yanıp tutuşuyordum, sonuçları bir an önce görmek istiyordum. Bu olunca kodu da iştahla yazıyordum.

Yalnız bu yanıp tutuşma işi o kadar uzun sürmedi. Artık deneyecek çok şey vardı ve tek başıma bu kadar şeyi deneyebilmem mümkün değildi. Öyleki izin alıp Türkiye'ye döndüğümde Bilkent'ten hocayla görüştüm. "Çok normal bir problem, bence hocanla görüşüp öncelik listesi çıkar." dedi. Demek ki her şeyi deneyemeyeceğiz.

12, 13, 14, 15. Haftalar

Bu bir ayda (ilk bir-iki haftadaki kod temizleme ve makale okumalar hariç) hiçbir şey yapmadım. Machine Learning sınavı vardı ve 5/6 ile geçmem gerekiyordu. (İlk sene bir "uzmanlık" dersini 5/6 geçemezseniz postalıyorlar.) Machine Learning'e düzenli çalışmayı bıraktığım için işler zora girmişti. Riske atmamak için işi gücü bırakıp ders çalıştım.

16. Hafta
Machine Learning sınavı bitti. Sekreter hemen ertesi hafta proje sunumu koymuştu. "Sömestır projesinin notlandırılmasının yetişmesi için bu güne koymam lazım." demiş. İşleri bitirip sunmak için bir haftam vardı.

Allahsız çalıştım. 7/24. Sunumdan bir gün önce labın postdoclarına slaytları gösterdim. Yalnız çok içerik vardı. Ayrıca bu adamlar bile beni anlamakta zorlanıyordu. "Sen bunu kısa bir konuşma şekline sok, bir hikaye anlatmaya çalış, sonuçlar olsun. Daha fazla şey koyma. Hocanın seni notlandırması için elinde bir şey olması lazım, yapılmamış şeye not veremez." dediler. Ben de daha fazla şey koymadım. Hocayla en son kaldığımız yeri değil de ilk iki ayda yaptığım kısmı sunayım dedim. Ama bir hikaye üretmem gerekiyordu. Dedim "Benim metotların makaledekinden iyi olduğunu ıspatlamaya çalışayım." O yüzden veritabanını değiştirmem gerekti çünkü makale ABD seçim süreci sırasında yazılmıştı, makaledeki metot da o süreçte geçerli tabii. Bir günde tüm kodu değiştirip sonuç çıkarıp slaytları adam edip uykusuz bir şekilde sunuma gittim.

Sunum
Sunum sırasında yorgunluktan öksürüyordum. Uykusuz olduğumu anladılar mı bilmiyorum. Postdoclar sunumu sevdiklerini, slaytların öncekilerden iyi olduğunu söyledi. Başka bir phd arkadaş da sonradan bana "Tebrikler!" diye mesaj attı. "Sunumu takip edebildin mi?" diye sordum, "Metotların bir kısmını biliyordum o yüzden takip edebildim." dedi. Sevindim.

Malesef sunum hocanın pek hoşuna gitmemişti. Adamın beni notlandırma gibi bir endişesi yoktu. O sadece en sonuçları görmek istiyordu. "E bu sunum eksik olmuş? Geri kalan kısmı çalışmıştık, nerede onlar?" dedi. "Çok fazla içerik var diye sunmadım." dedim. "İyi ama geri kalanını sun bak." dedi. "Haftaya sunayım." dedim. "Haftaya ben yoğum, 14 şubatta sun." dedi. (Çok güzel bir tarih reis.) "Hocam ben de yoğum, Türkiye'ye bilet aldım, sonra sunayım." dedim.

Kalan 2 Hafta
İşleri bitirip Türkiye'ye iş bırakmamak için Allahsız çalıştım. Kalkıyordum, sabah dönem arasındaki yoğunlaştırılmış Fransızca dersine giriyordum, dönüşten yatana kadar çalışıyordum. Sıkıcı olduğu için okulun bana verdiği macbooku yana koyup Muhteşem Yüzyıl izliyordum. Türkiye'ye vardığımda 23. bölümdeydim. 22*2 = 44 saat muhteşem yüzyıl eşliğinde çalışmışım yani.

Son Durum
8 Şubat - 18 Şubat arası Türkiye'deydim. Türkiye'deyken çalışmayınca hocaya mail attım "Hocam yetişmeyecek 21'inde sunmayayım ben." dyei. Dönüp yeniden çalışmaya başladım.

21 Şubatta lab toplantısında hoca "Ee hani sen sunmayacak mıydın?" dedi. Hoca maili cevaplamıştı ama anlaşılan ne zaman sunacağım kısmını pek sallamamış. "Hocam sonra demiştim." dedim. "Tamam ya sonra istiyorsan sonra." dedi. Sunumu dinlemeleri için yanında getirdiği elemanları da köyüne postaladı. Faille açtım dönemi.

İşin büyük bir kısmını bitirdim, yetişmeyen kısımlar oldu ama 28 şubatta sunabilecek kadar malzeme vardı elde. Bu son hafta yine çok çalıştım ama öyle Allahsız değil. Erasmus etkinliklerine gidip eğlenmeme de baktım. Geceleri işi bırakıp paydos verip kitap falan da okudum. Zaten o kadar kesintisiz çalışamıyordum çünkü çalışırken yan tarafa açtığım Muhteşem yüzyılda ilk sezon bitmiş, genç Osman reis şerefsizlerce öldürülmüş (üşüyoruz) yerine gelen tipi kayık 4. Murat Joffrey'i aratmakta. (Bu arada harbiden üşüyoruz, hava hep -7 burada. Türkiye'ye gitmeden önce 7'ydi.)

Sunum Part 2
2. sunuma uykusuz gitmedim ama fazla da çalışmamıştım. Dilim döndüğünce anlattım. Hocanın kafam karıştı dediği yerlerde uzun uzun açıklamalar yaptım. Baktım öğrenciler de anlattığım metotları anlıyor gibi durmuyor, elime kalem alıp tahtaya çizim anlattım. Böyle böyle 37 dakika sunmuş sunum (bkz: oha) İşin ilginç yanı başkası sununca ben genelde anlamıyordum, ama hoca anlıyordu ve bunu nasıl yaptın tarzı sorular sormuyordu, belki de bu kişiler hocaya daha önce de sunduklarından hoca zaten konuyu biliyordu. Benim durumumda kimse konuyu bilmiyordu, anlamadıklarını görünce de "E adamlar boşu boşuna gelmiş olmasın." diyip durup ekstra açıklamalar yapıyordum. Doğru mu yapıyorum bilmiyorum. Üçüncü sunuma hazırlanıp gelmeye çalışacağım (inşallah)

Neyse ki bu sefer hoca önceki kadar memnuniyetsiz gözükmüyordu. Eleştiride zaten bulunmadı. Elimde bir sürü grafik vardı ve bunları yorumlamak zordu, elimden geleni yaptım, neyse ki bir kaç tane enteresan sonuç mevcuttu ki üzerinde muhabbet edilebilirdi.

Sunumdan az önce çıktım. Bakalım ileride ne olacak.