Procurement NLP
Procurement-title NLP API · Macro-F1 0.9639 · category F1 0.90 · about 50 ms CPU
Built with RoBERTa-large · LoRA · SBERT · UMAP · HDBSCAN · ONNX Runtime INT8 · FastAPI
WHY
Incoming notices had to be routed immediately by bid eligibility and work category using only the title. Detailed labels were scarce, and the production environment had no inference GPU. The project therefore needed to build a domain taxonomy without exhaustive annotation and serve both decisions quickly on CPU.
Accuracy 96.4%
Weakly supervised multiclass model
Static INT8 ONNX · about 330 MB
HOW
From scarce labels to a CPU-served label system
The teacher does more than classify: its domain representation becomes the basis for ontology discovery and work-category supervision.
- 01 Bidability teacher
Fine-tune KLUE RoBERTa-large with LoRA, focal loss, R-Drop, and FGM.
- 02 Ontology discovery
Project 1024-dimensional CLS representations through UMAP and HDBSCAN, then refine clusters with human review.
- 03 Weak labels
Combine hard-rule overrides with SBERT 0.9 and domain-RoBERTa 0.1 Max-Sim confidence.
- 04 Multiclass student
Train a class-weighted LoRA model over the dynamically constructed label set.
- 05 INT8 batch serving
Merge adapters, apply static ONNX quantization, and execute two models concurrently in FastAPI.
RESULT
Bidability evaluation
| Approach | Macro-F1 | Accuracy |
|---|---|---|
| LLM few-shot | 0.351 | 54.0% |
| Fine-tuned RoBERTa + LoRA | 0.9639 | 96.4% |
| RAFT | 0.350 | 53.8% |
| Three-agent path | 0.9639 | 96.4% |
All rows use the same 500-record binary evaluation set.
Contribution
- Designed the representation-to-ontology and Max-Sim weak-label path for work-category supervision.
- Trained the binary and multiclass LoRA classifiers, exported static INT8 ONNX artifacts, and connected parallel inference to a FastAPI batch endpoint.