[Zemberek-pardus] ZemberekServer protokolü
Baris Metin
baris at uludag.org.tr
7 Nis 2005 Per 23:49:11 EEST
Merhaba,
Öncelikle eline sağlık Mehmet :). Aşağıda bir iki sorum ve önerim var.
Thu, Apr 07, 2005 at 09:01:00PM +0300 , Mehmet D. AKIN :
> Tekrar merhabalar.
> Sanırım çalışan bir şey ortaya çıktı. yazkında çıkacak olan zemberek 0.5 i
> kullandım, eskisinden daha fazla kelime (30 bin) tanıyor ve daha hızlı
> yükleniyor. Serveri önce test clienti ile denerseniz daha iyi olur.
>
> Protokol şu şekilde:
>
> Tüm komutlar ve cevapların başında mesajın uzunluğunu (Dikkat!! Byte
> cinsinden, harf sayısı olarak değil) bildiren bir boy bilgisi ve bir
> boşluk bulunur. Tüm stringler UTF-8 formatından olmalıdır.
>
> - Kelime denetleme için kullanılan format: DENETLE kelime (Örneğin
> merhaba için Gönderilen mesaj : 15 DENETLE merhaba)
> - Kelime önerisi için kulanılan format: ONER kelime (örneğin mrhaba için
> 11 ONER mrhaba)
Denetleme işleminde geri dönen değerler aşağıdaki gibi mi?
"1 *" kelime doğru
"1 #" kelime yanlış
"1 ?" bir hata oluştu (bunu kelime yanlış olarak işleyeceğim sanırım?)
Böyle ise yalnızca bir karakter göndermek daha mantıklı değil mi. Eğer
denetleme sırasında her durumu (doğru/yanlış/hata) tek karakter ile
ifade edebiliyorsak tabi... Bana edebiliriz gibi geliyor.
Aslında her durumda mutlaka bizim "sihirli" karakterlerimizi öncelikli
olarak göndermek daha mantıklı olur gibi geliyor. Yalnızca öneri
durumunda tek karakterden uzun olacağını düşünüyorum. Bu durumda da
biraz daha okutup kaç karakter geleceğini öğrenebilirim.
Yani, önerim şöyle:
DENETLEME:
"*" kelime doğru
"#" kelime yanlış (bu cevabı aldıktan sonra ONER komutunu göndereceğim)
"?" bir hata oluştu (bu cevabı aldıktan sonra ONER komutunu
göndermeyeceğim)
ÖNERME:
"#" kelime için bir öneri yok.
"?" bir hata oluştu (öneri yok diye kabul edeceğim)
"&" kelime için bir/birkaç öneri var (önerileri almak için okumaya devam
edeceğim)
ÖNERİ GELMESİ DURUMUNDA ALINAN TAM CEVAP:
"& 28 (zemberek,zerdali,zencefil)"
Öneri durumunda 28 kendisinden sonraki karakterlerin kaç byte olduğu
ifade ediyor. 28'i okuyana kadar ne kadar okumam gerektiğini bilmiyor
olacağım.
Protokolde ilk önce tanım karakterlerinin gönderilmesini istememin
nedeni, socket'den okuduğum ilk karakteri tanımlı karakterleri iterate
ederek kontrol edebilir ve daha sonra ne yapacağıma karar verebilirim.
Bu önce boyut oku, sonra değeri oku, iterate et ve karar ver
aşamalarından daha hızlı olur.
İkinci önerim!
ZemberekServer'a veri gönderirken de "DENETLE"/"ONER" gibi komutlar
yerine tek karakterlik komutlar kullanalım derim (yukarıda anlattığım
aynı nedenden dolayı).
"* 5 pardus" pardus kelimesini denetle
"& 5 parduk" parduk kelimesi için doğru kelime(ler) öner.
> Önerme işlemi sadece gerekli olduğu zaman (örneğin kullanıcı istediği
> zaman )çağırılmalıdır, çözümlemeden yaklaşık 20 kat yavaştır.
Tamam, yalnızca Zemberek kelimenin yanlış olduğunu söylediği zaman
"öneri" isteyeceğim.
> Yapılabilecek şeyler:
> - Hatalar "?" yerine daha mantıklı şekilde söylenebilir.
> - Henüz kişisel sözlük yok.
> - Birden fazla kelimenin denetlenebilmesi için DENETLE
> ("Merhaba","Naber","Zemberek","pardus")
> gibi bir komut eklenebilir.
Bu son madde çok iyi olur. Fakat bunun için protokolde zemberek
server'ın cevap verme şeklini değiştirmek gerekir sanırım. Yani;
parduk kelimesi için:
"& 8 (pardus)"
yerine
"& parduk 8 (parus)"
şeklinde öneriyi getirmek ve istemci programın (zpspell) kendi
gönderdiği kelimeleri bunun içerisinden ayırt etmesi gerekiyor.
Biraz uzun yazdım, kusura bakma :(. Gerçekten eline sağlık. Eğer senin
için de uygunsa yukarıda bahsettiğim bir iki maddeyi netleştirebilirsek
hemen yazabilirim zpspell istemcisini.
iyi çalışmalar,
--
Baris Metin
http://www.metin.org
-------------- sonraki bölüm --------------
Yazı olmayan bir eklenti temizlendi...
İsim: kullanılamıyor
Tür: application/pgp-signature
Boyut: 215 bayt
Tanım: Digital signature
Url: http://liste.uludag.org.tr/zemberek-pardus/attachments/20050407/b1b454b4/attachment.pgp
Zemberek-pardus
hakkında daha fazla bilgi için