Python tabanlı Türkçe deasciifier

0
FZ
Kısa süre önce Deniz Yüret'in Türkçe 'deasciifier'ını (turkish-mode, Emacs Lisp ile yapılmış) Python'a çevirdim. Kaynak kod adresi: http://github.com/emres/deasciifier.

'deasciification' ve 'deasciifier' terimlerine aşina olmayanlar için kısa açıklama: Türkçe harfler kullanılmadan, sadece ASCII harfler ile yazılmış Türkçe metinlerin, düzgün şekilde Türkçe harfler kullanılarak yazılmış hale çevrilmesine 'deasciification' denir. Bu duruma bir örnek verelim, girdi metni mesela

"Opusmegi cagristiran catirtilar."

ise, çıktı metni şöyle olmalıdır:

"Öpüşmeği çağrıştıran çatırtılar."
Peki ama kim Türkçe harfleri kullanmadan Türkçe yazar, buna benzer durumlar ne zaman karşımıza çıkar? Mesela klavyeniz Türkçe olmayabilir, tembel olabilirsiniz, yahut IMDb'deki Türk film isimlerini Türkçe harfli hale getirmeniz gerekiyor olabilir (örn. "Yahsi bati"yi "Yahşi Batı" yapmanız gerekebilir).

Her ne kadar bu işi ya da benzerini yapan sistemler daha önceden geliştirilmiş olsa da Python ile yeniden yazmanın gerekli olduğuna karar verip bunu gerçekleştirdim çünkü:

- Deniz Yüret'in geliştirdiği turkish-mode Emacs için Emacs Lisp ile geliştirilmiş bir sistem. Ben de Emacs kullanıyorum ama çoğunluk için bu durum geçerli değil.

- Bu sistemin Javascript implementasyonu http://turkce-karakter.appspot.com/ adresinde mevcut ve son kullanıcı için pratik fakat komut satırından yahut kendi programları içinden iş yapmak isteyen programcılar için çok pratik değil.

- Zemberek tabanlı bir 'deasciifier' açık kodlu olarak erişilebilir durumda ve web tabanlı hali de var http://zemberek-web.appspot.com/ adresinde ama yine programcılar için çok pratik değil. Tek istediğiniz pratik şekilde 'deasciification' yapmak ise önce Java kurmak, ardından da tam teşeküllü bir imla kontrol sistemini devreye sokmak, vs. biraz yorucu bir iş. Ayrıca Zemberek'in kullandığı yöntemler farklı ve bazı metinleri düzgün 'deasciify' edemiyor.

- Sabancı Üniversitesi'de Gökhan Tür tarafından geliştirilmiş (ve burada bahsedilen deasciifier'a ilham kaynağı olmuş) sistemin bazı kısıtkamaları var: Kaynak kodu açık değil, sistemi download edemiyorsunuz, web arayüzünün uzunluk limiti var. Ayrıca neden verilerinizi bir başkası ile paylaşmak zorunda kalasınız ki?

Şimdi de birkaç kullanım örneği, önce Python içinden:



Ve şimdi de komut satırından:

$ echo "Yilanlarin Ocu" | python deasciify.py 
Yılanların Öcü

echo "Hic fena olmadi sanirim, ne dersin hocam?" | python deasciify.py 
Hiç fena olmadı sanırım, ne dersin hocam?


Elbette bu deasciifier da mükemmel değil, bazen hata yapabiliyor ancak anadili Türkçe olan biri olarak pratik olarak hemen her türlü durumda işe yaradığını ve çok pratik olduğunu söyleyebilirim. Sistemin ardındaki teoriyi merak ediyorsanız Deniz Yüret'in makalesini okuyabilirsiniz. Bu sisteme eklenebilecek en heyecan verici özellik herhalde sistem çalışırken onun hatalarını düzeltip sistemi eğitebilme özelliği olurdu ancak bu başka bir projenin konusu olsun şimdilik. Şimdiki yakın vadeli planlarım arasında şunlar var: Sisteme web arayüzü eklemek, daha da kolay kullanılmasını sağlamak için Python Package Index'e eklemek, kendi başına çalışan GUI tabanlı bir versiyon geliştirmek ve Linux ile Windows'da kolayca kullanılabilmesini sağlayacak şekilde eklemeler yapmak.

Not: Bu yazı http://ileriseviye.org/blog/?p=3274 adresindeki İngilizce yazının çevirisidir.

Görüşler

