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

MenuetOS Türkçe

madanadam

MenuetOS 32 bit assembly ile yazılmış bir işletim sistemidir. Tek diskete network destekli, renkli , süper hızlı ve küçük bir işletim sistemini sığdırmışlar. Şu sıralar onu Türkçeleştirmeye çalışıyorum. İlgilenirseniz MenuetOS sayfası: http://www.menuetos.org, Türkçe yama http://www.geocities.com/madanadam

İlk önce MenuetOS'un son kararlı sürümü olan 0.76 yı indirmeniz, kurmanız ve sonra kernel.zip'i açıp üzerine yamayı ekleyip fasm 1.50+ ile derlemeniz gerekiyor.

Javacılar İşleri Neden Zorlaştırıyor? (Ya da Perl, Haskell ve Lisp Üstüne)

FZ

Değerli FM üyelerinden ve editörlerinden Recai Oktaş ile programlama dilleri üzerine yazışırken bazı enteresan yazılarla karşılaştım. Konu dillerin bir araç olarak kullanımından bir kültür olarak nasıl bir bakış açısı sunduklarına geldi.

Söz gelimi 5 yılı aşkın süredir Java kodlayan, Java ile ilgili 2 kitabı bulunan ve Jakarta Struts projesinde aktif katılımcı olan James Turner'ın Why Do Java Developers Like to Make Things So Hard? başlıklı yazısı ilk paragraftaki duruma güzel bir örnek teşkil ediyordu. Turner kendince basit olan bir işi, FTP ile dosya yollamayı şifreli hale getirme işini Java ile yapmaya çalışmış ve ciddi bir karmaşa ile karşılaşmıştı. Aynı işi daha az deneyimli olduğu Perl ile yapmaya kalktığında ise...

Supermemo

m1a2

Öğrenmek sizin için bir tutku haline gelmiş fakat "öğreniyorum, unutuyorum" çevriminden şikayetçi iseniz bu programa bakmanızı öneririm. Supermemo Polonyalı bir (moleküler) biyolog olan Dr. Piotr Wozniak tarafından, teorik temelleri bir lisansüstü tezinde ortaya çıkan bir program. Dr. Wozniak yüksek lisans çalışmasında `Unutma` olayının kimyasını inceleyerek `Active Recall` olarak adlandırdığı bir `optimum tekrarlama` şeması ve matematiksel model geliştirmiş. Modeli geliştirmekle kalmamış `dur bakayım, ben bunu bir program haline de getireyim` diyerek Supermemo programını yazmış.

Prototype Javascript Framework

tongucyumruk

Web bir uygulama geliştirme platformu olarak kendini kabul ettireli çok oldu. Şimdi Web 2.0 gibi konuar tartışılırken web'in her geçen gün artan popülerliği yanında gerçekleştirilmesi gitgide zorlaşan kullanıcı taleplerini yanında getiriyor. İnsanlar her geçen gün daha etkileşimli, daha hareketli web uygulamaları istiyor. Bu durumun her geçen gün programcıları daha fazla yorması sonucunda bugün ulaştığımız noktada artık JavaScript ile yazılmış etkileşimli web uygulamaları geliştirmeyi kolaylaştıran altyapı yazılımları da ortaya çıkmaya başlıyor. İşte Prototype Javascript Framework'te bu amaçla ortaya çıkmış bir altyapı yazılımı.

Fikri takip: tml2html

misafir

Daha önceki bir yazımda türkçe klavyesi olmayanların yazıcıdan türkçe metin çıkarmalarını sağlayan bir betiği paylaşmıştım. Bu kez de yine türkçe klavyesi olmayanların türkçe html belgeleri üretmelerini sağlayan bir betiği paylaşmak istiyorum.