Update README.md
Browse files
README.md
CHANGED
|
@@ -1,3 +1,71 @@
|
|
| 1 |
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
license: mit
|
| 3 |
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
language:
|
| 3 |
+
- en
|
| 4 |
+
- es
|
| 5 |
+
pipeline_tag: text-classification
|
| 6 |
+
tags:
|
| 7 |
+
- roberta
|
| 8 |
+
- bpo
|
| 9 |
+
- customer-support
|
| 10 |
+
- it-service-management
|
| 11 |
+
- text-classification
|
| 12 |
license: mit
|
| 13 |
---
|
| 14 |
+
|
| 15 |
+
# SITOR - Intelligent Triage and Routing Engine (RoBERTa)
|
| 16 |
+
|
| 17 |
+
## Model Description
|
| 18 |
+
|
| 19 |
+
**SITOR** (Sistema Inteligente de Tipificaci贸n, Orquestaci贸n y Resoluci贸n de Incidencias) is a fine-tuned `roberta-base` (125M) model designed for automated BPO (Business Process Outsourcing) and IT Helpdesk ticket routing.
|
| 20 |
+
|
| 21 |
+
Unlike standard classification models that attempt to predict blindly, SITOR is calibrated to act as an algorithmic firewall. It predicts over **56 highly overlapping operational queues** but is designed to only automate routing when the mathematical certainty (Softmax output calibrated via L-BFGS) exceeds a rigorous **0.85 threshold**.
|
| 22 |
+
|
| 23 |
+
- **Developed by:** Pedro Andreu Torres (Master in Data Science & AI Thesis)
|
| 24 |
+
- **Model Type:** Transformer-based sequence classifier
|
| 25 |
+
- **Language(s):** English (Trained on English telecom support corpus)
|
| 26 |
+
- **Base Model:** `roberta-base`
|
| 27 |
+
|
| 28 |
+
## Intended Use & Business Logic
|
| 29 |
+
|
| 30 |
+
This model is intended for enterprise-level ticket orchestration.
|
| 31 |
+
|
| 32 |
+
Due to the asymmetric cost of misrouting a ticket in a Tier-1 BPO environment, the model does not operate on a simple `argmax` decision.
|
| 33 |
+
* **High Confidence (>= 0.85):** The ticket is strictly automated and bypassed to the designated technical queue.
|
| 34 |
+
* **Low Confidence (< 0.85):** The model acknowledges ambiguity and flags the ticket for manual human review.
|
| 35 |
+
|
| 36 |
+
## Training Data
|
| 37 |
+
To ensure corporate confidentiality and academic rigor, the model was trained on a public Telecommunications Customer Support dataset sourced from Kaggle. The raw data underwent severe deduplication and asymmetric mapping to simulate a complex 56-queue BPO ecosystem.
|
| 38 |
+
|
| 39 |
+
## Evaluation Results
|
| 40 |
+
|
| 41 |
+
Validation was performed using a strict `StratifiedGroupKFold` strategy to prevent Data Leakage on a blind hold-out set of 3,080 tickets.
|
| 42 |
+
|
| 43 |
+
* **Base Algorithmic Accuracy:** ~59% (Top-1 Accuracy on 56 highly overlapping classes).
|
| 44 |
+
* **Automated Volume (0.85 Threshold):** 38.5% of the total influx.
|
| 45 |
+
* **Operational Precision (AI):** On the automated volume, the model achieves **97.3% precision** (only 2.7% residual error).
|
| 46 |
+
* **In-Vitro ROI:** The hybrid approach yields a theoretical **31.8% reduction in global operational errors** compared to a 100% human-operated baseline. *(Note: Requires Shadow Mode validation in a live production environment).*
|
| 47 |
+
|
| 48 |
+
## How to use
|
| 49 |
+
|
| 50 |
+
You can load this model and its tokenizer directly using the `transformers` library:
|
| 51 |
+
|
| 52 |
+
```python
|
| 53 |
+
from transformers import AutoTokenizer, AutoModelForSequenceClassification
|
| 54 |
+
import torch
|
| 55 |
+
|
| 56 |
+
# Load the model and tokenizer from the Hugging Face Hub
|
| 57 |
+
tokenizer = AutoTokenizer.from_pretrained("Andregon79/sitor")
|
| 58 |
+
model = AutoModelForSequenceClassification.from_pretrained("Andregon79/sitor")
|
| 59 |
+
|
| 60 |
+
# Example ticket
|
| 61 |
+
ticket_text = "My home wifi keeps dropping every 10 minutes since yesterday."
|
| 62 |
+
|
| 63 |
+
inputs = tokenizer(ticket_text, return_tensors="pt", truncation=True, max_length=128)
|
| 64 |
+
with torch.no_grad():
|
| 65 |
+
logits = model(**inputs).logits
|
| 66 |
+
|
| 67 |
+
# Apply softmax to get confidence scores
|
| 68 |
+
probabilities = torch.softmax(logits, dim=1)
|
| 69 |
+
confidence, predicted_class = torch.max(probabilities, dim=1)
|
| 70 |
+
|
| 71 |
+
print(f"Confidence: {confidence.item():.4f}")
|