May 242016
 
18.199 views

Python ile Zemberek Kütüphanesini Kullanmak

Python ile Zemberek Kütüphanesini Kullanmakhttp://www.b4deploy.com/sorular/zemberek-example-for-python/ adresindeki örneklerden yararlanarak yaptığım denemelerin sonunda jpype modülünü kullanarak zemberek-tum-2.0.jar kütüphanesini sorgulayabilen kodları elde ettim.

Bu çalışmalar sırasında jnius kütüphanesini ne Python2.x serisinde, ne de Python 3.x serisinde yüklemem mümkün oldu. Pek çok deneme yaptım ama bu kütüphaneyi yükleyip test edemedim.

Oysa jpype modülü kolayca yüklendi. Aşağıdaki kodları da bu sayede Python 3.5.1 üzerinde sorunsuz bir şekilde çalıştırabildim.

# -*- coding: utf-8 -*-
"""
Kod   : Ahmet Aksoy
Sistem: Ubuntu 14.04 LTS
Python: Python 3.5.1
Modül : JPype1-py3 0.5.5.2
"""
import jpype
# JVM başlat
# Aşağıdaki adresleri java sürümünüze ve jar dosyasının bulunduğu klasöre göre değiştirin
jpype.startJVM("/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so",
         "-Djava.class.path=/home/ax/PycharmProjects/trdp/zemberek-tum-2.0.jar", "-ea")
# Türkiye Türkçesine göre çözümlemek için gerekli sınıfı hazırla
Tr = jpype.JClass("net.zemberek.tr.yapi.TurkiyeTurkcesi")
# tr nesnesini oluştur
tr = Tr()
# Zemberek sınıfını yükle
Zemberek = jpype.JClass("net.zemberek.erisim.Zemberek")
# zemberek nesnesini oluştur
zemberek = Zemberek(tr)
#Çözümlenecek örnek kelimeleri belirle
kelimeler = ["merhabalaştık","dalgalarının","habercisi","tırmalamışsa"]
for kelime in kelimeler:
    if kelime.strip()>'':
        yanit = zemberek.kelimeCozumle(kelime)
        if yanit:
            print("{}".format(yanit[0]))
        else:
            print("{} ÇÖZÜMLENEMEDİ".format(kelime))
#JVM kapat
jpype.shutdownJVM()

Programın çıktısı şöyle:

/home/ax/evp35/bin/python /home/ax/PycharmProjects/trdp/zemberek-ornek.py
{Icerik: merhabalaştık Kok: merhaba tip:ISIM}  Ekler:ISIM_KOK + ISIM_DONUSUM_LES + FIIL_BELIRTME_DIK
{Icerik: dalgalarının Kok: dalga tip:ISIM}  Ekler:ISIM_KOK + ISIM_COGUL_LER + ISIM_SAHIPLIK_O_I + ISIM_TAMLAMA_IN
{Icerik: habercisi Kok: haber tip:ISIM}  Ekler:ISIM_KOK + ISIM_ILGI_CI + ISIM_SAHIPLIK_O_I
{Icerik: tırmalamışsa Kok: tırmala tip:FIIL}  Ekler:FIIL_KOK + FIIL_GECMISZAMAN_MIS + IMEK_SART_SE
JVM activity report     :
	classes loaded       : 25
JVM has been shutdown

Process finished with exit code 0

zemberek-tum-2.0.0.jar dosyasını http://www.java2s.com/Code/Jar/z/zemberek.htm adresinden indirebilirsiniz.

jar dosyasının içeriği:

Files contained in zemberek-tum-2.0.jar: 

