22 Haziran 2007

Kelime Obekleri denemesi

Kelime obekleri (bilesik kelime, coklu kelime, kelime grubu da denilebilir, bu konuda tem bir isimlendirme var mi bilemiyorum. Tankut ve Mert obek demislerdi, begendim, genellikle onu kullaniyorum) uzerinde epeydir calismak istiyordum, ancak islerden ne yazik ki ancak biraz zaman ayirabildim. Oncelikli amac kelime obeklerinin cumle icerisinden tespiti. Bunu yapmak aslinda zor degil, ancak her NLP konusunda oldugu gibi, gene kayaya bilgi eksikligi konusunda carptim. Elimizde var olan obeklerin isaretlenmis bir derlemesinin bulunmasi gerekiyor.
Onceden de bahsi gecmisti, kelime obeklerinin farkli yapilari var. En cok karsilasilani genellikle kendi baslarina ayrik bir kavrami ifade eden [ Kok+ek kalibi, Kok+ek kalibi... ] seklindeki yapilar. Ornegin "abayi yakmak" -> [ aba AD + belirtme(yukleme) eki, yak FIIL + genel ] seklinde. Bu sekilde farkli ek gruplari ile kelime obeklerinin buyuk kismi isaretlenebilir. Kotu olan sey ise 40-50 bin civarinda (daha da fazla olabilir) bu sekil obegin bulunmasi. Bunlarin tamaminin elle tek kisi tarafindan isaretlenmesi mumkun degil. Bu isin bilgisayar tarafindan yari otomatik olarak koklerin tespiti ve ek kaliplarinin elle secilmesi bu konudaki izlenecek yontem olabilir. Hatta isin basinda sadece koklerin tespiti yeterli olacaktir.
Elimde dogru durust bilgi olmadigindan cok hos olmasa da TDK sitesinden bu bilgileri cekecek minik bir orumcek mekanizmasi yazmaya karar verdim. cektigim bilgileri sadece deney amaciyla kullanacagimdan umarim darilmazlar. Zemberek , Http Client ve Java 5 ThreadPool yapilarini kullanarak sozlukteki tum kokler icin sirayla ilgili URL'yi olusturup surekli olarak ayni anda 30 gorevi isletecek sekilde mekanizmayi baslattim (daha fazlasini isletseydim DoS saldirisi yapiliyor sanabilirlerdi belki). Gelen HTTP cevabindan bilesik kelimeleri ayiklama kolay olmadi, ama sonucta TDK sitesinden tum koklere karsilik dusen bilesik kelime deyim ve atasozlerini 3 saat gibi oldukca iyi oldugunu dusundugum bir surede indirdim.

Tabi is bitmiyor burada. gelen bilesik kelimelerin bir depoya atilmasi gerekiyor. Dosyadan bu bilesik kelimeleri okuyup kok bulucu ile koklerini kestirdim. Birden fazla sonucun ciktigi durumlarda hangisinin secilmesi gerektigini kestirmek tam olarak mumkun degil. Simdilik balta bir sekilde en uzun boylu koku sectim. Bu sekilde elimde tum kelime obeklerinin oldugu bir depo oldu. depo icinde istenilen bir ya da birden fazla kokun icinde gectigi tum obekleri bulacak baska bir mekanizma daha koydum ama henuz kullanilmiyor.. Normalde gercek uygulamada bellek tuketimi nedeniyle kelime obeklerinin nesne ya da ogmulu iliskisel bir veri tabaninda saklanilmasi daha mantikli . o konuda da denemem oldu ama lafi cok uzatmayayim.

Daha sonraki konu ise asil analiz. Sorun su. elimizde bir dizi kelime olsun: [w1, w2, ..., wn] bunun kok cozumlenmesinden elimizde en kotu ihtimalle [ [k11, k12.. k1m], [k21, k22... k2m],....,[kn1,kn2,..,knm] ] seklinde bir diziler dizisi ortaya cikacaktir. Sonrasi tum olasi ardisil kok dizilimlerinin kelime obekleri olusturup olusturmadigi akillica yazilmis bir algotma ile depodan bulunmasina bakiyor. simdilik sadece en uzun kokleri secerek [k1, k2,..., kn] diziside yer alabilecek kelime obeklerini bulan basit bir metod yazdim. Deney dizinindeki BasitKelimeObegiBulucu sinifini isleterek ornek cumlelerdeki obeklerin bulunmasini gozleyebilirsiniz. Tabiki cok fazla eksik var,yanlis kokler secildiginden obekleri tam bulamiyor.

