11 Mart 2013 Pazartesi

Osmanlıca Sözlük Veritabanı

Epey uğraş verilen çalışmaları sunulurken ilk önce tarihsel gelişim, çalışmanın yapılmasını gerektiren nedenler, çalışmanın önemi gibi konulara objektif kasıntı bir dille değinilir. Benim sözlü ifadem pek kuvvetli olmadığından böyle çeşitli edebiyatlara girişmeyip kendi serencamımdan, sergüzeştimden basit bir dille bahsedeceğim. Hem kendimden bahsetmekle tarihsel gelişimin hatırlattığı yürek burkan ve nefret körükleyen tahribkâr siyasi olayları tartışmaktan da kurtulacağım. Doğru düzgün giriş de yapamıyorum ya. Her neyse, mesele şu: karşıma çıkan "Osmanlıca" kelimelerin anlamını en ihtiyaç duyduğum anda tam anlamıyla öğrenerek meseleye kaldığım yerden devam edebilmek. Şu ana kadar kullandığım çözümler şunlar:
  • Cep telefonuma CepLugat uygulamasını yüklemek.
  • Bilgisayarıma Babylon sözlük kurmak ve Osmanlıca sözlük yüklemek.
  • seslisozluk.net kullanmak.
  • Misalli Büyük Türkçe Sözlük satın almak.
  • Kindle için Osmanlıca sözlük kullanmak ve geliştirmek.
CepLugat uygulaması epey işimi gördü. Ancak elimde ne varsa bırakıp cep telefonuna uzanmak, tuş kilidini açmak, sözlüğü bulup çalıştırmak, ufak tefek tuşları kullanarak kelimeyi girmek üşendirmiyor değil. Bilgisayar başında iken yılların MoonStar sözlüğünü tercih ediyordum bir ara. Türkçe eş anlamlılar düğmesine basarak anlamını merak ettiğim Osmanlıca kelimenin eş anlamlılarına bakabiliyordum. Ancak hem sözlüğü açmak hem de eş anlamlılar düğmesine basmak iki iki iş. Sonradan Babylon sözlüğünü keşfettim. Bu programa hem İngilizce hem Osmanlıca sözlük yükledim. Ctrl + Sağ tık ile kolayca kelime aratabiliyordum. Ancak Babylon'daki Osmanlıca sözlük 10.000 kelimelik olduğundan her kelimeyi bulamıyordum tabi. İnternette olduğumda osmalıca ve ingilizce kelimelerin bir arada aratılabildiği, internetin eski sözlüklerden seslisozluk.com'u tercih ediyordum. Bu sefer kelimelerin Osmanlıca yazılışlarının eksikliğini hissettim ve 200TL civarı para verip Misalli Büyük Türkçe Sözlük satın aldım. Bu sözlükte ise gerçekten de umduğumdan fazlasını buldum, üşengeçliği bir tarafa bıraktım. Hatta kelimelerin arasında dolaşıp dilin inceliklerini farketmek ayrı bir maceraydı. Keşke yanımda taşıyabilsem diyorum fakat üç cilti hangi cebine koyarsın?

QuickLaunch'ta sözlük merakı
Bir istitrat: Çevremdeki insanlar çeşitli uygulamalar yüklenebiliyor diye bir sürü para verip dokunmatik telefon alıyorlar. Ben de demode olmuş 6300 telefonumu çıkarıp aynı sözlük uygulamasının benim telefona da kaç yıl önceden beri yüklenebildiğini söylüyorum. Aldıkları telefonun çok da önemli olmayan başka özelliklerini söylüyorlar. Açıkçası hem biraz yeni şeyler satın almak insanı mutlu ediyor, hem dokunmatik telefonun tuş kilidini açıp kapatmak zevkli bir şey, hem de reklamların tesirinde kalıyoruz. Hatta reklamın yanında telefon markalarıyla konuşuyor muhabbetler kuruyoruz. İnsanın hevasını körükleyen reklamları veya sosyal medya mühendisliği işi makaleleri sevmiyorum, hatta yeri geldikçe de reklam karşıtlığımı ifade ediyorum. Ancak dışı cazibeli içi kof ürünlerin arasında kaybolup giden ciddi emek ürünü eserlerin de tanıtılması taraftarıyım. Yeri geldikçe Misalli Büyük Türkçe Sözlük'ü anmam da bu sebeptendir. Zaten ansiklopedi ve sözlük gibi aranmayan mallardan pek fazla para da kazanılmaz zannımca. İstitrat bitti.

