گاهی اوقات در حل مسائل دستهبندی NLP تعداد کمی داده از هر کدام از دستهها داریم. (به طور مثال ۸ داده از هر دسته داریم). SetFit روشی برای دستهبندی در این حالت ها مبتنی بر معماری sentence transformer ارائه میدهد.
در حالت کلی SetFit در دو مرحله انجام میگردد.
با توجه به این که در مرحله اول جفت دادگان به عنوان داده آموزش در نظر گرفته میشوند، اگر K تعداد دادگان آموزش از هر کلاس باشند، تعداد کل دادگان مثبت به تعداد K(K - 1) ضربدر تعداد کلاس ها خواهد بود، و لذا کمی از وضعیت دادگان کم خارج میشویم.
کتابخانه SetFit در Huggingface بدین منظور نوشته شدهاست. کارکردن با این کتابخانه مشابه با کتابخانه transformers میباشد. برای استفاده از این کتابخانه باید چندین مرحله را طی کنیم:
# Initializing a new SetFit model model = SetFitModel.from_pretrained('BAAI/bge-small-en-v1.5', labels=['negative', 'positive'])
۲. آرگومانهای آموزش را مقداردهی میکنیم تا به کلاس Trainer دهیم
# Preparing the training arguments args = TrainingArguments( batch_size=32, num_epochs=10, )
۳. کلاس Trainer را ایجاد کرده و مدل را روی دادگان ایجاد میکنیم
# Preparing the trainer trainer = Trainer( model=model, args=args, train_dataset=train_dataset, ) trainer.train()
۴. در نهایت میتوانیم مدل را روی دادگان ارزیابی، ارزیابی کنیم
# Evaluating metrics = trainer.evaluate(test_dataset) print(metrics)
۵. در نهایت میتوانیم مدل را ذخیره کنیم
# Saving the trained model model.save_pretrained('setfit-bge-small-v1.5-sst2-8-shot')