Eski bir yazımda Türkçe (ç, ı, ğ, ö, ş, ü) harflerinin Q klavye üzerindeki elverişsiz konumundan dolayı F klavyeye geçme çabamdan bahsetmiştim. O yazının üzerinden uzun zaman geçti ve ben F klavyeye hiç bir zaman geçemedim. Ancak bu sorun da kafamın bir köşesinde her zaman yer etti durdu. Zira Türkçe karakterleri göz ardı edince, yani ğ yerine g, ı yerine i yazınca tuşlama hızım gözle görülür biçimde artıyordu. Ama biraz daha hızlı yazabilmek için bu harfleri feda etmek de içimden gelmiyordu. Suç bu harflerin değildi tabii ki. Bu harfler aslında ait olmadıkları bir klavye düzenine sonradan sığıştırılmış, ikinci sınıf vatandaş muamelesi gören mülteciler gibiydiler Q klavye üzerinde. Yine de bu harfler alfabemizin olmazsa olmaz üyeleri, dilimizin vazgeçilmez sesleriydiler. Bu nedenle bir kaç yıl önce T23 projesine başlamıştım. Alfabemizdeki 29 harfi, bu 6 güzide harfin olmadığı 23 harfle tuşlayabilmekdi amaç. T23 ismi de buradan geliyor.

Sonuç olarak projeyi bir yıl kadar önce tamamladım ancak son kullanıcıya nasıl sunacağıma karar veremedim. MS Word eklentisi olarak geliştirmeyi düşünüyordum ancak MS Word eklentisi geliştirmek gereğinden fazla zahmetli olduğundan bir süre uğraştıktan sonra şimdilik vazgeçtim. Neticede son kullanıcıya bir chat bot (sohbet robotu) üzerinden hizmet vermenin daha yararlı olacağına (biraz da zorunlu olarak :)) karar verdim ve ortaya T23Bot çıktı.

Eğer T23Bot ile sohbet etmek isterseniz onu aşağıdaki buton ile Skype rehberinize ekleyebilirsiniz. Özellikle klavyesinde Türkçe karakter olmayanlar için iyi bir arkadaş olacağını düşünüyorum.

Teknik Detaylar

Türkçe karakterlerin düzeltilmesi çok da kolay olmayan bir problem. Ancak yapay öğrenme metotları ile belli bir başarıma ulaşılabilir. Mesela “olmus” ifadesi için “olmuş” ve “ölmüs” gibi iki farklı çözüm mümkün. Bu ve benzeri belirsizliklerden dolayı %100 başarım sağlamak çok zor. Bunun dışında yapay öğrenme ve doğal dil işleme gibi konulara merakınız varsa üzerinde çalışılması oldukça zevkli bir konu. Bu konuda bir kaç akademik çalışma mevcut ancak bu çalışmalardan yalnızca bir tanesi, Deniz Yüret Hoca’nın emacs metin editörü için yazdığı eklenti son kullanıcıya yarar sağlayacak bir araca dönüşmüş. Deniz Hoca’nın kullandığı yöntem hem az bellek yediği hem de kodlanması kolay olduğu için daha sonra Javascript, Java, Python gibi dillere de çevrildi. Hatta Javascript versiyonu ile Firefox ve Chrome eklentileri bile hazırlandı.

Ancak ben farklı bir yapay zeka tekniği kullanarak aynı işi yapan başka bir araç geliştirmeyi tercih ettim. Ve projeyi bir yıl kadar önce tamamladım. Oldukça geniş test verisi üzerinde %99 başarım ile çalışan bir model elde ettim. Deniz Hocanın çalışması da aynı test kümesi üzerinde %98 başarım sağlıyor. İki yöntem arasında bir kıyaslama yapacak olursak:

Deniz hocanın yöntemi bir karar listesine dayalı. Bu nedenle çok az bellek kullanıyor ve oldukça hızlı çalışıyor. Yöntemin basit olmasının bir diğer avantajı da başka dillerde kodlanmasının kolay olması. Bu yöntemin tek zor kısmı karar listesindeki kuralların otomatik olarak çıkarımı işlemi ki o da bir kere en başta Deniz Hoca tarafından yapılmış olduğundan bir problem teşkil etmiyor.

T23’e gelince, karakter n-gram, Hidden Markov Model ve Viterbi çözümlemesi ile çalışan bir sistem. Bu açıdan hem çok klasik hem de onbinlerce karakter dizisinin olasılık değerlerini tutmak gerektiğinden oldukça bellek yiyen bir yöntem. Epey bir optimizasyondan sonra 50 MB’a kadar düşürebildim. Bunun yanında viterbi çözümlemesi her ne kadar algoritma karmaşıklığını azaltan bir yöntem olsa da hem implementasyonu zor hem de maliyetli bir algoritma. Ancak T23 yine de oldukça hızlı.

T23 projesini geliştirirken çok şey öğrendiğimi söyleyebilirim. Ve herkese bu tür hobi projeler ile uğraşmayı tavsiye ederim. Vaktim olursa, ileride bu problemi averaged perceptron yöntemi ile de çalışmayı çok istiyorum. Çok daha hızlı, çok daha az bellek yiyen, kodlanması çok daha basit ama çok daha yüksek başarım sağlayan bir yöntem olacağına inanıyorum.

Herkese kolay gelsin

 

 

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInPrint this pageEmail this to someone