abuk subuk bir ornek:
"Van kedisi tuhaf tuhaf bakıp postu sererek tası tarağı toplayan adama yardım etti."
Bulunan obek adaylari: [van|kedi , post|ser , tas|tarak , yardım|et]

Eksiklikler

  • oncelikle obeklerin, ozellikle koklerin isaretlenmesi (etiketleme)
  • ek sablonlairnin yapilairnin ortaya cikarilmasi. ve analizdeki gorevlerinin belirlenmesi.
  • analizde koklerin tamaminin testi gerekiyor.
  • sozlukte yer almayan bilesik kelime yapilarinin incelenmesi . (tekrarlama, fiil obekleri gibi. Ornegin: "abuk subuk", "gelip gelmedigini" gibi.)
  • obeklerin disk uzerinde saklanmasi ve sorgusu.
  • icinde bir kelimesi ayri olan ama ayni anlama gelen obekler (abayi sermek, postu sermek.. gibi)
Bu noktada durup asil sorunumuz olan bilgi girisi konusunda tekrar dusunmek istiyorum. bilgi olmadan algoritmaniz ne kadar sahane olursa olsun bir ise yaramiyor. Biliyorum akademide bunun tersi gecerli ama bana gore algoritma NLP'de bilgiden sonra geliyor. Cok karmasik olmayan ve kelime obeklerinin isaretlenmesini kolaylastiracak cok katilimli bir mekanizmayi yapmak zor degil. Ama isler ve zaman aleyhimize. Bakalim, zaman dar ama bakarsiniz bir seyler cikar ortaya.

Bu arada memleketten buraya doneli bir ay oldu, askerlik nedeniyle haftaya insallah tekrar donmem gerekiyor. :). gorusmek uzere.

31 Mayıs 2007

Eclipse Türkçe imla denetimi eklentisi: Musahhih

Daha önce aklıma gelmiş olan fikri hayata geçiren Yusuf Karagöl'e teşekkürler. Eclipse için javadoc, yorum ve Stringlerde imla denetimi yapan bu eklenti gayet başarılı. Zemberek javadoc larında ascii olarak yazılmış kelimeleri gayet de güzel buldu. Eline sağlık çalışmalarının devamını bekliyoruz.

Projenin web sitesi: http://sourceforge.net/projects/musahhih
Projenin ilk duyurusu: http://liste.uludag.org.tr/pipermail/zemberek-pardus/2007-May/000068.html
Kullanım belgesi: http://musahhih.wiki.sourceforge.net/kullan%C4%B1m

E bir de screenshot tabiiki :P

Free Image Hosting at www.ImageShack.us

Düzenleme: Siteye son çalışan sürümü eklemiş

15 Nisan 2007

Zemberek nasıl çalışır? 2.Ağaç Performansı ve Kök Seçiciler

Bu yazıda Kök ağacı ile ilgili performans verilerinden bahsedip Zemberek kök seçicilerinin yapısını kısaca anlatacağım.

Daha önceki yazımda zemberek kök ağacının yapısından bahsetmiştim. Yazıda kök ağacının oluşum zamanı ve düğüm sayıları ile ilgili bir şey yazmadığımı fark ettim, önce onları özetlersek:

Sistem: AthlonXP 2.2Ghz, Pardus 2007.1, Java 6, JVM client modu

Sözlüğün okunup ağacın oluşturulma süresi: 0.5s.
ikinci ve üçüncü okuyuşlar: 0.2s.
Toplam düğüm sayısı: 46634
Kök taşıyan düğüm sayısı: 33414
Alt düğümü olan düğüm sayısı:21729
Alt düğümü olmayan (yaprak) düğüm sayısı: 24905

Alt düğüm dökümü:
1 alt düğümü olanlar: 10979 Yüzde: %50,527
2 alt düğümü olanlar: 6419 Yüzde: %29,541
3 alt düğümü olanlar: 1820 Yüzde: %8,376
4 alt düğümü olanlar: 846 Yüzde: %3,893
5 alt düğümü olanlar: 475 Yüzde: %2,186
...

