23 Temmuz 2018 Pazartesi

Clover

Atlassian tarafından geliştirilmiş,  Java ve Groovy için tasarlanmış ve açık kaynak kodlu olan bir code coverage aracıdır.

FastText

FastText, metin sınıflandırılması için Facebook AI Research ekibi tarafından geliştirilen gensim yapısında bulunan, metinleri veya kelimleri sürekli vektörlere dönüştüren bir kütüphanedir (1).

FastText Nasıl Çalışır?

Yukarıdaki şekilde CBOW & SKIPGRAM yapılarının farklılıkları gösterilmektedir. CBOW modelinde tüm kelimeleri kapsayan bir bakış açısı (seling, these, leather, jacket) ve vektör toplamı bir arada kullanır. SKIPGRAM modelinde ise hedef kelime (fine) verildi ise hedefe rasgele bir yakın kelime kullanarak hedefi belirlemeye çalışır (2) .
 
 Kelimeler arasındaki benzerliği açı yöntemi ile hesaplama formülü yukarıda verilmiştir.


Similarity formülün python kodu yukarıda verilmiştir. Genel olarak FastText ticari alandada önemli olan metin sınıflandırılması üzerine tasarlanmıştır  (Örnek; Spam postalarının tespiti)  FastText diğer metin sınıflandırma yapılarına göre daha hızlı ve performaslı olduğu söylenmektedir (3).

FastText Gereksinimleri

Genel olarak FastText Mac OS ve Linux  dağıtımlarına dayanır. İyi bir compiler (C11) desteğine ihtiyaç olacaktır.Kelime Değerlendirme için    Python 2.6 veya üstü NumPy ve SciPy Python bağlamaları için Python sürüm 2.7 veya 3.4 NumPy ve SciPy  pybind11 (2). Python ile FastText bağlarını(NumPy&SciPy) başarılı bir şekilde kuruduğumuz ve test ettiğimiz en eski dağıtımlardan biri de Debian jessiedir. Windows üzerinde de çalışabilir ama Linux üzerinde daha performanslı ve etkilidir.


FastText Kurulum

Debian üzerinde çalışıtığımız için öncelikle “python-pip” yükleme aracını sisteme kuralım.
debian@linuxpc:~$  sudo apt install python-pip
FastText git clone ile sisteme kurulumu
debian@linuxpc git clone https://github.com/facebookresearch/fastText.git
debian@linuxpc:~$ cd fastText
debian@linuxpc:~/fastText $ pip install

FastText komut satırında örnek kullanımı
debian@linuxpc:~/fastText $ ./fasttext skipgram -input data.txt -output model
FastText Gerçekleştirimi
 

 Yukarıdaki şekilde verilen hedef kelimenin en yakın olanları eğitilmiş modele göre tahmini.

Yukarıdaki örnekte kullanılan veri seti, toplamda 15404'lük sample'a sahiptir. Bunun 12404 adetlik kısmı eğtimi için 3000 adetlik kısmı ise test için ayrılmıştır. Sonrasında cooking.train eğitilmiş dosyası kullanılarak model_cooking adında vektör dosyası oluşturulmuş. Test kısmında model_cooking.bin dosyasını kullanarak daha önceden test için ayrılan veri seti kullanılarak test edilmiştir.

FastText Performansı
FastText'in diğer derin öğrenme yapılarına göre daha performanslı olduğu deneyimlenmiştir. Facebook AI Research tarafından yapılan deneyde bir kaç günlük eğitim süreleri ile eğitilen vektörle üzerinde yapılan araştırmalarda kendini kanıtlamış ve diğer yapılara göre daha yetenekli olduğu saptanmıştır (3).

Metin sınıflandırmasının dışında FastText kelimelerin vektör olarak öğrenmek için de kullanılabilir.
Çeşitli diller üzerinde çalışacak şekilde tasarlanmıştır. FastText, popüler word2vec aracından veya diğer son teknoloji morfolojik sözcük gösterimlerinden daha iyi performans elde edebilir (3).


