ICON (Implicit CONcept Insertion) is a self-supervised taxonomy enrichment system. It discovers implicit intermediate concepts missing from an existing taxonomy by:
- Retrieving a cluster of related concepts via an embedding model (
emb_model) - Generating a virtual concept label for each subset via a generative model (
gen_model) - Placing the concept via subsumption-prediction-based search (
sub_model)
Core: numpy, rdflib, networkx, faiss, tqdm, nltk
Sub-model training: torch, pandas, transformers, datasets, evaluate, info-nce-pytorch
Python ≥ 3.9
from icon import ICON, from_json
taxo = from_json("data/raw/google.json")
icon = ICON(data=taxo, emb_model=emb, gen_model=gen, sub_model=sub)
icon.run() # auto mode — enriches entire taxonomySee demo.ipynb for a full walkthrough including model wrapping.
ICON requires three plug-in models with these signatures:
| Model | Signature | Purpose |
|---|---|---|
emb_model |
(query: List[str], ...) -> np.ndarray |
Embed concepts for retrieval |
gen_model |
(labels: List[str], ...) -> str |
Generate union label for a subset |
sub_model |
(sub, sup, ...) -> np.ndarray |
Predict subsumption probability |
emb_model and gen_model are optional depending on the operating mode (see configuration).
eBay models: Models fine-tuned on eBay data are available at RNO HDFS: /user/jingcshi/ICON_models/.
We provide a fine-tuning pipeline using BERT (emb/sub) and T5 (gen). See fine-tuning data reference and the notebooks under experiments/model_training/.
- Configuration reference — all ICON parameters explained
- Fine-tuning data reference —
data_config.jsonparameters for each sub-model - Taxonomy file format — JSON schema for reading/writing taxonomies
@inproceedings{10.1145/3589334.3645584,
author = {Shi, Jingchuan and Dong, Hang and Chen, Jiaoyan and Wu, Zhe and Horrocks, Ian},
title = {Taxonomy Completion via Implicit Concept Insertion},
year = {2024},
publisher = {Association for Computing Machinery},
booktitle = {Proceedings of the ACM on Web Conference 2024},
pages = {2159--2169},
series = {WWW '24}
}