Mar 112017
 
1.213 views

Zemberek kütüphanesindeki bir kök sorunu

Zemberek kütüphanesindeki bir kök sorunuBir kaç gün önce zemberek kütüphanesiyle köklerini belirlemeye çalıştığım sözcüklerden birinin yanlış çözümlendiğini farkettim. Fiil olması gereken bir kök, İsim olarak tanımlanmıştı. Benzer sözcüklerin durumuna bakınca, bunun sistematik bir sorun olduğunu farkettim.

Zemberek kütüphanesini geliştiren arkadaşlar bu projeyi daha fazla sürdürmeme kararı aldıkları için sözkonusu hatayı gidermek – bu konuda bir gönüllü çıkmazsa- pek mümkün gibi görünmüyor. Yine de, bu kütüphaneyi kullanmakta olan arkadaşları uyarmış olayım.

Sorun, “edebil” ile başlayan sözcüklerle ilgili. Üstelik hepsi sorun yaratmıyor. Sorunlu olarak gördüğüm sözcüklerden bazılarını aşağıda listeledim. Bu sözcüklerinin hepsinin asıl kökü et ve tipleri fiil.

Sorunun, kodlamadaki küçük bir problemden kaynaklandığını sanıyorum.
Kullandığım kütüphane: zemberek-tum-2.0.jar
Çağrıları jpype aracılığıyla yaptım.

Zemberek-tum-2.0.jar dosyasını kullanan arkadaşların bu ayrıntıya dikkat etmelerini öneriyorum. Bu kütüphaneyi Python 3 üzerinde çalıştırmak isteyenler http://gurmezin.com/python-ile-zemberek-kutuphanesini-kullanmak/ adresindeki yazıma göz atabilirler.

Sorunlu çözümlenen sözcükler (Hepsi için kök=et, tip =FIIL olmalı)
edebiliyoruz,edebi,ISIM
edebiliyorumdur,edebi,ISIM
edebiliyorum,edebi,ISIM
edebiliyorsunuzdur,edebi,ISIM
edebiliyorsunuz,edebi,ISIM
edebiliyorsundur,edebi,ISIM
edebiliyorsun,edebi,ISIM
edebiliyorsanız,edebi,ISIM
edebiliyorsan,edebi,ISIM
edebiliyorsam,edebi,ISIM
edebiliyorsak,edebi,ISIM
edebiliyorsa,edebi,ISIM
edebiliyormuşuz,edebi,ISIM
edebiliyormuşum,edebi,ISIM
edebiliyormuşsun,edebi,ISIM
edebiliyormuş,edebi,ISIM
edebiliyorlarsa,edebi,ISIM
edebiliyorlarmış,edebi,ISIM
edebiliyorlardı,edebi,ISIM
edebiliyorlar,edebi,ISIM
edebiliyorken,edebi,ISIM
edebiliyordur,edebi,ISIM
edebiliyordunuz,edebi,ISIM
edebiliyordun,edebi,ISIM
edebiliyordum,edebi,ISIM
edebiliyordular,edebi,ISIM
edebiliyorduk,edebi,ISIM
edebiliyordu,edebi,ISIM
edebiliyor,edebi,ISIM

edebilince,edebi,ISIM

edebilen,edebi,ISIM
edebilemezsiniz,edebi,ISIM
edebilemez,edebi,ISIM
edebilemeyiz,edebi,ISIM
edebilemeyeceğimin,edebi,ISIM
edebilemenin,edebi,ISIM
edebilemem,edebi,ISIM
edebilemek,edebi,ISIM
edebileme,edebi,ISIM

Oysa aşağıdaki örneklerde ve benzer diğer yüzlerce örnekte herhangi bir sorun bulunmuyor:
edebilelim,et,FIIL
edebileceğiz,et,FIIL
edebileceğiyle,et,FIIL
edebileceğiydi,et,FIIL
edebileceğinizin,et,FIIL
edebileceğinizi,et,FIIL
edebileceğinize,et,FIIL
edebileceğinizdir,et,FIIL
edebileceğinizden,et,FIIL
edebileceğiniz,et,FIIL
edebileceğinin,et,FIIL
edebileceğini,et,FIIL
edebileceğine,et,FIIL
edebileceğinden,et,FIIL
edebileceğinde,et,FIIL
edebileceğin,et,FIIL
edebileceğimizin,et,FIIL
edebileceğimizi,et,FIIL
edebileceğimize,et,FIIL
edebileceğimizdir,et,FIIL
edebileceğimizdi,et,FIIL
edebileceğimizden,et,FIIL
edebileceğimizde,et,FIIL
edebileceğimiz,et,FIIL