META-INF/MANIFEST.MF
kaynaklar/tm/bilgi/ek_tm.xml
kaynaklar/tm/bilgi/harf_tm.txt
kaynaklar/tm/bilgi/kokler_tm.bin
kaynaklar/tr/bilgi/ek_tr.xml
kaynaklar/tr/bilgi/harf_tr.txt
kaynaklar/tr/bilgi/kelime_cebi_tr.txt
kaynaklar/tr/bilgi/kokler_tr.bin
net.zemberek.araclar.IstatistikAraclari.class
net.zemberek.araclar.JaroWinkler.class
net.zemberek.araclar.KayitBicimleyici.class
net.zemberek.araclar.Kayitci.class
net.zemberek.araclar.MetinAraclari.class
net.zemberek.araclar.TimeTracker.class
net.zemberek.araclar.TimerElement.class
net.zemberek.araclar.TusTakimi.class
net.zemberek.araclar.XmlYardimcisi.class
net.zemberek.araclar.turkce.TurkceMetinOkuyucu.class
net.zemberek.araclar.turkce.TurkishTokenStream.class
net.zemberek.araclar.turkce.YaziBirimi.class
net.zemberek.araclar.turkce.YaziBirimiTipi.class
net.zemberek.araclar.turkce.YaziIsleyici.class
net.zemberek.bilgi.KaynakYukleyici.class
net.zemberek.bilgi.ZemberekAyarlari.class
net.zemberek.bilgi.araclar.DuzYaziKokOkuyucu.class
net.zemberek.bilgi.araclar.DuzYaziKokYazici.class
net.zemberek.bilgi.araclar.IkiliKokOkuyucu.class
net.zemberek.bilgi.araclar.IkiliKokYazici.class
net.zemberek.bilgi.araclar.KokOkuyucu.class
net.zemberek.bilgi.araclar.KokYazici.class
net.zemberek.bilgi.kokler.AgacSozluk.class
net.zemberek.bilgi.kokler.AsciiKokAdayiBulucu.class
net.zemberek.bilgi.kokler.KesinKokAdayiBulucu.class
net.zemberek.bilgi.kokler.KokAdayiBulucu.class
net.zemberek.bilgi.kokler.KokAdayiBulucuUretici.class
net.zemberek.bilgi.kokler.KokAgaci.class
net.zemberek.bilgi.kokler.KokAgaciYuruyucu.class
net.zemberek.bilgi.kokler.KokDugumu.class
net.zemberek.bilgi.kokler.Sozluk.class
net.zemberek.bilgi.kokler.ToleransliKokAdayiBulucu.class
net.zemberek.demo.CikisAlani.class
net.zemberek.demo.DemoMain.class
net.zemberek.demo.DemoPaneli.class
net.zemberek.demo.DemoYonetici.class
net.zemberek.demo.GirisAlani.class
net.zemberek.demo.IslemTipi.class
net.zemberek.demo.MainFrame.class
net.zemberek.demo.SwingFactory.class
net.zemberek.demo.TurkDiliTuru.class
net.zemberek.erisim.Zemberek.class
net.zemberek.islemler.AsciiDonusturucu.class
net.zemberek.islemler.BasitDenetlemeCebi.class
net.zemberek.islemler.DenetlemeCebi.class
net.zemberek.islemler.HataliKodlamaTemizleyici.class
net.zemberek.islemler.HeceIslemleri.class
net.zemberek.islemler.KelimeKokFrekansKiyaslayici.class
net.zemberek.islemler.KelimeTabanliKokBulucu.class
net.zemberek.islemler.KelimeUretici.class
net.zemberek.islemler.KokBulucu.class
net.zemberek.islemler.TurkceYaziTesti.class
net.zemberek.islemler.cozumleme.AsciiToleransliHDKiyaslayici.class
net.zemberek.islemler.cozumleme.BasitKelimeYigini.class
net.zemberek.islemler.cozumleme.CozumlemeYardimcisi.class
net.zemberek.islemler.cozumleme.HarfDizisiKiyaslayici.class
net.zemberek.islemler.cozumleme.KelimeCozumleyici.class
net.zemberek.islemler.cozumleme.KesinHDKiyaslayici.class
net.zemberek.islemler.cozumleme.OneriUretici.class
net.zemberek.islemler.cozumleme.StandartCozumleyici.class
net.zemberek.islemler.cozumleme.ToleransliCozumleyici.class
net.zemberek.istatistik.BinaryIstatistikOkuyucu.class
net.zemberek.istatistik.BinaryIstatistikYazici.class
net.zemberek.istatistik.DosyaRaporlayici.class
net.zemberek.istatistik.EkFrekansBilgisi.class
net.zemberek.istatistik.EkIstatistikBilgisi.class
net.zemberek.istatistik.EkIstatistikleri.class
net.zemberek.istatistik.EkZinciri.class
net.zemberek.istatistik.GenelKokIstatistikBilgisi.class
net.zemberek.istatistik.Hece.class
net.zemberek.istatistik.HeceIstatistikleri.class
net.zemberek.istatistik.IkiliIstatistikleri.class
net.zemberek.istatistik.Istatistik.class
net.zemberek.istatistik.IstatistikRaporlayici.class
net.zemberek.istatistik.IstatistikToplayici.class
net.zemberek.istatistik.IstatistikYazici.class
net.zemberek.istatistik.Istatistikler.class
net.zemberek.istatistik.KarakterIstatistikleri.class
net.zemberek.istatistik.KelimeBilgisi.class
net.zemberek.istatistik.KelimeIstatistikleri.class
net.zemberek.istatistik.KelimeTipZinciri.class
net.zemberek.istatistik.KelimeZinciri.class
net.zemberek.istatistik.KokCebi.class
net.zemberek.istatistik.KokIstatistikBilgisi.class
net.zemberek.istatistik.KokIstatistikleri.class
net.zemberek.istatistik.KonsolRaporlayici.class
net.zemberek.istatistik.TemelIstatistikYazici.class
net.zemberek.istatistik.TemelRaporlayici.class
net.zemberek.istatistik.UcluIstatistikleri.class
net.zemberek.tm.islemler.TurkmenceCozumlemeYardimcisi.class
net.zemberek.tm.yapi.Turkmence.class
net.zemberek.tm.yapi.TurkmenceHeceleyici.class
net.zemberek.tm.yapi.TurkmenceSesliUretici.class
net.zemberek.tm.yapi.ek.EdilgenOzelDurumu.class
net.zemberek.tm.yapi.ek.EkUreticiTm.class
net.zemberek.tm.yapi.ek.KiEkOzelDurumu.class
net.zemberek.tm.yapi.ek.MeEkOzelDurumu.class
net.zemberek.tm.yapi.ek.SonHarfDusumOzelDurumu.class
net.zemberek.tm.yapi.ek.TurkmenceEkAdlari.class
net.zemberek.tm.yapi.ek.TurkmenceEkOzelDurumUretici.class
net.zemberek.tm.yapi.kok.TurkmenceKokOzelDurumBilgisi.class
net.zemberek.tm.yapi.kok.TurkmenceKokOzelDurumTipleri.class
net.zemberek.tr.HarfDizisiUretici.class
net.zemberek.tr.islemler.SoruEkiIsleyici.class
net.zemberek.tr.islemler.TurkceCozumlemeYardimcisi.class
net.zemberek.tr.yapi.DenemeTurkceHeceleyici.class
net.zemberek.tr.yapi.TurkceHeceleyici.class
net.zemberek.tr.yapi.TurkceSesliUretici.class
net.zemberek.tr.yapi.TurkiyeTurkcesi.class
net.zemberek.tr.yapi.ek.BeraberlikIsOzelDurumu.class
net.zemberek.tr.yapi.ek.EdilgenOzelDurumu.class
net.zemberek.tr.yapi.ek.EkUreticiTr.class
net.zemberek.tr.yapi.ek.GenisZamanEkOzelDurumuTr.class
net.zemberek.tr.yapi.ek.SimdikiZamanEkOzelDurumuTr.class
net.zemberek.tr.yapi.ek.SuOzelDurumu.class
net.zemberek.tr.yapi.ek.TurkceEkAdlari.class
net.zemberek.tr.yapi.ek.TurkceEkOzelDurumUretici.class
net.zemberek.tr.yapi.kok.TurkceKokOzelDurumBilgisi.class
net.zemberek.tr.yapi.kok.TurkceKokOzelDurumTipleri.class
net.zemberek.tr.yapi.kok.YumusamaNk.class
net.zemberek.yapi.Alfabe.class
net.zemberek.yapi.CokluKok.class
net.zemberek.yapi.Cumle.class
net.zemberek.yapi.DilAyarlari.class
net.zemberek.yapi.DilBilgisi.class
net.zemberek.yapi.DilBilgisiUretici.class
net.zemberek.yapi.EkSiralayici.class
net.zemberek.yapi.HarfDizisi.class
net.zemberek.yapi.Heceleyici.class
net.zemberek.yapi.Kelime.class
net.zemberek.yapi.KelimeTipi.class
net.zemberek.yapi.Kok.class
net.zemberek.yapi.SesliUretici.class
net.zemberek.yapi.TurkceDilBilgisi.class
net.zemberek.yapi.TurkceHarf.class
net.zemberek.yapi.ek.Ek.class
net.zemberek.yapi.ek.EkOzelDurumTipi.class
net.zemberek.yapi.ek.EkOzelDurumUretici.class
net.zemberek.yapi.ek.EkOzelDurumu.class
net.zemberek.yapi.ek.EkUretici.class
net.zemberek.yapi.ek.EkUretimBileseni.class
net.zemberek.yapi.ek.EkUretimKurali.class
net.zemberek.yapi.ek.EkYonetici.class
net.zemberek.yapi.ek.OldurganEkOzelDurumu.class
net.zemberek.yapi.ek.OnEkOzelDurumu.class
net.zemberek.yapi.ek.SonHarfYumusamaOzelDurumu.class
net.zemberek.yapi.ek.TemelEkOzelDurumUretici.class
net.zemberek.yapi.ek.TemelEkYonetici.class
net.zemberek.yapi.ek.XmlEkOkuyucu.class
net.zemberek.yapi.ek.ZamanKiOzelDurumu.class
net.zemberek.yapi.kok.AraSesliDusmesi.class
net.zemberek.yapi.kok.BosHarfDizisiIslemi.class
net.zemberek.yapi.kok.Ciftleme.class
net.zemberek.yapi.kok.HarfDizisiIslemi.class
net.zemberek.yapi.kok.KokOzelDurumBilgisi.class
net.zemberek.yapi.kok.KokOzelDurumTipi.class
net.zemberek.yapi.kok.KokOzelDurumu.class
net.zemberek.yapi.kok.SonHarfDusmesi.class
net.zemberek.yapi.kok.SonSesliIncelt.class
net.zemberek.yapi.kok.TemelKokOzelDurumBilgisi.class
net.zemberek.yapi.kok.Ulama.class
net.zemberek.yapi.kok.YeniIcerikAta.class
net.zemberek.yapi.kok.Yumusama.class
zemberek_tr.properties