İçerik Hazırlayan: Yusuf Dede

Kaynaklar
(1) https://fasttext.cc/docs/en/support.html
(2) https://github.com/facebookresearch/fastText
(3) https://research.fb.com/fasttext/

19 Temmuz 2018 Perşembe

xUnit

xUnit; Nunit'te olduğu açık kaynak kodlu .Net dillerinde çalışan, projelerde birim testlerini yazmak ve yazılın birim testlerin çalıştırmak için geliştirilmiş bir test kütüphanesidir. Nunit'in kurulumuna çok benzer bir şekilde, Visual Studio'da menü çubuğundaki araçlar sekmesinden, uzantılar ve güncelleştirmelere butonuna tıklanıp, program listesinden aratılıp, bulunarak kurulum yapılabilir [1-3].

 
 xUnit Örnek


İçerik Hazırlayan: Mehmet Can Küçük

Kaynaklar:
[1] https://docs.microsoft.com/tr-tr/dotnet/core/testing/unit-testing-with-dotnet-test?
[2] https://medium.com/@selcukusta/xunit-ile-net-core-projelerinde-unit-test-5a1690bc4982?
[3] https://xunit.github.io/docs/comparisons.html?

Nunit

NUnit açık kaynak kodlu .Net platformu içerisindeki bütün dilleri destekleyen, yazılımlara birim testi yapmak için kullanılan bir frameworktür [1]. Visual Studio'da programında bulunan menü çubuğundaki araçlar sekmesinden, uzantılar ve güncelleştirmeler butonuna tıklandığında ortaya çıkan ekrandan aranarak kolayca listeden bulunup proje içerisine eklenebilir [2] .


Nunit Kod Örneği:

İçerik Hazırlayan: Mehmet Can Küçük

[1] http://nunit.org/
[2] http://www.csharpnedir.com/articles/read/?id=564

Selenium

Selenium; 2004 yılında Jason Huggins tarafından geliştirilmiştir, açık kaynak kodlu web sitelerinin testini gerçekleştirmek için oluşturulmuş javascript temelli bir kütüphanedir [1,2].


Selenium Araçları
  • Selenium IDE
  • Selenium Webdriver
  • Selenium Grid
  • Selenium Remote Control

Selenium IDE
Selenium IDE,  web tabanlı uygulamaların kolay bir şekilde browser üzerinde test edebilen bir Firefox eklentisidir. Sahip olduğu platform ve dil desteği (Java, .NET, Python, Ruby, PHP,Perl) nedeniyle oldukça popüler ve tercih edilen bir araçtır [1].



 Selenium WebDriver

Selenium webdriver bir Api'dir. Bu Api ile farklı dillerde (C#, Java, Ruby ve Phyton) test kodları yazılabilir [3]. Selenium webdriver farklı tarayacılarda (Chrome, Firefox, Opera, Internet Explorer vs.) çalışma desteği bulunsada Firefox ile daha sorunsuz olarak çalışmaktadır. 


Selenium Grid 

Selenium Grid testlerin paralel olarak farklı sunucularda, farklı tarayıcılarda ve farklı işletim sistemlerinde çalıştırılması için geliştirilmiş bir araçtır [4].

Selenium IDE Kurulumu
Tavsiye edilen tarayıcı Firefox'tur. Nedeni ise geliştirecileri arasında Firefox vardır.
Eklentinin kurulumu
https://addons.mozilla.org/tr/firefox/addon/selenium-ide/?src=search adresinden eklentimizi Firefox'a ekleyebiliriz. Kurulumdan sonra IDE ikonu tarayıcımızın sağ üstünde gözükecektir.

C# Selenium WebDriver KurulumuSelenium WebDriver, .Net içerisinde Nuget yöneticisinde kurulduğu için, öncelikle .Net üzerinde birim test projesi oluşturmamız gerekir. Proje oluşturulduktan sonra Solution Explorer kısmında sağ tıklayarak Nuget Paket yöneticisini açmamız gerekir. Arama kısmına Selenium yazıyoruz Selenium.WebDriver indiriyoruz kurulum tamamlanıyor. C# Selenium kütüphanelerini projemize eklememiz için "using OpenQA.Selenium; using OpenQA.Selenium.Firefox;" kodlarını kullanarak kullanmamız gereklidir.