Çevremi doldurduğum sözlüklere bir yenisini daha kattım: Kindle'a Osmanlıca sözlük yükledim. Kitap okurken kelimenin üstüne basıp anlamını öğrenmek en kolayı ve en üşendirmeyeniydi. Ancak halihazırda sadece thomass'ın hazırladığı bir sözlük vardı. Abdullah Yeğin'in sözlüğü temel alınarak hazırlanmış. Gerçi Abdullah Yeğin'in sözlüğü hem daha önce bahsettiğim Babylon Osmanlıca sözlüğünde, hem seslisozluk.net sitesinde hem daha pek çok yerde büyük küçük değişikliklerle kullanılan bir sözlüktür. 56.000 civarı kelime içeriyor ama bazı maddeler ansiklopedi maddesi gibi, bazı maddeler ise hiç kullanılmayan farsça kökenli kelimler. Mesela "kabaçe" diye bir kelime uydursanız sözlükte bu kelimeyi bulabiliyorsunuz (kabaçe: entari).

Sözlüğün kapsamlı olması hem iyi hem kötü bir şey. Teorik olarak geniş bir veritabanında aradığınız her kelimeyi bulabilirsniz. Ancak uygulamada performans kısıtları devreye giriyor. Mesela Kindle'da bir kelimeyi seçip sözlükte arattığımız zaman aratılan kelime nadiren yalın haldeki kelime oluyor. Çekimli bir kelimenin sözlükte bulunabilmesi için bizim Kindle'a o kelimenin kökünün ne olduğunu söylememiz lazım. Mesela "şakirdin" kelimesi aratılınca "şakird" kelimesini getir demeliyiz. Fakat arka arkaya getirilen çekim ekleri ile bir kelimenin bir sürü varyasyonu oluşturulabilir. 56.000 kelime için bir milyondan fazla varyasyon elde edilebilir. Oldukça performans düşürücü bir sayı.

Halbuki sadece risale-i nurlarda kullanılacağı varsayımıyla hazırlanacak bir sözlükte en fazla 100.000 civarı çekimli gerekiyor. Verilen bir çekimli kelimenin kökünü bilgisayara buldurmak da çetrefilli bir iş. Mesela "dan" eki ayrılma hal ekidir deyip bütün kelimelerden silseniz, "odan" çekimli kelimesinin kökü de "o" olarak belirlenmiş olacak. Bir de "dan" eki gibi onlarca çekim ekini tek tek belirlemeniz gerek. Çekim eklerinin yanında "acemilik", "ilahiyatçı" gibi kelimelerde gördüğümüz "-lik" ve "-çi" gibi her kelimenin sonuna gelebilen yapım ekleri de hesaba katılmalı ve "ilahiyatçı" kelimesinin tanımı bulunamadığında "ilahiyat" kelimesinin tanımı gelmeli. Ayrıca Türkçe kitaplarında yer almayan ekler var. Mesela "istimalât" kelimesinin kökü olarak "istimal" kelimesini belirlemeniz gerekir.

Kelimelerin sonunda ek aramak yerine kelimenin başında kök aramak bana daha kolay göründü. Bu yöntem, bir çekimli kelimenin başındaki harflerle oluşturulabilecek "halihazırdaki sözlüklerde tanımı yapılmış kelimeler"den en büyük olanı bu çekimli kelimenin köküdür varsayımına dayanıyor. Mesela "bâtıladır" kelimesinin başı "bâ", "bâtıl", "bâtıla" kelimelerini içeriyorsa kelimenin kökü "bâtıla"dır diyoruz. Ancak bu yöntem ses olaylarında patlak veriyor. Mesela "kulağı" kelimesinin kökü olarak "kulak" kelimesi değil "kul" kelimesi bulunuyor. "Aklın" kelimesinin kökü de "akıl" olarak bulunamıyor. Neyse ki sert ünsüzlerin yumuşaması çok bilinen Türkçe kelimelerde olduğundan bu tür kelimeler Osmanlıca sözlüğümüzün dışında. Ünlü düşmeleri de Arapça kökenli kelimelerin aslına dönmesi şeklinde olduğundan "aklın" kelimesinin kökünün "akl" şeklinde bulunması da sorun değil, zaten Osmanlıca sözlüklerde "akl"ın da tanımı var.

