PolyAI/banking77
Viewer • Updated • 13.1k • 20.3k • 124
Данная модель представляет собой дообученную версию distilbert-base-uncased для автоматической классификации и маршрутизации клиентских обращений службы поддержки по 77 категориям банковского датасета Banking77.
Модель разработана в рамках микросервиса для автоматического распределения входящих тикетов по профильным отделам банка.
Оценка качества проводилась на официальной отложенной тестовой выборке Banking77 (3 080 примеров):
| Метрика | Значение |
|---|---|
| Test Macro F1 | 0.9175 |
| Test Accuracy | 0.9175 |
| Test Precision (Macro) | 0.9209 |
| Test Recall (Macro) | 0.9175 |
| Test Loss | 0.3478 |
| Подход | Обучаемые параметры | Test Macro F1 | Test Accuracy | Test Loss |
|---|---|---|---|---|
| Baseline (TF-IDF + LogReg + Bayes) | — | 0.8901 | — | — |
| DistilBERT + LoRA (r=32) | 0.9132 | 0.9133 | 0.3189 | |
| DistilBERT (Full Fine-Tuning) | 100% (66.9M) | 0.9175 | 0.9175 | 0.3478 |
Полные отчеты по экспериментам и коду обучения доступны в репозитории проекта.
from transformers import pipeline
classifier = pipeline(
"text-classification",
model="nzgl21/ticket-routing-distilbert"
)
# Пример клиентского тикета
ticket = "I noticed an unknown fee charged on my credit card statement."
prediction = classifier(ticket)
print(prediction)
# Вывод: [{'label': 'card_payment_fee_charged', 'score': 0.964}]
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
model_name = "nzgl21/ticket-routing-distilbert"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
inputs = tokenizer("How can I change my PIN?", return_tensors="pt")
with torch.no_grad():
logits = model(**inputs).logits
predicted_class_id = logits.argmax().item()
print("Предсказанный интент:", model.config.id2label[predicted_class_id])
Модель обучалась с помощью Hugging Face Trainer со следующей конфигурацией:
distilbert-base-uncased3e-5 (оптимизатор AdamW)Base model
distilbert/distilbert-base-uncased