Sayfalar

Cumartesi, Ağustos 31, 2019

FastText ile hızlı metin sınıflandırma - 3

Bir önceki yazımızda veri kümemimiz ile FastTextGUI kullanarak eğitim işlemini yapmıştık. Eğitim sonucunda uzantısı .bin  olan bir models dosyası oluşturuldu. Bu yazımızda eğittiğmiz modeli nasıl kullanacağımızı göreceğiz.

Eğtilmiş modeli kullanmanın iki yolu var. Birincisi FastText in komut satırı çalıştırılabilir programını kullanarak. İkinci yolu FastText i python kütüphanesi olarak yükleyerek.

İlkinden başlıyalım. FastText programının kullanım parametrelerine bakalım


Bu seçeneklerden  tahmin için "predict" yada "predict-prob" sçeneğini kullanabiliriz. aralarındaki fark ikincisinde tahmin ile birlikte tahin kesinlik ihtimalinide veriyor.  Tahmin yapılmasını istediğiniz metinleri her biri bir satır olacak şekilde bir metin dosyasına kaydetmemiz gerekmekdedir. Her tahmin için geçici bir metin dosyası yazdırıp FastText programıyla çalıştırmamız gerekiyor. Bu işlem için bir fonksiyon yazdık


Kullanım için test için hazırladığımız dosyayı yüklüyoruz. Burdaki gerçek sonuçları da ayırıp sorgumuz yapıyoruz sonuçlarıda gerçek sonuçlarla karşılaştırmak için sckit-learn kütüphanesinin , confusion_matrix, classification_report  fonksiyonlarını kullanıyoruz.
confusion_matrix : Karşılaştırma matrisi  tahmin edilen ile gerçek değerelri karşılaştırmanıza yarar matrisin bir ekseni gerçek değerler diğer ekseni tahmin edilen değerleri gösterir.

 her satır gerçek değerleri gösterir her sutunda tahminleri gösteriyor. Eğer modelimiz %100 başarılı olsaydı satır ve sutun indeksi aynı olan yerlerde her sını için örnek sayısı olan 5 bin dğerini göremiz gerekirdi.  Örnek vermek gerekirse ilk sınıfımız olan Şirket sınıfındaki  5 bin örnekden 4767 tanesi Doğru tahmin edilmiş. 39 tanesi  2. sınıf olan Eğitim kurumu olarak Yanlış tahmin edilmiş.
Bir güzelliğide bir birine karıştırılan sınıfların kolaylıkla görülebilmesidir.

classification_report : fonksiyonu ise  sınıf bazında recall: duyarlılık , precision: kesinlik ve bu ikisinin karışımı bir ölçüt olan f1 skorlarını hesaplayıp listler. Adıyla müsemma Sınıflandırıcı raporu düzenler



 İkinci metodumuz FastText python pakedini yüklemek. Tahmin edebilecğiniz gibi
pip install fasttext


şeklinde yapıyorsunuz. 

import fasttext
 model = fasttext.load_model('models/dbpedia_1.bin')

ile yüklüyoruz
tahmin için sorgu listemizi bir yere kaydetmemize gerek yok artık direk çağırıyoruz
model.predict(qlist)
sonuçları yine ilk örneğimizdeki gibi hesaplattırıyoruz. Aşağı yukarı aynı sonuçlara ulaşıyoruz. Toplamda  98.3 lük başarı değerine ulaşıyor modelimiz. Eğitim aşamasına geri dönüp değişik parametre ayarlarıyla daha iyi sonuçlara ulaşmaya çalışabilirsiniz. Yada ilk aşamaya dönüp Veri kümesi üzerinde değişik ön işlemeler yapıp sonuçlar üzerindeki etkisini gözlemleyebilirisiz . gerisi size kalmış

 FastText hakındaki bu seri yazımızı bitiriyoruz.  Üç yazı boyunca yaptıklarımızı github hesabımızdan paylaşıyoruz.  Kimbilir belki taş üstüne taş koyan çıkar.

Bu yazımızdaki kullanım ile ilgili kodlar,  "example"  dizininde "evaluation_with_executable" ve  "evaluation_with_python_binding" isimli ipython dosyalar olarak bulunuyor.
Veri kümesini FastText 'in kullandığı şekle çeviren kod  yine "example" dizininde "prepare_data" isminde

FastTextGUI nin kodlarına ise gui dizinin içinde ulaşabilirsiniz

Projenin github adressi ;

  https://github.com/birolkuyumcu/fasttext_gui
 Her türlü görüş ve önerilerinizi bekleriz.

2 yorum:

Unknown dedi ki...

Elinize sağlık hocam.

zaman haber dedi ki...

işe yarayan bilgiler teşekkürler