Çekimli kelimenin başında geçen kelimeleri "yavru kelime" tabiriyle ifade edelim. Eğer veritabanımız çok dar veya çok geniş ise yanlış yavru kelimeler buluruz. Mesela "abdest"siz bir veritabanında "abdesti" kelimesinin kökü "abd" olarak bulunur. Veritabanının geniş olması burada doğru kelimeyi bulmada avantajlıdır. Öbür yandan çok büyük veritabanında da "icmaları" kelimesinin en uzun yavru kelimesi "icma" yerine "icmal" olarak bulunur. Şapkalı harfler de ayrı bir sorun. Şapkasına dikkat etseniz sözlüklerde bununla ilgili kök bulamayabiliyorsunuz. Şapkaları silseniz bir ton yanlış kök buluyorsunuz. Abâ, âbâ, âba, aba kelimelerini bir düşünün. Hangilerinin aynı hangilerinin farklı kelime olduğuna bilgisayar karar veremiyor.

Eklere ayırma işine girdiğinizde sorunların bitmek tükenmek bilmediğini göreceksiniz. Bu işi otomatik olarak değil elle tek tek yapsanız bile sorunlarla karşılaşabilirsiniz. Mesela metinlerde geçen "şakirdin" kelimesinin kökünün "şakir" diye mi "şakird" diye mi ayrılmayacağına karar vermek ancak metne bakmakla mümkün. Şu halde, eğer birileri çekimli kelimeleri köklerine ayırmışsa onlardan istifade etmek en kolay çözüm olarak görünüyor. Bunun için hem mümkün olduğunca çok köklerine ayrılmış çekimli kelime bulmak, hem çeşitli tanımlar arasında seçimde bulunabilmek, hem Osmanlıca yazılışlardan istifade etmek için internet ortamındaki farklı Osmanlıca sözlüklerini araştırdım. Aşağıda her birini ve üzerinde yaptığım değişikliklerle açıklıyorum:

Osmanlıca Sözlükler Veritabanı
Birincil Kaynak Tabloları
Sağdan soldan bulduğum ve düzenleyip veritabanına import ettiğim sözlüklerin tablolarıdır.

1) Abdullah Yeğin [tblYegin]
İnternette bulabileceğiniz 56.000 civarı kelime içeren sözlükleri oluşturan sözlüktür.  Bir komisyon tarafından hazırlanıp "Osmanlıca-Türkçe Ansiklopedik Büyük Lügat" ismiyle basılan bu sözlük Ferit Devellioğlu'nun daha önce yazmış olduğu "Osmanlıca Türkçe Ansiklopedik Lugat" sözlüğüyle karıştırılmamalıdır lakin Abdullah Yeğin'in "İslamî - İlmî - Edebî - Felsefî Yeni Lûgat" isimli başka sözlüğüyle karıştırılabilir.

Sözlük, kelime dağarcığı ve anlam çeşitliliği bakımından oldukça zengin ancak  bir kelime aradığınızda bir sürü kelime içinde istemedikleriniz de karşınıza çıkabiliyor, bir kelimenin bilmeniz gereken anlamının yanında fazlalık anlamlar da olabiliyor. Sözlükte bazı maddeler bir sözlük için çok uzun. Tanım yapıldıktan sonra bazı kaynaklardan uzun alıntılar yapılmış. Bu alıntıları sildim veya kısalttım. Ayrıca kitaptan bilgisayar ortamına aktarılırken Arapça metinler yerine $ işareti çıkmış. İnternetteki kaynaklar birbirinden bu şekilde kopyalayıp yapıştırmışlar. Bunları hataları düzelttim. Bu sözlüğün internetteki ilk kaynağı www.nurpenceresi.com görünüyor. Bu sitedeki "Geliştirilmiş Lugat" programı kurularak access veritabanı halinde orijinal hali elde edilebilir (veritabanı şifresi karizma).

