Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ coverage.xml
.pytest_cache/
cover/
tests/ptagger_temp*
ptagger_temp*

# Translations
*.mo
Expand Down
228 changes: 2 additions & 226 deletions tests/test_tag.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,30 +6,16 @@
from os import path

from pythainlp.tag import (
NER,
NNER,
PerceptronTagger,
chunk_parse,
perceptron,
pos_tag,
pos_tag_sents,
pos_tag_transformers,
tag_provinces,
tltk,
unigram,
)
from pythainlp.tag.thainer import ThaiNameTagger


class TagTestCase(unittest.TestCase):
# ### pythainlp.tag.PerceptronTagger

def test_chunk_parse(self):
tokens = ["ผม", "รัก", "คุณ"]

w_p = pos_tag(tokens, engine="perceptron", corpus="orchid")
self.assertIsNotNone(chunk_parse(w_p))

# ### pythainlp.tag.pos_tag

def test_pos_tag(self):
Expand Down Expand Up @@ -70,12 +56,8 @@ def test_pos_tag(self):
self.assertIsNotNone(
pos_tag([""], engine="unigram", corpus="blackboard_ud")
)
self.assertIsNotNone(
pos_tag(tokens, engine="unigram", corpus="tdtb")
)
self.assertIsNotNone(
pos_tag([""], engine="unigram", corpus="tdtb")
)
self.assertIsNotNone(pos_tag(tokens, engine="unigram", corpus="tdtb"))
self.assertIsNotNone(pos_tag([""], engine="unigram", corpus="tdtb"))
self.assertIsNotNone(pos_tag(tokens, engine="unigram", corpus="tud"))
self.assertIsNotNone(pos_tag([""], engine="unigram", corpus="tud"))
self.assertEqual(
Expand Down Expand Up @@ -124,7 +106,6 @@ def test_pos_tag(self):
self.assertIsNotNone(
pos_tag(tokens, engine="perceptron", corpus="tud")
)
self.assertIsNotNone(pos_tag(tokens, engine="tltk"))

self.assertEqual(pos_tag_sents(None), [])
self.assertEqual(pos_tag_sents([]), [])
Expand All @@ -135,8 +116,6 @@ def test_pos_tag(self):
[("แมว", "NCMN"), ("วิ่ง", "VACT")],
],
)
with self.assertRaises(ValueError):
self.assertIsNotNone(tltk.pos_tag(tokens, corpus="blackboard"))

# ### pythainlp.tag.PerceptronTagger

Expand Down Expand Up @@ -212,206 +191,3 @@ def test_ner_locations(self):
)

# ### pythainlp.tag.named_entity

def test_ner(self):
ner = ThaiNameTagger(version="1.5")
self.assertEqual(ner.get_ner(""), [])
self.assertIsNotNone(ner.get_ner("แมวทำอะไรตอนห้าโมงเช้า"))
self.assertIsNotNone(ner.get_ner("แมวทำอะไรตอนห้าโมงเช้า", pos=False))
self.assertIsNotNone(
ner.get_ner(
"""คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น
วิทยาเขตหนองคาย 112 หมู่ 7 บ้านหนองเดิ่น ตำบลหนองกอมเกาะ อำเภอเมือง
จังหวัดหนองคาย 43000"""
)
)
self.assertIsNotNone(
ner.get_ner(
"""คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น
วิทยาเขตหนองคาย 112 หมู่ 7 บ้านหนองเดิ่น ตำบลหนองกอมเกาะ อำเภอเมือง
จังหวัดหนองคาย 43000""",
tag=True,
)
)

# argument `tag` is True
self.assertIsNotNone(
ner.get_ner("วันที่ 15 ก.ย. 61 ทดสอบระบบเวลา 14:49 น.", tag=True)
)

ner = ThaiNameTagger(version="1.4")
self.assertEqual(ner.get_ner(""), [])
self.assertIsNotNone(ner.get_ner("แมวทำอะไรตอนห้าโมงเช้า"))
self.assertIsNotNone(ner.get_ner("แมวทำอะไรตอนห้าโมงเช้า", pos=False))
self.assertIsNotNone(
ner.get_ner(
"""คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น
วิทยาเขตหนองคาย 112 หมู่ 7 บ้านหนองเดิ่น
ตำบลหนองกอมเกาะ อำเภอเมือง
จังหวัดหนองคาย 43000"""
)
)
self.assertIsNotNone(
ner.get_ner(
"""คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น
วิทยาเขตหนองคาย 112 หมู่ 7 บ้านหนองเดิ่น
ตำบลหนองกอมเกาะ อำเภอเมือง
จังหวัดหนองคาย 43000""",
tag=True,
)
)

# argument `tag` is True
self.assertEqual(
ner.get_ner("วันที่ 15 ก.ย. 61 ทดสอบระบบเวลา 14:49 น.", tag=True),
"วันที่ <DATE>15 ก.ย. 61</DATE> "
"ทดสอบระบบเวลา <TIME>14:49 น.</TIME>",
)

self.assertEqual(
ner.get_ner(
"url = https://thainlp.org/pythainlp/docs/2.0/", tag=True
),
"url = <URL>https://thainlp.org/pythainlp/docs/2.0/</URL>",
)

self.assertEqual(
ner.get_ner("example@gmail.com", tag=True),
"<EMAIL>example@gmail.com</EMAIL>",
)

self.assertEqual(
ner.get_ner("รหัสไปรษณีย์ 19130", tag=True),
"รหัสไปรษณีย์ <ZIP>19130</ZIP>",
)

