From 0121906cb040e741a554fad670f29f472d3e1410 Mon Sep 17 00:00:00 2001 From: Wannaphong Phatthiyaphaibun Date: Thu, 25 Nov 2021 21:39:13 +0700 Subject: [PATCH 1/3] Spoonerism: Add supports words more 3 syllables --- pythainlp/transliterate/spoonerism.py | 11 +++++------ tests/test_transliterate.py | 7 +++---- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/pythainlp/transliterate/spoonerism.py b/pythainlp/transliterate/spoonerism.py index d6b1be5e4..7f3c6533b 100644 --- a/pythainlp/transliterate/spoonerism.py +++ b/pythainlp/transliterate/spoonerism.py @@ -10,7 +10,6 @@ def puan(word: str, show_pronunciation: bool = True) -> str: Thai Spoonerism This function converts Thai word to spoonerism word. - It only supports words with 2 to 3 syllables. :param str word: Thai word to be spoonerized :param bool show_pronunciation: True (default) or False @@ -64,10 +63,10 @@ def puan(word: str, show_pronunciation: bool = True) -> str: list_w_char[1][1], list_w_char[2][1], 1) ) else: # > 3 syllables - raise ValueError( - """{0} is more than 3 syllables.\n - It only supports words with 2 to 3 syllables.""".format(word) - ) + _list_w.append(_list_pron[0].replace(list_w_char[0][1], list_w_char[-1][1], 1)) + for i in range(1,len(list_w_char)-1): + _list_w.append(_list_pron[i]) + _list_w.append(_list_pron[-1].replace(list_w_char[-1][1], list_w_char[0][1], 1)) if not show_pronunciation: - _list_w = [i.replace("หฺ", "") for i in _list_w] + _list_w = [i.replace("หฺ", "").replace('ฺ', '') for i in _list_w] return _mix_list.join(_list_w) diff --git a/tests/test_transliterate.py b/tests/test_transliterate.py index d27b8ac03..5898b5c2f 100644 --- a/tests/test_transliterate.py +++ b/tests/test_transliterate.py @@ -155,8 +155,7 @@ def test_pronunciate(self): def test_puan(self): self.assertEqual(puan("นาริน"), "นิน-รา") - self.assertEqual(puan("นาริน", False), "นินรา") + self.assertEqual(puan("นาริน", show_pronunciation=False), "นินรา") self.assertEqual(puan("แสงดีนะ"), "แสง-ดะ-นี") - self.assertEqual(puan("แสงดีนะ", False), "แสงดะนี") - with self.assertRaises(ValueError): - self.assertEqual(puan("สวัสดีครับ"), "สวัสดีครับ") + self.assertEqual(puan("แสงดีนะ", show_pronunciation=False), "แสงดะนี") + self.assertEqual(puan("การทำความดี", show_pronunciation=False), "ดานทำความกี") From 89020f855bcac92e490d6fc5fef0edb5b0c1c0dd Mon Sep 17 00:00:00 2001 From: Wannaphong Phatthiyaphaibun Date: Thu, 25 Nov 2021 21:42:30 +0700 Subject: [PATCH 2/3] Fixed PEP8 --- pythainlp/transliterate/spoonerism.py | 10 +++++++--- tests/test_transliterate.py | 4 +++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/pythainlp/transliterate/spoonerism.py b/pythainlp/transliterate/spoonerism.py index 7f3c6533b..412d27839 100644 --- a/pythainlp/transliterate/spoonerism.py +++ b/pythainlp/transliterate/spoonerism.py @@ -63,10 +63,14 @@ def puan(word: str, show_pronunciation: bool = True) -> str: list_w_char[1][1], list_w_char[2][1], 1) ) else: # > 3 syllables - _list_w.append(_list_pron[0].replace(list_w_char[0][1], list_w_char[-1][1], 1)) - for i in range(1,len(list_w_char)-1): + _list_w.append( + _list_pron[0].replace(list_w_char[0][1], list_w_char[-1][1], 1) + ) + for i in range(1, len(list_w_char)-1): _list_w.append(_list_pron[i]) - _list_w.append(_list_pron[-1].replace(list_w_char[-1][1], list_w_char[0][1], 1)) + _list_w.append(_list_pron[-1].replace( + list_w_char[-1][1], list_w_char[0][1], 1) + ) if not show_pronunciation: _list_w = [i.replace("หฺ", "").replace('ฺ', '') for i in _list_w] return _mix_list.join(_list_w) diff --git a/tests/test_transliterate.py b/tests/test_transliterate.py index 5898b5c2f..dd5efeabb 100644 --- a/tests/test_transliterate.py +++ b/tests/test_transliterate.py @@ -158,4 +158,6 @@ def test_puan(self): self.assertEqual(puan("นาริน", show_pronunciation=False), "นินรา") self.assertEqual(puan("แสงดีนะ"), "แสง-ดะ-นี") self.assertEqual(puan("แสงดีนะ", show_pronunciation=False), "แสงดะนี") - self.assertEqual(puan("การทำความดี", show_pronunciation=False), "ดานทำความกี") + self.assertEqual( + puan("การทำความดี", show_pronunciation=False), "ดานทำความกี" + ) From b8753f85cf34994da55ac8819566c0bd891b2470 Mon Sep 17 00:00:00 2001 From: Wannaphong Phatthiyaphaibun Date: Fri, 26 Nov 2021 21:25:13 +0700 Subject: [PATCH 3/3] Update test_transliterate.py --- tests/test_transliterate.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_transliterate.py b/tests/test_transliterate.py index dd5efeabb..21ac41ffe 100644 --- a/tests/test_transliterate.py +++ b/tests/test_transliterate.py @@ -154,6 +154,7 @@ def test_pronunciate(self): self.assertIsNotNone(pronunciate("jks", engine="w2p")) def test_puan(self): + self.assertEqual(puan("แมว"), "แมว") self.assertEqual(puan("นาริน"), "นิน-รา") self.assertEqual(puan("นาริน", show_pronunciation=False), "นินรา") self.assertEqual(puan("แสงดีนะ"), "แสง-ดะ-นี")