Şub 022017
 
2.320 views

Python ile Mozaik Resimler

Python, her alanda çok güçlü kütüphanelere sahip bir dil. Grafik kütüphaneleri açısından da aynı durum geçerli. Bunların başında is “matplotlib” geliyor.

Bu yazımda, sözünü ettiğim kütüphanenin “scatter” metodunu ele alacağım.

Python ile Mozaik Resimler

Angelina Jolie

Matplotlib kütüphanesi çok geniş ve kapsamlıdır. İstatistik veya derin öğrenme çalışmalarının görselleştirilmesinde yoğun şekilde kullanılır.

Yazıyı fazla uzatmamak için kodların ayrıntılı açıklamasına girmeyeceğim. Satır aralarına bazı ipuçları koydum. Diğer ayrıntıları da ilgili kütüphanelere ait açıklamalardan bulabilirsiniz. Bu kütüphanelerden etkin bir şekilde yararlanabilmek için onları kullanmak gerekir. Farklı parametreleri, farklı değerlerle denemekte yarar var.

Scatter metodundaki “marker” parametresini burada biraz açmak istiyorum:
Bu marker (işaret) grafik üzerindeki işaretleme biçimini tarif eder. İki tür “marker” bulunur.

  • 1- İçi dolu işaretler: ‘8><^vodDHh*ps'
  • 2- İçi boş işaretler: ‘,.1234 _x+’ 01234567

Tırnak içinde grup halinde gösterilen işaretlerin her biri tek olarak seçilip kullanılmalıdır. Örneğin: ‘8’, ‘o’, ‘x’. Boş işaretlerden bazıları da tırnaksız rakamlar halindedir.

Kodları Python 3.5.2 ile test ettim.

Parametrelerle oynayarak çok ilginç sonuçlar elde edebilirsiniz.

Matplotlib, pillow ve numpy kütüphanelerini Ubuntu 16.04 üzerinde aşağıdaki komutlarla kurmanız gerekir:

  • sudo apt install python3-matplotlib
  • sudo apt install python3-pil
  • sudo pip3 install numpy

Ahmet Aksoy

Not: Yukarıdaki kodlar için Christien Diener‘in github pyart sayfasında verdiği kodları temel alıp, biraz basitleştirdim.

Kaynaklar:

Kas 172016
 
2.192 views

Python Gensim Kütüphanesiyle Türkçe Yazı Özetleme

Python beni hala her gün şaşırtmaya devam ediyor. Elini atmadığı, muhteşem çözümler üretmediği neredeyse hiç bir alan yok!

Dün, yeni çalışma alanlarımdan biri olarak belirlediğim “yazı özetleme” konusunda internet araştırmalarına başladım. Bir makalede, gensim kütüphanesi ile yapılan bir çalışma örnekleniyordu: https://rare-technologies.com/text-summarization-with-gensim/

Python Gensim Kütüphanesiyle Türkçe Yazı Özetlem

Rare Technologies

Örnekler İngilizce. Dolayısıyla, Türkçe gibi eklemlemeli bir dil için başarılı sonuçlar elde etme olanağı pek yok! Ama yine de bilgi sahibi olmak için test etmek iyi olacak.

Bu amaçla hemen Hürriyet Gazetesini açtım ve ilk bulduğum haberi seçtim: İstanbul’a kar ne zaman Yağacak?

Kodlar şöyle:

Bunlar da aldığım yanıtlar:

Yanıtlardaki uyarı mesajlarından gördüğünüz gibi şablon kütüphaneleri kurulu olmadığı için sözcük köklerini saptamanın mümkün olamayacağı belirtiliyor. Gerekli filtreler de yok.
(Belki, iyi ki yok! Çünkü o İngilizce filtreler belki de Türkçe ile ilgili sorunlar yaratacaktı.)

Alınan sonuçların başarılı olup olmadığına siz kendiniz karar verin! Ama özellikle ratio=0.25 olan özetlemeye dikkat edin!