2) Cemal Erşen [tblErsen]
"kelimat.doc" dosya ismiyle karşımıza sözlüktür. 1000 civarında kelimenin Osmanlıca yazılışlarını ve çok kısa tanımlarını içeriyor.

3) İlhan Apak [tblApak]
İlk sayfasında "Dîni Sözlük" yazan .chm uzantılı bir sözlüktür. 3497 kelimenin tanımı yapılmış. Hakîkat Kitabevi'nin kitaplarında kullanılabilir. Tanımların sonundaki alıntıları sildim. Birden fazla anlamı olan kelimelerin tanımlarının numaralarını düzelttim.

4) İsimsiz Kahraman [tblKahraman]
İlk sayfasında "Osmanlıca Sözlük" başlığı ve (Hazırlayan: Tesbit edilemedi) notu bulunan .chm uzantılı bir sözlüktür. Ben isimsiz kahraman ismini verdim. Oldukça nezih ve sade bir çalışma. Biçimsel hatalar yok, gereksiz anlamlar yok. 2744 tanım yapılmış.

5) Mehmet Kanar [tblKanar]
"Osmanlı Türkçesi Sözlüğü" başlığıyla yayınlanmış PDF türündeki sözlüktür. Kelimelerin Osmanlıca yazılışları, hangi dilden geldikleri ve kısaca tanımları verilmiş. Osmanlıca yazılışları PDF dosyasından düzgün bir şekilde çıkarmakla çok uğraştım. Bir de hiçbir kurala uymayan rastgele hatalar veritabanına aktarırken sorun çıkardı. Bazı kelimelerin Osmanlıca yazılışında da hata var, mesela "Kablettarihî" kelimesinin Osmanlıca yazılışı "sablettarihî" şeklinde yazılmış. Benim gözüme çarpan bir hatası kalmadı.

6) Ömer Sevinçgül [tblSevincgul]
İlk sayfasında "Küçük Lügat" başlığı bulunan .chm uzantılı bir sözlüktür. En sade, özet, sorunsuz sözlüklerden biri. 11.000 civarı kelimesi var. Elimde Ömer Sevinçgül'ün "Muhtasar Lügat" diye matbu bir sözlüğü de var. Bunda Osmanlıca yazılışlar mevcut ama internette dolaşan .chm uzantılı sözlükte yok.

7) Şâmil İslâm Ansiklopedisi
Bu eser ansiklopedi olduğu ve sözlük olarak kullanılamayacağı için veritabanına eklemekten vazgeçtim. Halbuki veritabanına aktarmak üzere tablı hale getirmiştim.

8) Kapsamlı Osmanlıca-Türkçe Yazım Kılavuzu [tblKlavuz]
Joel Thomas tarafından oluşturulmuş bir klavuz. Osmanlıca yazılışlarını kullanmak üzere veritabanına aktardım. 8462 kelime var. Bazen bir kelimenin (mesela: beyt) iki farklı Osmanlıca yazılışı olabiliyor, bazen bir kelimenin (mesela: بك) iki farklı latince yazılışı olabiliyor. Bazen iki farklı kelimenin latince yazılışı aynı bazen de Osmanlıca yazılışı aynı olabiliyor. Böyle istisnaları tesbit etmek Türk dili ile uğraşanların işi olsa gerek.

9) Altınbaşak Neşriyat [tblAltinbasak], [altinbasakInflections]
Bir javascript yazarak risaleonline.com sitesine uyguladım ve kelimeleri, tanımlarını, Osmanlıca yazılışlarını, Osmanlıca tanımlarını ve çekimli kelimeleri seçip kaydettim. Osmanlıca tanımların içinde gereksiz yere bulunan RLE ve LRE gibi unicode kontrol karakterlerini sildim. Başka yerlerde de özellikle çekimli kelimelerde karakter hataları vardı, düzelttim.

