--- language: - es license: apache-2.0 datasets: - hsilvosa/openplacsp library_name: sklearn pipeline_tag: text-classification tags: - public-procurement - cpv - multilabel-classification --- # Multilabel CPV division classifier for Spanish public procurement A lightweight model that suggests CPV divisions from a procurement notice title, project name, and summary. It combines word- and character-level TF-IDF features with 45 linear logistic classifiers. Version 2 calibrates probabilities and learns a separate decision threshold for each division. It was trained from the [hsilvosa/openplacsp](https://huggingface.co/datasets/hsilvosa/openplacsp). ## Temporal evaluation Training uses notices published through 2022. The year 2023 is reserved for calibration and threshold selection, while 2024 remains a held-out test set. | 2024 test metric | Base model | Version 2 | |---|---:|---:| | Recall@3 | 0.9140 | 0.9214 | | Micro-F1 | 0.5808 | 0.7276 | | Macro-F1 | 0.4803 | 0.6180 | | Brier score (lower is better) | 0.0277 | 0.0105 | | Non-empty multilabel coverage | 0.9933 | 0.8897 | The model was trained on 606,309 notices with fixed seed 20260817. Per-division metrics and checksums are available in `metrics.json`. ## Usage ```python from inference import CPVDivisionClassifier model = CPVDivisionClassifier("model.joblib") print(model.predict(["Mantenimiento y desarrollo de aplicaciones municipales"])) ``` The optional skops export is unavailable; see `safe_export_error` in metrics.json. ## Limitations The model learns from Spanish administrative text published on the national public procurement platform through December 2024. It does not replace the legally assigned CPV classification. Rare divisions carry greater uncertainty. It must not be used to infer fraud, illegality, or responsibility.