Ahmet Aksoy

Linkler:
http://gurmezin.com/python-ile-zemberek-kutuphanesini-kullanmak/

Mar 022017
 
1.165 views

Karar ağacı görselleştirilmesi örnek kodlar

Bu yazımda ele alacağım örnek kodların orijinali Josh Gordon’a aittir. Bu kodlar Python2 için düzenlenmiştir. Ben ise aynı kodların Python 3.5.2 altında çalışabilmesi için gereken düzeltmeleri yaptım. Özellikle pydot kütüphanesi yerine pydotplus kütüphanesinin yüklenmesi, kodların çalıştırılabilmesi açısından önemlidir.

Kullandığımız veritabanı, sklearn kütüphanesiyle birlikte gelmektedir ve sadece 150 kayda sahiptir. Dolayısıyla zayıf konfigürasyonlu makinelerde bile sonuçlar çok kısa sürede alınabilmektedir.

Kodları çalıştırdığım sistem ve gereken kütüphanelerin sürüm numaralarını herhangi bir olumsuzluk olasılığına karşı not ettim:
Ubuntu 16.04
Intel i5 4 çekirdek – 8GB bellek
Python 3.5.2
sklearn 0.18.1
numpy 1.12.0
pydotplus 2.0.2

VERİ TABLOSUNUN GENEL AÇIKLAMASI

Veritabanı İris çiçeği‘nin bilinen üç ayrı türüne ait çeşitli yaprak boyutlarını içermektedir.

Karar ağacı görselleştirilmesi

Iris sotosa Credits: en.wikipedia.org

Bu verisetinin ayrıntılarını https://en.wikipedia.org/wiki/Iris_flower_data_set adresinden inceleyebilirsiniz.

İngilizce bilmeyen okuyucularımız için kısa bir özet yapayım.
İris çiçeğinin setosa, versicolor ve virginica adları verilen 3 ayrı türü bulunmaktadır. Bu türlere ait farklı çiçeklerin çanak yaprak (sepal) ve taç yaprak (petal) ölçüleri en ve boy olarak saptanmıştır. Tablo yapısı şöyledir:

Sepal length Sepal width Petal length Petal width Species
Çanak yap. boy Çanak yap. en Taç yap. boy Taç yap. en Tür
5.1 3.5 1.4 0.2 I. setosa

Ölçüler, santimetre cinsinden verilmiştir. Tabloda 150 kayıt bulunmaktadır.

Aşağıdaki kodların karar ağacı grafik dosyalarını üretebilmesi için sisteminize graphviz uygulamasını yüklemiş olmanız gerekir. Kurulumu aşağıdaki gibi kolayca yapabilirsiniz.

KODLAR

Sorularınızı yorum alanından bana iletebilirsiniz.

Ahmet Aksoy

Links:

Şub 202017
 
1.334 views

TensorFlow örneği ve küçük bir düzeltme

Bir önceki yazımda TensorFlow örneklerinin yer aldığı bir linkten bahsetmiş ve bazı kodlarda küçük düzeltmeler yapılması gerekebileceğinden bahsetmiştim.

Bu durum, hem yazılım dillerinde, hem de kütüphanelerde çok sık geliştirmelerle karşılaşmamızdan kaynaklanıyor.

TensorFlow örneği ve küçük bir düzeltme

Alıntı: tensorflow.org

Aşağıda, sözünü ettiğim kodlardan birini vereceğim. Yaklaşık 90 satırlık bu python kodunda sadece bir metodun adını değiştirmek gerekiyor. Benim yaşadığım sorunu, benimle benzer ortamlarda çalışan pek çok kişi aynen yaşayacaktır. Bu tür sorunları gidermek, en azından azaltmak için kod yazarlarının paylaştıkları açık kaynaklı kodları hangi koşullarda çalıştırdıklarını not etmelerinde yarar var. Bunun çok kolay olmadığını bir kod yazarı olarak ben de biliyorum. Bu nedenle, test ettiğim aşağıdaki kodu hangi ortamda çalıştırdığımı ve nasıl düzelttiğimi sizlerle de paylaşmak istiyorum.

