Downloads · 30 days
158
73% of all-time downloads
Zual/soter-mini
soter-mini is a machine learning model from Zual. Use it for the machine learning task on the model card, and read the license before you ship it in a product. It is set up for transformers. The card lists the license as apache-2.0.
1 871 000 paramètres. 2,1 Mo en int8. Assez petit pour se charger instantanément dans un navigateur, et pourtant au niveau des lemmatiseurs de l'état de l'art sur les treebanks UD grec ancien.
Downloads · 30 days
158
73% of all-time downloads
All-time downloads
216
Public
Parameters
1.9M
17.6 MB on disk
Likes
0
Public
Click a slice to open those files.
.onnx10.1 MB · 57%
From the Hugging Face model README
1 871 000 paramètres. 2,1 Mo en int8. Assez petit pour se charger instantanément dans un navigateur, et pourtant au niveau des lemmatiseurs de l'état de l'art sur les treebanks UD grec ancien.
Architecture T5 entraînée from scratch (aucun poids ByT5 repris) : encodeur/décodeur 3+3
couches, d_model 128, d_ff 512, 4 têtes. Entrée au niveau de l'octet, vocabulaire de 387
— donc aucun problème de segmentation, d'OOV, ni de graphie inhabituelle.
Démo : https://lucpommeret.com/soter/ · Grand frère 60× plus gros :
Zual/soter-megas
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
tok = AutoTokenizer.from_pretrained("Zual/soter-mini")
model = AutoModelForSeq2SeqLM.from_pretrained("Zual/soter-mini")
def build_input(formes, i, ctx=8):
lo, hi = max(0, i - ctx), min(len(formes), i + 1 + ctx)
return (f"{' '.join(formes[i])} <sep> {' '.join(formes[lo:i])} "
f"<tgt> {formes[i]} </tgt> {' '.join(formes[i+1:hi])}").strip()
formes = "Ἀλέξανδρος ἐγένετο βασιλεύς".split()
enc = tok(build_input(formes, 1), return_tensors="pt")
print(tok.decode(model.generate(**enc, max_length=48)[0], skip_special_tokens=True))
# γίγνομαι
La forme cible est épelée lettre à lettre en tête, puis vient un contexte de ±8 mots avec la cible balisée. Le texte doit être en NFC : le modèle travaille sur les octets, et du NFD (accents décomposés, fréquent au copier-coller depuis macOS ou un PDF) produit du charabia.
Exports ONNX dans onnx/, fp32 et int8. La quantification int8 est gratuite ici : 0,01 point
d'écart sur les benchmarks.
Contrairement aux versions précédentes, ce modèle n'a pas de tag de treebank en entrée. Il produit toujours la convention Perseus/AGDT, celle qui s'aligne sur les vedettes du LSJ — donc celle qu'attend quelqu'un qui lemmatise pour consulter un dictionnaire.
Les conventions PROIEL et PTNK sont restituées après coup par une table de correspondance,
fournie dans tables/. Clé "forme\tlemme_perseus", valeur : le lemme de la convention cible.
import json
conv = {tuple(k.split("\t")): v for k, v in json.load(open("tables/proiel.json")).items()}
lemme_proiel = conv.get((forme, lemme_perseus), lemme_perseus)
Ce découpage est délibéré et mesuré. Les conventions de lemmatisation sont des décisions
arbitraires — PROIEL lemmatise εἶπεν en λέγω et ὑμῖν en ὑμεῖς, Perseus en εἶπον et
σύ — qu'un modèle de 1,9 M n'a aucune raison de mémoriser. Externalisées, elles deviennent
auditables et corrigeables, et la capacité du modèle va à la lemmatisation elle-même.
Les tables couvrent 3 521 conversions pour PROIEL et 366 pour PTNK ; elles sont apprises sur les
trains UD uniquement, jamais sur dev ni test.
Mesure de l'apport : à taille et budget égaux, l'entraînement mono-convention gagne +2,7 à +2,9 points sur PROIEL par rapport au même modèle entraîné avec les trois conventions et un tag, pour un effet nul ailleurs.
conll18_ud_eval, colonne Lemmas, segmentation gold, NFC)| PROIEL | Perseus | PTNK | |
|---|---|---|---|
| Sôtêr mini (1,9 M) | 97.41 ¹ | 92.75 | 98.59 ¹ |
| Sôtêr 9,6 M (multi-convention) | 94.43 | 93.06 | 98.18 |
| Sōtēr Megas (581 M) | 96.99 | 92.91 | 98.40 |
| meilleur publié | 97.48 (GreTa+Chars, R&F ACL 2023) | 91.14 (idem) | — |
¹ après application de la table de conversion fournie. Sans elle, la sortie est en convention Perseus et vaut 92.06 sur PROIEL et 94.64 sur PTNK — ces colonnes évaluent la convention cible, pas la qualité de lemmatisation.
Perseus : +1,61 sur le meilleur publié. PROIEL : 97.41 contre 97.48, une égalité. Avec 1,9 M de paramètres contre les centaines de millions des systèmes comparés.
exact = 79.28 (sans diacritiques 83.89)
Références : MTL_lemma (SOTA supervisé sur ce domaine, ACL Findings 2025) 79.31 · CLTK back-off 71.69 · GLEM 70.82 · Stanza 64.99.
79.28 contre 79.31 : égalité, à trois centièmes sur 9 982 tokens, pour une erreur-type binomiale de 0,41. La formulation défendable est égale un SOTA supervisé sur ce domaine, en zéro-shot, avec 1,9 M de paramètres — pas « dépasse ».
Distillation en deux étages : un LLM généraliste (DeepSeek V4-Flash, few-shot 128-512 exemples, sortie TSV contrainte, T=0) annote les treebanks UD ; un ByT5-base est distillé dessus (Sōtēr Megas) ; ce ByT5 réannote un corpus large, sur lequel ce modèle est entraîné.
Annotations produites par DeepSeek V4-Flash sur les trains UD grc et un échantillon de GLAUx/Diorisis. Corpus sources en CC BY-SA / CC BY ; treebanks UD grc (CC BY-NC-SA) utilisés pour l'évaluation uniquement. Poids sous Apache 2.0.
Article en préparation. Auteur : Luc Pommeret (LISN/CNRS).