Zemberek nasıl çalışır? 1.Sözlük ve Kök ağacı
Zemberek bir kelimenin Türkçe olup olmadığına nasıl karar veriyor? Bu basit sorunun cevabı "verilen bir kelimeyi Türkçe kök ve eklerine ayırabilirseniz Türkçedir, ayıramıyorsanız değildir". Kısacası bir kelimenin Türkçe olup olmamasını anlamak için morfolojik analiz yapabilmelisiniz. Türkçe yazım denetimi yapabilmek için önceleri en sık kullanılan kelimelerin bir dosyaya konulup gelen kelimelerin o dosyadan kontrol edilmesi gibi ilk bakışta mantıklı görünen ama biraz inceleyince pratik olmadığı anlaşılan yöntemler de düşünülmüştü. Bu tür yöntemlerin yetersiz olan %98-99 doğrulukla çalışması için bile milyonlarca kelimeyi içermesi gerekir.
Zemberek çok basit bir sistemle verilen bir kelimeyi morfolojik olarak inceler. Önce verilen kelimenin kökü olabilecek adayları belirler, sonra da olabilecek ekleri uygun sırayla bu kök'e eklemeye çalışır. Eğer bu işlem sırasında girişteki kelimenin aynısını elde edebilmişse, o zaman uygun kök ve ekleri de bulmuş demektir ve kelime Türkçedir, eğer kök adaylarının hiçbirinden sonuç elde edilememişse o zaman kelime Türkçe değildir. bu işlemin ilk adımı olan kök adaylarının bulunması işlemini inceleyelim. Kök adaylarının bulunabilmesi için öncelikle elimizde Türkçe'deki tüm kök kelimelerinin bulunması gerekiyor. Zemberek Türkiye Türkçesi içi yaklaşık 30.000 kök içeren bir kılavuzu da beraberinde taşır, bu kılavuzda her kök tipine ve özel durumlarına göre etiketlenmiş şekilde bulunur. Diğer Türk dilleri için yapılan gerçeklemeler de benzeri bir kök sözlüğünü taşımalıdırlar. Burada bahsi geçen özel durumlar sondaki sert ünsüz harfin yumuşaması (sağlık -> sağlığa) veya bazı durumlarda sondan bir önceki sesli harfin düşmesi (burun -> burnu) gibi halleri içerir. Kökler için kullanılan etiketler de dile göre değişiklik gösterebilir. Aşağıda Azeri Türkçesi için yazılmış kök sözlüğünün küçük bir bölümü görülmektedir.
su AD
sağlıq AD YUM
al EY
gel EY
tuz AD
istiot AD
et AD
balıg AD
bir RA
iki RA
dörd RA
dünen ZAMAN
sabah ZAMAN
Verilen bir kelimenin kök adaylarının bulunması için zemberek bu kökleri özel bir ağaca yerleştirir. bu özel ağaç sayesinde adayların belirlenmesi son derece hızlı şekilde yapılabilmektedir. Bu ağaçta kökler içeriklerine göre yerleşirler, örneğin aşağıdaki örnekte "baz" kökü sırasıyla B- A -Z ile etiketlenmiş düğümlerin en sonuncusuna bağlanmış şekilde durur. Burada dikkati çeken bir nokta da uzun köklerin gereksiz fazladan düğüm oluşturmayacak şekilde ağaca bağlanması ve bellekten tasarruf edilmesidir. yani "Balerin" kökü B-A-L-E düğümlerinden sonra gelen R düğümüne bağlanmıştır.


Kök ağacının oluşturulması işlemi oldukça ince bazı uç durumları göz önüne almayı gerektirir. ağacın daha oluşturulurken bellek tasarrufu ve performans için yukarıda anlatılan kuralara göre davranması için aşağıdaki 7-8 durum için farklı önlemler alınması gerekmiştir. Ağaç oluşum kodları ile ilgili problemli noktalara işaret eden NZemberek geliştiricisi Tankut Tekeli'ye de buradan teşekkür etmek isterim.
Bu yazıda kısaca kök sözlüğü ve kök ağacının yapısı ve oluşturulmasından bahsettim, daha sonraki yazılarda köklerin nasıl seçildiği, çözümleme işlemi gibi adımların iç yapıları hakkında biraz bilgi vermeye çalışacağım.Daha fazla bilgi için genel olarak Zemberek ve işleyişi ile ilgili 8 sayfalık bir makaleyi okuyabilirsiniz.




9 yorum:
Sizce de ilk resimdeki Root yerine Kök yazsa daha güzel olmaz mıydı?
Tolga, Evet haklısın, şekilleri uzun zaman önce çizmiştim, ingilizce makalelerde de kullanılabilsin diye o şekilde kalmış.
Zevkle okunabilecek bir yazı olmuş. Teşekkürler Mehmet bey...
merhaba;
muhtesem bir calisma olmus,
bu kilavuzu mozilla yada thunderbird ile kullanabilmemiz icin ne yapmamiz gerekiyor?
sitelerinde su sekilde bahsediyor
http://www.mozilla.com/en-US/thunderbird/dictionaries.html
tesekkurler
ersind@gmail.com
Ersin, zemberek'in Firefox ve Thunderbird'de yazım denetimi servisi verebilmesi için şu anda sadece Pardus'ta yer alan zemberek sunucusunun sistemde kurulu olması ve bu iki uygulama için Pardus geliştiricilerinin hazırladığı yamaların eklenip tekrar derlenmesi gerekiyor.
Kısacası, şu anda sadecePardus altında Firefox ve Thunderbird için Türkçe yazım denetimi desteği var. diğer sistemler için bu çalışmanın yapılması gerekir.
Zemberek en nihayet openoffice'deki önemli bir eksikliği giderdi. Programın geliştiricilerine müteşekkir olsam da, aspell türü her programa kolayca entegre olabilecek bir format kullanmadıklarına hayıflanıyorum. Makale gerçekten çok güzel, teşekkürler.
elinize sağlık, çok güzel bir çalışma
bir de bişey öğrenmek istiyorum. neden zemberek'in kendine ait bir sitesi yok, böyle blogger'larda felan işi devam ettiriyorsunuz, vakit mi bulamıyorsunuz diyicem ama sanmıyorum.
@Ahmet Butun:
Zemberek proje sayfasinda gerekli dokuman ve koda erisebilirsiniz. Google'da "zemberek" diye aratin.
Yorum Gönder