Skip to content

Commit 313aa92

Browse files
authored
Merge pull request #458 from PyThaiNLP/Add-provinces
Add provinces
2 parents e6e01c5 + 362eb2d commit 313aa92

File tree

4 files changed

+117
-94
lines changed

4 files changed

+117
-94
lines changed

docs/api/corpus.rst

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,20 @@ The :class:`pythainlp.corpus` provides access to corpus that comes with PyThaiNL
77
Modules
88
-------
99

10+
.. autofunction:: countries
1011
.. autofunction:: get_corpus
1112
.. autofunction:: get_corpus_db
1213
.. autofunction:: get_corpus_db_detail
1314
.. autofunction:: get_corpus_path
1415
.. autofunction:: download
1516
.. autofunction:: remove
16-
.. autofunction:: pythainlp.corpus.common.countries
17-
.. autofunction:: pythainlp.corpus.common.provinces
18-
.. autofunction:: pythainlp.corpus.common.thai_stopwords
19-
.. autofunction:: pythainlp.corpus.common.thai_words
20-
.. autofunction:: pythainlp.corpus.common.thai_syllables
21-
.. autofunction:: pythainlp.corpus.common.thai_negations
22-
.. autofunction:: pythainlp.corpus.common.thai_female_names
23-
.. autofunction:: pythainlp.corpus.common.thai_male_names
17+
.. autofunction:: provinces
18+
.. autofunction:: thai_stopwords
19+
.. autofunction:: thai_words
20+
.. autofunction:: thai_syllables
21+
.. autofunction:: thai_negations
22+
.. autofunction:: thai_female_names
23+
.. autofunction:: thai_male_names
2424
.. autofunction:: pythainlp.corpus.conceptnet.edges
2525

2626
TNC

pythainlp/corpus/common.py

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
_THAI_THAILAND_PROVINCES = set()
2323
_THAI_THAILAND_PROVINCES_FILENAME = "thailand_provinces_th.txt"
2424

25+
_THAI_THAILAND_PROVINCES_DETAILS = dict()
26+
_THAI_THAILAND_PROVINCES_LIST_ALL_FILENAME = "thailand_provinces_th.csv"
27+
2528
_THAI_SYLLABLES = set()
2629
_THAI_SYLLABLES_FILENAME = "syllables_th.txt"
2730

@@ -57,21 +60,40 @@ def countries() -> frozenset:
5760
return _THAI_COUNTRIES
5861

5962

