Skip to content

PyThaiNLP/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.

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 เป็นไลบารีภาษาไพทอนเพื่อการประมวลผลภาษาธรรมชาติ โดยเน้นการสนับสนุนภาษาไทย แจกจ่ายฟรี (ตลอดไป) เพื่อคนไทยและชาวโลกทุกคน!

เพราะโลกขับเคลื่อนต่อไปด้วยการแบ่งปัน

  • รุ่นนี้คือรุ่นเสถียร [2.1.3(https://github.com/PyThaiNLP/pythainlp/releases) ดูความเปลี่ยนแปลงในรุ่นนี้ที่ 2.1 change log.
  • สำหรับรุ่นที่กำลังพัฒนา ดูใน dev branch
  • PyThaiNLP 2.1 รองรับ 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"