Bu yöntemle, kısmen de olsa zemberek kütüphanesini Python programı üzerinden kullanmak mümkün. Diliyorum ki daha ileride bu güzel kütüphaneyi doğrudan Python ile kullanmamız mümkün olsun!

Ahmet Aksoy

May 212016
 
4.303 views

Örnekleriyle Türkçe Sözcüklerde Yapım Ekleri

Türkçede pek çok sözcüğün gövdesi, kök sözcüklere ulama yapılarak oluşturulmuştur. Bu tür eklere “yapım ekleri” denir.

Türkçede 4 tip yapım eki bulunur:

1- Addan ad üreten yapım ekleri
2- Addan fiil üreten yapım ekleri
3- Fiilden ad üreten yapım ekleri
4- Fiilden fiil üreten yapım ekleri

1- Addan ad üreten yapım ekleri:

cağız/ceğiz: adamcağız, çocukcağız, hayvancağız, kadıncağız, kızcağız, yavrucağız, köyceğiz, kızancağız
ca/ce/ça/çe: Türkçe, İngilizce, Arapça, Farsça, Almanca, Portekizce
cı/ci/cu/cü/çı/çi/çu/çü: sanatçı, gözcü, izci, sözcü, yolcu, simitçi, alaycı
cık/cik/cuk/cük: adacık, adamcık, anacık, dalgacık, ihtiyarcık, kapıcık, meydancık, beyincik, bebecik, sözcük, tomurcuk
cıl/cil/cul/cül: insancıl, evcil, bencil, merkezcil, yosuncul, ölümcül, öncül, bütüncül, kötücül
daş/deş/taş/teş: yurttaş, sırdaş, çağdaş, arkadaş, paydaş, vatandaş, yandaş, yoldaş, ülküdaş, özdeş, kardeş, kökteş, gönüldeş
ımsı/imsi/umsu/ümsü: acımsı,ekşimsi, tatlımsı, siyahımsı, masalımsı, beyazımsı, kadınımsı, esmerimsi, fiilimsi, mavimsi, morumsu, öykümsü
ımtırak/imtrak/umtırak/ümtırak: yeşilimtırak, sarımtırak, beyazımtırak, mavimtırak, siyahımtırak, ekşimtırak, morumtırak
ıncı/inci/uncu/üncü: birinci, ikinci, üçüncü, dördüncü, beşinci, altıncı, dokuzuncu, onuncu
ıt/it/ut/üt: yaşıt, bağıt, yazıt, özüt, dikit, somut, gömüt
lı/li/lu/lü: şehirli, paralı, akıllı, ağaçlı, kültürlü, evli, devamlı, fiyakalı, cilalı, efkârlı, cesaretli, emniyetli, güllü, hüzünlü
lık/lik/luk/lük: odunluk, kömürlük, sabahlık, kitaplık, tuzluk, fidanlık, ağaçlık, gelinlik, askerlik, aksilik, abonelik, bademlik
man/men: uzman, Türkmen, kocaman, toraman, katman, yazman, ataman, evcimen, gökmen, küçümen
sal/sel: kimyasal, anıtsal, anlamsal, açısal, hukuksal, kalıtımsal, fiziksel, bedensel, belgesel, çözümsel, geleneksel
sıl/sil/sul/sül: varsıl, dişsil, yoksul, damaksıl
sız/siz/suz/süz: susuz, parasız, vicdansız, ilkesiz, yersiz, yurtsuz, evsiz, barksız, kültürsüz, hükümsüz, güçsüz, çözümsüz
şın: akşın, karaşın, sarışın
tay: danıştay, kamutay, kurultay, sayıştay, yargıtay