60-
def provinces() -> frozenset:
63+
def provinces(details: bool = False) -> frozenset:
6164
"""
6265
Return a frozenset of Thailand province names in Thai such as "กระบี่",
6366
"กรุงเทพมหานคร", "กาญจนบุรี", and "อุบลราชธานี".
6467
\n(See: `dev/pythainlp/corpus/thailand_provinces_th.txt\
6568
<https://github.com/PyThaiNLP/pythainlp/blob/dev/pythainlp/corpus/thailand_provinces_th.txt>`_)
6669
67-
:return: :class:`frozenset` containing province names of Thailand
68-
:rtype: :class:`frozenset`
69-
"""
70-
global _THAI_THAILAND_PROVINCES
71-
if not _THAI_THAILAND_PROVINCES:
72-
_THAI_THAILAND_PROVINCES = get_corpus(
73-
_THAI_THAILAND_PROVINCES_FILENAME
74-
)
70+
:param bool details: a details of provinces
71+
72+
:return: :class:`frozenset` containing province names of Thailand (if details is False) or list \
73+
dict of Thailand province names in Thai such as\
74+
[{'provinces_th': 'นนทบุรี', 'abridgement': 'นบ', 'provinces_en': 'Nonthaburi', 'HS': 'NBI'}].
75+
:rtype: :class:`frozenset` or :class:`list`
76+
"""
77+
global _THAI_THAILAND_PROVINCES, _THAI_THAILAND_PROVINCES_DETAILS
78+
if not _THAI_THAILAND_PROVINCES_DETAILS and not _THAI_THAILAND_PROVINCES:
79+
_THAI_THAILAND_PROVINCES = list()
80+
_TEMP = list(get_corpus(
81+
_THAI_THAILAND_PROVINCES_LIST_ALL_FILENAME
82+
))
83+
_THAI_THAILAND_PROVINCES_DETAILS = list()
84+
for i in _TEMP:
85+
_data = i.split(",")
86+
_dict_data = dict()
87+
_dict_data["provinces_th"] = _data[0]
88+
_THAI_THAILAND_PROVINCES.append(_data[0])
89+
_dict_data["abridgement"] = _data[1]
90+
_dict_data["provinces_en"] = _data[2]
91+
_dict_data["HS"] = _data[3]
92+
_THAI_THAILAND_PROVINCES_DETAILS.append(_dict_data)
93+
94+
_THAI_THAILAND_PROVINCES = frozenset(_THAI_THAILAND_PROVINCES)
95+
if details:
96+
return _THAI_THAILAND_PROVINCES_DETAILS
7597

7698
return _THAI_THAILAND_PROVINCES
7799

Lines changed: 77 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,77 +1,77 @@
1-
กระบี่,กบ,KBI
2-
กรุงเทพมหานคร,กทม,BKK
3-
กาญจนบุรี,กจ,KRI
4-
กาฬสินธุ์,กส,KSN
5-
กำแพงเพชร,กพ,KPT
6-
ขอนแก่น,ขก,KKN
7-
จันทบุรี,จบ,CTI
8-
ฉะเชิงเทรา,ฉช,CCO
9-
ชลบุรี,ชบ,CBI
10-
ชัยนาท,ชน,CNT
11-
ชัยภูมิ,ชย,CPM
12-
ชุมพร,ชพ,CPN
13-
เชียงราย,ชร,CRI
14-
เชียงใหม่,ชม,CMI
15-
ตรัง,ตง,TRG
16-
ตราด,ตร,TRT
17-
ตาก,ตก,TAK
18-
นครนายก,นย,NYK
19-
นครปฐม,นฐ,NPT
20-
นครพนม,นพ,NPM
21-
นครราชสีมา,นม,NMA
22-
นครศรีธรรมราช,นศ,NRT
23-
นครสวรรค์,นว,NSN
24-
นนทบุรี,นบ,NBI
25-
นราธิวาส,นธ,NWT
26-
น่าน,นน,NAN
27-
บึงกาฬ,บก,BKN
28-
บุรีรัมย์,บร,BRM
29-
ปทุมธานี,ปท,PTE
30-
ประจวบคีรีขันธ์,ปข,PKN
31-
ปราจีนบุรี,ปจ,PRI
32-
ปัตตานี,ปน,PTN
33-
พะเยา,พย,PYO
34-
พระนครศรีอยุธยา,อย,AYA
35-
พังงา,พง,PNA
36-
พัทลุง,พท,PLG
37-
พิจิตร,พจ,PCK
38-
พิษณุโลก,พล,PLK
39-
เพชรบุรี,พบ,PBI
40-
เพชรบูรณ์,พช,PNB
41-
แพร่,พร,PRE
42-
ภูเก็ต,ภก,PKT
43-
มหาสารคาม,มค,MKM
44-
มุกดาหาร,มห,MDH
45-
แม่ฮ่องสอน,มส,MSN
46-
ยโสธร,ยส,YST
47-
ยะลา,ยล,YLA
48-
ร้อยเอ็ด,รอ,RET
49-
ระนอง,รน,RNG
50-
ระยอง,รย,RYG
51-
ราชบุรี,รบ,RBR
52-
ลพบุรี,ลบ,LRI
53-
ลำปาง,ลป,LPG
54-
ลำพูน,ลพ,LPN
55-
เลย,ลย,LEI
56-
ศรีสะเกษ,ศก,SSK
57-
สกลนคร,สน,SNK
58-
สงขลา,สข,SKA
59-
สตูล,สต,STN
60-
สมุทรปราการ,สป,SPK
61-
สมุทรสงคราม,สส,SKM
62-
สมุทรสาคร,สค,SKN
63-
สระแก้ว,สก,SKW
64-
สระบุรี,สบ,SRI
65-
สิงห์บุรี,สห,SBR
66-
สุโขทัย,สท,STI
67-
สุพรรณบุรี,สพ,SPB
68-
สุราษฎร์ธานี,สฎ,SNI
69-
สุรินทร์,สร,SRN
70-
หนองคาย,นค,NKI
71-
หนองบัวลำภู,นภ,NBP
72-
อ่างทอง,อท,ATG
73-
อำนาจเจริญ,อจ,ACR
74-
อุดรธานี,อด,UDN
75-
อุตรดิตถ์,อต,UTT
76-
อุทัยธานี,อน,UTI
77-
อุบลราชธานี,อบ,UBN
1+
กระบี่,กบ,Krabi,KBI
2+
กรุงเทพมหานคร,กทม,Bangkok,BKK
3+
กาญจนบุรี,กจ,Kanchanaburi,KRI
4+
กาฬสินธุ์,กส,Kalasin,KSN
5+
กำแพงเพชร,กพ,Kamphaeng Phet,KPT
6+
ขอนแก่น,ขก,Khon Kaen,KKN
7+
จันทบุรี,จบ,Chanthaburi,CTI
8+
ฉะเชิงเทรา,ฉช,Chachoengsao,CCO
9+
ชลบุรี,ชบ,Chon Buri,CBI
10+
ชัยนาท,ชน,Chai Nat,CNT
11+
ชัยภูมิ,ชย,Chaiyaphum,CPM
12+
ชุมพร,ชพ,Chumphon,CPN
13+
เชียงราย,ชร,Chiang Rai,CRI
14+
เชียงใหม่,ชม,Chiang Mai,CMI
15+
ตรัง,ตง,Trang,TRG
16+
ตราด,ตร,Trat,TRT
17+
ตาก,ตก,Tak,TAK
18+
นครนายก,นย,Nakhon Nayok,NYK
19+
นครปฐม,นฐ,Nakhon Pathom,NPT
20+
นครพนม,นพ,Nakhon Phanom,NPM
21+
นครราชสีมา,นม,Nakhon Ratchasima,NMA
22+
นครศรีธรรมราช,นศ,Nakhon Si Thammarat,NRT
23+
นครสวรรค์,นว,Nakhon Sawan,NSN
24+
นนทบุรี,นบ,Nonthaburi,NBI
25+
นราธิวาส,นธ,Narathiwat,NWT
26+
น่าน,นน,Nan,NAN
27+
บึงกาฬ,บก,Bueng Kan,BKN
28+
บุรีรัมย์,บร,Buri Ram,BRM
29+
ปทุมธานี,ปท,Pathum Thani,PTE
30+
ประจวบคีรีขันธ์,ปข,Prachuap Khiri Khan,PKN
31+
ปราจีนบุรี,ปจ,Prachin Buri,PRI
32+
ปัตตานี,ปน,Pattani,PTN
33+
พะเยา,พย,Phayao,PYO
34+
พระนครศรีอยุธยา,อย,Phra Nakhon Si Ayutthaya,AYA
35+
พังงา,พง,Phangnga,PNA
36+
พัทลุง,พท,Phatthalung,PLG
37+
พิจิตร,พจ,Phichit,PCK
38+
พิษณุโลก,พล,Phitsanulok,PLK
39+
เพชรบุรี,พบ,Phetchaburi,PBI
40+
เพชรบูรณ์,พช,Phetchabun,PNB
41+
แพร่,พร,Phrae,PRE
42+
ภูเก็ต,ภก,Phuket,PKT
43+
มหาสารคาม,มค,Maha Sarakham,MKM
44+
มุกดาหาร,มห,Mukdahan,MDH
45+
แม่ฮ่องสอน,มส,Mae Hong Son,MSN
46+
ยโสธร,ยส,Yasothon,YST
47+
ยะลา,ยล,Yala,YLA
48+
ร้อยเอ็ด,รอ,Roi Et,RET
49+
ระนอง,รน,Ranong,RNG
50+
ระยอง,รย,Rayong,RYG
51+
ราชบุรี,รบ,Ratchaburi,RBR
52+
ลพบุรี,ลบ,Lop Buri,LRI
53+
ลำปาง,ลป,Lampang,LPG
54+
ลำพูน,ลพ,Lamphun,LPN
55+
เลย,ลย,Loei,LEI
56+
ศรีสะเกษ,ศก,Si Sa Ket,SSK
57+
สกลนคร,สน,Sakon Nakhon,SNK
58+
สงขลา,สข,Songkhla,SKA
59+
สตูล,สต,Satun,STN
60+
สมุทรปราการ,สป,Samut Prakan,SPK
61+
สมุทรสงคราม,สส,Samut Songkhram,SKM
62+
สมุทรสาคร,สค,Samut Sakhon,SKN
63+
สระแก้ว,สก,Sa Kaeo,SKW
64+
สระบุรี,สบ,Saraburi,SRI
65+
สิงห์บุรี,สห,Sing Buri,SBR
66+
สุโขทัย,สท,Sukhothai,STI
67+
สุพรรณบุรี,สพ,Suphan Buri,SPB
68+
สุราษฎร์ธานี,สฎ,Surat Thani,SNI
69+
สุรินทร์,สร,Surin,SRN
70+
หนองคาย,นค,Nong Khai,NKI
71+
หนองบัวลำภู,นภ,Nong Bua Lam Phu,NBP
72+
อ่างทอง,อท,Ang Thong,ATG
73+
อำนาจเจริญ,อจ,Amnat Charoen,ACR
74+
อุดรธานี,อด,Udon Thani,UDN
75+
อุตรดิตถ์,อต,Uttaradit,UTT
76+
อุทัยธานี,อน,Uthai Thani,UTI
77+
อุบลราชธานี,อบ,Ubon Ratchathani,UBN

tests/test_corpus.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ def test_corpus(self):
3434

3535
self.assertIsInstance(countries(), frozenset)
3636
self.assertIsInstance(provinces(), frozenset)
37+
self.assertIsInstance(provinces(details=True), list)
3738
self.assertIsInstance(thai_female_names(), frozenset)
3839
self.assertIsInstance(thai_male_names(), frozenset)
3940

0 commit comments

Comments
 (0)