From e1e3614517cf99f400ee2ee314600fccf873d1b4 Mon Sep 17 00:00:00 2001 From: Arthit Suriyawongkul Date: Tue, 9 Nov 2021 04:29:22 +0000 Subject: [PATCH 1/2] Fix load_dict() output type, add unittest --- nlpo3-python/Cargo.lock | 2 +- nlpo3-python/Cargo.toml | 2 +- nlpo3-python/nlpo3/__init__.py | 24 +++- nlpo3-python/pyproject.toml | 2 +- nlpo3-python/setup.cfg | 2 +- nlpo3-python/src/lib.rs | 8 ++ nlpo3-python/tests/__init__.py | 12 ++ nlpo3-python/tests/data/test_dict.txt | 7 + nlpo3-python/tests/test_tokenize.py | 200 ++++++++++++++++++++++++++ 9 files changed, 251 insertions(+), 8 deletions(-) create mode 100644 nlpo3-python/tests/__init__.py create mode 100644 nlpo3-python/tests/data/test_dict.txt create mode 100644 nlpo3-python/tests/test_tokenize.py diff --git a/nlpo3-python/Cargo.lock b/nlpo3-python/Cargo.lock index 272d5c9..1d0aae4 100644 --- a/nlpo3-python/Cargo.lock +++ b/nlpo3-python/Cargo.lock @@ -222,7 +222,7 @@ dependencies = [ [[package]] name = "nlpo3-python" -version = "1.2.0" +version = "1.2.1" dependencies = [ "ahash", "lazy_static", diff --git a/nlpo3-python/Cargo.toml b/nlpo3-python/Cargo.toml index 689c13e..09261b9 100644 --- a/nlpo3-python/Cargo.toml +++ b/nlpo3-python/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nlpo3-python" -version = "1.2.0" +version = "1.2.1" edition = "2018" license = "Apache-2.0" authors = ["Thanathip Suntorntip Gorlph"] diff --git a/nlpo3-python/nlpo3/__init__.py b/nlpo3-python/nlpo3/__init__.py index bf26d8d..d04c11b 100644 --- a/nlpo3-python/nlpo3/__init__.py +++ b/nlpo3-python/nlpo3/__init__.py @@ -1,4 +1,13 @@ -from typing import List +# Python-binding for nlpO3, an natural language process library. +# +# Provides a tokenizer. +# +# Authors: +# Thanathip Suntorntip +# Arthit Suriyawongkul + +from pathlib import Path +from typing import List, Tuple # import from .so (Rust) from ._nlpo3_python_backend import load_dict as rust_load_dict @@ -6,20 +15,23 @@ # TODO: load_dict from in-memory list of words -def load_dict(file_path: str, dict_name: str) -> tuple[str, bool]: + +def load_dict(file_path: str, dict_name: str) -> Tuple[str, bool]: """Load dictionary from a file. Load a dictionary file into an in-memory dictionary collection, and assigned dict_name to it. *** This function does not override an existing dict name. *** - :param file_path: Absolute path to a dictionary file + :param file_path: Path to a dictionary file :type file_path: str :param dict_name: A unique dictionary name, use for reference. :type dict_name: str :return tuple[human_readable_result_str, bool] """ - return rust_load_dict(file_path, dict_name) + path = Path(file_path).resolve() + + return rust_load_dict(str(path), dict_name) def segment( @@ -46,5 +58,9 @@ def segment( :return: List of tokens :rtype: List[str] """ + if not text or not isinstance(text, str): + return [] + result = rust_segment(text, dict_name, safe, parallel) + return result diff --git a/nlpo3-python/pyproject.toml b/nlpo3-python/pyproject.toml index ece2404..d50d40d 100644 --- a/nlpo3-python/pyproject.toml +++ b/nlpo3-python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "nlpo3" -version = "1.2.0" +version = "1.2.1" description = "Python binding for nlpO3 Thai language processing library in Rust" readme = "README.md" requires-python = ">=3.6" diff --git a/nlpo3-python/setup.cfg b/nlpo3-python/setup.cfg index be18c8a..cf6d75d 100644 --- a/nlpo3-python/setup.cfg +++ b/nlpo3-python/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = nlpo3 -version = 1.2.0 +version = 1.2.1 description = Python binding for nlpO3 Thai language processing library long_description = Python binding for nlpO3, a Thai natural language processing library in Rust. diff --git a/nlpo3-python/src/lib.rs b/nlpo3-python/src/lib.rs index e5be9b2..56e53b3 100644 --- a/nlpo3-python/src/lib.rs +++ b/nlpo3-python/src/lib.rs @@ -1,3 +1,11 @@ +//! Python-binding for nlpO3, an natural language process library. +//! +//! Provides a tokenizer. +//! +//! Authors: +//! Thanathip Suntorntip +//! Arthit Suriyawongkul + use ahash::AHashMap as HashMap; use lazy_static::lazy_static; use nlpo3::tokenizer; diff --git a/nlpo3-python/tests/__init__.py b/nlpo3-python/tests/__init__.py new file mode 100644 index 0000000..b961bcd --- /dev/null +++ b/nlpo3-python/tests/__init__.py @@ -0,0 +1,12 @@ +""" +Unit test +""" +import sys +import unittest + +sys.path.append("../nlpo3") + +loader = unittest.TestLoader() +testSuite = loader.discover("tests") +testRunner = unittest.TextTestRunner(verbosity=1) +testRunner.run(testSuite) diff --git a/nlpo3-python/tests/data/test_dict.txt b/nlpo3-python/tests/data/test_dict.txt new file mode 100644 index 0000000..a1fabc0 --- /dev/null +++ b/nlpo3-python/tests/data/test_dict.txt @@ -0,0 +1,7 @@ +ค่า +ค่าจ้าง +ค่าจ้างเพื่อชีวิต +ค่าแรง +ค่ายทหาร +คน +ไข่ diff --git a/nlpo3-python/tests/test_tokenize.py b/nlpo3-python/tests/test_tokenize.py new file mode 100644 index 0000000..af1f42f --- /dev/null +++ b/nlpo3-python/tests/test_tokenize.py @@ -0,0 +1,200 @@ +import unittest +from typing import List + +from nlpo3 import load_dict, segment + + +class TestTokenizePackage(unittest.TestCase): + def setUp(self): + self.TEXT_1 = "หมอนทองตากลมหูว์MBK39 :.ฉฺ๐๐๓-#™±" + self.TEXT_2 = "ทดสอบ" + + self.LONG_TEXT = ( + "ไต้หวัน (แป่ะเอ๋ยี้: Tâi-oân; ไต่อวัน) หรือ ไถวาน " + "(อักษรโรมัน: Taiwan; จีนตัวย่อ: 台湾; จีนตัวเต็ม: 臺灣/台灣; พินอิน: " + "Táiwān; ไถวาน) หรือชื่อทางการว่า สาธารณรัฐจีน (จีนตัวย่อ: 中华民国; " + "จีนตัวเต็ม: 中華民國; พินอิน: Zhōnghuá " + "Mínguó) เป็นรัฐในทวีปเอเชียตะวันออก[7][8][9] ปัจจุบันประกอบด้วย" + "เกาะใหญ่ 5 แห่ง คือ จินเหมิน (金門), ไต้หวัน, เผิงหู (澎湖), หมาจู่ " + "(馬祖), และอูชิว (烏坵) กับทั้งเกาะเล็กเกาะน้อยอีกจำนวนหนึ่ง " + 'ท้องที่ดังกล่าวเรียกรวมกันว่า "พื้นที่ไต้หวัน" (臺灣地區)\n' + "ไต้หวันด้านตะวันตกติดกับจีนแผ่นดินใหญ่ ด้านตะวันออกและตะวันออก" + "เฉียงเหนือติดกับญี่ปุ่น และด้านใต้ติดกับฟิลิปปินส์ กรุงไทเปเป็น" + "เมืองหลวง ส่วนไทเปใหม่เป็นเขตปกครองที่จัดตั้งขึ้นใหม่ กินพื้นที่" + "กรุงไทเปและเป็นเขตซึ่งประชากรหนาแน่นที่สุดในเวลานี้\n" + "เกาะไต้หวันเดิมเป็นที่อยู่ของชนพื้นเมือง และมีชาวจีนจากแผ่นดิน" + "ใหญ่เข้ามาอาศัยร่วมด้วย จนกระทั่งชาววิลันดาและสเปนเดินทางเข้า" + "มาในยุคสำรวจเมื่อศตวรรษที่ 17 และมาตั้งบ้านเรือนกลายเป็นนิคม" + "ใหญ่โต ต่อมาปี 1662 ราชวงศ์หมิงในแผ่นดินใหญ่ถูกราชวงศ์ชิงแทนที่ " + "เจิ้ง เฉิงกง (鄭成功) ขุนศึกหมิง รวมกำลังหนีมาถึงเกาะไต้หวัน " + "และรุกไล่ฝรั่งออกไปได้อย่างราบคาบ เขาจึงตั้งราชอาณาจักรตงหนิง " + '(東寧) ขึ้นบนเกาะเพื่อ "โค่นชิงฟื้นหมิง" แต่ในปี 1683 ราชวงศ์' + "ชิงปราบปรามอาณาจักรตงหนิงและเข้าครอบครองไต้หวันเป็นผลสำเร็จ " + "ไต้หวันจึงกลายเป็นมณฑลหนึ่งของจีน อย่างไรก็ดี ความบาดหมางระหว่าง" + "จีนกับญี่ปุ่นเป็นเหตุให้ญี่ปุ่นได้ไต้หวันไปในปี 1895\n" + "ก่อนเสียไต้หวันคืนแก่จีนหลังสงครามโลกครั้งที่สอง ช่วงนั้น มีการ" + "เปลี่ยนแปลงการปกครองในจีน พรรคก๊กมินตั๋ง ได้เป็นใหญ่ " + "แต่ไม่นานก็เสียทีให้แก่พรรคคอมมิวนิสต์จีน พรรคก๊กมินตั๋งจึงหนี" + "มายังเกาะไต้หวันและสถาปนาสาธารณรัฐจีนขึ้นบนเกาะแยกต่างหาก " + "ส่วนฝ่ายคอมมิวนิสต์จีนที่เป็นฝ่ายได้รับชัยชนะได้สถาปนาสาธารณรัฐ" + "ประชาชนจีนบนแผ่นดินใหญ่ อย่างไรก็ดี จีนยังคงถือว่า ไต้หวันเป็น" + "มณฑลหนึ่งของตน และไต้หวันเองก็ยังมิได้รับการยอมรับจากนานาชาติ" + "ว่าเป็นประเทศเอกราชมาจนบัดนี้\n" + "ในช่วงทศวรรษ 1980 ถึงต้นทศวรรษ 1990 การเมืองการปกครอง" + "สาธารณรัฐจีน (ไต้หวัน) เจริญรุ่งเรืองจนเป็นประชาธิปไตยที่มีพรรค" + "การเมืองหลายพรรคและมีการเลือกตั้งทั่วหน้า ในช่วงกลางศตวรรษที่ " + "20 เศรษฐกิจไต้หวันงอกงามอย่างรวดเร็ว ไต้หวันจึงกลายเป็นประเทศ" + "พัฒนาแล้ว ได้ชื่อว่าเป็นหนึ่งในสี่เสือแห่งเอเชีย มีอุตสาหกรรม" + "ล้ำหน้า และมีเศรษฐกิจใหญ่โตเป็นอันดับที่ 19 ของโลก[11][12] " + "อุตสาหกรรมที่ใช้เทคโนโลยีชั้นสูงของไต้หวันยังมีบทบาทสำคัญมากใน" + "เศรษฐกิจโลก เป็นเหตุให้ไต้หวันได้เป็นสมาชิกองค์การการค้าโลกและ" + "ความร่วมมือทางเศรษฐกิจเอเชีย-แปซิฟิก เสรีภาพของสื่อมวลชน เสรี" + "ภาพทางเศรษฐกิจ การสาธารณสุข[13]การศึกษา และดัชนีการพัฒนามนุษย์ใน" + "ไต้หวันยังได้รับการจัดอยู่ในอันดับสูงด้วย[14][4][15]\n" + "สาธารณรัฐจีน มีลักษณะเป็นกลุ่มเกาะ ภูมิประเทศติดกับทะเล ไม่ติด" + "กับประเทศใดเลย ห่างจากเกาะทางทิศเหนือและทิศตะวันตกเป็นสาธารณรัฐ" + "ประชาชนจีน ทิศใต้เป็นประเทศฟิลิปปินส์และทะเลจีนใต้ ส่วนทิศ" + "ตะวันออกเป็นมหาสมุทรแปซิฟิก\n" + "ในปี ค.ศ. 1638 หลังการพ่ายแพ้ของหลานชายของเจิ้ง เฉิงกง " + "จากการบุกโจมตีทางทัพเรือของราชวงศ์ชิงแมนจูที่นำทัพโดยชื่อ หลาง" + "จากทางใต้ของมณฑลฝูเจี้ยน ทำให้ราชวงศ์ชิงผนวกยึดเกาะไต้หวันเป็น" + "ส่วนหนึ่งสำเร็จ และวางไว้ภายใต้เขตอำนาจของมณฑลฝูเจี้ยน ราชสำนัก" + "ราชวงศ์ชิงพยายามลดการละเมิดสิทธิ์และความไม่ลงรอยกันในพื้นที่โดย" + "ออกกฎหมายเพื่อจัดการตรวจคนเข้าเมืองและเคารพสิทธิในที่ดินของชน" + "พื้นเมืองไต้หวัน ผู้อพยพจากฝูเจี้ยนทางใต้ส่วนใหญ่ยังคงเดินทางไป" + "ไต้หวัน เขตแดนระหว่างดินแดนที่เสียภาษีและสิ่งที่ถูกพิจารณาว่า" + 'เป็นดินแดน "เขตอันตราย" เปลี่ยนไปทางทิศตะวันออกโดยชาวพื้นเมือง' + "บางคนเข้ารีตรับวัฒนธรรมแบบจีน ในขณะที่คนอื่นถอยกลับเข้าในภูเขา " + "ในช่วงเวลานี้มีความขัดแย้งจำนวนมากระหว่างกลุ่มชาวฮั่นด้วยกันเอง" + "จากภูมิภาคต่าง ๆ ของฝูเจี้ยนทางใต้โดยเฉพาะอย่างยิ่งระหว่างเฉวียน" + "โจวกับฉางโจว และระหว่างฝูเจี้ยนตอนใต้และชาวพื้นเมืองไต้หวัน\n" + "พ.ศ. 2454 (ค.ศ. 1911) การจลาจลอู่ฮั่นในประเทศจีน เป็นจุดเริ่มต้น" + "การล่มสลายของราชวงศ์ชิง เมื่อพรรคคอมมิวนิสต์จีนเข้ามีอำนาจในจีน" + "แผ่นดินใหญ่เมื่อ พ.ศ. 2492 (1949) พรรคก๊กมินตั๋ง พรรคการเมือง" + "ชาตินิยมของจีนที่เป็นฝ่ายแพ้ก็พาผู้คนอพยพหนีออกจากแผ่นดินใหญ่มา" + "ตั้งหลักที่ไต้หวัน เพื่อวางแผนกลับไปครองอำนาจในจีนต่อไป\n" + "ชาวจีนมากกว่า 1 ล้าน 5 แสนคน อพยพตามมาอยู่ที่เกาะไต้หวันในยุคที่" + "เหมา เจ๋อตง มีอำนาจเต็มที่ในจีนแผ่นดินใหญ่ ผู้นำของประเทศทั้งสอง" + "จีนคือผู้นำพรรคคอมมิวนิสต์กับผู้นำสาธารณรัฐจีนบนเกาะไต้หวัน แย่ง" + "กันเป็นกระบอกเสียงของประชาชนจีนในเวทีโลก แต่เสียงของนานาประเทศ" + "ส่วนใหญ่เกรงอิทธิพลของจีนแผ่นดินใหญ่ จึงให้การยอมรับจีนแผ่นดิน" + "ใหญ่มากกว่า\n" + "ในปี พ.ศ. 2514 (ค.ศ. 1971) ก่อนที่นายพล เจียง ไคเช็ก" + "(ภาษาจีน: 蔣中正) จะถึงอสัญกรรมไม่กี่ปี สาธารณรัฐจีนซึ่งเป็น" + "ประเทศที่ร่วมก่อตั้งองค์การสหประชาชาติได้สูญเสียสมาชิกภาพใน" + "ฐานะตัวแทนชาวจีนให้กับสาธารณรัฐประชาชนจีน ในปี พ.ศ. 2521 (1978)" + "สหประชาชาติประกาศรับรองจีนเดียวคือจีนแผ่นดินใหญ่และตัดสัมพันธ์" + "ทางการเมืองกับสาธารณรัฐจีน ทั้งสหรัฐอเมริกาก็ได้ถอนการรับรองว่า" + "สาธารณรัฐจีนมีฐานะเป็นรัฐ ไต้หวันจึงกลายเป็นเพียงดินแดนที่จีน" + "อ้างว่าเป็นส่วนหนึ่งของสาธารณรัฐประชาชนจีนตั้งแต่นั้นเป็นต้นมา\n" + "เมื่อเจียง ไคเช็ก ถึงแก่อสัญกรรมในปี พ.ศ. 2518 (1975) ลูกชาย" + "ที่ชื่อ เจี่ยง จิงกั๋ว ได้เป็นผู้สืบทอดการปกครอง" + "ไต้หวันต่อและเริ่มกระบวนการ วางรากฐานไปสู่ประชาธิปไตย\n" + "หลังจากที่ประธานาธิบดี เจียง จิงกั๋ว เสียชีวิต ไต้หวันจึงได้เข้า" + "สู่ระบอบประชาธิปไตยเต็มรูปแบบ ประธานาธิบดีคนใหม่ ซึ่งเกิดใน" + "ไต้หวัน ชื่อ หลี่ เติงฮุย ขึ้นบริหารประเทศ โดยการสนับสนุนของ" + "เจี่ยง จิงกั๋ว ทั้งที่ หลี่ เติงฮุย นั้นเคลื่อนไหว" + "สนับสนุนเอกราชไต้หวัน นาย รัฐบาลจีนที่ปักกิ่งได้ตั้ง" + 'ฉายาประธานาธิบดีไต้หวันคนใหม่ว่า "จิ้งจกปากหวาน" ' + "ช่วงเวลาที่นายหลี่ เติงฮุย เป็นประธานาธิบดี การเมืองของไต้หวัน" + "เกิดการแตกแยกออกเป็น 3 ฝ่ายคือ 1) พวกก๊กมินตั๋ง ที่ต้องการกลับ" + "ไปรวมประเทศกับจีนแผ่นดินใหญ่ (รวมจีนแผ่นดินใหญ่ภายใต้การปกครอง" + "ของสาธารณรัฐจีน) 2) พวกที่ต้องการให้ไต้หวันเป็นประเทศอิสระไม่" + "เกี่ยวข้องกับจีนแผ่นดินใหญ่ และ 3) พวกที่ต้องการดำรงฐานะของ" + "ประเทศไว้ดังเดิมต่อไป\n" + "ไต้หวันกับจีนแผ่นดินใหญ่นัดเจรจาหาทางออกของข้อขัดแย้งทางการเมือง" + "ครั้งแรกที่สิงคโปร์เมื่อปี พ.ศ. 2536 (ค.ศ. 1993) แต่ปรากฏว่าจีน" + "แผ่นดินใหญ่ประวิงเวลาลงนามในสัญญาหลายฉบับที่เป็นข้อตกลงร่วมกัน " + "ทำให้ผลการเจรจาคราวนั้นไม่ก้าวหน้าไปถึงไหน ความสัมพันธ์ระหว่าง" + "สองจีนเลวร้ายลงทุกที เมื่อประธานาธิบดี หลี่ เติงฮุย เดินทางไป" + "เยือนสหรัฐอเมริกาและได้รับการยอมรับอย่างเอิกเกริก ทำให้จีนแผ่น" + "ดินใหญ่ไม่พอใจอย่างมาก จึงข่มขวัญไต้หวันกับประเทศที่ให้การสนับ" + "สนุนไต้หวัน ด้วยการทำการซ้อมรบขึ้นใกล้ ๆ เกาะไต้หวัน สหรัฐ" + "อเมริกาออกมาแสดงอาการปกป้องคุ้มครองไต้หวันด้วยการส่งกำลังกอง" + "เรือรบของสหรัฐฯ มาป้วนเปี้ยนอยู่ในน่านน้ำที่จีนซ้อมรบ\n" + "ขณะที่โลกกำลังล่อแหลมกับสถานการณ์ที่ตึงเครียดในน่านน้ำจีนมาก" + "ขึ้นทุกทีนั้น ไต้หวันก็จัดให้มีการเลือกตั้งครั้งใหม่ และในการ" + "เลือกตั้งครั้งใหม่นั้นเอง ไต้หวันก็ได้นายหลี่ เติงฮุย เป็น" + "ประธานาธิบดีอีกครั้ง\n" + "ไต้หวันเข้าสู่สภาวะวิกฤต เมื่อเกิดแผ่นดินไหวครั้งร้ายแรงที่สุดใน" + "ประวัติศาสตร์ในเดือนกันยายน พ.ศ. 2542 (ค.ศ. 1999) ทำให้ประชากร" + "ส่วนมากที่เป็นชาวพื้นเมืองเสียชีวิตไป 2,000 คน ทั้งเมืองมีแต่" + "เศษซากปรักหักพังจากภัยธรรมชาติ และช่วงนี้ไต้หวันต้องเผชิญความ" + "ยากลำบาก จีนแผ่นดินใหญ่ก็เพิ่มความกดดันไม่ให้นานาชาติ" + "เข้ามายุ่งเกี่ยวกับไต้หวันแม้ในยามคับขันเช่นนี้ โดยประกาศว่า " + "หากมีประเทศใดจะเข้าไปให้ความช่วยเหลือไต้หวัน จะต้องได้รับอนุญาต" + "จากจีนก่อน ซึ่งคำประกาศของจีนแผ่นดินใหญ่สวนทางกับเมตตาธรรมของ" + "ประเทศทั่วโลกที่ต้องการให้ความช่วยเหลือไต้หวัน\n" + "เดือนมีนาคม พ.ศ. 2543 (ค.ศ. 2000) มีการเลือกตั้งใหม่ในไต้หวัน " + "ชาวไต้หวันเลือกผู้แทนจากพรรคประชาธิปไตยก้าวหน้า คือ นายเฉิน สุย" + "เปี่ยน เป็นประธานาธิบดีคนใหม่ของไต้หวัน ผู้ประกาศนโยบายการเมือง" + "แข็งกร้าวว่าไต้หวันต้องการแยกตัวเป็นอิสระจากจีนแผ่นดินใหญ่ ยุติ" + "ยุคของพรรคชาตินิยมที่ยังฝักใฝ่แผ่นดินใหญ่อยู่ จีนแผ่นดินใหญ่จึง" + "ถือว่าเป็นกบฏต่อการปกครองของจีน เพราะแต่ไหนแต่ไร ไต้หวันไม่เคย" + "ประกาศอย่างเป็นทางการว่าเป็นประเทศอิสระแยกจากจีน และจีนพูดอยู่" + "เสมอว่าไต้หวันเป็นเด็กในปกครองที่ค่อนข้างจะหัวดื้อและเกเร หาก" + "ไต้หวันประกาศว่าเป็นอิสระจากจีนเมื่อใด จีนก็จะยกกำลังจัดการ" + "กับไต้หวันทันที\n" + "ในขณะที่ความสัมพันธ์ทางการเมืองระหว่างสองจีนในสายตาชาวโลก" + "เลวร้ายลง จีนทั้งสองกลับมีการติดต่อทางการค้ากันมากขึ้น มีการ" + "ผ่อนปรนอนุญาตให้ชาวไต้หวันเดินทางไปจีนแผ่นดินใหญ่เพื่อเยี่ยม" + "ญาติได้ เกิดปรากฏการณ์สำคัญคือนักธุรกิจไต้หวันหอบเงินทุนกว่า " + "20,000 ล้านดอลลาร์สหรัฐ ไปลงทุนดำเนินธุรกิจทางตอนใต้ของจีน" + "แผ่นดินใหญ่ จนกระทั่งขณะนี้ชาวไต้หวันกลายเป็นนักลงทุนรายใหญ่" + "เป็นลำดับ 2 ของจีน\n" + "วันที่ 24 พฤษภาคม 2560 ศาลรัฐธรรมนูญวินิจฉัยว่ากฎหมายสมรส" + "ปัจจุบันในเวลานั้น ละเมิดรัฐธรรมนูญ โดยปฏิเสธสิทธิสมรสของคู่รัก" + "เพศเดียวกันชาวไต้หวัน ศาลวินิจฉัยว่าหากสภานิติบัญญัติไม่ผ่าน" + "การแก้ไขกฎหมายที่เพียงพอต่อกฎหมายสมรสของไต้หวันภายในสองปี " + "การสมรสเพศเดียวกันจะชอบด้วยกฎหมายโดยอัตโนมัติในไต้หวัน[17] " + "วันที่ 17 พฤษภาคม 2562 สภานิติบัญญัติไต้หวันอนุมัติ" + "ร่างกฎหมายทำให้การสมรสเพศเดียวกันชอบด้วยกฎหมาย" + " ทำให้เป็นประเทศแรกในทวีปเอเชียที่ผ่านกฎหมายดังกล่าว[18][19]" + ) + + self.DANGER_TEXT_1 = ( + "ชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิ" + "ชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิชิ" + "ชิชิชิชิชิชิชิชิชิ" + ) + + self.DANGER_TEXT_2 = ( + "ด้านหน้าด้านหน้าด้านหน้าด้านหน้าด้านหน้าด้านหน้าด้าน" + "หน้าด้านหน้าด้านหน้าด้านหน้าด้านหน้าด้านหน้าด้านหน้าด้าน" + ) + + self.DANGER_TEXT_3 = ( + "ด้านหน้าด้านหน้าด้านหน้าด้านหน้าด้านหน้าด้านหน้าด้านหน้า" + "ด้านหน้าด้านหน้าด้านหน้าด้านหน้าด้านหน้าด้านหน้าด้านหน้า" + "ด้านหน้าด้านหน้าด้านหน้าด้านหน้าด้านหน้าด้านหน้าด้านหน้า" + "ด้านหน้าด้านหน้าด้านกกกกกก" + "กกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก" + ) + + def test_segment(self): + DICT_FILENAME = "tests/data/test_dict.txt" + DICT_NAME = "test_dict" + load_dict(DICT_FILENAME, DICT_NAME) + + self.assertEqual(segment(None, DICT_NAME), []) + self.assertEqual(segment("", DICT_NAME), []) + self.assertEqual(segment(" ", DICT_NAME), [" "]) + self.assertEqual( + segment("ไข่คน2021", DICT_NAME), + ["ไข่", "คน", "2021"], + ) + self.assertIn( + "ค่าจ้าง", # in dict there is "ค่า" and "ค่าจ้าง" + segment( + "ค่าจ้างที่ได้รับต้องทำให้แรงงาน" + "สามารถเลี้ยงดูตัวเองและครอบครัว" + "อย่างสมศักดิ์ศรีความเป็นมนุษย์", + DICT_NAME, + ), + ) + self.assertIsInstance(segment(self.TEXT_1, DICT_NAME), List) + self.assertIsInstance(segment(self.TEXT_2, DICT_NAME), List) + self.assertIsInstance(segment(self.LONG_TEXT, DICT_NAME), List) + self.assertIsInstance(segment(self.DANGER_TEXT_1, DICT_NAME), List) + self.assertIsInstance(segment(self.DANGER_TEXT_2, DICT_NAME), List) + self.assertIsInstance(segment(self.DANGER_TEXT_3, DICT_NAME), List) From c968b6b417ce9237d25bffe31b8baf1f9e0430b8 Mon Sep 17 00:00:00 2001 From: Arthit Suriyawongkul Date: Tue, 9 Nov 2021 04:42:07 +0000 Subject: [PATCH 2/2] [cd build] Exclude notebooks and tests in package --- nlpo3-python/setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nlpo3-python/setup.py b/nlpo3-python/setup.py index 2787b61..76ca657 100644 --- a/nlpo3-python/setup.py +++ b/nlpo3-python/setup.py @@ -1,7 +1,8 @@ -from setuptools import setup +from setuptools import find_packages, setup from setuptools_rust import Binding, RustExtension, Strip setup( + packages=find_packages(exclude=["notebooks", "tests"]), rust_extensions=[ RustExtension( "nlpo3._nlpo3_python_backend",