0
FZ
0
pichoscosama
Çalışma prensibi nedir? "Yilan" kelimesinin "Yılan" olduğu nasıl algılanmakta? Office veya FF gibi kelimelerin olduğu bir liste mi var?
0
FZ
Bir tür liste var evet ancak karar listesi denen özel bir yapı kullanıyor ve bu yapı da epey büyük bir Türkçe metin yığını üzerinden istatistik analiz ile oluşturukmuş durumda. Bunu gerçekleştiren Deniz Yüret'in özgün makalesini okursanız orada detaylar mevcut: http://www.denizyuret.com/2006/11/emacs-turkish-mode.html ve "Greedy prepend algorithm for decision list induction".
Görüş belirtmek için giriş yapın...

İlgili Yazılar

Slashdot efektinden korunma yolları

larweda

Slashdot`u bilirsiniz, bilgisayar aleminde çok tartışmalar yaratan, gelişmelerden haberler veren, onbinlerce insanın takip ettiği saygı duyulan bir sitedir. Slashdot`ta duyurulan haberlerden birinde herhangi bir sitenin adının geçmesi, o sitenin çok (gerçekten çok) fazla hit almasına, ve çoğu zaman da sitenin ulaşılamaz halde zarar görmesine sebep oluyor. Buna alemde "Slashdot Effect" deniyor. Bu aslında bir sitenin duyurulması, geniş kitlelere yayılması adına çok istenebilecek bir durum. Ama site sahipleri sitelerinin göçmesinden (hatta kimi zaman bu yüzden hosting firmalarına cezalar ödemekten) hoşlanmıyorlar. İşte bu sebeple bu tarz bir duruma maruz kalan bir şahsiyet (adam Web-server olarak NT kullanmanın yanlış bir seçenek olduğunu kabul ediyor neyse ki) üşenmemiş, bir "Slashdot Effect Prevention Kit"geliştirmiş.

Saatinizi Kullanarak Makinanızı Boot Edin (USB Bootable Knoppix)

FZ

Yanlış okumadınız, kol saatinizi kullanarak makinanızı boot edin, Linux alemine dalın. Bakanlar sizin deli olduğunuzu düşünsün siz ise bunu fark edemeyecek kadar meşgul olun.

Bunun için ihtiyacınız olan öncelikli olarak USB´den boot edilebilen küçültülmüş bir Knoppix, bir adet USB hafıza çubuğu barındıran kol saati, bir adet de USB portuna takılı hafıza çubuğundan boot edebilme yeteneğine sahip anakartlı bir bilgisayar.

Editörün Notu: Radyolarda istek parça çalınması gibi bazen biz de burada istek üzerine haber yapıyor benzer tadı yakalıyoruz, okumakta olduğunuz haber, bugün Linux eğitimi 2. kur, 3. seansa katılmış olan ve bu haberi okuduğunda gözleri parlayacak olan arkadaşlardan birinin isteği üzerine yapılmıştır ;-)

OpenBSD 3.0, 1 Aralıkta resmi olarak çıkıyor

anonim

OpenBSD 3.0 , 1 Aralık`ta resmi olarak çıkıyor. Güvenliği ön plana çıkartan OpenBSD , her 6 ayda bir yeni bir sürüm çıkartıyor. Sürümlerinde yeni özelliklerden çok sistemin düzgün ve sağlam çalışmasına yönelik geliştirmelere yer veren işletim sistemi 3.0 sürümünde 10 farklı donanım mimarisini destekliyor: i386, alpha, macppc, amiga, hp300, mvme68k, mac68k, vax, sparc ve sparc64. http://www.openbsd.org

Sony PSP ve Lua Programlama

FZ

FM ortamında GP2X ve PSP tartışmaları alevlenmeye başlamışken PSP programlama ile ilgili gördüğüm bazı linkleri paylaşayım dedim. Common Lisp ortamlarından yakınen tanıdığımız Frank Buss geçen senek O'Reilly konferasında konu ile ilgili bir sunum yapmıştı Easy Game Console Hacking: An introduction to Lua Player on the PSP başlıklı.

Yazılım temalı Türkçe soru/cevap kardeşliğine davet

coskung

Yazılım dünyasında olup da Stackoverflow’u (SO) bilmeyen yoktur. Yazılım konusunda Google’da yapacağınız her aramada mutlaka SO’dan birkaç sonuç çıkacaktır. SO, yaklaşık 3.3 milyon soru, 6.6 milyon cevap ve 1.2 milyon kullanıcıya sahip devasa bir soru cevap sitesi. Şu anda dünyadaki tüm yazılımcıların itibar ettiği en önemli bilgi merkezlerinden birisi. Günde 4 milyondan fazla ziyaretçi çekiyor. SO, yalnız başına bir site değil, kocaman bir ağın en popüler parçası. Stackexchange (SX) ağı, aşçılıktan fiziğe, elektronikten bisiklete farklı birçok konuda soru/cevap sitesine sahip.