Thai Natural Language Processing in Python.
PyThaiNLP is a Python package for text processing and linguistic analysis, similar to nltk
but with focus on Thai language.
News
We are conducting a 2-minute survey to know more about your experience using the library and your expectations regarding what the library should be able to do. Take part in this survey: https://forms.gle/aLdSHnvkNuK5CFyt9
This is a document for development branch (post 2.1). Things will break.
- The latest stable release is 2.1. See 2.1 change log.
- For latest development, see
dev
branch. See ongoing 2.2 change log. - ðŦ follow our PyThaiNLP Facebook page
- Convenient character and word classes, like Thai consonants (
pythainlp.thai_consonants
), vowels (pythainlp.thai_vowels
), digits (pythainlp.thai_digits
), and stop words (pythainlp.corpus.thai_stopwords
) -- comparable to constants likestring.letters
,string.digits
, andstring.punctuation
- Thai word segmentation (
word_tokenize
), including subword segmentation based on Thai Character Cluster (subword_tokenize
) - Thai transliteration (
transliterate
) - Thai part-of-speech taggers (
pos_tag
) - Read out number to Thai words (
bahttext
,num_to_thaiword
) - Thai collation (sort by dictionoary order) (
collate
) - Thai-English keyboard misswitched fix (
eng_to_thai
,thai_to_eng
) - Thai spelling suggestion and correction (
spell
andcorrect
) - Thai soundex (
soundex
) with three engines (lk82
,udom83
,metasound
) - Thai WordNet wrapper
- and much more - see examples in tutorials.
PyThaiNLP uses PyPI as its main distribution channel, see https://pypi.org/project/pythainlp/
pip install pythainlp
pip install --upgrade --pre pythainlp
For some functionalities, like named-entity recognition, extra packages may be needed. Install them with these install options:
pip install pythainlp[extra1,extra2,...]
where extras
can be
attacut
(to support attacut, a fast and accurate tokenizer)icu
(for ICU, International Components for Unicode, support in transliteration and tokenization)ipa
(for IPA, International Phonetic Alphabet, support in transliteration)ml
(to support ULMFiT models for classification)ner
(for named-entity recognizer)thai2fit
(for Thai word vector)thai2rom
(for machine-learnt romanization)full
(install everything)
For dependency details, look at extras
variable in setup.py
.
Some additional data (like word lists and language models) maybe automatically downloaded by the library during runtime and it will be kept under the directory ~/pythainlp-data
by default.
The data location can be changed, using PYTHAINLP_DATA_DIR
environment variable.
- PyThaiNLP Get Started
- More tutorials at https://www.thainlp.org/pythainlp/tutorials/
- See full documentation at https://thainlp.org/pythainlp/docs/2.0/
- PyThaiNLP 2 supports Python 3.6+. Some functions may work with older version of Python 3, but it is not well-tested and will not be supported. See 1.7 -> 2.0 change log.
- Python 2.7 users can use PyThaiNLP 1.6
- PyThaiNLP code uses Apache Software License 2.0
- Corpus data created by PyThaiNLP project use Creative Commons Attribution-ShareAlike 4.0 International License
- For other corpus that may included with PyThaiNLP distribution, please refer to Corpus License.
Please do fork and create a pull request :) For style guide and other information, including references to algorithms we use, please refer to our contributing page.
Made with âĪïļ
PyThaiNLP Team
"We build Thai NLP"
PyThaiNLP āđāļāđāļāđāļĨāļāļēāļĢāļĩāļ āļēāļĐāļēāđāļāļāļāļāđāļāļ·āđāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļ āļēāļĐāļēāļāļĢāļĢāļĄāļāļēāļāļī āđāļāļĒāđāļāđāļāļāļēāļĢāļŠāļāļąāļāļŠāļāļļāļāļ āļēāļĐāļēāđāļāļĒ āđāļāļāļāđāļēāļĒāļāļĢāļĩ (āļāļĨāļāļāđāļ) āđāļāļ·āđāļāļāļāđāļāļĒāđāļĨāļ°āļāļēāļ§āđāļĨāļāļāļļāļāļāļ!
āđāļāļĢāļēāļ°āđāļĨāļāļāļąāļāđāļāļĨāļ·āđāļāļāļāđāļāđāļāļāđāļ§āļĒāļāļēāļĢāđāļāđāļāļāļąāļ
āļāđāļēāļ§āļŠāļēāļĢ
āļŠāļ§āļąāļŠāļāļĩāļāđāļ° āļāļĩāļĄāļāļąāļāļāļē PyThaiNLP āļāļāļŠāļāļāļāļēāļĄāļāļ§āļēāļĄāļāļīāļāđāļŦāđāļāļāļāļāļāļđāđāđāļāđāļāļēāļ PyThaiNLP āļŦāļĢāļ·āļāļāļđāđāļāļĩāđāļāļģāļāļēāļāđāļāļāđāļēāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļ āļēāļĐāļēāđāļāļĒ āđāļāļ·āđāļāļāļģāļāđāļāļĄāļđāļĨāđāļāļāļĢāļąāļāļāļĢāļļāļāđāļĨāļ°āļāļąāļāļāļēāļāļĩāđāļāļāļĢāđāđāļŦāļĄāđāđ āđāļŦāđāļāļĢāļāļāļąāļāļāļ§āļēāļĄāļāđāļāļāļāļēāļĢāđāļāđāļāļēāļāļĄāļēāļāļāļķāđāļ āļŠāļēāļĄāļēāļĢāļāļāļāļāđāļāļāļŠāļāļāļāļēāļĄāđāļāđāļāļĩāđ https://forms.gle/aLdSHnvkNuK5CFyt9 (āđāļāđāđāļ§āļĨāļēāļāļĢāļ°āļĄāļēāļ 2-5 āļāļēāļāļĩ)
āđāļāļāļŠāļēāļĢāļāļĩāđāļŠāļģāļŦāļĢāļąāļāļĢāļļāđāļāļāļąāļāļāļē āļāļēāļāļĄāļĩāļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāđāļāđāļāļĨāļāļ
- āļĢāļļāđāļāđāļŠāļāļĩāļĒāļĢāļĨāđāļēāļŠāļļāļāļāļ·āļāļĢāļļāđāļ 2.1
- PyThaiNLP 2 āļĢāļāļāļĢāļąāļ Python 3.6 āļāļķāđāļāđāļ
- āļāļđāđāđāļāđ Python 2.7+ āļĒāļąāļāļŠāļēāļĄāļēāļĢāļāđāļāđ PyThaiNLP 1.6 āđāļāđ
ðŦ āļāļīāļāļāļēāļĄāļāđāļēāļ§āļŠāļēāļĢāđāļāđāļāļĩāđ Facebook Pythainlp
- āļāļļāļāļāđāļēāļāļāļāļĩāđāļāļąāļ§āļāļąāļāļĐāļĢāļ°āđāļĨāļ°āļāļģāđāļāļĒāļāļĩāđāđāļĢāļĩāļĒāļāđāļāđāđāļāđāļŠāļ°āļāļ§āļ āđāļāđāļ āļāļĒāļąāļāļāļāļ° (
pythainlp.thai_consonants
), āļŠāļĢāļ° (pythainlp.thai_vowels
), āļāļąāļ§āđāļĨāļāđāļāļĒ (pythainlp.thai_digits
), āđāļĨāļ° stop word (pythainlp.corpus.thai_stopwords
) -- āđāļŦāļĄāļ·āļāļāļāļąāļāļāđāļēāļāļāļāļĩāđāļāļĒāđāļēāļstring.letters
,string.digits
, āđāļĨāļ°string.punctuation
- āļāļąāļāļāļģāļ āļēāļĐāļēāđāļāļĒ (
word_tokenize
) āđāļĨāļ°āļĢāļāļāļĢāļąāļāļāļēāļĢāļāļąāļāļĢāļ°āļāļąāļāļāđāļģāļāļ§āđāļēāļāļģāđāļāļĒāđāļāđ Thai Character Clusters (subword_tokenize
) - āļāļāļāđāļŠāļĩāļĒāļāļ āļēāļĐāļēāđāļāļĒāđāļāđāļāļāļąāļāļĐāļĢāļĨāļ°āļāļīāļāđāļĨāļ°āļŠāļąāļāļāļąāļāļĐāļĢ (
transliterate
) - āļĢāļ°āļāļļāļāļāļīāļāļāļģ (part-of-speech) āļ āļēāļĐāļēāđāļāļĒ (
pos_tag
) - āļāđāļēāļāļāļąāļ§āđāļĨāļāđāļāđāļāļāđāļāļāļ§āļēāļĄāļ āļēāļĐāļēāđāļāļĒ (
bahttext
,num_to_thaiword
) - āđāļĢāļĩāļĒāļāļĨāļģāļāļąāļāļāļģāļāļēāļĄāļāļāļāļēāļāļļāļāļĢāļĄāđāļāļĒ (
collate
) - āđāļāđāđāļāļāļąāļāļŦāļēāļāļēāļĢāļāļīāļĄāļāđāļĨāļ·āļĄāđāļāļĨāļĩāđāļĒāļāļ āļēāļĐāļē (
eng_to_thai
,thai_to_eng
) - āļāļĢāļ§āļāļāļģāļŠāļ°āļāļāļāļīāļāđāļāļ āļēāļĐāļēāđāļāļĒ (
spell
,correct
) - soundex āļ āļēāļĐāļēāđāļāļĒ (
soundex
) 3 āļ§āļīāļāļĩāļāļēāļĢ (lk82
,udom83
,metasound
) - Thai WordNet wrapper
- āđāļĨāļ°āļāļ·āđāļ āđ āļāļđāļāļąāļ§āļāļĒāđāļēāļāđāļāđāđāļ tutorials āļŠāļāļāļ§āļīāļāļĩāđāļāđāļāļēāļ
pip install pythainlp
pip install --upgrade --pre pythainlp
āļŠāļģāļŦāļĢāļąāļāļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāđāļāļīāđāļĄāđāļāļīāļĄāļāļēāļāļāļĒāđāļēāļ āđāļāđāļ named-entity recognition āļāļģāđāļāđāļāļāđāļāļāļāļīāļāļāļąāđāļāđāļāļāđāļāļāļŠāļāļąāļāļŠāļāļļāļāđāļāļīāđāļĄāđāļāļīāļĄ āļāļīāļāļāļąāđāļāđāļāļāđāļāļāđāļŦāļĨāđāļēāļāļąāđāļāđāļāđ āļāđāļ§āļĒāļāļēāļĢāļĢāļ°āļāļļāļāļāļāļāļąāļāđāļŦāļĨāđāļēāļāļĩāđāļāļāļ pip install:
pip install pythainlp[extra1,extra2,...]
āđāļāļĒāļāļĩāđ extras
āļāļ·āļ
attacut
(āļāļąāļ§āļāļąāļāļāļģāļāļĩāđāđāļĄāđāļāļāļ§āđāļēnewmm
āđāļĄāļ·āđāļāđāļāļĩāļĒāļāļāļąāļāļāļļāļāļāđāļāļĄāļđāļĨ BEST)icu
(āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļāļāļāļąāļ§āļŠāļ°āļāļāđāļāđāļāļŠāļąāļāļāļąāļāļĐāļĢāđāļĨāļ°āļāļēāļĢāļāļąāļāļāļģāļāđāļ§āļĒ ICU)ipa
(āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļāļāļāļąāļ§āļŠāļ°āļāļāđāļāđāļāļŠāļąāļāļāļąāļāļĐāļĢāļŠāļēāļāļĨ (IPA))ml
(āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļĢāļāļāļĢāļąāļāđāļĄāđāļāļĨ ULMFiT)ner
(āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļīāļāļāđāļēāļĒāļāļ·āđāļāđāļāļāļēāļ° (named-entity))thai2fit
(āļŠāļģāļŦāļĢāļąāļ word vector)thai2rom
(āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļāļāļāļąāļ§āļŠāļ°āļāļāđāļāđāļāļāļąāļāļĐāļĢāļĨāļ°āļāļīāļ)full
(āļāļīāļāļāļąāđāļāļāļļāļāļāļĒāđāļēāļ)
āļŠāļģāļŦāļĢāļąāļāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāđāļāļāđāļāļāļāļāļāđāļŠāļĢāļīāļĄ āļŠāļēāļĄāļēāļĢāļāļāļđāđāļāđāđāļāļāļąāļ§āđāļāļĢāļāļ·āđāļ extras
āđāļ setup.py
āļĢāļ°āļŦāļ§āđāļēāļāļāļēāļĢāļāļģāļāļēāļ PyThaiNLP āļāļēāļāļāļēāļ§āļāđāđāļŦāļĨāļāļāđāļāļĄāļđāļĨāđāļāļīāđāļĄāđāļāļīāļĄ āđāļāđāļ āļāļąāļ§āđāļāļāļ āļēāļĐāļē āđāļĨāļ°āļĢāļēāļĒāļāļēāļĢāļāļģ āļāđāļāļĄāļđāļĨāđāļŦāļĨāđāļēāļāļĩāđāļāļ°āļāļđāļāđāļāđāļāđāļ§āđāļāļĩāđāđāļāđāļĢāļāļāļāļĢāļĩ ~/pythainlp-data
āđāļāđāļāļāļģāđāļŦāļāđāļāļĄāļēāļāļĢāļāļēāļ
āļāļģāđāļŦāļāđāļāđāļāđāļāļāđāļāļĄāļđāļĨāļāļĩāđāļŠāļēāļĄāļēāļĢāļāļāļģāļŦāļāļāđāļāļāđāļāđ āđāļāļĒāļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāļāļąāļ§āđāļāļĢāļŠāļīāđāļāđāļ§āļāļĨāđāļāļĄ PYTHAINLP_DATA_DIR
āļāļāļāļĢāļ°āļāļāļāļāļīāļāļąāļāļīāļāļēāļĢ
- āđāļĢāļīāđāļĄāļāđāļāđāļāđāļāļēāļ PyThaiNLP
- āļŠāļāļāļāļēāļĢāđāļāđāļāļēāļāđāļāļīāđāļĄāđāļāļīāļĄ āđāļāļĢāļđāļāđāļāļ notebook https://www.thainlp.org/pythainlp/tutorials/
- āđāļāļāļŠāļēāļĢāļāļąāļ§āđāļāđāļĄ https://thainlp.org/pythainlp/docs/2.0/
- āđāļāđāļ PyThaiNLP āđāļāđāļŠāļąāļāļāļēāļāļāļļāļāļēāļ Apache Software License 2.0
- āļāļĨāļąāļāļāļģāđāļĨāļ°āļāđāļāļĄāļđāļĨāļāļĩāđāļŠāļĢāđāļēāļāđāļāļĒāđāļāļĢāļāļāļēāļĢ PyThaiNLP āđāļāđāļŠāļąāļāļāļēāļāļāļļāļāļēāļāļāļĢāļĩāđāļāļāļĩāļāļāļāļĄāļĄāļāļāļŠāđāđāļāļāđāļŠāļāļāļāļĩāđāļĄāļē-āļāļāļļāļāļēāļāđāļāļāđāļāļĩāļĒāļ§āļāļąāļ 4.0 Creative Commons Attribution-ShareAlike 4.0 International License
- āļāļĨāļąāļāļāļģāđāļĨāļ°āļāđāļāļĄāļđāļĨāļāļ·āđāļāđ āļāļĩāđāļāļēāļāđāļāļāļāđāļēāļĒāđāļāļāļĢāđāļāļĄāļāļąāļāđāļāļāđāļāļ PyThaiNLP āļāļēāļāđāļāđāļŠāļąāļāļāļēāļāļāļļāļāļēāļāļāļ·āđāļ āđāļāļĢāļāļāļđāđāļāļāļŠāļēāļĢ Corpus License
āļāļāļāđāļāļāđāļāļĒāļāļļāļ āļ§āļĢāļļāļāļĄāđ āļāļŠāļļāļāļēāļāļĨ āļāļēāļāļāļēāļĢāļāļĢāļ°āļāļ§āļāļāļĩāđ https://www.facebook.com/groups/408004796247683/permalink/475864542795041/ āđāļĨāļ° https://www.facebook.com/groups/408004796247683/permalink/474262752955220/
āļāļļāļāļŠāļēāļĄāļēāļĢāļāļĢāđāļ§āļĄāļāļąāļāļāļēāđāļāļĢāļāļāļēāļĢāļāļĩāđāđāļāđ āđāļāļĒāļāļēāļĢ fork āđāļĨāļ°āļŠāđāļ pull request āļāļĨāļąāļāļĄāļē
āļŠāļĢāđāļēāļāļāđāļ§āļĒ âĪïļ
āļāļĩāļĄ PyThaiNLP
"āļāļ§āļāđāļĢāļēāļŠāļĢāđāļēāļ Thai NLP"