diff --git a/docs/api/corpus.rst b/docs/api/corpus.rst index 20b704be9..0a727e3b5 100644 --- a/docs/api/corpus.rst +++ b/docs/api/corpus.rst @@ -7,20 +7,20 @@ The :class:`pythainlp.corpus` provides access to corpus that comes with PyThaiNL Modules ------- +.. autofunction:: countries .. autofunction:: get_corpus .. autofunction:: get_corpus_db .. autofunction:: get_corpus_db_detail .. autofunction:: get_corpus_path .. autofunction:: download .. autofunction:: remove -.. autofunction:: pythainlp.corpus.common.countries -.. autofunction:: pythainlp.corpus.common.provinces -.. autofunction:: pythainlp.corpus.common.thai_stopwords -.. autofunction:: pythainlp.corpus.common.thai_words -.. autofunction:: pythainlp.corpus.common.thai_syllables -.. autofunction:: pythainlp.corpus.common.thai_negations -.. autofunction:: pythainlp.corpus.common.thai_female_names -.. autofunction:: pythainlp.corpus.common.thai_male_names +.. autofunction:: provinces +.. autofunction:: thai_stopwords +.. autofunction:: thai_words +.. autofunction:: thai_syllables +.. autofunction:: thai_negations +.. autofunction:: thai_female_names +.. autofunction:: thai_male_names .. autofunction:: pythainlp.corpus.conceptnet.edges TNC diff --git a/pythainlp/corpus/common.py b/pythainlp/corpus/common.py index 1d65c199b..36c490df0 100644 --- a/pythainlp/corpus/common.py +++ b/pythainlp/corpus/common.py @@ -22,6 +22,9 @@ _THAI_THAILAND_PROVINCES = set() _THAI_THAILAND_PROVINCES_FILENAME = "thailand_provinces_th.txt" +_THAI_THAILAND_PROVINCES_DETAILS = dict() +_THAI_THAILAND_PROVINCES_LIST_ALL_FILENAME = "thailand_provinces_th.csv" + _THAI_SYLLABLES = set() _THAI_SYLLABLES_FILENAME = "syllables_th.txt" @@ -57,21 +60,40 @@ def countries() -> frozenset: return _THAI_COUNTRIES -def provinces() -> frozenset: +def provinces(details: bool = False) -> frozenset: """ Return a frozenset of Thailand province names in Thai such as "กระบี่", "กรุงเทพมหานคร", "กาญจนบุรี", and "อุบลราชธานี". \n(See: `dev/pythainlp/corpus/thailand_provinces_th.txt\ `_) - :return: :class:`frozenset` containing province names of Thailand - :rtype: :class:`frozenset` - """ - global _THAI_THAILAND_PROVINCES - if not _THAI_THAILAND_PROVINCES: - _THAI_THAILAND_PROVINCES = get_corpus( - _THAI_THAILAND_PROVINCES_FILENAME - ) + :param bool details: a details of provinces + + :return: :class:`frozenset` containing province names of Thailand (if details is False) or list \ + dict of Thailand province names in Thai such as\ + [{'provinces_th': 'นนทบุรี', 'abridgement': 'นบ', 'provinces_en': 'Nonthaburi', 'HS': 'NBI'}]. + :rtype: :class:`frozenset` or :class:`list` + """ + global _THAI_THAILAND_PROVINCES, _THAI_THAILAND_PROVINCES_DETAILS + if not _THAI_THAILAND_PROVINCES_DETAILS and not _THAI_THAILAND_PROVINCES: + _THAI_THAILAND_PROVINCES = list() + _TEMP = list(get_corpus( + _THAI_THAILAND_PROVINCES_LIST_ALL_FILENAME + )) + _THAI_THAILAND_PROVINCES_DETAILS = list() + for i in _TEMP: + _data = i.split(",") + _dict_data = dict() + _dict_data["provinces_th"] = _data[0] + _THAI_THAILAND_PROVINCES.append(_data[0]) + _dict_data["abridgement"] = _data[1] + _dict_data["provinces_en"] = _data[2] + _dict_data["HS"] = _data[3] + _THAI_THAILAND_PROVINCES_DETAILS.append(_dict_data) + + _THAI_THAILAND_PROVINCES = frozenset(_THAI_THAILAND_PROVINCES) + if details: + return _THAI_THAILAND_PROVINCES_DETAILS return _THAI_THAILAND_PROVINCES diff --git a/pythainlp/corpus/thailand_provinces_th.csv b/pythainlp/corpus/thailand_provinces_th.csv index d919da378..82112721e 100644 --- a/pythainlp/corpus/thailand_provinces_th.csv +++ b/pythainlp/corpus/thailand_provinces_th.csv @@ -1,77 +1,77 @@ -กระบี่,กบ,KBI -กรุงเทพมหานคร,กทม,BKK -กาญจนบุรี,กจ,KRI -กาฬสินธุ์,กส,KSN -กำแพงเพชร,กพ,KPT -ขอนแก่น,ขก,KKN -จันทบุรี,จบ,CTI -ฉะเชิงเทรา,ฉช,CCO -ชลบุรี,ชบ,CBI -ชัยนาท,ชน,CNT -ชัยภูมิ,ชย,CPM -ชุมพร,ชพ,CPN -เชียงราย,ชร,CRI -เชียงใหม่,ชม,CMI -ตรัง,ตง,TRG -ตราด,ตร,TRT -ตาก,ตก,TAK -นครนายก,นย,NYK -นครปฐม,นฐ,NPT -นครพนม,นพ,NPM -นครราชสีมา,นม,NMA -นครศรีธรรมราช,นศ,NRT -นครสวรรค์,นว,NSN -นนทบุรี,นบ,NBI -นราธิวาส,นธ,NWT -น่าน,นน,NAN -บึงกาฬ,บก,BKN -บุรีรัมย์,บร,BRM -ปทุมธานี,ปท,PTE -ประจวบคีรีขันธ์,ปข,PKN -ปราจีนบุรี,ปจ,PRI -ปัตตานี,ปน,PTN -พะเยา,พย,PYO -พระนครศรีอยุธยา,อย,AYA -พังงา,พง,PNA -พัทลุง,พท,PLG -พิจิตร,พจ,PCK -พิษณุโลก,พล,PLK -เพชรบุรี,พบ,PBI -เพชรบูรณ์,พช,PNB -แพร่,พร,PRE -ภูเก็ต,ภก,PKT -มหาสารคาม,มค,MKM -มุกดาหาร,มห,MDH -แม่ฮ่องสอน,มส,MSN -ยโสธร,ยส,YST -ยะลา,ยล,YLA -ร้อยเอ็ด,รอ,RET -ระนอง,รน,RNG -ระยอง,รย,RYG -ราชบุรี,รบ,RBR -ลพบุรี,ลบ,LRI -ลำปาง,ลป,LPG -ลำพูน,ลพ,LPN -เลย,ลย,LEI -ศรีสะเกษ,ศก,SSK -สกลนคร,สน,SNK -สงขลา,สข,SKA -สตูล,สต,STN -สมุทรปราการ,สป,SPK -สมุทรสงคราม,สส,SKM -สมุทรสาคร,สค,SKN -สระแก้ว,สก,SKW -สระบุรี,สบ,SRI -สิงห์บุรี,สห,SBR -สุโขทัย,สท,STI -สุพรรณบุรี,สพ,SPB -สุราษฎร์ธานี,สฎ,SNI -สุรินทร์,สร,SRN -หนองคาย,นค,NKI -หนองบัวลำภู,นภ,NBP -อ่างทอง,อท,ATG -อำนาจเจริญ,อจ,ACR -อุดรธานี,อด,UDN -อุตรดิตถ์,อต,UTT -อุทัยธานี,อน,UTI -อุบลราชธานี,อบ,UBN +กระบี่,กบ,Krabi,KBI +กรุงเทพมหานคร,กทม,Bangkok,BKK +กาญจนบุรี,กจ,Kanchanaburi,KRI +กาฬสินธุ์,กส,Kalasin,KSN +กำแพงเพชร,กพ,Kamphaeng Phet,KPT +ขอนแก่น,ขก,Khon Kaen,KKN +จันทบุรี,จบ,Chanthaburi,CTI +ฉะเชิงเทรา,ฉช,Chachoengsao,CCO +ชลบุรี,ชบ,Chon Buri,CBI +ชัยนาท,ชน,Chai Nat,CNT +ชัยภูมิ,ชย,Chaiyaphum,CPM +ชุมพร,ชพ,Chumphon,CPN +เชียงราย,ชร,Chiang Rai,CRI +เชียงใหม่,ชม,Chiang Mai,CMI +ตรัง,ตง,Trang,TRG +ตราด,ตร,Trat,TRT +ตาก,ตก,Tak,TAK +นครนายก,นย,Nakhon Nayok,NYK +นครปฐม,นฐ,Nakhon Pathom,NPT +นครพนม,นพ,Nakhon Phanom,NPM +นครราชสีมา,นม,Nakhon Ratchasima,NMA +นครศรีธรรมราช,นศ,Nakhon Si Thammarat,NRT +นครสวรรค์,นว,Nakhon Sawan,NSN +นนทบุรี,นบ,Nonthaburi,NBI +นราธิวาส,นธ,Narathiwat,NWT +น่าน,นน,Nan,NAN +บึงกาฬ,บก,Bueng Kan,BKN +บุรีรัมย์,บร,Buri Ram,BRM +ปทุมธานี,ปท,Pathum Thani,PTE +ประจวบคีรีขันธ์,ปข,Prachuap Khiri Khan,PKN +ปราจีนบุรี,ปจ,Prachin Buri,PRI +ปัตตานี,ปน,Pattani,PTN +พะเยา,พย,Phayao,PYO +พระนครศรีอยุธยา,อย,Phra Nakhon Si Ayutthaya,AYA +พังงา,พง,Phangnga,PNA +พัทลุง,พท,Phatthalung,PLG +พิจิตร,พจ,Phichit,PCK +พิษณุโลก,พล,Phitsanulok,PLK +เพชรบุรี,พบ,Phetchaburi,PBI +เพชรบูรณ์,พช,Phetchabun,PNB +แพร่,พร,Phrae,PRE +ภูเก็ต,ภก,Phuket,PKT +มหาสารคาม,มค,Maha Sarakham,MKM +มุกดาหาร,มห,Mukdahan,MDH +แม่ฮ่องสอน,มส,Mae Hong Son,MSN +ยโสธร,ยส,Yasothon,YST +ยะลา,ยล,Yala,YLA +ร้อยเอ็ด,รอ,Roi Et,RET +ระนอง,รน,Ranong,RNG +ระยอง,รย,Rayong,RYG +ราชบุรี,รบ,Ratchaburi,RBR +ลพบุรี,ลบ,Lop Buri,LRI +ลำปาง,ลป,Lampang,LPG +ลำพูน,ลพ,Lamphun,LPN +เลย,ลย,Loei,LEI +ศรีสะเกษ,ศก,Si Sa Ket,SSK +สกลนคร,สน,Sakon Nakhon,SNK +สงขลา,สข,Songkhla,SKA +สตูล,สต,Satun,STN +สมุทรปราการ,สป,Samut Prakan,SPK +สมุทรสงคราม,สส,Samut Songkhram,SKM +สมุทรสาคร,สค,Samut Sakhon,SKN +สระแก้ว,สก,Sa Kaeo,SKW +สระบุรี,สบ,Saraburi,SRI +สิงห์บุรี,สห,Sing Buri,SBR +สุโขทัย,สท,Sukhothai,STI +สุพรรณบุรี,สพ,Suphan Buri,SPB +สุราษฎร์ธานี,สฎ,Surat Thani,SNI +สุรินทร์,สร,Surin,SRN +หนองคาย,นค,Nong Khai,NKI +หนองบัวลำภู,นภ,Nong Bua Lam Phu,NBP +อ่างทอง,อท,Ang Thong,ATG +อำนาจเจริญ,อจ,Amnat Charoen,ACR +อุดรธานี,อด,Udon Thani,UDN +อุตรดิตถ์,อต,Uttaradit,UTT +อุทัยธานี,อน,Uthai Thani,UTI +อุบลราชธานี,อบ,Ubon Ratchathani,UBN diff --git a/tests/test_corpus.py b/tests/test_corpus.py index 41b2df9f1..8dd27c2f2 100644 --- a/tests/test_corpus.py +++ b/tests/test_corpus.py @@ -34,6 +34,7 @@ def test_corpus(self): self.assertIsInstance(countries(), frozenset) self.assertIsInstance(provinces(), frozenset) + self.assertIsInstance(provinces(details=True), list) self.assertIsInstance(thai_female_names(), frozenset) self.assertIsInstance(thai_male_names(), frozenset)