2- Addan fiil üreten yapım ekleri

a: ada, boşa, kana, yaşa
al/el: azal, çoğal, daral, kısal, kocal, sağal, ufal, yoğal, dikel, dincel, düzel, incel, körel, sertel, seyrel, yönel, yücel
ar/er: ağar, bolar, bozar, kabar, kızar, sarar, yeşer
at/et: boşat, boyat, kanat, kocat, yaşat, gözet, yönet
da/de: cayırda, cazırda, cırılda,cızırda,çağılda, çatırda, çıngılda, hışırda, horulda, kıkırda, zırılda, gümbürde
ık/ik: acık, ayık, birik, gecik, gözük
ımsa/imse: anımsa, ayrımsa, azımsa, kaçımsa, sayrımsa, benimse, mühimse
kır/kir/kur/kür: fışkır, haykır, hıçkır, höykür, püfkür, püskür, sümkür
l: doğrul, eğril, sivril
la/le: alala, ayala, cilala, çapa, ıslıkla, kolala, rahatla, sırala, sula, tamamla, taşla, tavla, tıkla, tuzla, uğurla, zorla, gölgele, dizle
lan/len: akıllan, aklan, allan, avlan, aydınlan, coşkulan, duygulan, hoşlan, kanatlan, bilgilen, dertlen, hüzünlen
laş/leş: abanozlaş, ahmaklaş, aklaş, fenalaş, inatlaş, telefonlaş, aktifleş, cimrileş, çölleş, dertleş, gençleş, zenginleş
sa/se: çoksa, ıraksa, kapsa, susa, yakınsa, benimse, garipse, mühimse, önemse, örnekse, özümse

3- Fiilden ad üreten yapım ekleri