Herhangi bir kelime için aday köklerin seçilmesini sağlayan basit yapılara kök seçici ismini verdik. Yazım denetimi gibi işlemlerin yapılabilmesi için gerekli olan Morfolojik analiz için verilen bir kelimenin önce kök adaylarının bulunması gerektiğini önceki yazıda ifade etmiştim. Bu işlem için "Kesin kök adayı bulucu" kullanılır. Yapısına bakacak olursak:
Zemberek ağaç üzerinde kelimenin harflerini izleyerek ilerler ve yolda rastladığı tüm kökleri toplar, yani "elmaslarının" kelimesi için aday kök olarak "el", "elma" ve "elmas" kelimeleri seçilir. Daha sonra Çözümleme işlemine geçilir ve bu adaylar tek tek denenir. Genelde en uzun olan kök adayı uygun seçim olacağından denemelere uzun olan kökten (seçilenlerin en sonuncusundan) başlanır.

Zemberek'in yazım denetimi sırasında hatalı kelimeler için öneri de verdiğini biliyoruz. Öneri işlemi nispeten karmaşık bir kök seçici ve özel bir çözümleyici kullanır. Bu özel seçici ağaç üzerinde ilerlerken belli bir hata toleransını da hesaba katar.

Örneğin "elxalarının" hatalı kelimesi için ağaç üzerinde ilerlerken sadece "ela, elma ve elmas" değil "ela" kökü de seçilir. Zemberek te bu kelime için "elmaslarının ve elalarının" önerilerini üretir. Ağaç üzerinde ilerleme hata toleransı ile sınırlıdır, yani algoritma "Hata toleransı belli bir değeri aşıncaya kadar ağaçta ilerle ve rastladığın kökleri seç" ifadesi ile özetlenebilir. . Zemberek kelimelerin birbirlerine ne kadar benzediğini bulmak için şimdilik sadece Damerau-Levenshtein düzeltme mesafesi algoritmasını kullanıyor, ancak denemek isteyen biri farklı kelime benzerlik algoritmalarını kullanan bir seçici yazabilir, Örneğin Zemberek içerisinde gerçeklemesi bulunan Jaro-Winkler benzerlik algoritması uygun olabilir.

Son olarak ta Türkçe klavyesi olmayan veya (nedense) Türkçe harfleri tercih etmeyen kişilerin yazdıkları kelimelerin Türkçe'deki karşılıklarını bulmaya yarayan Ascii->Türkçe dönüşümünde kullandığımız Ascii Toleranslı Kök seçici'nin yapısı da şu şekildedir:

Bu seçici de nispeten toleranslı kök seçiciye benzer, ancak bu sefer kelime benzerlik algoritmaları kullanmak yerine kelime için ağacı tararken u,i,s,o,g,c harfleri için ve Türkçe'deki karşılıkları olabilecek ü,i,ş,ö,ğ,ç düğümlerinde de ilerler. Yani yazar "durumunun" demişse sadece "dur", "duru" ve "durum" değil "dür" ve "dürüm" kökleri de aday olarak seçilir.

Peki seçicilerin performansı nasıl? Değerleri yaklaşık olarak veriyorum, sanırım toleranslı seçici performansı üzerinde biraz daha çalışmamız gerekiyor :) tabi burada önemli bir nokta var, yaptığım testte türkçe bir metni toleranslı seçici kullanarak taradım, yani hatalı kelimeler yerine doğru kelimeler için toleranslı seçim yapıldı, bu da ağaç üzerinde gezinilen düğüm sayısını çok arttırıyor, yani performans bozuk bir metinde çok daha yüksek olacaktır.

Yine aynı sistemde (AthlonXP 2.2Ghz, Pardus 2007.1, Java 6 -client)
Kesin kök seçici: 600.000 kelime/s
ASCII toleranslı seçici: 100.000 kelime/s
Toleranslı seçici: 300 kelime/s

Kök seçicilerinin bize getirisi bu üç farklı işlem için de aynı veri yapısının (ağaç) kullanılması ve kodlarının çok basit olmasıdır. Merak edenler aşağıdaki adresten kök ağacı ve seçicilerle ilgili kodlara erişebilirler:
http://zemberek.googlecode.com/svn/trunk/zemberek2/src/cekirdek/net/zemberek/bilgi/kokler/

28 Mart 2007

Zemberek belgeleri

Java.net sitemizden google sitemize taşınırken belgeleri de güncelleyerek aktarıyoruz.

Geliştirici belgeleri

SSS

21 Mart 2007

Tatarça-Törekçä