Ahmet Aksoy

Kas 112016
 
5.193 views

Python ile Harflerden Resim Kodlamak

Python ile çok farklı alanlarda çalışmak mümkün. Örneğin herhangi bir görüntüyü alıp, onu sadece ASCII tablosunda yer alan bazı işaretleri kullanacak şekilde kodlamak mümkün. İngilizcede bu tür çalışmalar “ASCII Art” terimiyle ifade ediliyor. Dilimizde somut bir karşılığı yok.

Aşağıdaki görüntü, günümüzün popüler dizilerinden birindeki Defne karakterini canlandıran sanatçı Elçin Sangu‘ya ait.

Resim Kodlamak

Bu kodlamayı gerçekleştiren küçük pyhon betiğini https://gist.github.com/cdiener/10491632 adresinden indirebilirsiniz.

Bu betik aslında doğrudan komut modunda çalıştırılmak üzere hazırlanmış. Ben, onun yerine belli bir resmi kullanacak şekilde küçük bir değişiklik yaptım.

chars dizisinin içeriği ile oynayarak tonlamalarda farklı sonuçlar elde etmek mümkün. Benzer şekilde SC, GCF ve WCF parametreleriyle de oynayabilirsiniz.

Kodlar şöyle:

Kullandığım orijinal resimdeki renkler ve gölge kontrastları, yapılan dönüşüm için çok uygun değildi. Siz, kontrastı daha güçlü görseller kullanarak daha çarpıcı sonuçlar elde edebilirsiniz. Parametrelerle de oynamak gerekebilir.

Yapay zeka çalışmalarıyla günümüzde olağanüstü görseller elde edilebiliyor artık. Biz de şimdilik “çöp adam çizer gibi” bir ucundan başlayalım dedik. İleride daha kapsamlı çalışmalar da yapabiliriz fırsat bulursak.

Ne dersiniz?

Deneme sonuçlarınızı lütfen benimle de paylaşın!

Yukarıdaki kodları Ubuntu 16.04 üzerinde, Python 3.5.2 ile çalıştırdım.
Sisteminizde hazır değilse PIL ve numpy kütüphanelerini öncelikle kurmanız gerekeceğini unutmayın.

Ahmet Aksoy

http://gurmezin.com/python-ile-harflerden-resim-kodlamak

Ek açıklama: Yukarıda kodlarını paylaştığım yazarın satırlarına gist.github.com üzerinden ulaşmıştım. Buradaki kodların arasında ayrıntılı lisans bilgileri mevcut değildi. O yüzden sadece kodların orijinal linkini vermekle yetinmiştim.
Ancak yazarın github sayfasında aynı kodlara ilişkin lisans bilgileri de mevcut. Etik olarak bu satırları da sayfaya eklemenin daha doğru olacağını düşünüyorum.
Sonuç itibariyle etkin kod satırlarımızın sayısında bir değişiklik olmayacak zaten.

Kas 072016
 
1.860 views

Türkçe Kelimelerde Hecelerin Sayısal Dağılımı

Türkçe Hecelemede 6 Temel Kural başlıklı yazımda Türkçe hecelemede kullanılan 6 temel kuralı aktarmıştım. Bu kuralların bir kısmı, yabancı kökenli sözcükleri de kapsıyordu.

Bu kez, elimizdeki derlem veritabanından yararlanarak Türkçe kelimeleri hecelerine ayırdım ve kullanım sıklıklarını belirledim. Sonuçları üç ayrı kategoride ele aldım:

1- Sadece öztürkçe kelimeler
2- Öztürkçe ve yabancı kökenli kelimeler
3- Derlem dosyasındaki sözcüklere filtreleme uygulamadan bulunan kelimeler

Yine de olası hataları en aza indirgemek amacıyla frekansı 100’den düşük olan heceleri iptal ettim.

