diff --git a/pythainlp/corpus/orchid_pt_tagger.dill b/pythainlp/corpus/orchid_pt_tagger.pkl similarity index 70% rename from pythainlp/corpus/orchid_pt_tagger.dill rename to pythainlp/corpus/orchid_pt_tagger.pkl index bcfcf344a..e4eb9ed23 100644 Binary files a/pythainlp/corpus/orchid_pt_tagger.dill and b/pythainlp/corpus/orchid_pt_tagger.pkl differ diff --git a/pythainlp/corpus/ud_thai_pud_pt_tagger.dill b/pythainlp/corpus/ud_thai_pud_pt_tagger.pkl similarity index 57% rename from pythainlp/corpus/ud_thai_pud_pt_tagger.dill rename to pythainlp/corpus/ud_thai_pud_pt_tagger.pkl index d3fcf058a..1974822b8 100644 Binary files a/pythainlp/corpus/ud_thai_pud_pt_tagger.dill and b/pythainlp/corpus/ud_thai_pud_pt_tagger.pkl differ diff --git a/pythainlp/tag/perceptron.py b/pythainlp/tag/perceptron.py index 96eca7863..fd328a2b8 100644 --- a/pythainlp/tag/perceptron.py +++ b/pythainlp/tag/perceptron.py @@ -3,20 +3,20 @@ Perceptron Part-Of-Speech tagger """ import os +import pickle from typing import List, Tuple -import dill from pythainlp.corpus import corpus_path from pythainlp.tag.orchid import tag_signs, tag_to_text -_ORCHID_DATA_FILENAME = "orchid_pt_tagger.dill" -_PUD_DATA_FILENAME = "ud_thai_pud_pt_tagger.dill" +_ORCHID_DATA_FILENAME = "orchid_pt_tagger.pkl" +_PUD_DATA_FILENAME = "ud_thai_pud_pt_tagger.pkl" def _load_tagger(filename): data_filename = os.path.join(corpus_path(), filename) with open(data_filename, "rb") as fh: - model = dill.load(fh) + model = pickle.load(fh) return model diff --git a/requirements.txt b/requirements.txt index 21928c05a..4c7eb1c98 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,3 @@ -dill==0.3.* python-crfsuite==0.9.* requests==2.23.* tinydb==4.1.* diff --git a/setup.py b/setup.py index 22b5bb7ff..8069eb475 100644 --- a/setup.py +++ b/setup.py @@ -39,7 +39,6 @@ """ requirements = [ - "dill>=0.3.0", "python-crfsuite>=0.9.6", "requests>=2.22.0", "tinydb>=3.0", @@ -91,7 +90,7 @@ "etcc.txt", "negations_th.txt", "orchid_pos_th.json", - "orchid_pt_tagger.dill", + "orchid_pt_tagger.pkl", "person_names_female_th.txt", "person_names_male_th.txt", "sentenceseg-crfcut-v2.model", @@ -101,7 +100,7 @@ "thailand_provinces_th.txt", "tnc_freq.txt", "ttc_freq.txt", - "ud_thai_pud_pt_tagger.dill", + "ud_thai_pud_pt_tagger.pkl", "ud_thai_pud_unigram_tagger.json", "words_th_thai2fit_201810.txt", "words_th.txt", diff --git a/tests/test_tag.py b/tests/test_tag.py index 80121be1b..faa2ccaab 100644 --- a/tests/test_tag.py +++ b/tests/test_tag.py @@ -5,13 +5,9 @@ from pythainlp.tag import perceptron, pos_tag, pos_tag_sents, unigram from pythainlp.tag.locations import tag_provinces from pythainlp.tag.named_entity import ThaiNameTagger -from pythainlp.tokenize import ( - word_tokenize, -) class TestTagPackage(unittest.TestCase): - def test_pos_tag(self): tokens = ["ผม", "รัก", "คุณ"] @@ -29,7 +25,7 @@ def test_pos_tag(self): self.assertIsNotNone(pos_tag(tokens, engine="unigram", corpus="pud")) self.assertIsNotNone(pos_tag([""], engine="unigram", corpus="pud")) self.assertEqual( - pos_tag(word_tokenize("คุณกำลังประชุม"), engine="unigram"), + pos_tag(["คุณ", "กำลัง", "ประชุม"], engine="unigram"), [("คุณ", "PPRS"), ("กำลัง", "XVBM"), ("ประชุม", "VACT")], ) @@ -43,6 +39,10 @@ def test_pos_tag(self): self.assertEqual(perceptron.tag([], corpus="pud"), []) self.assertEqual(perceptron.tag(None, corpus="orchid"), []) self.assertEqual(perceptron.tag([], corpus="orchid"), []) + self.assertEqual( + pos_tag(["นักเรียน", "ถาม", "ครู"]), + [("นักเรียน", "NCMN"), ("ถาม", "VACT"), ("ครู", "NCMN")], + ) self.assertEqual(pos_tag_sents(None), []) self.assertEqual(pos_tag_sents([]), []) @@ -81,108 +81,102 @@ def test_ner(self): """คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย 112 หมู่ 7 บ้านหนองเดิ่น ตำบลหนองกอมเกาะ อำเภอเมือง จังหวัดหนองคาย 43000""", - tag=True + tag=True, ) ) # arguement `tag` is True self.assertEqual( - ner.get_ner( - "วันที่ 15 ก.ย. 61 ทดสอบระบบเวลา 14:49 น.", - tag=True - ), + ner.get_ner("วันที่ 15 ก.ย. 61 ทดสอบระบบเวลา 14:49 น.", tag=True), "วันที่ 15 ก.ย. 61 " - "ทดสอบระบบเวลา ") + "ทดสอบระบบเวลา ", + ) self.assertEqual( ner.get_ner( - "url = https://thainlp.org/pythainlp/docs/2.0/", - tag=True + "url = https://thainlp.org/pythainlp/docs/2.0/", tag=True ), - "url = https://thainlp.org/pythainlp/docs/2.0/") + "url = https://thainlp.org/pythainlp/docs/2.0/", + ) self.assertEqual( - ner.get_ner( - "example@gmail.com", - tag=True - ), - "example@gmail.com") + ner.get_ner("example@gmail.com", tag=True), + "example@gmail.com", + ) self.assertEqual( - ner.get_ner( - "รหัสไปรษณีย์ 19130", - tag=True - ), - "รหัสไปรษณีย์ 19130") + ner.get_ner("รหัสไปรษณีย์ 19130", tag=True), + "รหัสไปรษณีย์ 19130", + ) self.assertEqual( - ner.get_ner( - "เบอร์โทรศัพท์ 091-123-4567", - tag=True - ), - "เบอร์โทรศัพท์ 091-123-4567") + ner.get_ner("เบอร์โทรศัพท์ 091-123-4567", tag=True), + "เบอร์โทรศัพท์ 091-123-4567", + ) self.assertEqual( - ner.get_ner( - "อาจารย์เอกพล ประจำคณะวิศวกรรมศาสตร์ ", - tag=True - ), + ner.get_ner("อาจารย์เอกพล ประจำคณะวิศวกรรมศาสตร์ ", tag=True), "อาจารย์เอกพล ประจำ" - "คณะวิศวกรรมศาสตร์ ") + "คณะวิศวกรรมศาสตร์ ", + ) self.assertEqual( ner.get_ner( "มาตรา 80 ปพพ ให้ใช้อัตราภาษีร้อยละ 10.0" " ในการคำนวณภาษีมูลค่าเพิ่ม", - tag=True + tag=True, ), "มาตรา 80 ปพพ " "ให้ใช้อัตราภาษีร้อยละ 10.0" - " ในการคำนวณภาษีมูลค่าเพิ่ม") + " ในการคำนวณภาษีมูลค่าเพิ่ม", + ) self.assertEqual( - ner.get_ner( - "ยาว 20 เซนติเมตร", - tag=True - ), - "ยาว 20 เซนติเมตร") + ner.get_ner("ยาว 20 เซนติเมตร", tag=True), + "ยาว 20 เซนติเมตร", + ) self.assertEqual( - ner.get_ner( - "1 บาท", - pos=True, - tag=True), - "1 บาท") + ner.get_ner("1 บาท", pos=True, tag=True), "1 บาท" + ) self.assertEqual( - ner.get_ner( - "ไทย", - pos=False, - tag=True - ), - "ไทย") + ner.get_ner("ไทย", pos=False, tag=True), "ไทย" + ) # arguement `tag` is False and `pos` is True self.assertEqual( - ner.get_ner( - "ไทย", - pos=True, - tag=False - ), - [('ไทย', 'PROPN', 'B-LOCATION')]) + ner.get_ner("ไทย", pos=True, tag=False), + [("ไทย", "PROPN", "B-LOCATION")], + ) # arguement `tag` is False and `pos` is False self.assertEqual( ner.get_ner( "วันที่ 15 ก.ย. 61 ทดสอบระบบเวลา 14:49 น.", pos=False, - tag=False + tag=False, ), - [('วันที่', 'O'), (' ', 'O'), ('15', 'B-DATE'), - (' ', 'I-DATE'), ('ก.ย.', 'I-DATE'), (' ', 'I-DATE'), - ('61', 'I-DATE'), (' ', 'O'), ('ทดสอบ', 'O'), ('ระบบ', 'O'), - ('เวลา', 'O'), (' ', 'O'), ('14', 'B-TIME'), (':', 'I-TIME'), - ('49', 'I-TIME'), (' ', 'I-TIME'), ('น.', 'I-TIME')]) + [ + ("วันที่", "O"), + (" ", "O"), + ("15", "B-DATE"), + (" ", "I-DATE"), + ("ก.ย.", "I-DATE"), + (" ", "I-DATE"), + ("61", "I-DATE"), + (" ", "O"), + ("ทดสอบ", "O"), + ("ระบบ", "O"), + ("เวลา", "O"), + (" ", "O"), + ("14", "B-TIME"), + (":", "I-TIME"), + ("49", "I-TIME"), + (" ", "I-TIME"), + ("น.", "I-TIME"), + ], + ) # self.assertEqual( # ner.get_ner("แมวทำอะไรตอนห้าโมงเช้า"),