acak/ecek: açacak, alacak, gelecek, giyecek, yakacak, verecek
ak: durak, kaçak, yatak, yutak
ar/er: gider, tutar
ca/ce: düşünce, eğlence, sakınca
ga/ge: bilge, bölge, süpürge
gı/gi/gu/gü: algı, askı, çalgı, duygu, saygı, sevgi
gıç/giç: bilgiç, dalgıç
gın/gin/gun/gün: bezgin, bilgin, bitkin, dalgın, solgun, yorgun, ölgün, süzgün
ı/i/u/ü: çatı, doğu, koku, ölü, sevi, yapı, yazı
ıcı/ici/ucu/ücü: alıcı, görücü, satıcı, yapıcı, yazıcı
ık/ik/uk/ük: açık, göçük, kesik, seçik, soluk
ım/im/um/üm: onarım, oturum, ölüm, ölçüm, sayım, seçim
ın/in/un/ün: akın, ekin, tütün, yığın
ıntı/inti/untu/üntü: akıntı, çarpıntı, çıkıntı, döküntü, kesinti, yığıntı, görüntü
ır/ir/ur/ür: yatır, gelir, okur
ış/iş/uş/üş: oturuş, sürüş, veriş, yürüyüş,
ıt/it/ut/üt: geçit, dikit, ölçüt, sarkıt, yakıt
kan/gan: çalışkan, kaygan, unutkan
ma/me: açma, gülme, kapama, konuşma, serpme, sevme, uyuma
mak/mek: açmak, gelmek, gitmek, kapamak, uyumak
ınç/inç/unç/ünç: gülünç, sevinç, basınç, erinç
tı/ti: belirti, karartı, kızartı, morartı

4- Fiilden fiil üreten yapım ekleri

ala/ele: durala, itele, kovala, tepele
dır/dir/dur/dür: açtır, astır, bezdir, bildir, buldur, çizdir, deldir, koştur, soktur, sordur, yazdır
l: atıl, ayrıl, bozul, gidil, sayıl, soyul, tutul, yazıl
n: aran, başlan, bilin, gerin, sürün, taran, taşın, yıkan
r: batır, çıkar, düşür, içir, kaçır, kopar, uçur
ş: atış, bekleş, dövüş, görüş, itiş, selamlaş, seviş, tartış, uçuş, yazış
t: acıt, akıt, anlat, arat, kızart, okut, yürüt

Ahmet Aksoy

May 172016
 
8.071 views

Yeni Başlayanlar İçin PYTHON Kitabım Çıkıyor

Yeni Başlayanlar İçin PYTHON isimli kitabım 20 Mayıs 2016 tarihi itibariyle dağıtıma çıkıyor. Yayıncı firma Abaküs.

Yeni Başlayanlar İçin PYTHON

Yeni Başlayanlar için PYTHON
Python programlama dili, dünya çapında giderek artan bir hızla yaygınlaşmakta, özellikle herhangi bir programlama geçmişi olmayan kullanıcıların ilgisini çekmektedir. 2015 sonu itibariyle dünyada en popüler diller arasında sekizinci sıradan dördüncülüğe yükselmiştir. Ayrıca Python, Fransa ve Amerika gibi ülkelerde seçmeli programlama dili olarak lise ve üniversitelerde birinci sıraya yükselmiş durumdadır. Bunun sebebi, Python’un kullanıcı dostu bir dil olması ve yorumlayıcı bir dil olarak çok kuvvetli bir altyapıya sahip olmasıdır. Python kodları genellikle Java‘dan 3 ila 5 kez, C++’dan 5 ila 10 kez daha kısadır.
Bu kitap, Python diline yeni başlayanlar için hazırlanmıştır. Yazar, bu nedenle, uzmanlık gerektiren özel konulara girmek yerine dilin genel yapısını, çok kullanılan modül ve fonksiyonları ele almaya özen göstermiştir. Anlatılan konular açıklayıcı örneklerle desteklenmiş ve 150’den fazla örnek koda yer verilmiştir. Ayrıca kitap eğitim videolarıyla desteklenmektedir.
Kitapta, Python dilinin en son sürümü temel alınmıştır. Kodların neredeyse tamamı Python 3.5.1’e göre hazırlanmış ve özenle test edilmiştir.

Daha eski sürümleri kullanan bir kaç örnek ise, kullanılan modüller en son Python sürümüne henüz uyarlanmamış olduğu için bir önceki kararlı sürümle uyumlu şekilde hazırlanmıştır.
Kitabın güncel yapısı, kolay anlaşılır ve bol örnekli anlatım dili onu “yeni başlayanlar” için bir referans kitabı haline getirmektedir.

Ahmet AKSOY
1953 Keşan doğumludur. ODTÜ İnşaat Mühendisliği bölümünden mezun olduktan sonra 5 yıl çeşitli kanal ve termik santral inşaatlarında şantiye mühendisliği ve şantiye şefliği yapmıştır. Kişisel bilgisayarların yaygınlaşmaya başlamasıyla kendisini yazılım dünyasının büyüsüne kaptırmış, 128K’lık Amstrad bilgisayarlarda Köyişleri Bakanlığı için arazi tesviyesi ve Karayolları için kazı/dolgu hesapları yapan ve bunları yazıcıdan grafik ortama döken yazılımlar geliştirmiştir. Fortran, Cobol, Basic, Assembler, Prolog, Clipper, C, Pascal, Visual Basic, Delphi, C++, Php, Javascript, Java, Python ve Lazarus dilleriyle çalışmıştır. Yazılım çalışmalarını, yöneticiliğini de yaptığı açık kaynaklı projelerde sürdürmektedir. Yeni çalışmalarında özellikle Python ve Lazarus dillerine ağırlık vermektedir. Kitapla ilgili sorularınız için yazara ahmetaksoy@gurmezin.com adresinden ulaşabilirsiniz.