10) Söz Basım Yayın [tblErisale], [erisaleInflections]
thomass'ın erisale.com sitesinde geçen çekimli kelime ve tanımlarla oluşturduğu tablı haldeki dosyayı veritabanına aktardım. Bazen aynı kelime çok benzer şekilde yeniden tanımlanıştı. Hangi tanımın daha iyi olduğuna bilgisayar karar veremiyordu. Tabloyu gözden geçirerek bu tür tekrarlardan iyisini seçip diğerlerini sildim. Ayrıca tanımların sonundaki transkripsiyonları da sildim. Şu an veritabanında 52.152 çekimli kelime ve 32.961 tanım var.

Çalışma Tabloları
Yeri gelmişken veritabanındaki diğer tabloları ve kullandığım SQL sorgularını da açıklayayım:

1) [tblCombined]
[tblCombined] tablosunu "Combine All Dictionaries.sql" sorgusunu kullanarak doldurdum. Tablo yeni bir şey katmıyor, sadece bütün sözlüklerin tek bir tabloda olması işimi kolaylaştırdığı için böyle bir şey yaptım.

2) [tblAllInflections]
[tblAllInflections] tablosu, Risale-i Nur külliyatında geçen bütün kelimeleri içeren 100.399 satırlık bir tablodur. Bu tablo üzerinde "Kök Bulma Algoritması.sql" sorgusunu çalıştırdım, dokuz buçuk saat bekledim ve sonuçları [suffixFound] tablosuna kaydettim.

3) [suffixOperations]
[suffixOperations] tablosu ilk başta [suffixFound] tablosunun bir kopyasıydı. Kök bulma algoritmasının yanlışlıklarını bu tablo üzerinde düzeltmeye çalıştım. Bu tablodaki stotal ve htotal sütunları "Count Suffixes.sql" sorgusuyla doldurulmuş olup her bir ekin ve kök kelimenin tabloda kaçar kere tekrar ettiğini gösteriyor. Bir kelimenin eki ve kökü yanlış bulunmuşsa bu ek ve kök çok tekrar etmiyordur dedim ve şöyle bir ilişki buldum:
stotal = 1 and htotal < 40 --Hatalı olanlar çoğunlukta.
stotal = 2 and htotal < 30 --Hatalı olanlar çoğunlukta.
stotal = 3 and htotal < 20 --Hatalı olanlar çoğunlukta.
stotal = 4 --Elle düzeltilmesi gereken hatalar var.
stotal = 5 --Göze çarpan hata yok.
Bu ve başka tekniklerle köklerine yanlış ayrılan veya Türkçe fiil olan 15.000 civarı kelime sildim.

4) [suffixUndefined]
[suffixUndefined] tablosu köklerine elle ayırdığım 3.444 kelime içeriyor. Bu köklerin tanımı elimdeki sözlüklerde olmadığı için bu tablo öylece kaldı.

Sonuç Tabloları
Artık Kindle sözlüğünü derlerken kullanılacak sonuç tablolarından bahsedebilirim. İsimlerinin karmaşık durduğuna bakmayın, oldukça basit tablolardır.

1) [X.inflectionHeadwordMap]
[X.inflectionHeadwordMap] tablosu her bir çekimli kelimenin kökünü belirtiyor. Bu tablo doldurulurken sırasıyla [erisaleInflections] [altinbasakInflections] ve [suffixOperations] tablolarına müracaat edildi.

2) [X.headwordDefinitionMap]
[X.headwordDefinitionMap] tablosu sadece kök kelime, bu kelimeye karşılık gelen tanım ve bu tanımın hangi sözlükten seçildiği bilgisinden oluşuyor. Her bir kök kelime için ilk önce Söz Basım Yayın'ın sözlüğündeki tanım eklendi. Orada tanımı olmayan kelimelerin tanımı için sırasıyla Ömer Sevinçgül, Altınbaşak Neşriyat, Cemal Erşen, İsimsiz Kahraman, Mehmet Kanar, Abdullah Yeğin sözlüklerine müracaat edildi.

