23 Temmuz 2018 Pazartesi

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/