yapaybeyan.at ile metin üretmek

Geçen aylarda makine öğrenimi(machine learning) konusuna giderek artan bir ilgi duymaya başlamamın da etkisiyle son birkaç haftada boş kalan zamanlarımda yapaybeyan.at adlı sayfayı hazırladım. yapaybeyan.at, adı ülkemizde en ön plandaki 3 siyasetçinin, internet üzerinden erişebildiğim konuşmaları ile her biri için eğittiğim yapay sinir ağlarına erişmek için bir arayüz. Bu arayüz yardımıyla eğittiğim sinir ağlarından, siyasiler gibi konuşmalar üretmesini isteyebiliyorsunuz.

Kullanım

Arayüzü olduğunca basit yapmaya çalıştım. Konuşmanın uzunluğunu karakter sayısı olarak belirtiyorsunuz. Sonra risk yüzdesini 0 ile 100 arasında bir tam sayı olarak seçiyorsunuz. Risk alma yüzdesi üretilen konuşmanın, siyasinin incelenen konuşma metnine ne kadar bağlı kalacağını, öğrendiklerinin üstüne ne oranda risk almaya eğilimli olacağını belirtiyor denebilir. Son olarak -isteğe bağlı olarak- konuşmanın başlangıcında kullanılacak bir sözcük de yazabilirsiniz.

Teknik Arkaplan

yapaybeyan.at teknik açıdan yenilik içermiyor; ama her ziyaretçi aynı teknik bilgi düzeyinde olmayabileceği için teknik kısmını kısaca özetlemeye çalışayım.

yapaybeyan.at daha önceden eğittiğim, karakter tabanlı bir şekilde metin üretebilen yinelenen yapay sinir ağlarına erişmeyi ve onlara metin ürettirmeyi sağlayan bir arayüz.

Bu tanım bazıları için çok fazla yeni terim içerdiğinden biraz detaylı açıklayayım. Yapay sinir ağları(artificial neural networks) makine öğrenimi(machine learning) alanında sıkça kullanılan bir teknik. Derin öğrenme(deep learning) ise, makine öğreniminin -son yıllarda ciddi ilerlemelerin kaydedildiği- bir alt alanı olarak düşünülebilir. Yinelenen yapay sinir ağları işte bu alt dalın bir parçası olarak üzerinde çalışılan bir öğrenim metodu.

Konuya tamamen yabancı olanlara makine öğrenimi ile yapay zeka terimleri arasındaki farkı basitçe -ve az sonraki ifadelerime zıt sayılabilecek birçok detayı gözardı ederek- açıklamak daha iyi olacaktır sanırım. Yapay zeka alanında genellikle bir işi doğru biçimde yapmanın adımları, bilgisayara programlama aracılığıyla anlatılır. Makine öğreniminde ise bilgisayara nasıl çalışması gerektiği anlatılmaz. Problemin kendisi ve problemle ilgili veri programa sunulur, programın bu veri üstünde çalışarak kendiliğinden öğrenmesi amaçlanır.

Örneğin yapaybeyan.at aracılığıyla erişilen yapay sinir ağları Türkçe dilinin kurallarına veya sözcüklerin anlamına dair hiçbir bilgiye sahip olmadan, düzgün tümcelerin nasıl kurulduğuna veya anlamlı sözcüklerin nasıl oluşturulduğuna dair bir yönlendirmeye sahip olmadan eğitildi.

char-rnn

yapaybeyan.at adresinden erişilebilen yapay sinir ağlarını, Stanford Universitesi'nde doktora öğrencisi olan Andrej Karpathy tarafından geliştirilen char-rnn adlı projede geliştirilen kod yardımıyla eğittim. Karpathy, projenin orjinal sayfasında örnek olarak Shakespeare tarafından yazılan metinlerin bir kısmını örnek veri olarak sunmuş; dilerseniz bu veriyi kullanarak bu sinir ağını eğiterek Shakespeare metinlerine benzer metinler yazmaya calışmasını isteyebilirsiniz. Okumak isterseniz, projeyi geliştiren Karpathy'nin yinelenen sinir ağları ve char-rnn projesi üzerine bir blog postu da var.

Benzer Projeler

obama-rnn

Karpathy'nin kodladığı char-rnn, @samim tarafından ABD Başkanı Barack Obama'nın konuşmalarıyla eğitilerek Obama'nın konuşmalarına benzer konuşmalar yazmak için de kullanılmış. Samim'in bu çalışmasıyla ilgili blog postuna buradan ulaşabilirsiniz.

dilma-rnn

Yine Karpathy'den ilham alan Cesar Salgado, geçtiğimiz günlerde görevden uzaklaştırılan Brezilya'nın ilk kadın cumhurbaşkanı Dilma Roussef için benzer bir şey yapmış. Portekizce bilmediğimden ben okuyamadım açıkcası; ama ilgilenirseniz kendisinin blog postu da burada.

Neden Siyasiler?

