Veri Kümesinin açıklamasını okuyoruz.
...Yani DBpedia 2014 den çekilmiş 14 değişik sınıfa ait yazılar başlık + içerik olarak toplanmış. Her sınıf için eğitimde 40 bin test veri seti için 5 bin örnek kaydedilmiş. DBpedia wikipedia da üretilmiş içeriklerin yapısal bir şekilde derlenip torpalanmış halidir diyelim. DBpedia hakkında daha fazla bilgi için sitesine gidebilirsiniz. Belkide size lazım olan veri kümesini bu şekilde temin edebilirsiniz...
The DBpedia ontology classification dataset is constructed by picking 14 non-overlapping classes from DBpedia 2014. They are listed in classes.txt. From each of thse 14 ontology classes, we randomly choose 40,000 training samples and 5,000 testing samples. Therefore, the total size of the training dataset is 560,000 and testing dataset 70,000.
...
Açıklamanın tamamını veri kümesini indirip açtığınızda "readme" belgesinden okuyabilirsiniz
veri kümemiz sıkıştırılmış dosya olarak geliyor bulunduğumuz dizine açınca "dbpedia_csv" isimli bir dizine açılıyor
Sınıf isimlerimizi okuyoruz
Şirket , eğitim kurumu, vs diye başlayan 14 başlık var. Başlıkları ayrı yazmışlar çünkü veri kümelerinde yani "dbpedia_csv/train.csv" ve "dbpedia_csv/test.csv" de sınıf isimleri 1 den başlayan sayı olarak yazılmış
FastText eğitim için veri kümesinin bir metin dosyası halinde verilmesini istiyor. İstediği Format ise her satırda bir veri birimi başta "__label__" a hangi sınıf sa onu yazıyoruz sonrasında boşluk ve virgül ile ayrıp satırın devamında o sınıfa ait bir metin yazıyoruz. Bizim metin kısmı başlık ve açıklamda olarak iki parçalı geldiğinden birleştiriyoruz. Etiket olarak yukarıda okuduğumuz sınıf isimlerini kullanıyoruz. Metin verisinde yaptığımız tek işlem ise küçük harfe çevirmek. Veriler sıralı şekilde verilmiş, bizde karışmadan aynı şekilde FastTextin istediği formata çevirip yazıyoruz
aynı işlemi test verisi içinde yapıyoruz.
Evet artık 'dbpedia.train' ve 'dbpedia.test' diye 2 dosyamız oldu içine bakıyoruz
Bu aşamadan sonra sıra geliyor FastText'e. İki şekilde kullanmak mümkün FastText'i derleyip komut satırından çağırmak , yada Python paketi olarak kurup onu kullanmak. FastText ilk çıktığında python paketi yoktu ve bizde bu eğitim işinde parametere ayarlarını kolay yapabilmek için bir GUI yazdık. Ve halende kullanıyoruz. Fakat malesef kod python2 de kaldı python3 e taşımaya fırsat ve gerek bulamadık daha kullanmak için python2 , pyside , pygal, paketleri gerekiyor.
Görünümü şu şekilde ;
FastText i kullandığından kelime vektörü hesabı içinde kullanılabilir elbette ama bizim şu anki önreğimiz metin sınıflandırma olduğundan command kısmında "supervised" seçeneğine ayarlıyoruz. TextFile kısmına eğitim veri kümemiz için hazırladığımız dosyayı seçiyoruz.
Model File kısmında Eğitim sonrası eğitilen modelin ismini belirliyorsunuz.
Sağ üstteki Play tuşu ile eğitimi başlatabiliyorsunuz. En sağdaki Dur işaretide durdurmak için
Altta Learning Rate ile başlangıç öğrenme hızını belirliyorsunuz
Epoch Diğer makina öğrenme metodlarından bildiğiniz gibi eğitim kaç adım yapılacağı
En az kaç defa geçen kelimenin alınacağı, karekter ngramlarında hangi aralığın kullanılacağı, kelime ngramı kaçlık kullanılacağı vs gibi pek çok seçenek var. Ayarlı seçenekler ile başlayıp denemeler yapmak gerekiyor.
Eğitim bitince eğitim veri kümesinin ismi aynı uzantısı .test olan bir dosya varsa eğitilmiş model ile bu test dosyası çalıştırılıp sonuçda veriyor
Resimden de göreceğiniz üzere
değerlerine ulaşttık ki gayet güzel sonuçlar
- precision: kesinlik 0.983
- recall: duyarlılık 0.983
Eğitim sonunda Loss değerinin düşüşünüde grafik olarak alabiliyorsunuz.
Eğitim sonucunda uzantısı bizim belirlediğimiz isimde
uzantısı .bin olarak model dosyası
uzantısı .vec olarak kelime vektörelrinin tutulduğu dosya oluşturulur
FastTextGUI de bunlara ilaveten
uzantısı .log olan eğitim serencamını tutan dosya
uzantısı .svg olan loss düşüş grafiğinin dosyasını oluşturur.
Eğittiğimiz modeli kullanmak için sadce uzantısı .bin olan dosya yeterli olmaktadır.
Eğittiğimiz modelin kullanımını bir sonraki yazımıza bırakıyoruz. Yazı dizimiz bittiğinde bütün kodlar yayınlanacaktır.
Her türlü görüş ve önerilerinizi bekleriz.
Hiç yorum yok:
Yorum Gönder