pythainlp.tokenize

The pythainlp.tokenize contains multiple functions for tokenizing a chunk of Thai text into desirable units.

pythainlp.tokenize.word_tokenize(text, engine='newmm', whitespaces=True)[source]
Parameters
  • text (str) – the text to be tokenized

  • engine (str) – the engine to tokenize text

  • whitespaces (bool) – True to output no whitespace, a common mark of sentence or end of phrase in Thai.

Parameters for engine
  • newmm - Maximum Matching algorithm + TCC

  • icu - IBM ICU

  • longest-matching - Longest matching

  • mm - Maximum Matching algorithm

  • pylexto - LexTo

  • deepcut - Deep Neural Network

  • wordcutpy - wordcutpy (https://github.com/veer66/wordcutpy)

Returns

A list of words, tokenized from a text

Example:

from pythainlp.tokenize import word_tokenize
text='ผมรักคุณนะครับโอเคบ่พวกเราเป็นคนไทยรักภาษาไทยภาษาบ้านเกิด'
a=word_tokenize(text,engine='icu') # ['ผม', 'รัก', 'คุณ', 'นะ', 'ครับ', 'โอ', 'เค', 'บ่', 'พวก', 'เรา', 'เป็น', 'คน', 'ไทย', 'รัก', 'ภาษา', 'ไทย', 'ภาษา', 'บ้าน', 'เกิด']
b=word_tokenize(text,engine='dict') # ['ผม', 'รัก', 'คุณ', 'นะ', 'ครับ', 'โอเค', 'บ่', 'พวกเรา', 'เป็น', 'คนไทย', 'รัก', 'ภาษาไทย', 'ภาษา', 'บ้านเกิด']
c=word_tokenize(text,engine='mm') # ['ผม', 'รัก', 'คุณ', 'นะ', 'ครับ', 'โอเค', 'บ่', 'พวกเรา', 'เป็น', 'คนไทย', 'รัก', 'ภาษาไทย', 'ภาษา', 'บ้านเกิด']
d=word_tokenize(text,engine='pylexto') # ['ผม', 'รัก', 'คุณ', 'นะ', 'ครับ', 'โอเค', 'บ่', 'พวกเรา', 'เป็น', 'คนไทย', 'รัก', 'ภาษาไทย', 'ภาษา', 'บ้านเกิด']
e=word_tokenize(text,engine='newmm') # ['ผม', 'รัก', 'คุณ', 'นะ', 'ครับ', 'โอเค', 'บ่', 'พวกเรา', 'เป็น', 'คนไทย', 'รัก', 'ภาษาไทย', 'ภาษา', 'บ้านเกิด']
g=word_tokenize(text,engine='wordcutpy') # ['ผม', 'รัก', 'คุณ', 'นะ', 'ครับ', 'โอเค', 'บ่', 'พวกเรา', 'เป็น', 'คน', 'ไทย', 'รัก', 'ภาษา', 'ไทย', 'ภาษา', 'บ้านเกิด']
pythainlp.tokenize.dict_word_tokenize(text, custom_dict_trie, engine='newmm')[source]

dict_word_tokenize() tokenizes word based on the dictionary you provide. The format has to be in trie data structure.

Parameters
  • text (str) – the text to be tokenized

  • custom_dict_trie (dict) – คือ trie ที่สร้างจาก create_custom_dict_trie

  • engine (str) – choose between different options of engine to token (newmm, wordcutpy, mm, longest-matching)

Returns

A list of words, tokenized from a text.

Example::
>>> from pythainlp.tokenize import dict_word_tokenize,create_custom_dict_trie
>>> listword=['แมว',"ดี"]
>>> data_dict=create_custom_dict_trie(listword)
>>> dict_word_tokenize("แมวดีดีแมว",data_dict)
['แมว', 'ดี', 'ดี', 'แมว']
pythainlp.tokenize.subword_tokenize(text, engine='tcc')[source]
Parameters
  • text (str) – text to be tokenized

  • engine (str) – choosing ‘tcc’ uses the Thai Character Cluster rule to segment words into the smallest unique units.

Returns

a list of tokenized strings.

pythainlp.tokenize.sent_tokenize(text, engine='whitespace+newline')[source]

This function does not yet automatically recognize when a sentence actually ends. Rather it helps split text where white space and a new line is found.

Parameters
  • text (str) – the text to be tokenized

  • engine (str) – choose between ‘whitespace’ or ‘whitespace+newline’

Returns

a list of text, split by whitespace or new line.

pythainlp.tokenize.isthai(text, check_all=False)[source]
Parameters
  • text (str) – input string or list of strings

  • check_all (bool) – checks all character or not

Returns

A dictionary with the first value as proportional of text that is Thai, and the second value being a tuple of all characters, along with true or false.

pythainlp.tokenize.create_custom_dict_trie(custom_dict_source)[source]

The function is used to create a custom dict trie which will be used for word_tokenize() function. For more information on the trie data structure, see: https://marisa-trie.readthedocs.io/en/latest/index.html

Parameters

custom_dict_source (string/list) – a list of vocaburaries or a path to source file

Returns

A trie created from custom dict input