Hugging Face ve Qdrant ile Zero-shot Metin Sınıflandırması

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.

captionless image

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!

captionless image

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.

Qdrant'tan dönen vektörler

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!

Referanslar

← Tüm yazılar