İÇİNDEKİLER
Kitap İçeriği
Python Kurulumu
Akışın Denetlenmesi
Fonksiyonlar
Veri Yapıları
Karakter Dizisi (str) Veri Yapıları
Liste (List) Veri Yapıları
Demet (Tuple) Veri Yapıları
Küme (Set) Veri Yapıları
Sözlük (Dict) Veri Yapıları
Girdi/Çıktı İşlemleri
Hata ve İstisnaların Yönetimi
Özel Konular
Dosya İşlemleri
Düzenli İfadeler (Regex – Regular Expressions)
Web Ziyaretleri
Tek Satırlık Python İşlemleri (Comprehensions)
Görsel (Gui) Programlamaya Giriş
Ek Kurulumlar ve Modüller

Video İçeriği
Python Kurulumu
Python Temelleri, Komutları
Temel Veri Tipleri
Operatörler
Akışın Denetlenmesi
Fonksiyonlar
Modüller ve Paketler
Karakter Dizileri, Stringler
Hata ve İstisnaların Yönetimi
Düzenli İfadeler (Regular Expressions / Regex)
Python ile Veri Madenciliği
Örnek Uygulama: Facebook Şifre Girişi
Örnek Proje: Mors
Pycharm Kurulumu
Pycharm Kullanımı
Jupyter IPython Kurulumu
Jupyter Notebook

Kitabımın, önümüzdeki haftadan itibaren kitap raflarında yerini alacağını umuyorum.

Ahmet Aksoy

May 102016
 
3.017 views

Türkçe Platformu İçin Çağrı

Merhaba arkadaşlar,

2016 yılı Şubat ayında açık kaynaklı “Türkçe Derlem” projesini başlattım. Derlem, ya da latincesiyle “corpus” sözcüğü herhangi bir dilin kullanmakta olduğu tüm sözcükler öbeğini tanımlıyor. Kökler, gövdeler, takılar, birleşik kelimeler, ifadeler hepsi bunun içinde. Örneğin sözlükler daha çok kelime kökleri ve gövdeleriyle ilgilenir; derlemde ise kökü ve takılarıyla her türlü sözcük bulunur.

Böyle bir projeye başlamışken sadece “derlem” çalışmalarıyla yetinmek yerine, sözcüklerin kullanım frekanslarını da belirlemenin ilerisi için çok daha yararlı olacağını düşündüm. O yüzden bizim derlem çalışmamız aynı zamanda sözcük frekanslarını da içeriyor.

Böyle bir veritabanının herkese açık olarak sunulmasının, Türkçe üzerine yapısal çalışmalar yapmayı planlayanlar için eşsiz bir kaynak olacağını düşünüyorum.

İlk meyvelerini vermesinin uzunca bir süre alacağını düşündüğüm bu çalışma, olağanüstü bir hızla gelişti. İki ay içinde 3 milyon altıyüz binden fazla birbirinden farklı sözcük belirledik. Bunun için 3 bine yakın kitap, Hürriyet Gazetesinin 6 yıllık arşivi ve RadikalBlog kaynaklarını taradık. Elde ettiğimiz kelimelerden bir kısmı yabancı kökenli veya hatalı olsa da büyük bir iş başardığımız kesin. Çalışmalarımızda yazılım dili olarak Python kullandık.

Verileri kolayca topladık ama, ayıklama ve paylaşma işi hiç te öyle olmadı. Zaten düzeltme ve ayıklama çalışmaları samanlıkta iğne aramaktan pek te farklı değil. İnsanı özendiren, motive eden hiç bir tarafı yok. Etkin bir paylaşım için de güçlü bir web sistemi şart.

Facebook üzerindeki grubumuzda bu işe “gönüllü aramak” için yazdığım bir mesaja verdiği yanıtta, bir arkadaşımız “oyunlaştırma” tekniğinden faydalanmamızı önermişti.

Oyunlaştırma (gamification) oldukça yeni bir kavram. Ama kapsamı o kadar geniş ki, derli toplu bir yönerge altında toparlanması pek te olası görünmüyor. Ama çok önemli!… Aslında hiç bir çekiciliği olmayan ama yapılması gereken çalışmalara çeşni katarak onu bir ilgi odağı haline getirmek, üstelik bu ilgiye süreklilik kazandırmak arka plandaki “asıl” işin çok daha kolaylıkla gerçekleşmesini sağlıyor. Acı veya yavan bir ilacı, lezzetli bir şurup haline getirmek gibi bir şey…

Son bir kaç haftadır sürekli bu konu üzerine kafa yoruyor, internette araştırmalar yapıyor, okuyorum.