Biraz yukarıda örnek verdiğim projelerin etkisinde kalarak, biraz da Türkçe kitap ve metinlerin dijital ortamda, uygun lisansla bulunmasının zorluğundan ötürü ağları eğitebileceğim Türkçe metin bulmak o kadar kolay değildi. Aklıma ilk olarak kendi internet sitelerinden gazetelerin haberlerini almak ve haber üreten bir yapay sinir ağı eğitmek geldi. Ancak haberler çok farklı konularda olabildiğinden ve farklı kişilerin beyanat ve yorumlarından oluştuğundan çok alakasız sonuçlar vereceğinden şüphelendim. Bir yazarın elinden çıkan bir kitabın belirli bir teması ve bütünlüğü olması durumunun tam aksi olabilir ve haber metinleriyle eğitilen bir yapay sinir ağı karmakarışık ve dağınık metinler üretebilirdi.

Bu saydığım nedenlerle ben de benzer bir şeyi Türkiye'deki siyasetçilerin konuşmalarını kullanarak denemeyi düşündüm. Yapay sinir ağını eğitmek için tek konuşma/kitap yeterli olmuyor; örneğin Karpathy, Shakespeare'in tum metinlerinin bir kısmını, Samim de Obama'nın bulabildiği tüm konuşmalarını kullanmış. Maalesef ülkemizdeki politikacılar çoğunlukla doğaçlama konuşmalar yaptıklarından, o konuşmalar da çoğunlukla metin haline getirilip internet üzerinden erişilebilir yapılmadığından çoğu siyasetçinin konuşmalarının haberleştirilmemiş, tam metinlerine ulaşmak neredeyse imkansız.

Buna tek istisna Cumhurbaşkanı Recep Tayyip Erdoğan ve meclisteki partilerin genel başkanları. Cumhurbaşkanlığı web sitesinde Erdoğan'ın, partilerin sayfalarında da genel başkanların bütün konuşmaları düzenli olarak yayınlanmakta.[1][2][3] (Çoğunlukla... CHP bu konuda son aylarda daha düzensiz davranıyor) Tek istisna olan HDP'nin sitesinde grup toplantısı konuşmaları video olarak konduğundan onları kullanmam mümkün olmadı; ancak Erdoğan, Kılıçdaroğlu ve Bahçeli'nin hatrı sayılır sayı ve uzunlukta olan konuşmalarını kullanabildim. Kullandığım konuşma metinlerinin isme göre derlenmiş hallerine, o metinleri almakta kullandığım script'lere ve sinir ağlarının checkpoint'lerine Github'daki yapaybeyan.at repomdan ulaşabilirsiniz.

Bahçeli'nin ve Kılıçdaroğlu'nun, MHP ve CHP web sitelerindeki tüm konuşmalarını aldığım söylenebilir. Erdoğan'ın yalnızca cumhurbaşbakanlığı dönemindeki konuşmalarını aldım. Başbakanlığı dönemini alamadım; çünkü Başbakanlık web sitesinde geçmiş Başbakanlar tarafından yapılan konuşmaları bulamadım.

Konuşmaları Almak

Sinir ağlarını eğitmek için siyasilerin konuşmalarını almak bu uğraşım sırasında kod yazdığım tek nokta sayılabilir. Üç siyasi için de birkaç ay öncesinde bambaşka bir amaçla yazdığım ve Github Gist'i olarak koyduğum bir script'ini, üstünde ufak geliştirmeler yaparak kullandım.

Erdoğan'ın konuşmaları son derece düzenli sayılabilecek bir formatta Cumhurbaşkanlığı'nın web sitesinde yayınlanıyor. Bahçeli'nin konuşmaları da yine düzenli sayılabilir bir formatta, MHP'nin web sitesinden ulaşılabilir bir durumda.

Aslında teknik olarak çok önemli olmasa da bu konuşmaları almam kısmıyla ilgili bir şeyler yazmak istememin yegane nedenine geldi sıra: CHP. Postun burasında kadar okumayı başaran partililer teknik açıdan anlamasalar da bir zahmet bilgi işlem birimine Kılıçdaroğlu'nun her konuşmasını web sitelerine farklı bir HTML formatında koymanın matah bir şey olmadığı mesajımı iletebilirler mi? Onu geçtim; Kılıçdaroğlu'nun konuşmaları olarak adlandırılan bir kısımda Hürriyet haberi gibi "bunu dedi", "bunun altını çizdi" gibi haberleştirilmiş birkaç cümle yayınlamak nedir yahu?! Zahmet edip konuşmanın tam metnini koysanız keşke. Grup konuşmalarının muhtelif yerlerindeki "[Alkışlar]" gibi meclis oturumu ifadelerini kaldırmanın aldığı zamana değinmiyorum bile.

Neyse, atarımı da yaptım, bitireyim. yapaybeyan.at'ta şimdilik yalnızca bu 3 siyasetçinin konuşmaları var. Ama sanırım bunun dışında birkaç yapay sinir ağı daha eğiteceğim. Şu an aklımda -yine öykü, masal, roman gibi kaynaklara dijital ortamda uygun ve ücretsiz erişim imkanı az olduğundan- köşe yazarları üzerinde çalışmak var. Bakalım ama, henüz kesin bir karar vermiş, bir şeye başlamış değilim.

yapaybeyan.at'ı, makinelerin becerilerinin gelmeye başladığı noktadan etkilendiğim için yaptım. Umarım 3-5 dakika ayırıp denediğinizde sizde de benzer bir şaşkınlık ve ileride olabileceklere ilişkin hafif bir korku yaratır. :)