Skip to content

Datatouille/pythainlp

 
 

Repository files navigation

PyThaiNLP Logo

PyThaiNLP

Python 3.6 pypi Downloads License FOSSA Status Build Status Build status Codacy Badge Coverage Status Google Colab Badge DOI

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.

Capabilities

  • 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 like string.letters, string.digits, and string.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 and correct)
  • Thai soundex (soundex) with three engines (lk82, udom83, metasound)
  • Thai WordNet wrapper
  • and much more - see examples in tutorials.

Installation

PyThaiNLP uses PyPI as its main distribution channel, see https://pypi.org/project/pythainlp/

Stable release

pip install pythainlp

Development release

pip install --upgrade --pre pythainlp

Install options

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.

Data directory

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.

Documentation

Python 2 Users

License

FOSSA Status

Contribute to PyThaiNLP

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 āđƒāļŠāđ‰āļŠāļąāļāļāļēāļ­āļ™āļļāļāļēāļ• 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"

About

Thai Natural Language Processing in Python.

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 99.4%
  • Other 0.6%