Gectigimiz gunlerde Open Office.org Turkiye'den Rail bir mesaj yolladi. Open Office'in Tatarca icin yerellestirilmesi konusunda bir projenin olabileceginden bahsetti ve Zemberek ile tatarca imla denetimi ve dil servilerinin verilip verilemeyecegini sordu (Tatarca, Tataristan 'da konusulan dil. Kirim Tatarlarinin yurdu ve kullandiklari dil olan Kirim Tatarcasi farkli gorunuyor). Zemberek2 yapisini elimizden geldigince dilden bagimsiz ve yeni dil eklemeyi kolaylastiracak sekilde degistirdigimizden tatarcayi eklemenin mumkun oldugunu soyledik. Tabiki bunu kendi basimiza gerceklestirmemiz mumkun degil. Tatarca konusunda uzman birisinin yardimci olmasi , ve mumtemelen baska kisilerin de veri girisi saglamasi gerkiyor. Zemberek ve diger dil isleme sistemlerindeki temel sorun aslinda bilgiye olan erisim ve bilgi toplama problemi. Butun bunlar oldukca zaman isteyen isler, isin programlama kismini cekridek gelistiriciler nispeten hizla halledebilir gorunuyor.
Son iki gunde biraz arastirma yaptim, gorunuse gore Tatarca Turkmence ya da Azerice'den ayri bazi zorluklar iceriyor. Ilk sorun alfabe. Ortada uc farkli alfabe mevcut; ikisi latin, digeri Kril alfabesi. Wikipedia'da okuduguma gore Ne yazik ki Rus hukumeti resmi olarak kril disi alfabelerin kullanimina izin vermiyor, ancak biz saniyorum genede en son kullanilan latin alfabesi icin bu isi gerceklestirmeye calisacagiz. Kril alfabesindeki semboller bire bir harflere karsilik dustugunden sonradan bir on-art isleyici ile girisi alfabeden bagimsiz yapmak pekala mumkun.
Diger sorun ise Zemberek icindeki bazi yapilarin halen cok genellestirilememis olmasindan kaynaklaniyoru. Tatarca ek uretim kurallari Turkce, Turkmence ve Azerice'den epey farkli gorunuyor. Bu nedenle daha en basta ek konfigurasyonu okuma kodunda bir degisiklik yapmam gerekti.
Tatarca konusunda bulabildigim en iyi internet kaynagi "I tugan tel". Dilbiglisi konusunda yazilar, sozlukler ve cesitli makaleler mevcut. Ne yazik ki sadece bir iki tanesi Turkce. Simdilik kisa Tatarca dilbilgisi yazisindan yararlanarak bir kac test ek ve koku tanimladim ve sistemi bu basit hali ile calisir hale getirdim (aslinda bir iki saat surebilecek bir isti ama tatar alfabesi ve eklerini ogrenme , ek olusum mekanizmasini degistirme derken 6-7 saat tuttu). Asagida bir ornek gorebilirsiniz:


(tel->dil, telemne-> dilime, telläremnän-> dillerimden) . Sadece uc dort kok ve on ek ile simdilik isler yuruse de yakinda yapiyi hafifce sarsacak problemlerle karsilasabilecegimizi saniyorum.
Turkceden farkli bir durum ornekte yer aliyor. uzaklasma eki "dan" turkce gibi. "dan, tan, dän, tän" seklinde ureyebiliyor. Ancak eger eklenecegi kelime "n, m ya da ñ" ile biterse "nan, nän" seklinde olusuyor. Bu nedenle ek uretim mekanizmasina ozel kural koymak zorunda kaldim. ispanyolca alfabede yer alan 'ñ' harfi tatarcada anadoluda halen kullanilan genizin ust tarafinin birlesimi ile cikarilan 'n' harfi seklinde okunuyor. Toplam on sesli iceren tatarcadaki 'ä' ise Azericedeki 'ə' harfi ile ayni saniyorum, a ile e arasi bir ses karsilik dusuyor.
Bu konuda Zemberek tek alternatif degil elbette, saf imla denetimine yonelik ve eklemeli dillere uygun C++ tabanli Hunspell mevcut. Biz tabi zamanimiz da el verirse Zemberek ile yola devam edecegiz.
(Not: verdigim bilgiler hatali olabilir, Tatarca bilen arkadaslar duzeltebilir)

23 Şubat 2007

Zemberek Web Servisi ve JAX-WS

Zemberek erişim sınıfındaki metodlar arasında yer alan
List<String[]> kelimeAyristir (String kelime) imzalı metodu Web servisi olarak açmaya çalışırken başıma gelenler:

  • Öncelikle JAX-WS arayüzlerle çalışamıyor illa sınıf bekliyor. Web servisinde List yerine ArrayList kullanmak zorunda kaldım.

  • Daha önceden erişim metodu <List<List<String>> tanımlı iken ve ben bunu ArryList<ArrayList<String>> şeklinde döndürmeye çalışırken dıştaki listeyi WSDL ve XSD lerde List e eşlemesine rağmen içteki listeyi (ArrayList<String>) elemansız bir sınıf tanımına eşliyordu.

  • Bunun üzerine Ahmet metodu ilk bahsettiğim haline getirdi ve ben de ArrayList<String[]> döndürmeye çalıştım. Sonuç yine hüsran oldu. http://jax-ws-sources.dev.java.net/issues/show_bug.cgi?id=42 adresindeki hata ile karşılaştım ve bunu hata raporu olarak bildirdim.

  • Hep hatalardan bahsettim. Şimdide çözüme gelelim. Şu an için metod String matrisi (String[][]) döndürüyor. Bu kapsamda matrislerin daha önceden hiç ihtiyacım olmadığı için farkedemediğim bir özelliğini öğrendim. Matrisin her satırı farklı sayıda eleman içerebiliyormuş. String matris[][] = new String[satirsay][]; şeklinde ilklendiğinde matrisin her satırına farklı uzunlukta diziler atanabiliyor. Eh öğrenme hiçbir zaman bitmiyor işte :P.

11 Şubat 2007

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ı kök düğümleri ve bu düğümlerin bağlantılarından oluşur. Kitap gibi bir ek geldiği zaman yumuşama olasılığı olan köklerin değişimiş halleri de kök ağacına eklenir. Ancak bu değişmiş haller de orijinal kökü işaret ederler.


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.

13 Ocak 2007

Dbus performansı

Bir önceki yazıda zemberek server'in Dbus üzerinden çalıştığı zaman performansının çok kötü olduğunu belirtmiştim. Serkan'ın yaptığı son güncelleme ile yeni Dbus kütüphanesini kullanmaya başladık ve performans ciddi şekilde arttı. Yaptığım küçük testte artık DBus arayüzü soket arayüzü ile hemen hemen aynı performansı gösteriyor. Pardus ve Zemberek server için DBus'a yeşil ışık yandı demektir. Evdeki makinemdeki sonuçlara göre, iki arayüzün saniyede işledikleri mesaj sayısı şöyle:

DBus : 2600 - 2800 mesaj/saniye
Soket: 3000 - 3300 mesaj/saniye

29 Aralık 2006

Zemberek server TCP-IP ve Dbus performansları

Pardus'ta ön tanımlı olarak gelen ve işletim sistemi çapında yazım denetimi servisi sunan Zemberek server ile ilgili olarak Serkan'ın yaptığı Dbus arayüzü çalışmasından sonra ben de eski netty kütüphanesinden Mina 1.1 e geçip kodu iyice temizledim, aceleyle yazılmış gereksiz bir sürü döküntü vardı, iyi oldu yani. Test ederken acaba dbus arayüzü ile TCP-IP soketleri üzerinden çalışan eski arayüzün performansları ne kadar farklı diye küçük bir deneme yaptım. kelimelerin doğrudan denetlenmesi ile soket üzerinden veya dbus gibi bir protokolle gönderilerek denetlenmesi arasında çok performans farkı olacağını biliyordum faka sonuçlar yine de şaşırtıcı geldi. Sadece denetleme işlemi için yaptığım denemeye göre denetleme performansı:

  • Zemberek kütüphanesi : 70-80 bin kelime/saniye
  • Zemberek server TCP-IP : 2700 kelime/s
  • Zemberek server Dbus : 410 kelime/s
Bu rakamlara göre küçük metinlerde dbus arayüzü kullanılabilir gibi görünürken bir kaç bin kelimelik metinlerde performansın bir sorun haline gelmesine neden olabileceğini gösteriyor. DBus arayüzünün yavaşlığın tam nedenini bilemiyorum, aradaki JNI geçişinde bir sorun olabilir veya atladığım başka bir şey var. Pardus için şimdilik soket arayüzünün kullanımı herhalde daha uygun olacakmış gibi görünüyor. Rakamları vaktim olunca daha detaylı olarak vermeye çalışacağım.

23 Aralık 2006

Zemberek server DBus arayüzü ve enchant

Zemberek server DBus arayüzünü svn den indirip derleme enchant ile kullanma üzerine bir belge
http://ebuild.linux-sevenler.org/zemberek-dbus.pdf