Orijinal kodun yazarı ve nerede paylaşıldığını kodların başlangıç bölümünde bulabilirsiniz.

Test bilgisayarı: 8GB ram, 4 çekirdek, Intel i5
Test sistemi: Ubuntu 16.04
Python sürümü: 3.5.2
TensorFlow sürümü: 1.0.0
numpy sürümü: 1.12.0
matplotlib sürümü: 1.5.3

Kendi sisteminizdeki kütüphane sürümlerini öğrenmek için aşağıdaki kodu kullanın:

Kodlarda düzeltme gereği sadece tek bir satırda (satır no 39) var.

Sorunlu satır no: 39

Düzeltilmiş satır:

Açıklama:

Diğer kodlarla ilgili takıldığınız yerler olursa, yorum alanından sorularınızı bana yöneltebilirsiniz. 15 ayrı örneği yukarıda belirttiğim koşullarda denedim. 12 örneği sorunsuz çalıştırdım. 3 tanesindeki sorunlar hala devam ediyor. Testleri sürdürüyorum.

Ahmet Aksoy

Kaynaklar:

Şub 022017
 
1.699 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
 
1.960 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 092016
 
3.236 views

Golang Öğreniyorum

Yazılım üzerine asıl uzmanlık alanım Python. Hem basit, hem güçlü. Neredeyse bütün alanlarda çok etkili kütüphanelere sahip.

Golang Öğreniyorum

https://golang.org

Buna rağmen, “şeylerin interneti” (Internet of Things) gibi konularda henüz yeterince güçlü değil. Bu boşluğu aşmak üzere “micropython” gibi yeni girişimler var.

Python çalışmalarıma eskisi gibi, hatta daha da yoğunlaşarak devam edeceğim. Ancak bu durum, yeni alanlara da el atmama engel olacak değil!…
Golang, ya da kısaca go bu yeni alanlardan biri.

En etkin öğrenme yöntemlerinden birinin “öğretmek” olduğunu biliyorum. Çünkü bildiğiniz bir şeyi başkalarına aktarmak isterseniz, önce o bilgiyi içselleştirmek zorundasınız. Aksi halde sadece papağan tekrarı yapmış olursunuz ve konuyla ilgili çok basit soruları bile yanıtlayamazsınız.

Buna ilaveten, golang dilinin yakın gelecek açısından büyük bir potansiyel taşıdığını düşünüyorum. Golang bir yandan pythonun kullanım kolaylığını, bir yandan da javanın donanım sistemlerine yakınlığını bünyesine toplamış. Sınıf sistemlerini, “struct” yapılarıyla kolaylaştırmış. C’den pointer mekanizmasını devşirmiş. Aslında derlenen bir dil. Buna rağmen yorumlamalı bir dille çalışır gibi rahatsınız.

İşte bu nedenlerle, ara sıra da olsa go hakkında öğrendiklerimi burada sizlerle de paylaşacağım. Ama ders yapar gibi değil, bilgiyle harmanlanmış bir sohbet yapar gibi…

Eğer yazılım dillerine ilgi duyuyor ve kendinizi daha da geliştirmek istiyorsanız, ara sıra bu sayfalara sizi de beklerim.

Go, 2007 yılında Google bünyesinde geliştirilmeye başlanmış. İlk çıkışı, sistem programlamaya yönelik. 2009 yılı sonunda açık kaynaklı olarak genel kullanıma sunulmuş.

2015’te, mobil uygulamaları çok daha güçlü bir şekilde destekleyen kararlı sürüm go 1.5 yayınlanmış. Dil konusundaki gelişmeler hızını kesmeksizin devam ediyor.

Bu bir giriş yazısı olduğu için sözü fazla uzatmayacağım. Yine de Ubuntu 16.04 üzerine nasıl kurulduğunu tek bir satırla aktarayım:

Hoşçakal mesajımı da go ile vereyim:

Ahmet Aksoy

Golang Öğreniyorum