File size: 3,943 Bytes
b5c3072
76e65b6
b5c3072
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76e65b6
 
 
 
 
 
 
b5c3072
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76e65b6
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
---
license: apache-2.0
base_model: Qwen/Qwen3-1.7B-Base
language:
- en
pipeline_tag: text-classification
tags:
- lora
- peft
- natural-language-classification
- truestate
---
# The Classifier v1.1

The Classifier scores a user-supplied menu of natural-language choices. This
repository contains the general v1.1 LoRA adapter and seven specialists fine-tuned
from that checkpoint on 4 October 2026. The frozen backbone is
[Qwen3-1.7B-Base](https://huggingface.co/Qwen/Qwen3-1.7B-Base), downloaded separately.
Each version includes its own LoRA weights, trained scalar scoring head and tokenizer.

| Version | Intended task |
| --- | --- |
| general | General-purpose classification across the training tasks |
| intent | Customer intent, including banking, insurance and telecom requests |
| sentiment | Positive, neutral and negative sentiment |
| triage | Support ticket categories |
| cause | Reported complaint issues and reasons |
| codify | Mapping text into product and service taxonomies |
| complaints | Financial complaint products and issues |
| stars | One-to-five review ratings |

## Use

Install the [theclassifier package from PyPI](https://pypi.org/project/theclassifier/):

```sh
pip install theclassifier
```

These checkpoints are public; no Hugging Face login is required.

```python
from theclassifier import Classifier

model = Classifier(model_repo="TrueState/theclassifier", device="auto")
result = model.classify(
    "Please close my account.",
    choices=["cancellation", "billing", "none"],
    question="What is the customer asking for?",
    version="intent",
)
print(result["results"][0]["selected"])
```

Version changes reuse the loaded backbone and pair each adapter with its own head.
Cached checkpoints are reused; missing versions are downloaded on demand.
Checkpoint folders are not standalone Transformers sequence-classification models:
use the package to load the adapter and scalar head together.

## Training and evaluation

LoRA rank 16, alpha 16, dropout 0.05, targeting q_proj and v_proj. The scoring head
and adapters are trained; backbone weights remain frozen. The objective is
cross-entropy across each example's choice menu. The general model was trained
for approximately 23h44m; the specialists added approximately 19h36m on a single
RTX PRO 4000 Blackwell GPU.

The project's internal 4,264-task evaluation reports 81.3% general top-1 accuracy.
Task groups overlap, and intent contributes 59.1% of the evaluation. This is not
an independent benchmark or evidence that every specialist improves its task.
Training sources span Bitext, CLINC, CFPB complaints, municipal complaints,
IT tickets, airline sentiment/reasons, TweetEval and Yelp, with separate
held-out and evaluation-only sources. Consult the project paper for dataset
links, preparation details and limitations; per-checkpoint source manifests
are not complete.

## Limitations

Scores are relative to the supplied choices and are not established as calibrated
across menus or domains. Wording, criteria and fallback choices affect results.
The model can misclassify clear inputs, including simple cancellation examples
used in release smoke tests. Validate on representative data before deployment.
CPU/CUDA smoke tests verify loading and execution, not classification quality.

The portable package uses direct candidate scoring with standard attention, not
the optimized production shared-prefix cache. Its latency is not interchangeable
with published service-time references. The default package input limit is 2,048
tokens per candidate; longer inputs retain the first token and tail.

## Files and licensing

`checksums.json` records the staged files. Scoring heads are safetensors; no
training data or intermediate checkpoints are included. The Python package and the adapter weights and scoring heads in this repository
are released under Apache-2.0. The upstream backbone and source datasets retain
their own terms.