Şub 182017
 
3.238 views

TensorFlow ile herkes için makine öğrenmesi

2017 TensorFlow Dev Zirvesi 15 Şubat’ta izleyicileriyle buluştu. Etkinlik, aynı zamanda Mountain View üzerinden canlı olarak da yayınlandı. Bu yayına ait kayıtlara https://events.withgoogle.com/tensorflow-dev-summit/watch-the-videos/#content adresinden erişebilirsiniz. Sözkonusu yayının süresi 8 saat 17 dakikadır.

TensorFlow ile herkes için makine öğrenmesi

2017 TensorFlow Dev Summit

TensorFlow kendi web sayfasında: “sayısal hesaplama için akış grafiklerini kullanan açık kaynaklı bir yazılım kütüphanesi” olarak tanımlanıyor. “Grafik üzerindeki düğümler matematiksel işlemleri temsil ederken, kenarlar, bunların arasında iletişim gerçekleştiren çok boyutlu veri dizilerini (tensor) ifade etmektedir.”

Tensorflow kütüphanesi tek veya birden fazla CPU veya GPU üzerinden çalışabilmektedir. Şu anda kütüphanenin 1.0 sürümü yayınlanmış durumdadır.

Eğer bu kütüphane bilgisayarınızda daha önceden kurulmuşsa sürüm numarasını şu komutla sorgulayabilirsiniz:

TensorFlow kütüphanenizi en güncel (1.0.0) sürümüne yükseltmek istiyorsanız ya da tamamen yeniden kurmak niyetindeyseniz https://www.tensorflow.org/ adresindeki ilgili linkleri takip etmeniz yeterlidir.

Örneğin benim bir önceki TensorFlow sürüm numaram (0.11.0) idi. Bu sürümü yeni sürüme yükseltmek için Ubuntuda sadece şu komut yeterli oldu:

Yeni sürümüm: tensorflow (1.0.0)

Bir çok kütüphanenin yeni sürümüyle ilgili çalışan örnek bulmak çoğu zaman biraz problemlidir. TensorFlow 1.0.0 konusunda şanslıyız. Hemen kodlayıp çalıştırabileceğiniz kodlarla dolu bir github sayfası var: https://github.com/aymericdamien/TensorFlow-Examples. Bazı kodlarda artık kullanılmayan bazı metodlarla karşılaşabilirsiniz. Endişelenmeyin. Hata mesajını araştırdığınızda yanıtlarını hemen bulabiliyorsunuz.

Örneğin, tf.neg() metodu yeni düzenlemede tf.negative() şeklini almış. Yani sadece küçük isim değişiklikleriyle baş etmek zorundasınız.

Kütüphane, örnek veri setlerine de sahip. Elle yazılmış rakam görüntülerinden oluşan “mnist” veri seti, örneklerde yoğun şekilde kullanılıyor. Örneklerin bir çoğunu 8GB belleğe sahip, 4 CPU’lu i5 makineye kurulu Ubuntu 16.04 üzerinde, Python-3.5.2 ile test ettim. Sorunsuz çalışıyorlar.

Eğer bilgisayarınızda GPU kullanma imkanınız varsa, verilen örneklerin sonuçlarını çok kısa sürede alabilirsiniz. Benim gibi sadece CPU kullansanız bile, kodların çalışma süresi aşırı uzun değil.

TensorFlow, “herkesin makine öğrenmesini kolayca uygulayabilmesini” hedefliyor. Bunda da başarılı olacak gibi.

Eğer siz de makine öğrenmesi konularıyla ilgileniyorsanız, TensorFlow’la bir an önce tanışmayı programınıza alın.

Ahmet Aksoy

Kaynaklar:

Şub 022017
 
3.017 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.809 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.918 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
 
2.347 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
     
    2.334 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