3) [X.headwordOttomanMap]
[X.headwordOttomanMap] tablosu sadece kök kelime ve Osmanlıca yazılışını içeriyor. Bir kelimenin Osmanlıca yazılışı için sırasıyla Osmalıca-Türkçe Yazım Klavuzu, Mehmet Kanar, Cemal Erşen, Altınbaşak Neşriyat sözlüklerine müracaat edildi.

X. ile başlayan bu üç tablonun içini "Fill X.Result Tables" sorgusuyla doldurulduktan sonra sıra XML dosyasını oluşturmaya geliyor. Ancak aynı sözlükte iki defa tanımlanmış eşanlamlı bazı kelimeler de (483 tane) bizim sonuç tablomuza eklenmiş görünüyor. Kindle'ın bu kelimeleri boykot etmemesi için çift tanımların tek başlık altında toplanması gerekli. Çift tanımları birleştirmek ve XML dosyasını oluşturmak işleri için bir C# uygulaması yazdım. Bu uygulama XML dosyasını yarım saatte oluşturdu. Tanımların içinde kullandığım HTML etiketleri XML dosyasında encode edilerek eklenmiş olduğundan NotaPad++ ile &lt; ve &gt; ifadelerini < ve > ile değiştirdim. Ayrıca boş etiketlerini de sildim ve Kindle Previewer ile sözlüğü derledim.

Veritabanından XML dosyası oluşturma
İndirmece Bölümü
Burada bahsettiğim veritabanını .bak dosyası ve .sql dosyası olarak iki farklı formatta paylaşıyorum. Yine sözü geçen SQL sorgularını ve C# uygulamasını da ekliyorum. Mobi formatındaki Osmanlıca sözlüğünü ve kaynak kodunu da gönderiyorum.

1) Osmanlıca Sözlük Veritabanı (MSSQL 2008):
 https://www.box.com/s/hpaez2kzhx21lhgfxoro
2) Veritabanından XML oluşturma uygulaması:
 https://www.box.com/s/yy867qs4qvth79cq1ev0
3) Risale-i Nur Sözlüğü (mobi formatında):

 https://www.box.com/s/ss257gha6br7i0u7n5bb

Bu kadar işten, altı haftalık çalışmadan sonra hâlâ yanlış bulunan kökleri farkettikçe acaba en başından farklı bir yöntem mi uygulasaydım diyorum. Kelimeleri köklerine ayıran Zemberek diye bir uygulama var. Bu uygulamayı kendi sitesinde test ettiğimde çoğu Osmanlıca kelimenin kökünü bulamıyordu. Zemberek'i bilgisayarıma indirdiğimde de nasıl kullanacağımı nereden başlayacağımı bilememiştim ve böylece alternatifler arasından eledim.

Bu işe hiç başlamamak ve Kindle'ı umursamamak da bir alternatifti ama akıl edemedim. Anlamı merak edilen bir çekimli kelimeyi sözlükte aratmak Kindle'in dışında çok zor değil. Çok yerde şöyle bir yöntem var: Eğer kelime sözlükte varsa bulunuyor, yoksa sonundan bir harf atılarak tekrar aratılıyor, yine yoksa yine aynı şekilde sondan harf atarak devam ediyor. En sonunda bulunan kelime yanlış olsa bile açılan kelime listesinden siz bir önceki veya sonraki kelimelere bakarak fikir edinebiliyorsunuz. Ancak kindle, "No Definition Found." diyerek sizi yarı yolda bırakıyor ve uyarının bir kenarında sözlüğü açan bir düğme falan da sunmuyor. Kitabı kapatacaksınız, ilgili sözlüğü bulup açacaksınız, kelimeyi harf harf yazarak aratacaksınız, sonra sözlüğü kapatıp tekrar kitabı bulup açacaksınız, vs.


RNurOkuma 4 programında kelime arama
Kindle Paperwhite'ta kelime arama

Neyse, bu da böyle bir anımda. Bu süreçte öğrendiğim birkaç şeyi de paylaşmak istiyorum:

Notlar

Bu çalışma sırasında öğrenip de bir kenara yazmak istediğim notlardır.
 
