pythainlp.tag

The pythainlp.tag contains functions that are used to tag different parts of a text.

pythainlp.tag.pos_tag(words: List[str], engine: str = 'perceptron', corpus: str = 'orchid')List[Tuple[str, str]][source]

Marks words with part-of-speech (POS) tags, such as ‘NOUN’ and ‘VERB’.

Parameters
  • words (list) – a list of tokenized words

  • engine (str) –

    • perceptron - perceptron tagger (default)

    • unigram - unigram tagger

    • wangchanberta - wangchanberta model (support lst20 corpus only and it supports a string only. if you input a list of word, it will convert list word to a string.

  • corpus (str) – the corpus that used to create the language model for tagger * lst20 - LST20 corpus by National Electronics and Computer Technology Center, Thailand * lst20_ud - LST20 text, with tags mapped to Universal POS tag from Universal Dependencies <https://universaldependencies.org/> * orchid - ORCHID corpus, text from Thai academic articles (default) * orchid_ud - ORCHID text, with tags mapped to Universal POS tags * pud - Parallel Universal Dependencies (PUD) treebanks, natively use Universal POS tags

Returns

a list of tuples (word, POS tag)

Return type

list[tuple[str, str]]

Example

Tag words with corpus orchid (default):

from pythainlp.tag import pos_tag

words = ['ฉัน','มี','ชีวิต','รอด','ใน','อาคาร','หลบภัย','ของ', \
    'นายก', 'เชอร์ชิล']
pos_tag(words)
# output:
# [('ฉัน', 'PPRS'), ('มี', 'VSTA'), ('ชีวิต', 'NCMN'), ('รอด', 'NCMN'),
#   ('ใน', 'RPRE'), ('อาคาร', 'NCMN'), ('หลบภัย', 'NCMN'),
#   ('ของ', 'RPRE'), ('นายก', 'NCMN'), ('เชอร์ชิล', 'NCMN')]

Tag words with corpus orchid_ud:

from pythainlp.tag import pos_tag

words = ['ฉัน','มี','ชีวิต','รอด','ใน','อาคาร','หลบภัย','ของ', \
    'นายก', 'เชอร์ชิล']
pos_tag(words, corpus='orchid_ud')
# output:
# [('ฉัน', 'PROPN'), ('มี', 'VERB'), ('ชีวิต', 'NOUN'),
#   ('รอด', 'NOUN'), ('ใน', 'ADP'),  ('อาคาร', 'NOUN'),
#   ('หลบภัย', 'NOUN'), ('ของ', 'ADP'), ('นายก', 'NOUN'),
#   ('เชอร์ชิล', 'NOUN')]

Tag words with corpus pud:

from pythainlp.tag import pos_tag

words = ['ฉัน','มี','ชีวิต','รอด','ใน','อาคาร','หลบภัย','ของ', \
    'นายก', 'เชอร์ชิล']
pos_tag(words, corpus='pud')
# [('ฉัน', 'PRON'), ('มี', 'VERB'), ('ชีวิต', 'NOUN'), ('รอด', 'VERB'),
#   ('ใน', 'ADP'), ('อาคาร', 'NOUN'), ('หลบภัย', 'NOUN'),
#   ('ของ', 'ADP'), ('นายก', 'NOUN'), ('เชอร์ชิล', 'PROPN')]

Tag words with different engines including perceptron and unigram:

from pythainlp.tag import pos_tag

words = ['เก้าอี้','มี','จำนวน','ขา', ' ', '=', '3']

pos_tag(words, engine='perceptron', corpus='orchid')
# output:
# [('เก้าอี้', 'NCMN'), ('มี', 'VSTA'), ('จำนวน', 'NCMN'),
#   ('ขา', 'NCMN'), (' ', 'PUNC'),
#   ('=', 'PUNC'), ('3', 'NCNM')]

pos_tag(words, engine='unigram', corpus='pud')
# output:
# [('เก้าอี้', None), ('มี', 'VERB'), ('จำนวน', 'NOUN'), ('ขา', None),
#   ('<space>', None), ('<equal>', None), ('3', 'NUM')]