Değerlendirmede kullandığım ayrık kelime sayısı 1 milyon 754 bin 466’dır.
Bulunan hece sayıları yaklaşık 500 milyon civarındadır. Bulduğum rakamları yazının içinde ayrıntılı olarak bulabilirsiniz.

Sadece öztürkçe sözcüklere ait heceler

Türkçe Kelimelerde Hecelerin Sayısal Dağılımı

  • 1 hece: 22,122,931
  • 2 hece: 282,731,240
  • 3 hece: 171,238,129
  • 4 hece: 3,515,399

Öztürkçe ve yabancı kökenli sözcüklere ait heceler

Öztürkçe ve yabancı kökenli sözcükler

  • 1 hece: 22,259,705
  • 2 hece: 285,575,208
  • 3 hece: 174,653,474
  • 4 hece: 4,941,535
  • 5 hece: 247,814
  • 6 hece: 9,492

Filtreleme yapmaksızın bulunan heceler:

Filtresiz kelimeler

  • 1 hece: 22,632,219
  • 2 hece: 285,584,079
  • 3 hece: 174,661,739
  • 4 hece: 4,971,179
  • 5 hece: 254,565
  • 6 hece: 15,577
  • 7 hece: 2359
  • 8 hece: 436
  • Doğal olarak, 4 harften fazlasını içeren hece sayısı dikkate almaya değmeyecek kadar az. Üstelik bunlardan bir çoğu muhtemelen hatalı yazım gibi nedenlerle zaten devre dışı bırakılması gereken sözcüklere aittir.

    Elde ettiğimiz sonuçları şu şekilde özetlemek mümkün:
    1- Türkçe sözcükler en fazla 4 harf içeren hecelere sahiptir.
    2- İki harften oluşan heceler en büyük grubu oluşturur.
    3- En az rastlanan heceler, 4 harf içerenlerdir.

    Yazıda sözünü ettiğim istatiski verilerin elde edilmesi ve grafik halinde görselleştirilmesi Python 3.5.2 ile sağlanmıştır. Grafik paketi matplotlib‘dir.

    Dilimize özgü istatistik değerlendirmelere yönelik yazılarıma fırsat buldukça devam edeceğim.

    Beni izleyin!

    Ahmet Aksoy

    Türkçe Kelimelerde Hecelerin Sayısal Dağılımı: http://gurmezin.com/turkce-kelimelerde-hecelerin-sayisal-dagilimi/

    Kas 032016
     
    1.932 views

    Türkçe Kelime Köklerinin Sayısal Dağılımı

    Türkçe kelime köklerinin içerdiği harf sayısı bir ile yirmi bir arasında değişmektedir. Bu değişimi sayısal olarak grafikleştirdiğimizde karşımıza aşağıdaki gibi bir tablo çıkmaktadır.
    Türkçe Kelime Köklerinin Sayısal Dağılımı

    En kısa Türkçe kelime kökü “o”dur. Tek karakter uzunluğundadır. (C, I, L, V, X gibi Romen rakamlarını ve tek karakterli bazı atomik işaretleri bu listeye katmıyorum. Onlar da aslında yaşayan Türkçenin bir parçasıdır ama, onları ayrı bir kategoride işlemekte yarar var.)

    Harf sayısını ikiye yükselttiğimizde yalın kök sayısı 110 adedi bulur. Güncel kısaltmaları da bu listeye ilave edersek anlamlı kök sayısı 187’ye kadar yükselir.

    Kısaltmaları dikkate almadığımızda elde ettiğimiz 2 harfli kökleri şu şekilde listeleyebiliriz:

    ad, af, ah, al, an, ar, as, at, ay, az, aç, ağ, be, bu, da, de, do, ed, eh, ek, el, em, en, er, es, et, ev, ey, ez, eğ, eş, fa, ha, he, hu, hı, ıh, ıs, il, im, in, is, it, iv, iz, iç, iğ, iş, ki, la, le, mi, mu, mü, mı, na, ne, nü, od, of, oh, ok, ol, om, on, ot, ov, oy, oz, öc, öd, öf, ök, öl, ön, öp, ör, öt, öv, öz, öç, pi, re, si, su, sü, şu, ta, te, ti, uc, uç, ud, uf, um, un, ur, us, ut, uy, uz, üç, ün, üs, üş, üt, üz, ve, ya, ye

    Harf sayısını üçe çıkardığımızda, kök sayısı 936’ya yükselir.

    Dört harfli kelime sayısı 3015 olur.

    En yüksek sayı 6 harfli köklerdedir: 8232

    Bu sayıları bir tablo haline dönüştürelim.

    Harf sayısı Kök sayısı
    1 1
    2 110
    3 936
    4 3015
    5 8224
    6 8232
    7 8082
    8 7172
    9 4374
    10 2662
    11 1340
    12 659
    13 330
    14 164
    15 66
    16 29
    17 7
    18 4
    19 2
    20 1
    21 1
    22 0

    Yukarıdaki rakamları Python diliyle yazdığım betiklerle elde ettim. Grafik içinse matplotlib kütüphanesinden yararlandım.

    En uzun köklerimizi de örnekleyelim:

    18 harfliler:
    elektrokardiyograf
    elektrokardiyogram
    karıncayiyengiller
    yılanyastığıgiller

    19 harfliler:
    elektroansefalogram
    elektrokardiyografi

    20 harfli
    elektroansefalografi

    21 harfli
    barbaroshayrettinpaşa
    (Bir yer ismi olan bu sözcük aslında bitişik yazılmayabilir. O zaman en uzun kelime kökü 20’de kalmış olur)

    Dikkat ederseniz, en uzun Türkçe sözcük köklerinin çoğu aslında Türkçeye dışarıdan girmiş birleşik sözcüklerdir. Ama onları gündelik yaşamımızın içinde kullanmaya devam ediyoruz. Onların ifade ettiği kavramlara karşılık gelen -öz-Türkçe sözcüklerimiz olmadıkça, bizler de bu sözcükleri ister istemez kullanmaya, onları sahiplenmeye devam edeceğiz.

    Bu yazı, onaylanmış bir akademik çalışma değildir. Daha çok bir deneme niteliğindedir. Dolayısıyla bazı eksik ve hatalar içerebilir. Eğer böyle bir eksik veya hata tespit ederseniz, lütfen benimle de paylaşın. Sorunları birlikte yorumlayalım. Doğrularını üretelim.

    Ahmet Aksoy

    Kas 012016
     
    4.004 views

    OpenCV ve Python ile Grafik İşlem Örnekleri

    OpenCV kütüphanesi, canlı grafik işlemler için gereken fonksiyonları kullanıma açıyor.

    Ana siteden OpenCV2 veya OpenCV3 paketlerini yükleyebilirsiniz.

    https://github.com/opencv/opencv adresinde ana sitenin bir çatalı yer alıyor. Tüm kodları ve örnekleri buradan da indirebilirsiniz.

    OpenCV kütüphane fonksiyonları CUDA kullanabiliyor. Hemen hemen bütün sistemlerle uyumlu bu kütüphane, “samples” dizinlerine yerleştirilen örneklerle daha kolay anlaşılabilir hale getirilmiş.

    “Coherence.py” python kodunu kullanarak elde ettiğim örneklerden biri şöyle:
    coherence_01_01-11-2016

    gabor_threads.py kodunu çalıştırarak elde ettiğim örneklerden birisi şu:
    gabor_threads

    Python dizinindeki örnekleri “python3 demo.py” komutuyla açılan menü sisteminden kolaylıkla aktive etmeniz mümkün.

    facedetect.py programcığı, canlı bir şekilde insan yüzünü yakalama konusunda öğretici bir örnek.

    Nesne tanıma konularıyla ilgileniyorsanız, bu kütüphaneyi mutlaka portföyünüze ekleyin.

    Ahmet Aksoy

    Referanslar: