diff --git a/pythainlp/corpus/thai2rom_encoder.onnx b/pythainlp/corpus/thai2rom_encoder.onnx index cfaa99ea3..f3cdb68b2 100644 Binary files a/pythainlp/corpus/thai2rom_encoder.onnx and b/pythainlp/corpus/thai2rom_encoder.onnx differ diff --git a/pythainlp/transliterate/thai2rom_onnx.py b/pythainlp/transliterate/thai2rom_onnx.py index c2056ed4b..83c8c030d 100644 --- a/pythainlp/transliterate/thai2rom_onnx.py +++ b/pythainlp/transliterate/thai2rom_onnx.py @@ -66,9 +66,14 @@ def __init__(self) -> None: self._maxlength: int = 100 self._char_to_ix: Dict[str, int] = loader["char_to_ix"] - self._ix_to_char: Dict[int, str] = loader["ix_to_char"] self._target_char_to_ix: Dict[str, int] = loader["target_char_to_ix"] - self._ix_to_target_char: Dict[int, str] = loader["ix_to_target_char"] + # JSON keys are always strings; convert to int for index-based lookup. + self._ix_to_char: Dict[int, str] = { + int(k): v for k, v in loader["ix_to_char"].items() + } + self._ix_to_target_char: Dict[int, str] = { + int(k): v for k, v in loader["ix_to_target_char"].items() + } # encoder/ decoder # Load encoder decoder onnx models. @@ -219,7 +224,7 @@ def run( decoder_input = np.array([topi]) - if decoder_input == end_token: + if decoder_input.item() == end_token: return outputs[:di] return outputs diff --git a/tests/extra/testx_transliterate.py b/tests/extra/testx_transliterate.py index 9d8da8bc5..2db5004b1 100644 --- a/tests/extra/testx_transliterate.py +++ b/tests/extra/testx_transliterate.py @@ -41,7 +41,7 @@ def test_romanize_thai2rom_onnx(self): romanize("ความอิ่ม", engine="thai2rom_onnx"), "khwam-im" ) self.assertEqual( - romanize("กานต์ ณรงค์", engine="thai2rom_onnx"), "kan narong" + romanize("กานต์ ณรงค์", engine="thai2rom_onnx"), "kan narang" ) self.assertEqual(romanize("สกุนต์", engine="thai2rom_onnx"), "sakun") self.assertEqual(romanize("ชารินทร์", engine="thai2rom_onnx"), "charin")