Instructions to use tropicals/Tropicals-T1 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- sentence-transformers
How to use tropicals/Tropicals-T1 with sentence-transformers:
from sentence_transformers import SentenceTransformer model = SentenceTransformer("tropicals/Tropicals-T1") sentences = [ "那是 個快樂的人", "那是 條快樂的狗", "那是 個非常幸福的人", "今天是晴天" ] embeddings = model.encode(sentences) similarities = model.similarity(embeddings, embeddings) print(similarities.shape) # [4, 4] - Notebooks
- Google Colab
- Kaggle
Tropicals-T1
The first release of an open model programme for tropical species. Names are the coordinate system of species data, so the programme starts at the name layer: give Tropicals-T1 a Chinese name — a formal common name, a market trade name, a horticultural cultivar label — and it retrieves the matching taxon from a corpus of 419,950 tropical taxa.
This is the first published embedding model for this task. GBIF and Catalogue of
Life name-matching services accept scientific names only. The text towers of BioCLIP
and PlantCLEF are English. General-purpose Chinese embedding models have no taxonomic
grounding — we measured the un-fine-tuned BAAI/bge-small-zh-v1.5 at 0.03 %
Recall@1 on this task.
Trained by Tropicals.cn on tropicals/vernacular-names-zh, 1.2 M vernacular-name ↔ taxon pairs with four-tier provenance labelling.
Usage
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("tropicals/Tropicals-T1")
# Document side: "scientific_name | family | genus | category_zh"
docs = [
"Monstera deliciosa | Araceae | Monstera | 热带植物",
"Poecilia reticulata | Poeciliidae | Poecilia | 热带水生",
]
q = model.encode(["龟背竹"], normalize_embeddings=True)
d = model.encode(docs, normalize_embeddings=True)
print((q @ d.T).argmax(axis=1))
The document side carries no Chinese name by design — a document containing the answer would make both training and evaluation meaningless. The model has to align Chinese morphology (genus-name suffixes, epithet translation, transliteration markers) to Latin binomials and their placement.
Evaluation — TropicalsBench
Scored on TropicalsBench, the open benchmark we publish for tropical species models. Its first task is Chinese name retrieval, and this model is its first entry. Retrieval runs over the full corpus of 419,950 taxa with no candidate pruning; random chance is 2.4e-06.
Seen genus (n = 3,000)
| rank | model | Recall@1 | Recall@5 | Recall@10 |
|---|---|---|---|---|
| family | baseline | 0.0110 | 0.0367 | 0.0557 |
| family | v0.1 | 0.4093 | 0.4820 | 0.5140 |
| family | this model (v0.2) | 0.5343 | 0.6303 | 0.6670 |
| genus | baseline | 0.0013 | 0.0053 | 0.0057 |
| genus | v0.1 | 0.1360 | 0.1930 | 0.2303 |
| genus | this model (v0.2) | 0.1943 | 0.3523 | 0.4340 |
| species | baseline | 0.0003 | 0.0003 | 0.0010 |
| species | v0.1 | 0.0087 | 0.0273 | 0.0467 |
| species | this model (v0.2) | 0.0903 | 0.1753 | 0.2173 |
Unseen genus (n = 775)
| rank | model | Recall@1 | Recall@5 | Recall@10 |
|---|---|---|---|---|
| family | baseline | 0.0077 | 0.0245 | 0.0374 |
| family | v0.1 | 0.3742 | 0.4335 | 0.4581 |
| family | this model (v0.2) | 0.5058 | 0.6310 | 0.6826 |
| genus | baseline | 0.0013 | 0.0052 | 0.0065 |
| genus | v0.1 | 0.0103 | 0.0439 | 0.0774 |
| genus | this model (v0.2) | 0.0723 | 0.1845 | 0.2619 |
| species | baseline | 0.0000 | 0.0000 | 0.0013 |
| species | v0.1 | 0.0039 | 0.0194 | 0.0335 |
| species | this model (v0.2) | 0.0400 | 0.1097 | 0.1445 |
Baseline is the un-finetuned BAAI/bge-small-zh-v1.5. Retrieval runs over the full corpus of 419,950 taxa. The benchmark — both test sets, the candidate pool, the split hashes and the gold criterion — is byte-identical to the one published with v0.1.
Two test sets, both reported. test_seen_genus holds out single species while their
genus stays in training — the realistic case of a new species in a known genus.
test_unseen_genus holds out entire genera, measuring generalisation to Chinese
genus names the model has never seen. Scores on the first are optimistic and on the
second pessimistic relative to production use; the pair brackets the real number.
Because retrieval documents carry no Chinese name, lexical and string matching score at chance here by construction: the benchmark measures retrieval precisely in the regime where a name is not already in an index.
Splits are assigned by deterministic hashing (FNV-1a, fixed salts), so anyone can reproduce them from the source data. Evaluation code ships with the dataset, and results on the same splits can be submitted through its discussion tab.
Intended use
Retrieval and entity linking: mapping Chinese name strings onto taxa. Useful for search, catalogue reconciliation, and normalising trade or horticultural names against a taxonomic backbone.
It operates on text, so it does not identify organisms from images or specimens. It
should also not be used to mint Chinese names for taxa that lack one — the training
data includes 116,512 machine-transliterated provisional names, which are valid
things to search for but are not established nomenclature.
Training
v0.2 (current release). v0.1 learned coarse Chinese-morphology-to-clade mapping but could not separate species within a genus (0.87 % species Recall@1). With in-batch negatives drawn uniformly from 419,950 taxa, the objective never required telling Ficus lyrata from Ficus megalophylla — the model was never trained on the thing TropicalsBench measures. v0.2 changes the training signal, not just the parameter count.
| base | BAAI/bge-base-zh-v1.5 (102 M params, 768-dim) |
| objective | CachedMultipleNegativesRankingLoss (GradCache) |
| explicit negatives | 4 per anchor — 3 congeneric + 1 confamilial |
| training rows | 1,085,820 triplets built from 1,084,621 name ↔ taxon pairs |
| auxiliary supervision | 4,553 epithet-gloss pairs |
| schedule | 1,144 steps at batch 128, two stages (lr 3e-5 then 1e-5, cosine) |
| max seq length | 48 |
| hardware | Apple M2, MPS, ~8 h unattended |
Congeneric hard negatives
Negatives are drawn from the anchor's own genus — falling back to the family for monotypic genera — rather than mined with the model's own embeddings. Embedding-mined negatives inherit the blind spot being corrected: they are only "hard" according to a model that cannot tell congeners apart. Congeneric membership is a taxonomic fact, and it targets the failure mode exactly. 94.0 % of anchors receive a full complement of three congeners; the rest fall back to the family.
Candidates that share any Chinese vernacular with the anchor query are excluded from its negative set, so a name that genuinely refers to several taxa is never trained against itself.
Epithet-gloss supervision
The corpus carries Chinese glosses for the Latin specific epithets of 75,067 taxa (deliciosa → 「美味」). Both test sets hold out whole species, so species-rank retrieval cannot be solved by memorising a name-to-taxon table; the compositional route — Chinese descriptor ↔ epithet meaning — is the part that can generalise to a species never seen. Gloss pairs supervise that route directly.
What the run actually consumed
The compute window bounded the schedule, so training is not a full pass over the
pair set. The 146,432 anchor updates comprise a 49,014-row priority bucket (gloss pairs
×4, authoritative primary names ×2) seen in both stages, plus 48,404 draws from the
277,274 aligned/unassessed primary-name rows. Roughly 730 K alias-heavy and
provisional rows were never reached. Tier priority replaces v0.1's weighted
resampling; the ordering rationale is unchanged — all tiers are things users search
for, but machine-transliterated names must not dominate the embedding space.
That the highest-scoring version so far has seen ~13 % of its own training data is worth stating plainly: it is a bound on the compute available, not evidence that the remainder is unhelpful.
Limitations
- Label noise in the gold set. The
authoritativetier is attached to a taxon's primary name, but the original classifier matched against its whole Chinese-name set. Re-verification of 200 sampled rows (2026-08-22) found 80.0 % of primary names still match the authority exactly, so gold labels carry roughly 20 % noise. Model-vs-baseline comparisons on the same split remain valid. test_unseen_genushas 775 gold queries; its 95 % CI on Recall@1 is about ±3.5 pp.- Coverage is trade and husbandry oriented, not a biogeographic sample of the tropics.
- Bird taxonomy follows IOC v15.2, superseded by AviList v2025.
- Species-rank scores carry a structural ceiling. Both test sets hold out entire species, so any Chinese name that is an arbitrary convention rather than a description of the taxon is unrecoverable in principle. The gold-label noise above compounds this.
- v0.2 is trained on ~13 % of the available pairs (see above), so the headroom from simply continuing the same recipe is real and untested.
- Everyday trade names are under-trained relative to the benchmark. The gold
criterion for both test sets is
authoritative+ primary name, and the v0.2 schedule spent both stages on that bucket. Theunassessedtier — which carries many of the most-searched market names (孔雀鱼 guppy, 散尾葵 areca palm, 龟背竹 monstera) — was only partially reached. Spot checks on those names are still wrong at rank 1, and at least one (散尾葵) resolves to a worse family than it did under v0.1. TropicalsBench cannot see this, by construction. It is a scheduling consequence, not a property of the method, and it is the first thing the next run should fix. - Cultivars, hybrids and animal morphs are in the corpus but thinly covered by authoritative names, so retrieval on them is weaker than on species.
Citation
@misc{tropicals_t1,
title = {Tropicals-T1: an open Chinese name encoder for tropical species},
author = {{Tropicals.cn}},
year = {2026},
url = {https://huggingface.co/tropicals/Tropicals-T1}
}
If you report scores on the benchmark, cite it as well:
@misc{tropicalsbench,
title = {TropicalsBench: an open benchmark for tropical species models},
author = {{Tropicals.cn}},
year = {2026},
url = {https://tropicals.cn/models/benchmark}
}
License
CC-BY 4.0. Attribution: Tropicals.cn (https://tropicals.cn).
- Downloads last month
- -
Model tree for tropicals/Tropicals-T1
Base model
BAAI/bge-base-zh-v1.5