ESCO to O*NET Mapping
Relevant source files
The following files were used as context for generating this wiki page:
The ESCO to ONET Mapping module is a validation study designed to test the external-taxonomy robustness of the project's 18-operation taxonomy. While the taxonomy was initially derived from ONET task statements, this module uses the European Skills, Competences, Qualifications and Occupations (ESCO) v1.1.1 framework as an independent test bed to determine if the same operational patterns are recoverable in a different occupational ontology.
Sources: data/derived/esco/README.md:1-8, README.md:143-146
This system performs multi-method assignment of ESCO skills to O*NET operations, utilizing both geometric (embedding-based) and semantic (LLM-based) approaches. The goal is to establish whether the 18 operations represent universal recurring patterns of knowledge work that transcend the specific construction of a single dataset.
Sources: data/derived/esco/README.md:5-10, scripts/esco/map_esco_to_ops.py:7-14
Data Preparation and Scoping
Before mapping, ESCO items are filtered to align with the project's focus on knowledge work. The scoping process selects "skill/competence" items that are linked as "essential" to at least one occupation in ISCO-08 major groups 1, 2, or 3 (Managers, Professionals, and Technicians/Associate Professionals).
Sources: scripts/esco/prepare_esco_items.py:11-20, data/derived/esco/README.md:15-18
Scoping Criteria
| Category | Criterion | Description |
|---|---|---|
| Skill Type | skill/competence | Excludes knowledge items which describe subject-matter domains rather than operations. |
| ISCO Scope | Major Groups 1, 2, 3 | Managers, Professionals, and Technicians/Associate Professionals. |
| Relationship | essential | The skill must be essential to the linked occupation. |
| Language | English | The study uses the English CSV variant of ESCO v1.1.1. |
Sources: scripts/esco/prepare_esco_items.py:38-51, data/derived/esco/README.md:12-21
Mapping Methodology
The mapping system employs a dual-method approach to assign ESCO items to the 18-operation taxonomy.
1. Geometric (Centroid) Assignment
This method calculates the cosine similarity between the ESCO item embedding and the centroids of the 18 operations in the ONET embedding space. Operation centroids are calculated as the mean of L2-normalized ONET task embeddings belonging to that operation.
Sources: scripts/esco/map_esco_to_ops.py:16-23, scripts/esco/map_esco_to_ops.py:117-133
2. Semantic (LLM) Assignment
A Large Language Model (gpt-5.4-mini) performs single-shot classification based on frozen operation definitions. The model evaluates the ESCO item's label and description against the taxonomy's one_line definitions, inputs, and outputs.
Sources: scripts/esco/map_esco_to_ops.py:25-30, scripts/esco/map_esco_to_ops.py:53-73
The diagram shows the parallel paths of geometric and semantic assignment used to reach a consensus label.
Sources: scripts/esco/map_esco_to_ops.py:7-45, scripts/esco/map_esco_to_ops.py:246-261
Structural Recoverability and Validation
To validate the taxonomy's robustness, the system performs independent clustering on ESCO embeddings without knowledge of the O*NET labels and then measures the alignment.
Metrics and Analysis
- ARI/NMI: Measures the similarity between the unsupervised HDBSCAN/KMeans partitions of ESCO and the LLM-assigned operation labels.
- kNN Consistency: Evaluates the fraction of a skill's nearest neighbors that share the same operation label.
- Homogeneity/Purity: Assesses how well individual operations map to single unsupervised clusters and vice-versa.
Sources: scripts/esco/cluster_esco_items.py:7-22, data/derived/esco/esco_structural_recoverability.json:1-15
Validation Performance Summary
The recoverability metrics indicate the degree to which the 18-operation structure is inherent in the ESCO embedding manifold.
| Metric | Purpose | Baseline Comparison |
|---|---|---|
| Adjusted Rand Index (ARI) | Partition similarity | Compared against null/permutation |
| Normalized Mutual Info (NMI) | Information overlap | Measured for HDBSCAN and KMeans |
| Silhouette Score | Manifold separation | Evaluates separation of LLM-labeled ops |
| kNN Rate (k=5) | Local coherence | Compared against local null baseline |
Sources: scripts/esco/cluster_esco_items.py:108-164, scripts/esco/build_esco_coverage.py:84-93
Technical Components and Data Flow
The mapping process is implemented through a series of scripts that manage data ingestion, embedding, and classification.
The sequence shows the data dependency and progression from raw ESCO data to validated operation mappings.
Sources: data/derived/esco/README.md:46-56, scripts/esco/cluster_esco_items.py:1-25
Key Data Structures
| File Path | Description |
|---|---|
esco_op_assignments.parquet | Contains URI, preferred label, centroid op, LLM op, consensus op, rationale, and confidence. |
op_centroid_cosine_reference.json | Stores per-op centroid statistics (p05, p50, p95) derived from O*NET task embeddings. |
esco_structural_recoverability.json | Holds validation results including ARI/NMI vs LLM labels and silhouette scores. |
Sources: data/derived/esco/README.md:23-44, scripts/esco/map_esco_to_ops.py:35-45
Conclusion
The ESCO to O*NET mapping module serves as a critical robustness check for the project's operation taxonomy. By demonstrating that the 18 operations can be recovered within the ESCO framework using both semantic LLM assignment and geometric embedding analysis, the module provides empirical evidence for the external validity of the operations as recurring constructs in knowledge work.
Sources: data/derived/esco/README.md:5-10, scripts/esco/build_esco_coverage.py:7-13