Loading…
Loading…
distilbert/distilbert-base-uncasedA fine-tuned DistilBERT model for automatic IT support ticket classification. Given a raw ticket body (a sentence or two of plain English), the model routes the ticket into one of five operational categories, enabling help-desk teams to triage requests without manual reading.
| Attribute | Value |
|---|---|
| Base model | distilbert-base-uncased |
| Task | Multi-class text classification |
| Number of labels | 5 |
| Max sequence length | 128 tokens |
| Training framework | HuggingFace Trainer API |
| Hardware used | Single CPU / GPU |
| ID | Label | Description |
|---|---|---|
| 0 | billing |
Payment issues, invoices, refunds, subscription charges |
| 1 | hardware |
Physical device problems — laptops, peripherals, printers |
| 2 | network |
Connectivity, VPN, DNS, Wi-Fi, firewall issues |
| 3 | account |
Login, password reset, MFA, provisioning, access control |
| 4 | software |
Application crashes, updates, licences, driver issues |
The model was trained on a custom synthetic dataset of 300 IT support ticket samples (60 per class), constructed to reflect realistic help-desk language patterns. The dataset was designed to:
Split: 80 % train · 10 % validation · 10 % test (stratified by label)
Why synthetic? Synthetic data lets anyone reproduce the experiment without privacy concerns around real ticket data, while still capturing the vocabulary and phrasing of genuine IT support requests. The pipeline is identical to what you would run on proprietary ticket data — swap the CSV and retrain.
TrainingArguments(
num_train_epochs = 5,
per_device_train_batch_size = 16,
learning_rate = 2e-5,
weight_decay = 0.01,
warmup_ratio = 0.1,
lr_scheduler_type = "cosine",
eval_strategy = "epoch",
load_best_model_at_end = True,
metric_for_best_model = "f1_macro",
)
Early stopping (patience = 2 epochs) was applied to prevent overfitting on the small dataset. The best checkpoint by validation F1-macro was retained.
Evaluated on the held-out test split (30 samples):
| Metric | Score |
|---|---|
| Test Accuracy | 93.33 % |
| Test F1 (macro) | 93.21 % |
Per-class breakdown:
| Class | Precision | Recall | F1 | Support |
|---|---|---|---|---|
| billing | 1.00 | 0.83 | 0.91 | 6 |
| hardware | 0.86 | 1.00 | 0.92 | 6 |
| network | 1.00 | 1.00 | 1.00 | 6 |
| account | 1.00 | 0.83 | 0.91 | 6 |
| software | 0.86 | 1.00 | 0.92 | 6 |
Results are averaged over 3 random seeds; numbers above are from seed 42.
pipeline API (simplest)from transformers import pipeline
clf = pipeline(
"text-classification",
model="your-username/distilbert-it-support-classifier",
)
tickets = [
"My laptop fan is making a grinding noise and overheating.",
"I was charged twice for my subscription this month.",
"VPN keeps disconnecting every 10 minutes from home.",
]
for ticket in tickets:
result = clf(ticket, truncation=True, max_length=128)
print(f"[{result[0]['label']}] {ticket[:60]}")
AutoModelForSequenceClassificationimport torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
model_id = "your-username/distilbert-it-support-classifier"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForSequenceClassification.from_pretrained(model_id)
text = "The application crashes when I try to export a PDF."
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=128)
with torch.no_grad():
logits = model(**inputs).logits
predicted_id = logits.argmax(-1).item()
print(model.config.id2label[predicted_id]) # → software
This model is intended for:
It is not intended for:
This project demonstrates the end-to-end ML workflow of fine-tuning a pre-trained transformer for a practical classification task:
TrainingArguments, Trainer, EarlyStoppingCallback, and DataCollatorWithPadding rather than a manual training loopThe domain (IT support routing) is deliberately practical: every company with an internal help desk has this problem, making the deliverable immediately relatable in an applied-AI context.
Full training code and dataset generation scripts are available at: github.com/983111/distilbert-it-support-classifier
If you use this model or methodology, please cite:
@misc{distilbert-it-support-2026,
author = {Vishwajeet Adkine},
title = {DistilBERT Fine-tuned for IT Support Ticket Classification},
year = {2026},
publisher = {HuggingFace},
url = {https://huggingface.co/your-username/distilbert-it-support-classifier}
}
Apache 2.0 — see LICENSE for details.