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

PAS (Printer Accounting Server)

episode

Mükemmel bir program yapılmış. Adı PAS yazıcıya gönderilen dökümanların yönetiminde çığır açan bir yazılım. Üretici firma yanlış hatırlamıyorsam bir fransız şirketi. Peki nedir bu PAS? Bir manyetik kartımız var fotokopi makinesinin başına gidiyoruz. Makinanın ekranında "Please insert a card" yazıyor, kartımızı kart okuyucudan geçiriyoruz ve fotokopi çekmemiz için makineyi açıyor. Kaç sayfa fotokopi çekersek hesabımıza işliyor. Tabi bunun için ilk önce kartımızı doldurmamız gerekiyor. Ne kadar para yüklemişsek o kadar çekiyor. Print içinde aynı şey geçerli. Bu programın çalışması için bir linux veya NT server'a ihtiyaç var. Program sayesinde Fotokopi ve Yazıcılarınızın analizlerini otomatik olarak alabiliyorsunuz. Fiyatına bakamadım web sitesi www.metrics.com

Video: Smalltalk, bir video, bir IDE ya da test-driven development üstüne...

FZ

Eski Smalltalkçulardan Kent Beck, Test-Driven Development By Example kitabında genellikle Java ve çok az bir yerde de Python kullanıyor. Lakin üstadın zaman zaman hayıflandığını görüyoruz, "ah şimdi elimin altında Smalltalk, Smalltalk IDE ve Refactoring Browser" olsaydı diye.

Neden?

Belki de cevabı burada yatıyor:

All Plan ve Cinema 4d Türkiye tanıtımı başladı

redogre

All plan den hatırlayacağınız Alman Nemetschek firması Cinema 4D adlı 3 boyutlu çizim programını da bünyesine kattı. Aluplan firmasının Türkiye'ye getirdiği Allplan ve Cinema 4D programlarının tanıtımını ve eğitimini FGA Mimarlık veriyor. Firmanın sitesinde hem programlarla ilgili bilgi hem, tutorial lar hem de patch ler var.

Python : iyidir - o kadar

gencbeyin

Proglamlama bilgisi olmayan biri için öğrenmesi kolay, öğrendikten sonra ise diger dillere geçiş olanağı olan Python hem hızlı geliştirme için kullanılabilen bir script dili, hem diğer bütün programlama stillerini ihtiva eden bir bilgisayar kültürü antolojisi gibi.
Mesela eski alışkanlıkları Lisp türü fonksiyon bazlı programlama için uygun tanımlamalar içermektedir. Aynı zamanda OO yani obje bazlı programlama için de elverişlidir. Son olarak perl tipi sıralayan türden programlama da yapılabilir. Bütün bunları python öğrenirken yeni baştan tekrar edebilirsiniz.

Mono 0.19

raistlinthewiz

Heyecanla beklediğimiz Mono'nun 0.19'u sürümü çıktı.
Şu ana kadar büyük gelişme kaydetmiş olan Mono'nun son durumu şöyle:
C# Compiler, self-hosting durumunda
JIT, Linux'te çalışıyor.
Interpreter, Linux/x86 ve Linux/PPC için için tamamlandı ve StrongArm ve Sparc platformu için çalışmalar sürmekte.
Sınıflar,tamamlandı

Monu'nun sitesine ulaşmak için http://www.go-mono.com/

Ayrıca Mono ve Mono ile hazırlanmış programların screenshotları için: http://www.go-mono.com/screenshots.html