From 5ed9bf6e0fa1aea084148057a1cd6381caf600fd Mon Sep 17 00:00:00 2001 From: Ronald Tse Date: Sat, 10 Oct 2026 20:12:00 +0800 Subject: [PATCH] fix: seq2seq decode returns primary choice, strips slash-separated alternates --- src/interscript/ml/model.py | 9 ++++++++- tests/test_first_alternates.py | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 tests/test_first_alternates.py diff --git a/src/interscript/ml/model.py b/src/interscript/ml/model.py index 3a4ad93..fcc084e 100644 --- a/src/interscript/ml/model.py +++ b/src/interscript/ml/model.py @@ -10,6 +10,13 @@ from interscript.ml.loader import load_manifest, verify_and_read +def first_alternates(text: str) -> str: + """Seq2seq output contract: models trained on multi-reference + corpora emit '/'-separated alternates per token; the runtime + returns the primary choice only.""" + return " ".join(part.split("/", 1)[0] for part in text.split()) + + class Model: """A loaded, checksum-verified IMF v1 model. @@ -61,7 +68,7 @@ def id(self) -> str: def translate(self, text: str, max_len: int = 256) -> str: token_ids = self.generate(text, max_len=max_len) - return decode(token_ids) + return first_alternates(decode(token_ids)) def generate(self, text: str, max_len: int = 256) -> list[int]: ids = np.array([encode(text)], dtype=np.int64) diff --git a/tests/test_first_alternates.py b/tests/test_first_alternates.py new file mode 100644 index 0000000..f140667 --- /dev/null +++ b/tests/test_first_alternates.py @@ -0,0 +1,15 @@ +from interscript.ml.model import first_alternates + + +def test_first_alternates_keeps_primary_choice_per_token(): + assert first_alternates("وِكَالَةُ/وِكَالَةُ اَلْأَرْصَادِ") == "وِكَالَةُ اَلْأَرْصَادِ" + + +def test_first_alternates_plain_text_untouched(): + assert first_alternates("مرحبا بالعالم") == "مرحبا بالعالم" + + +def test_first_alternates_edges(): + assert first_alternates("") == "" + assert first_alternates("a/b c/d") == "a c" + assert first_alternates("مَارْغِرِيتْ/مَارْغِرِيتْ/مَارْغِرِيتُ اَلثَّانِيَةُ") == "مَارْغِرِيتْ اَلثَّانِيَةُ"