--- base_model: mlx-community/Qwen3.5-9B-4bit library_name: mlx license: other license_name: qwen tags: - lora - ontology-learning - ontology-extraction - text2onto - llms4ol-2026 - qwen3.5 --- # qwen3.5-9b-ontology-extraction-baseft-mlx A LoRA adapter for **`Qwen/Qwen3.5-9B`** that extracts a *primitive ontology* — `[subject, relation, object]` triples — from a raw text document. Built by **Semantic Swingers** for the **LLMs4OL 2026** shared task (Task A, "flagship": text → ontology triples, scored by graph similarity). If you have not heard of the challenge, the short version: given a document, produce the taxonomy/typing triples it implies. This adapter is the fine-tuned generator behind our submission. ## Which adapter is this - **Regime:** base-FT (no exemplars). - **Use `top_k = 0` at inference.** base-FT was trained without exemplars, so it is best run retrieval-free. Using the wrong `k` understates the adapter. - **Hardware:** Apple Silicon (MLX). Runs natively on Apple Silicon via MLX. - **Score:** this is the Apple-Silicon 4-bit MLX variant, a *separate artifact* from the bf16 champions — its score differs and is **not** the reported number. ## How to run it Through our OntoLearner integration (the learner ships in the fork below): ```python from ontolearner.learner.text2onto import SemanticSwingersText2OntoLearner learner = SemanticSwingersText2OntoLearner( adapter="datagero/qwen3.5-9b-ontology-extraction-baseft-mlx", base_model_id="mlx-community/Qwen3.5-9B-4bit", backend="mlx", top_k=0, ) learner.load() # learner.fit(train_docs, task="text2onto"); learner.predict(eval_docs, task="text2onto") ``` ## How it was made (the training code is part of the integration) This adapter was produced by the **same package** that serves it — training is a first-class part of the OntoLearner integration, not a separate script: - **Training code:** [`semanticswingers_train.py`](https://github.com/matias-vizcaino/OntoLearner-semanticswingers/blob/feat/semanticswingers-llms4ol2026/ontolearner/learner/text2onto/semanticswingers_train.py) — LoRA SFT with prompt masking (loss on completion tokens only) and, for RA-FT, **leave-one-out** exemplar retrieval so a training document never sees its own gold. - **Integration + reproduction:** [OntoLearner fork, PR #1](https://github.com/matias-vizcaino/OntoLearner-semanticswingers/pull/1) and the replication notebook therein (`notebooks/pipeline_ontolearner.ipynb`), which runs Tasks A/B/C end-to-end. To reproduce: `learner = SemanticSwingersText2OntoLearner(train_mode="baseft", train_backend="mlx", output_dir=...)` then `learner.fit(train_docs, task="text2onto")`. ## Intended use & limitations Research replication for the LLMs4OL 2026 shared task. Domain: general ontology construction from text; the training data is the challenge's Task A split. Not intended for production ontology engineering without validation. Inherits the base model's license and limitations.