
Hugging Face ve Qdrant ile Zero-shot Metin Sınıflandırması
13 Temmuz 2022
Giriş
Bugün size Hugging Face'in Doğal Dil Çıkarımı (NLI) modellerini ve Qdrant'ı kullanarak metin sınıflandırması için model eğitmek yerine nasıl kullanabileceğinizi göstereceğim.

Sınıflandırma için model eğitmek üzere büyük miktarda veriniz olabilir ancak bunu yapmak için yeterli hesaplama kaynağınız veya zamanınız olmayabilir. İşte burada metrik öğrenme devreye giriyor!
Zero-shot sınıflandırma, modellerin eğitilmediği etiketleri sınıflandırabileceği anlamına gelir. Genellikle sınıflandırıcı oluşturmak için yeterli veriye sahip olmadığımız durumlarda zero-shot sınıflandırma kullanılır. Ancak günümüzde modeller çok daha büyük hale geliyor ve modelleri eğitmek çok zaman alıyor.
Bu nedenle, böyle bir eğitim yapmanın sizi eğitim yapmadan dakikalar içinde bir sınıflandırıcı oluşturmanıza ve iyi bir temel model elde etmenize olanak sağlayacağını düşündüm!
Veri Seti
120 bin inceleme içeren ve dört etiket barındıran News veri setini kullanacağım: Dünya, Spor, İş ve Bilim/Teknoloji. Veri setine buradan erişebilirsiniz. Bu veri setinin sadece eğitim amaçlı olduğunu hatırlatayım. Farklı ve çok daha büyük veri setlerini denemekten çekinmeyin!

Veri setini yüklemek için Hugging Face transformers kullanacağız.
Model
"sentence-transformers/stsb-distilbert-base" modelini kullanacağım. İsterseniz bu modeli değiştirebilirsiniz. Farklı bir dil veya farklı bir NLI modeli kullanmak isteyebilirsiniz.
Artık modelimiz ve verimiz olduğuna göre, NLI modelimizi kullanarak metinden özellikler çıkaracağız ve bu vektörleri en yakın olanları belirlemek için kullanacağız.
Bu kod, veri setinizin boyutuna ve belleğinize bağlı olarak zaman alacaktır. İşlemi hızlandırmak için batch_size'ı belleğinize göre değiştirin.
Qdrant
Eğer qdrant kullanmayı zaten biliyorsanız bu adımları atlayabilirsiniz.
Vektörlerimiz hazır! Şimdi arama yapmadan önce bunları qdrant'a yüklememiz gerekiyor. Qdrant temel olarak bir vektör arama veritabanıdır. Qdrant'ı vektörler için Redis gibi düşünebilirsiniz. Anahtar vermek yerine, bir vektör verirsiniz ve en yakın vektörleri ve yüklerini döndürür.
Bilgisayarınızda docker yoksa lütfen bu bağlantıyı takip edin. Qdrant açık kaynaklı bir projedir ve docker görüntüsünü doğrudan çekebilirsiniz.
docker pull qdrant/qdrant
Çekme işlemi tamamlandıktan sonra qdrant konteynerini çalıştırabilirsiniz.
Vektörleri Qdrant'a Yükleme
Her şey hazır! Modelimizi test edelim.
Sınıflandırma
Bir giriş metnini aramak için önce vektörüne ihtiyacımız olacak. Sonra qdrant ile vektör araması yapabiliriz.
Bundan sonra en yakın cümleleri ve etiketlerini göreceksiniz. Daha yüksek veya daha düşük sayıda yakın sonuç almak için limiti değiştirebilirsiniz.

Gördüğünüz gibi 5 en yakın satırı buldu ve yüklerini döndürdü. Etiketleri 3, bu da Teknoloji/Bilim için olan etiket. Farklı girişler deneyebilir ve sonuçlarınızı görebilirsiniz!