Geckodriver Kurulumu

Selenium programının Firefox ile eşgüdümlü olarak çalışması için Geckodriver programının bilgisayara düzgün bir şekilde kurulması gerekmektedir [5].
Kurulum Linki: https://github.com/mozilla/geckodriver/releases
Daha sonra Rar dosyasını masaüstüne çıkarıp bilgisayarımdan sistem özelliklerine gidiniz. Daha sonra gelişmiş sistem ayarlarına gidiniz. Buradan ortam değişkenlerine tıklayınız. Sonrasında Path adlı değişkene Rardan çıkardığınız geckodriver.exe nin yolunu ekleyiniz.







C# Selenium ile www.unclesoftware.com  kullanıcı girişi testi




İçerik Hazırlayan: Mehmet Can Küçük


1 https://www.slideshare.net/Mahmutgndodu/selenium-ile-web-testi
2 https://www.seleniumhq.org/
3 https://medium.com/@cembakca_46615/selenium-web-driver-ba%C5%9Flang%C4%B1%C3%A7-14c8768eb4b0
4 https://www.keytorc.com/blog/selenium-grid-ile-testlerinizi-daha-hizli-kosun_3330/
5 http://www.mahsumakbas.com/tag/selenium-test-otomasyon/

12 Temmuz 2018 Perşembe

KNIME