İnsanlarımıza sürekli kullandıkları için kanıksadıkları dilimizin önemini, gücünü ve güzelliğini yeniden farkettirmek için onlara farklı tadlar, sürprizler sunmak gerekiyor. Bunun en kolay yolu da yapılacak çalışmalara eğlence ve pozitif rekabet unsurları kazandırmak.

Bu amaçla yeni bir site kurmak gerekiyor. Arka plandaki amacımız, elimizdeki veritabanını hem daha sağlıklı hale getirmek, hem de zenginleştirmek olmalı.

İşte bu çalışma için oldukça kapsamlı bir yapıya ihtiyacımız olacak. 10 yıllık bir program öngörüsü bence şunları içermeli:
1. Projenin ticari ve politik kaygılardan mutlaka uzak tutulması
2. En az 10 yıllık alan adı satın alınması
3. En az 10 yıllık hosting alanı (Python temelli çalışmalara uygun, aynı anda binlerce kişiye servis verebilecek bant genişliğine ve başlangıç olarak tahminen 100 GB’lık bir kayıt alanına sahip)
4. Kurulacak sisteme uygun bir güvenlik yapısının kurulması
5. Sistemin başka ülkelerde de aynalarının oluşturulması
6. Bu sistemi ve diğer çalışmaları desteklemek üzere bir platform (dernek?) oluşturulması
7. Mali ve teknik destek sağlayacak Destekçi kurumlarla işbirliği kurulması
8. Üniversitelerle, akademik kuruluşlarla bağlantı kurulması
9. Benzer amaçlı dernek ve platformlarla bağlantı kurulması
10. Yayın kuruluşlarıyla bağlantı kurulması
11. Türkçe sözlük ve ansiklopedi sistemleriyle bağlantı kurulması
12. Türkçe üzerinde yapay zeka çalışması yapan ve/veya tez hazırlayanlarla bağlantı kurulması, bu tür çalışmaların özendirilmesi
13. Türkçe ile ilgili akademik ve / veya kişisel makalelerin sitede yayınlanması ve basımının desteklenmesi
14. Oyunlaştırma tekniğini kullanarak, mevcut bilgilerin daha sağlıklı hale getirilmesini ve yeni bilgiler kazanılmasını sağlayacak uygun programların modüler olarak geliştirilmesi
15. Diğer Türkçe konuşan ülkelerdeki benzer kuruluşlarla bağlantı kurulması
16. Diğer Türki dillerin veritabanına kazandırılması
17. Türk dili ve Türkçe eserler ile ilgili yarışmalar düzenlenmesi
18. Yabancı yazar ve kuruluşların Türk dili ile ilgili araştırmalarının özendirilmesi
19. Elde edilen verilerin güvenli ve sağlıklı olarak paylaşılabilmesinin sağlanması
20. Türkçe yazarların desteklenmesi
21. Türkçe ağız ve lehçelerin derlenmesi
22. Türkçenin tarihsel gelişim ve değişiminin araştırılması
23. Türkçenin yapay zeka ile çözümlenmesi; sesin karakterlere, karakterlerin sese dönüştürülmesi
24. Öğretmenlerle ve eğiticilerle bağlantı kurulması

Bu listedeki işlemler önem veya zamana bağlı bir sıralamaya sahip değil. Bu yüzden tekrar tekrar ele alınıp geliştirilmesi ve gerçekçi bir çalışma programına oturtulması gerekiyor.

Hedefimizin büyük olması, herşeyin baştan hazır olmasını şart koşmuyor. Şu anda elimizde olanlarla başlayabiliriz. Çalışmalarımız ilerledikçe, yeni katılımcılar ve destekçiler kazanacağımızdan eminim.

Web sitesi çalışmalarını geliştirirken, ilk aşamada çok daha küçük boyutlu bir sistem kullanabiliriz. Gerekirse yerel sunucular üzerinde çalışırız.

Bu proje beni giderek daha fazla heyecanlandırıyor.

Umuyorum ki, benim heyecanımı paylaşacak diğer arkadaşlarla en yakın zamanda bir araya geliriz.

Bu grupta sadece yazılımcılara değil, Türkçeyi seven ve onunla ilgili çalışmalara katkıda bulunabilecek her kesimden insana ihtiyacımız olacak. Bu yüzden, bu konuyu lütfen çevrenizdekilerle de paylaşın. Olabildiğince fazla kişiye ulaşalım.

Yapılması gereken ve yapabileceğimiz çok şey var.

Ahmet Aksoy
10.05.2016

May 032016
 
2.773 views

Haydarpaşa Yaşıyor

Haydarpaşa Tren Garı tüm nostaljik birikimini koruyarak hala yaşıyor.
Belki ziyaretçileri eskisi kadar fazla değil ama, hala varlıklarını koruyorlar.

Onlarca vagon hala istasyonda. Ama şimdi yolcu taşıma vagonları olarak değil, bir açık hava sergisine ev sahipliği yapıyorlar…

Gar Lokantası servise devam ediyor.

Sahildeki çay bahçesi de öyle.

Vagonlar belki biraz paslanmış. Ama hallerinden şikayetçi görünmüyorlar.