1) Kindle Arapça desteği (No Definition Found)
Kindle Arapça metinleri gösterirken çok nazlı davranıyor. Halihazırdaki yazıtipi harekeleri hiç güzel göstermiyor. Kitaba yeni bir yazıtipi gömseniz bu sefer Arapça harfleri birleştirmiyor. Eski modellerde harekeler normal fontla yazıyı bozuyor. Yazılar bazı Kindle modellerinde sağdan sola (RTL) görünmezse diye endişelisiniz zaten. Bazen Arapça kelimelerin sırasını siz değiştiriveriyorsunuz doğru görünsün diye. Elhasıl, Kindle bu konuda çok zayıf. Kindle size hizmet edeceğine siz Kindle'a hizmet ediyorsunuz.

Gece geç saat oldu, ben hâlâ nelerle uğraşıyorum. Çok sinirlendim. Kindle'ı USB ile tak çıkar yalama oldu. WiFi'sini internetsiz dosya aktarmakta kullanamıyorsunuz. Bir sözlüğü test etmek için ille de Kindle'a atmanız lazım. Tutarsız davranışlarını anlayabilmek için defalarca test yapmanız lazım, dolgun bir kullanım klavuzu yok. Mesela benim derlediğim Osmanlıca sözlükte birden fazla kelimeden oluşan Osmanlıca ifadelerde kelimeler bazen ters sırada bazen düz sırada görünüyordu. Meğer lookup penceresinde Osmanlıca kelimeler düz sırada, yani olması gerektiği gibi sağdan sola gösteriliyormuş. Sözlüğü müstakil olarak açtığınızda ise en sağda görünmesi gereken kelime en solda görünüyormuş. Şimdi söyleyince kolay ama bunu anlayana kadar sorunu bambaşka yerlerde arıyorsunuz. Neyse, ben Osmanlıca kelimelerin hem doğru sırada hem ters sırada olduğu iki sözlük oluşturdum. Birisi lookup penceresinde, diğeri sözlük müstakil olarak açıldığında düzgün gösteriyor. İki yerin birinde kelimelerin sırasını ters göstermesi şartıyla istediğinizi seçebilirsiniz.

2) CHM dosyalarından HTML dosyalarını çıkarmak
.chm dosyalarının içindeki HTML dosyaları 7-zip ile çıkarılabilir. Bu HTML dosyaları da cmd komut satırına "copy *.html combined.html" komutu yazılarak combined isimli tek bir dosyada birleştirilebilir. Ancak hangi klasörde olduğunuza dikkat edin. Şunları hatırlamak faydalı olabilir:

cd.. (Bir üst klasöre geç.)
cd c:\ (C sürücüsüne geç.)
cd test (test klasörüne geç.)
3) Aksan farklılıkları
Microsoft SQL Server, büyük küçük harf ayrımı yapmıyor. Küçük a harfi ile başlayan kelimeleri seçmeye çalıştığınızda büyük A ile başlayan sonuçlar da geliyor. Ayrıca makronlu ā harfi ile normal a harfi arasında da fark yok sayıyor, ancak şapkalı â ayrı.

Kindle'da lookup ile kelime aratırken ise hiçbir aksan ve kelimenin içinde geçen noktalama işaretleri farketmiyor, uygun olan kelime bulunuyor. Ancak bir kelime sözlükte iki kere tanımlanmışsa bu tanımların hiçbiri gelmiyor.

4) Veritabanındaki HTML karakterleri
Osmanlıca sözlük veritabanında bir kelimenin farklı tanımlarını <ol><li></li></ol> etiketleri ile liste formatına çevirdim. Bazı tanımların içinde başka bir tanım yapılmışsa onları <ul class="alttanim"><li></li></ul>etiketleriyle ifade ettim. Başka da bir HTML etiketi kullanmadım.Yukarıda paylaşmış olduğum DB2XML uygulaması, oluşturduğu XML dosyasında veritabanından gelen HTML karakterlerini encode ediyor. Bu karakterleri düzeltmeniz lazım.

