Kullanıcı:Vorhon/VorhonBot
Görünüm
VorhonBot Projesi Günlüğü
[değiştir]30 Ekim 2007 Salı
[değiştir]- Tüm Viki projeleri arasında Bot kullanımına en uygun proje hiç şüphesiz vikisözlük. Pek çok maddeyi bir veri tabanından alarak standard bir formata göre bilgisayara girmek tam bir botun işi. Bu nedenle VB (Visual Basic) bilgimi kullanarak bir bot yazmaya karar verdim. Bu bölümde bu bot projem üzerine notlar yazacağım.
31 Ekim 2007 Çarşamba
[değiştir]1 Kasım 2007 Perşembe
[değiştir]- Botun amacı: Vikisözlüğe kelime girmek üzere web sayfası, veritabanı vb. bir kaynaktan okuduğu bilgileri Vikisözlük formatına çevirip, ilgili maddeye girmek. Bu arada madde mevcut ise bu işi mevcutu bozmadan yapmak.
- Bu iş için 3 temel adım gerekli.
- (1) Veri okuma (web sayfası, veritabanı vs. kaynağından- Bunlar kısaca kaynak olarak anılacak.)
- (2) Veri işleme
- (3) Veri yazma (vikisözlüğe)
- - Veri okuma adımı üzerinde çalışmalar:
- VB ile web browser object kullanarak verilen web adresinden kaynağın HTML kodunu çeken kodlar yazıldı. Kaynaktan kodu salt metin çekmek -copy paste gibi- bence uygun değil. HTML kodu tablo vb. bilgiler içerdiği için veriyi yorumlamak bence daha kolay. Bu nedenle veri okuma HTML kodunu alıyor.
- - Veri işleme adımı üzerinde çalışmalar:
- HTML kodu olarak alınan veri gerekli gereksiz bilgiler (font, script vs.) içeriyor. Örneğin TDK sözlükten alınan kısa bir maddeye ait gerçek veri tüm HTML kodu içinde sadece %2-3 kısmı kapsıyor. Bu nedenle şu ilk önce ham veriyi işleyip, gereksiz bilgiyi ortadan kaldıran fonksiyonlar yazılmalı.
Bu amaçla şu modülleri yazdım:
- HTML_Crop: Bu modül HTML kodunun verilen bir string ile başlayıp verilen bir string ile biten kısmını ingilizce deyişle crop ediyor.
- HTML_Remove: Bu modül HTML kodunda sadece verilen listedeki komutları bırakıp diğerlerini atıyor. Bu fonksiyon ile sadece <TABLE>, <TR>, <TD> ... vb. komutlarını bırakıp diğerlerini atmak iyi sonuç verdi.
5 Kasım 2007 Pazartesi
[değiştir]- 4 gün ara verdikten sonra bugün yazılan fonksiyonların ilk denemesi yapıldı. Bot istenen maddeyi, TDK sözlükten gidip almak üzere ayarlandı. Bota "oğlak" maddesini alması söylendi. bot TDK sözlüğe kendi bağlanıp web sayfasının asp ile oluşturduğu HTML kodunu aldı. Aldığı HTML kodunu yukarıda açıkladığım HTML_Crop ve HTML_Remove fonksiyonları ile işledikten sonra, HTML kodu aşağıdaki hale geldi.
- ---
- oğlak -ğı<BR>isim
- <TABLE><TBODY><TR><TD> Keçi yavrusu.</TD></TR></TBODY></TABLE>
- Oğlak (II) -k'ı<BR>özel, isim, gök bilimi (oğlağı)
- <TABLE><TBODY><TR><TD> Zodyak üzerinde Yay ile Kova arasında bulunan takımyıldızın adı, Cedi.</TD></TR></TBODY></TABLE>
- Birleşik Sözler
- <TABLE><TBODY><TR><TD>Oğlak dönencesi</TD><TD> </TD><TD> </TD><TD> </TD></TR></TBODY></TABLE> :
- ---
- Görüldüğü gibi ham veri işleme başarılı oldu. Sadeleştirilen HTML kodu madde ile ilgili tüm bilgileri içeriyor. HTML_Remove fonksiyonu table yapısını koruyacak parametreler ile işletildi. Böylece örneğin birleşik sözler kısmında her bir söz grubu bir hücrede yer alıyor, her bir anlam bir sırada bulunuyor.
- Bundan sonraki aşama alınan bu veriyi Wikisözlük formatına çevirmek.
16 Kasım 2007 Cuma
[değiştir]- Yoğunluk nedeniyle 10 gün kadar mecburi bir aradan sonra tekrar projenin başındayım.
- Bir kaç gündür aklımda vikisözlük maddelerini işlemek üzere bir veri yapısı formatı var. Bugün bu formatı data yapısı haline getireceğim. Bot vikisözlükten bir madde okuduğunda maddeyi bu data yapısına dönüşterecek ve madde üzerinde yapacağı işlemleri bu data yapısı üzerinden yapacak. İşi bittikten sonra çevirici rutinler bu formatı Vikisözlük text formatına uygun hale donusturup maddeye kopyalayacak.
- Vikisözlük madde yapısı hakkında notlar:
- Bir madde birden çok dilde kullanılabilir.
- Bir madde bir dilde birden çok söztürüne dahil olabilir. (Örneğin: türkçe alarga sözcüğü söztürü olarak hem isim, hem ünlem ve hem de sıfattır.)
- Her söz türü için anlam, eş anlam, karşıt anlam, deyim, atasözü, yan kavram vb. pek çok veri içerir. Ayrıca bu veriler birbirleri ile referanslıdır. (En basit halde anlamlar kısmının anlam numarasına atıf yaparlar.)
- Yukarıdaki basit ilkeleri temel alan data yapısı oluşturduktan sonra, sayfalardan çektiği kodu bu data yapısına dönüştürecek rutinleri yazmaya başlıyorum.
11 Ocak 2008 Cuma
[değiştir]- Bot için yazılmış data alma rutinlerini yaklaşık 20 gündür TDK sayfalarından data almak üzere test ediyorum. Bot verilen kelimeyi TDK GTS sayfasında arayıp buluyor ve oluşturduğum data yapısına çeviriyor. Daha sonra çevirici rutinler bu datayı Viki formatına aktarıyor. Data yapısını Vikisözlük formatına çevirme görevini yapan çevirici rutinler esnek tasarlandı. (Bu rutinler program koduna müdahale gerekmeksizin, program dizini içinde yer alan tekst formatındaki tanım dosyasında tanımlanan biçimi esas alarak maddeyi vikisözlük formatına çeviriyor.) Bu esnada şu işlemleri de yapıyor:
- Örnekler içinde kelimeyi bulup bold yapıyor. (Örnek cümlede kelimeyi bold yaparken kelimenin kök yapısından hareket eden bir yaklaşım benimsendiği için kelime ses yumuşamasına uğrasa ya da ek alsa dahi %99 başarıyla belirlenip bold yapılıyor.)
- Terimler otomatik olarak ilgili maddeye ekliyor. Ayrıca terimler alternatif isimle değiştirilebiliyor: örneğin 'zooloji=hayvan bilimi gibi. Tanım dosyasının kategori kısmında bu değişiklik verildiyse zooloji terimini bulduğunda terim atfını veriken hayvan bilimi alternatifini kullanıyor.
- Deyimlere, atasözlerine, sözcük birlikteliklerine otomatik olarak link veriyor.
- Bilimsel adları tanıyıp, vikitür bağlantılarını tanım dosyasında verilen formatta yapıyor.
Örneğin: alarga maddesi şu şekilde çeviriyor. (Programın TDK sayfasından alıp döndürdüğü biçim)
Türkçe
[değiştir]Ad
[değiştir]VorhonBot (belirtme hâli VorhonBodu, çoğulu VorhonBotlar)
Söyleniş
[değiştir]ala'rga
- [1] (denizcilik) Açık deniz, engin.
Köken
[değiştir]- [1] İtalyanca allarga
Belirteç
[değiştir]VorhonBot
- [1] (argo) Uzaktan, açıktan.
Örnekler
[değiştir]- [1] "Arkadaşlarımdan mümkün olduğu kadar alarga yürüyor, kendimi pencerelerin, kapıların ışık sahası dışına çıkarmaya uğraşıyordum."- R. N. Güntekin.
Ünlem
[değiştir]VorhonBot
- [1] (denizcilik) "Açıktan geç, yaklaşma" anlamında bir seslenme sözü.
Deyimler
[değiştir]Örneğin ardıç maddesini şu şekilde çeviriyor. (Programın TDK sayfasından alıp döndürdüğü biçim).
- (hayvan bilim ve bitki bilim terimlerine atıf yapan maddelerde bilimsel adlar adlar otomatik olarak tanınıp, vikitür bağlantılarına bağlantılar ekleniyor)
Türkçe
[değiştir]Ad
[değiştir]VorhonBot (belirtme hâli VorhonBodu, çoğulu VorhonBotlar)
- [1] (bitki bilimi) Servigillerden, güzel kokulu yapraklarını kışın da dökmeyen, yuvarlak kara yemişleri ilaç olarak kullanılan bir ağaççık.
Bilimsel adı
[değiştir]- [1] Juniperus
Deyimler
[değiştir]Sözcük birliktelikleri
[değiştir]Ayrıca bakınız
[değiştir]- Vikitür'de Juniperus