Haydarpaşa Yaşıyor

Keşke bu haliyle burayı bir açık hava sergisi olarak ziyarete açsalar…

O zaman vagonların yüzlerinde de yeni gülücükler açacağından eminim.

Kim ne derse desin, Haydarpaşa pes etmiş değil!.. Belki biraz daha yaşlanmış olabilir, ama dimdik ayakta!

Haydarpaşa Yaşıyor

Bir fırsatınız olursa, mutlaka ziyaret edin. Hatta fırsat beklemektense, yaratın. Tel çitlerin arkasından bile olsa, o güzellikleri görün, paylaşın.

Kim ne derse desin, Haydarpaşa yaşıyor.

Ahmet Aksoy

May 022016
 
3.086 views

Yakın Geleceğimize İlişkin 10 Kritik Soru

Yakın Geleceğimize İlişkin 10 Kritik Soru

“I, robot” filminden


Teknoloji çıldırdı!
Teknolojik gelişim hızındaki değişim neredeyse dik bir tırmanışa geçti. Robotlara dayalı üretim sistemleri giderek yaygınlaşıyor. Yapay zeka kendi rekorlarını giderek daha kısa aralıklar içinde kırmaya başladı.

Bu gidişle 2030 yılına kadar neler olacak dersiniz? Ya 2050 yılına kadar?

Aşağıdaki sorulara sizin yanıtlarınız ne olur?

1- Otomasyona dayalı üretim yaygınlaştıkça insan emeğine duyulan gereksinim azalıyor. Peki insanlar para kazanamazlarsa üretilenleri kimler satın alacak?

2- Üç boyutlu yazıcılar şimdilik tek veya birkaç malzemeyi kullanarak çalışabiliyor. Peki bu mekanizmadaki malzeme çeşitliliği artar, hele moleküler düzeye kadar inerse bunlarla projelendirilmiş organik yapılar, organlar ve hatta yeni canlılar üretilebilir mi?

3- Isaac Asimov daha 1940 yılında “3 Robot Yasası”nı geliştirmiş. Peki bu kuralları yapay zeka sistemlerine uygulamak mümkün olacak mı? (*)

4- Yapay zeka, bizim onun yaptıklarını anlayamayacak kadar gelişirse neler olacak? O zaman yapay zeka insanoğlunu nereye koyacak dersiniz?

5- İnsanların -biyolojik varlıkların- Mars’a veya başka gezegenlere gitmeye çalışması ne kadar mantıklı? Bu işlerin robotlar veya “aşırı” koşullara dayanıklı hale getirilmiş yarı-insanlar tarafından yürütülmesi daha mantıklı olmaz mı? Hele kendi yıldız sistemimizin dışına da çıkmaya kalkışırsak…

6- İnsan beynindeki bilgilerin elektronik ortama aktarılması çalışmaları yürütülüyor. Bu başarıldığında o elektronik ortamlar “canlı” kategorisinde sayılacak mı?

7- Bazı bilgilerin moleküler olarak insan beynine enjekte edilebileceği öne sürülüyor. Bu mümkün olabilir mi?

8- Telefon, bilgisayar vb cihazların göz ve kulak gibi duyu organlarına gerek kalmaksızın insan beyniyle doğrudan iletişim kurabilmesi halinde insanoğlunun “ortalama zeka ve bilgi düzeyi” artmış olacak mı? Yoksa “matrix” olayına doğru mu evrileceğiz?

9- İnsanoğlunun teknolojik araçları doğrudan beyniyle denetlemeye başlaması onu daha da mı geliştirecek, yoksa mekanik robotlar haline mi dönüştürecek?

10- İnsanoğlunun gelecekte yapay zeka ile çatışma ihtimali olur mu? Olursa başarı şansı nedir?

Bu sorular kendiliğinden zihnimden dökülenler. Belli bir düzeni veya sıralaması yok. Ama yakın geleceğimizin bu tür soruların yanıtlarıyla şekilleneceğine inanıyorum. Varlığımızı artık sadece dinamik dengelerle koruyabiliyoruz. Durmaya, hatta yavaşlamaya kalktığımızda yerlere döküleceğiz.

Yukarıdaki sorular, biraz karamsarlık taşıyor diye düşünebilirsiniz. Ben öyle bakmıyorum. Bana göre bunlar eninde sonunda yüzleşmek zorunda kalacağımız konular. Farkında olmak, farkında olmayanları da uyarmak zorundayız.

Yaşam bizi bilmediğimiz yerlere götürüyor olabilir? Ama yeterli farkındalığa sahip olursak, hiç olmazsa elimizden gelenin “en iyisini” yapabilme şansımız olur.

Farkındalık bizi “dramatik” sürprizlere daha dayanıklı hale getirir.

Ahmet Aksoy

(*) 3 Robot Yasası:
1- Bir robot bir insana doğrudan veya pasif kalmak suretiyle zarar veremez
2- Bir robot, birinci yasa ile ters düşmemek kaydıyla, bir insan tarafından verilen emirlere uyar
3- Birinci veya ikinci yasaya ters düşmemek kaydıyla, bir robot kendi varlığını korur