self.assertEqual(
ner.get_ner("อาจารย์เอกพล ประจำคณะวิศวกรรมศาสตร์ ", tag=True),
"<PERSON>อาจารย์เอกพล</PERSON> ประจำ<ORGANIZATION>"
"คณะวิศวกรรมศาสตร์</ORGANIZATION> ",
)

"""self.assertEqual(
ner.get_ner(
"มาตรา 80 ปพพ ให้ใช้อัตราภาษีร้อยละ 10.0"
" ในการคำนวณภาษีมูลค่าเพิ่ม",
tag=True,
),
"<LAW>มาตรา 80 ปพพ</LAW> "
"ให้ใช้อัตราภาษี<PERCENT>ร้อยละ 10.0</PERCENT>"
" ในการคำนวณภาษีมูลค่าเพิ่ม",
)"""

self.assertEqual(
ner.get_ner("ยาว 20 เซนติเมตร", tag=True),
"ยาว <LEN>20 เซนติเมตร</LEN>",
)

self.assertEqual(
ner.get_ner("1 บาท", pos=True, tag=True), "<MONEY>1 บาท</MONEY>"
)

self.assertEqual(
ner.get_ner("ไทย", pos=False, tag=True), "<LOCATION>ไทย</LOCATION>"
)

self.assertIsNotNone(ner.get_ner("บางแสนกรุงเทพ", pos=False, tag=True))

# argument `tag` is False and `pos` is True
self.assertEqual(
ner.get_ner("ไทย", pos=True, tag=False),
[("ไทย", "PROPN", "B-LOCATION")],
)

# arguement `tag` is False and `pos` is False
self.assertIsNotNone(
ner.get_ner(
"วันที่ 15 ก.ย. 61 ทดสอบระบบเวลา 14:49 น.",
pos=False,
tag=False,
)
)

def test_tltk_ner(self):
self.assertEqual(tltk.get_ner(""), [])
self.assertIsNotNone(tltk.get_ner("แมวทำอะไรตอนห้าโมงเช้า"))
self.assertIsNotNone(tltk.get_ner("แมวทำอะไรตอนห้าโมงเช้า", pos=False))
self.assertIsNotNone(
tltk.get_ner("พลเอกประยุกธ์ จันทร์โอชา ประกาศในฐานะหัวหน้า")
)
self.assertIsNotNone(
tltk.get_ner(
"พลเอกประยุกธ์ จันทร์โอชา ประกาศในฐานะหัวหน้า",
tag=True,
)
)
self.assertIsNotNone(
tltk.get_ner(
"""คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น
จังหวัดหนองคาย 43000"""
)
)
self.assertIsNotNone(
tltk.get_ner(
"""คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น
จังหวัดหนองคาย 43000""",
tag=True,
)
)

def test_NER_class(self):
ner = NER(engine="thainer")
self.assertIsNotNone(ner.tag("แมวทำอะไรตอนห้าโมงเช้า"))
self.assertIsNotNone(ner.tag("แมวทำอะไรตอนห้าโมงเช้า", pos=False))
self.assertIsNotNone(ner.tag("แมวทำอะไรตอนห้าโมงเช้า", tag=True))
# ner = NER(engine="wangchanberta")
# self.assertIsNotNone(ner.tag("แมวทำอะไรตอนห้าโมงเช้า"))
# self.assertIsNotNone(ner.tag("แมวทำอะไรตอนห้าโมงเช้า", pos=False))
# self.assertIsNotNone(ner.tag("แมวทำอะไรตอนห้าโมงเช้า", tag=True))
ner = NER(engine="thainer-v2")
self.assertIsNotNone(ner.tag("แมวทำอะไรตอนห้าโมงเช้า"))
self.assertIsNotNone(ner.tag("แมวทำอะไรตอนห้าโมงเช้า", pos=False))
self.assertIsNotNone(ner.tag("แมวทำอะไรตอนห้าโมงเช้า", tag=True))
ner = NER(engine="tltk")
self.assertIsNotNone(ner.tag("แมวทำอะไรตอนห้าโมงเช้า"))
self.assertIsNotNone(ner.tag("แมวทำอะไรตอนห้าโมงเช้า", pos=False))
self.assertIsNotNone(ner.tag("แมวทำอะไรตอนห้าโมงเช้า", tag=True))
with self.assertRaises(ValueError):
NER(engine="thainer", corpus="cat")

def test_NNER_class(self):
nner = NNER()
self.assertIsNotNone(nner.tag("แมวทำอะไรตอนห้าโมงเช้า"))

def test_pos_tag_transformers(self):
self.assertIsNotNone(
pos_tag_transformers(
sentence="แมวทำอะไรตอนห้าโมงเช้า",
engine="bert",
corpus="blackboard",
)
)
self.assertIsNotNone(
pos_tag_transformers(
sentence="แมวทำอะไรตอนห้าโมงเช้า",
engine="mdeberta",
corpus="pud"
)
)
self.assertIsNotNone(
pos_tag_transformers(
sentence="แมวทำอะไรตอนห้าโมงเช้า",
engine="wangchanberta",
corpus="pud",
)
)
with self.assertRaises(ValueError):
pos_tag_transformers(
sentence="แมวทำอะไรตอนห้าโมงเช้า", engine="non-existing-engine"
)
with self.assertRaises(ValueError):
pos_tag_transformers(
sentence="แมวทำอะไรตอนห้าโมงเช้า",
engine="bert",
corpus="non-existing corpus",
)
Loading