5) Unicode karakterlerde encoding
Tablı haldeki UTF-8 ile encode edilmiş bir dosyayı SQL Server Management Studio'da "import" ederken kolonların genişliklerini ayarlamayı unutmayın. "Edit Mappings" diye bir düğme gördüğünüzde de o düğmeden ilgili pencereyi açın ve sütun türlerini nvarchar veya ntext olarak ayarlayın. Yoksa varsayılan değerler olan varchar ve text Unicode karakterlerini bozuyor. (UTF-8 ile encode edilmiş dosya Notepad++ ile açıldığında Encoding menüsünde "Encode in UTF-8" seçili durumda görünür).

7 yorum:

Ecmain dedi ki...

Notepad ++ son sürümü için yazım denetimi dosyası oluşturabilirmisiniz. Ben bir liste ile ek almış halde kelimeleri ekledim Ama ekler ile ilgili kuralları oluşturamadım. Diğer dillere baktım ama herhalde en zor sözlük yapılabilecek dil Türkçe. Bu kurallarla birlikte oluşturulmuş bir db yayınlarsanız sevinirim.

cihan dedi ki...

Türkçe eklerle ilgili bir çalışma yapmak için kolları sıvamak gerekiyor. Artık farklı bir alanda çalıştığım için bu konularla pek ilgilenemiyorum. Türkçe çekilmiş kelime listesinin olmaması veya bütün çekim kurallarını halleden bir uygulama olmaması bir eksiklik. Ekler konusunda birbirini yamayan çok fazla kural olduğu için diğer dillere göre geriden başladığımız doğru. Eninde sonunda bütün kuralların formüle edilebileceğine inanıyorum ama tek bir kişinin yapabileceği bir şey değil.

Şimdiye kadar Zemberek diye bir çalışma yapılmış. Hangi ekten sonra hangi ekin hangi formda hangi ses olaylarıyla gelebileceğini şu dosyada belirtmişler. Uygulamanın bir bütün olarak nasıl çalıştığını buradan test edebilirsiniz. "içtimâiyesinin" ve "bilişsel" kelimelerini çözemiyor. Daha basit ve ama anlaşılır bir çalışma da şurada var.

Konunun bazı zorlukları var. Mesela yabancı dillerden gelen kelimeler ek alırken aslına dönme eğilimde. "Ret -> reddi" ve "resim -> resmi" gibi. Kemal kelimesinin sonundaki "l" harfi ince olduğundan kelimeye eklenen ek inceliyor. Bazı fiillere geniş zaman eki olarak -ar (ör: yapar) eki gelmesine rağmen bazılarına -ır (ör: alır) eki geliyor. Bazı kelimelerde şapkalı harfler bazen kullanılıyor bazen kullanılmıyor, bazen bir harfte bazen iki harfte kullanılıyor. Bu tür nedenlerle üstünkörü bir çalışmayla pek bir netice ortaya çıkmıyor.

Bablon Türkçe Sözlük'te her kelime en çok kullanılan eklere göre çekilmiş. Hata oranı çok az. Çok kapsamlı olmamasına rağmen isterseniz hiç uğraşmadan oradaki çekimli kelime listesini kullanabilirsiniz. O listeyi veritabanına aktarıp aktarmadığımı hatırlamıyorum. Bir kontrol edeyim, en kısa sürede cevap yazarım.

cihan dedi ki...

Buradan Babylon sözlüklerini ve bu sözlükleri HTML sayfasına dönüştüren bir uygulama indirilebilir. Daha sonra bu HTML dosyasındaki kelimler ve bunların çekimleri veritabanına aktarılabilir. Biraz amelelik gerektiriyor.

Fatih BATIBAY dedi ki...

selamlar, box.com band genişliği galiba dolduğundan veritabanınızı indiremiyorum. Nasıl faydalanabiliriz bu içerikten? teşekkürler

cihan dedi ki...

Bir de dropbox deneyelim.
Babylon Dictionaries.zip
DB2XML.zip
Risale-i Nur Sözlüğü.zip
Sözlükler Database.zip

Fatih BATIBAY dedi ki...

Allah razı olsun gerçekten çok makbule geçti.

Allah ilminizi arttırsın inşaAllah

Emir dedi ki...

Kardeşim Allah senden razı olsun. Allah ne muradın varsa versin. İnanılmaz bir hayra geçtin. Her baktığım kelimede sana sevap yazacaktır inşaAllah.