🎯 Маршрутизация обращений и классификация интентов (DistilBERT)

Данная модель представляет собой дообученную версию distilbert-base-uncased для автоматической классификации и маршрутизации клиентских обращений службы поддержки по 77 категориям банковского датасета Banking77.

Модель разработана в рамках микросервиса для автоматического распределения входящих тикетов по профильным отделам банка.


📊 Результаты бенчмарка (Test Set)

Оценка качества проводилась на официальной отложенной тестовой выборке 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) 2.6% (1.8M) 0.9132 0.9133 0.3189
DistilBERT (Full Fine-Tuning) 100% (66.9M) 0.9175 0.9175 0.3478

Полные отчеты по экспериментам и коду обучения доступны в репозитории проекта.


🚀 Как использовать модель

1. Быстрый инференс через pipeline

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}]

2. Загрузка через PyTorch / AutoModel

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-uncased
  • Количество эпох: 4
  • Learning Rate: 3e-5 (оптимизатор AdamW)
  • Weight Decay: 0.01
  • Размер батча: 32 (Train)
  • Максимальная длина последовательности: 64 токена
Downloads last month
35
Safetensors
Model size
67M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for nzgl21/ticket-routing-distilbert

Finetuned
(12,881)
this model

Dataset used to train nzgl21/ticket-routing-distilbert