Java ile kodlanmış Machine Learning ve veri madenciliği projelerinde sık kullanılan bir yazılım olan Knime, sahip olduğu gelişmiş ve görselleştirilmiş arayüzü ile bize kolay ve verimli bir çalışma alanı sunar. Weka ile birlikte çalışabilmesi dışında R, Python gibi yazılım dilleriyle de entegre olabilen Knime, kullanıcıya binden fazla node sunarak işlevsellik sağlar. (node kullanımı sayesinde kod yazmadan proje gerçekleştirimi olanağı sunar ve bu node'ların çıktıları ayrı ayrı incelenebilmektedir.) Knime; Windows, Linux ve Mac OSX gibi farklı işletim sistemleri ile çalışabilmektedir.


Knime'ın Kurulumu

Knime'ı aşşağıdaki linkten ücretsiz bir şekilde bilgisayarınıza kurabilirsiniz.

https://www.knime.com/downloads

Knime ile Proje Oluşturma

Knime'ı kurduktan ve workspace'i oluşturduktan sonra sol üst kısımdan File ardından New kısmına tıklayalım. Açılan pencereden Knime kısmının altında bulunan New Knime WorkFlow kısmını seçelim. Ardından proje ismini girip finish butonuna basalım.

Knime  Örnek Uygulama 1

Kullanılan Excel Dosyası




Kullanılan Node'lar

Excel Reader --> Excel dökümanını okumamıza yarayan node.
Statistics --> İstatistiki verileri görmemizi sağlayan node.
Partitioning --> Verileri  eğitim ve test için ayırmamızı sağlayan node.
Scatter Plot --> Dağılım grafiğini görmemize yarayan node.
Decision Tree Learner -->Decision Tree algoritmasıyla makinaya öğretme işlemi yapılan node.
Decision Tree Predictor -->Öğrenilen veriyle test işleminin yapıldığı node.
Scorer --> Confusion Matrix'i elde ettiğimiz node.

İçerik Hazırlayan: Kubilay Ürün

11 Temmuz 2018 Çarşamba

Word2Vec

Kelimeler arasındaki uzaklık durumlarını, vektörel olarak bulmamıza yarayan algoritmalar bütünüdür. Vektörel yapı üzerinde yazılmış araçlar ile bir kelimeye yakın veya uzak kelimeleri listelemek için  kelimeler arasındaki anolojiyi kullanır (1).

Word2Vec Kelime Vektörü
Şekilde verdiğimiz input dökümanına göre bir kelime vektörü oluşturulması.



Word2Vec CBOW & Skip-Gram Algoritması



Bu kısımda 2 tane algoritmadan CBOW veya Skip-Gram algoritmasından faydalanıyor.

Multi-Word CBOW model (5)






Daha sonra, ağırlıkları güncellemek için gradyan iniş uygularız:



Skip-Gram model (5)



 








 Ağırlıklar için güncelleme denklemi, CBOW modeli ile aynıdır.


 Multi-Word CBOW model Python Code (5)






Skip-Gram model Python Code (5)



 Word2Vec Python & Gensim

Python, nesne yönemli programlamayı destekleyen, yorumlamalı (yani byte kod üreten), modüler ve
yüksek seviyeli bir dildir (2). Python dili, yapay zeka ve makine öğrenmesini uygulamalarında oldukça popüler ve kullanışlı bir dildir. Kullanılma nedenleri, makine öğrenmesi için ihtiyaç duyulan paketlerin import edilmesi ve en iyi performans açısından oldukça tercih  edilen bir dildir(3).

Gensim, Python'da import edilerek kullanılan bir kütüphanedir. Aslında bir kütüphaneden daha fazlası! Çünkü veri madenciliği konusunda oldukça yetenekli olması ve performanslı olması için NumPy, Scipy yapılarını kullanır. Özellikle kullanım alanı büyük  metinleri belli algoritmaları kullanılarak uzaklık ve kelime anolojisi hakkında oldukça başarılıdır(4).

Word2Vec Kurulumu (Linux(Debian))

debian@pc:~$ sudo apt install python3-pip
python yükleme aracını sistemimize kuruyoruz.
debian@pc:~$ sudo pip install
word2vec
Word2vec’i pip yükleme aracı ile sisteme kuruyoruz.

Kurulum sırasında hata oluşması, dosya bağımlılıkları ile alakalıdır.
İlk olarak kuruluma
Başlamadan önce sisteminizin güncel olduğundan emin olun.

Manuel olarak kurmak isteyenler için...
https://github.com/danielfrg/word2vec

Kullanımı

Word2Vec komut satırında şu şekilde kullanılabilir:
word2vec
word2phrase
word2vec-distance
word2vec-word-analogy
Word2vec-compute-accuracy

Kullanılacak türkçe eğitilmiş vektör/model dosyası.

https://drive.google.com/drive/folders/1IBMTAGtZ4DakSCyAoA4j7Ch0Ft1aFoww
Örnek => debian@pc:~$ word2vec-distance trmodel
          debian@pc:~$ word2vec-word-analogy trmodel

Word2Vec isteğe göre Windows veya OS X sistemler üzerinde de çalışıtırabilir. Linux/Debian türevi sistemler word2vec için daha performanslı ve stabil çalıştığı için tercih edilmiştir.


Word2Vec Örnek Gerçekleştirimi

Bu kısımda ./distance kullandığımıda çay için en yakın kelimeleri buldu örnek olarak



 Kelime analojisi için ./word-analogy kullandığımızda






 Word2Vec Background



Yukarıdaki şekilde görüldüğü gibi formül üzerinden kelimler arasındaki benzerlik ve uzaklık yukarıdaki mantığa göre şekillenmektedir.

İçerik Hazırlayan: Yusuf Dede

Kaynaklar
(1) https://medium.com/@odayibasi/word2vec-nedir-ne-i%C5%9Fe-yarar-a314a37c45aa
(2) https://tr.wikipedia.org/wiki/Python_(programlama_dili)
(3) https://medium.com/@EbubekirBbr/makine-%C3%B6%C4%9Frenmesi-uygulamas%C4%B1-geli%C5%9Ftirme-2-python-41028d52686b
(4) https://en.wikipedia.org/wiki/Gensim
(5) http://www.claudiobellei.com/2018/01/07/backprop-word2vec-python/
(5) http://www.claudiobellei.com/2018/01/07/backprop-word2vec-python/