diff --git a/pythainlp/transliterate/tltk.py b/pythainlp/transliterate/tltk.py index 12da6c25c..16581b800 100644 --- a/pythainlp/transliterate/tltk.py +++ b/pythainlp/transliterate/tltk.py @@ -16,15 +16,21 @@ def romanize(text: str) -> str: :return: A string of Thai words rendered in the Latin alphabet. :rtype: str """ + # Replace ฅ with ค to avoid KeyError in tltk (out-of-vocabulary issue) + text = text.replace("ฅ", "ค") _temp = th2roman(text) return _temp[: _temp.rfind(" ")].replace("", "") def tltk_g2p(text: str) -> str: + # Replace ฅ with ค to avoid KeyError in tltk (out-of-vocabulary issue) + text = text.replace("ฅ", "ค") _temp = g2p(text).split("")[1].replace("|", "").replace("|", " ") return _temp.replace("", "") def tltk_ipa(text: str) -> str: + # Replace ฅ with ค to avoid KeyError in tltk (out-of-vocabulary issue) + text = text.replace("ฅ", "ค") _temp = th2ipa(text) return _temp[: _temp.rfind(" ")].replace("", "") diff --git a/tests/extra/testx_transliterate.py b/tests/extra/testx_transliterate.py index 231f3b510..43683f8ce 100644 --- a/tests/extra/testx_transliterate.py +++ b/tests/extra/testx_transliterate.py @@ -18,6 +18,8 @@ class TransliterateTestCaseX(unittest.TestCase): def test_romanize(self): self.assertEqual(romanize("แมว", engine="tltk"), "maeo") + # Test for character ฅ (issue: Transliterator cannot handle ฅ) + self.assertIsNotNone(romanize("ภาษาไวคาลีฅ", engine="tltk")) def test_romanize_thai2rom(self): self.assertEqual(romanize("แมว", engine="thai2rom"), "maeo") @@ -146,6 +148,9 @@ def test_transliterate(self): self.assertIsNotNone(transliterate("แมว", engine="tltk_g2p")) self.assertIsNotNone(transliterate("คน", engine="tltk_ipa")) self.assertIsNotNone(transliterate("แมว", engine="tltk_ipa")) + # Test for character ฅ (issue: Transliterator cannot handle ฅ) + self.assertIsNotNone(transliterate("ภาษาไวคาลีฅ", engine="tltk_g2p")) + self.assertIsNotNone(transliterate("ภาษาไวคาลีฅ", engine="tltk_ipa")) self.assertIsNotNone(trans_list("คน")) self.assertIsNotNone(xsampa_list("คน"))