Botok – Python Tibetan Tokenizer
Description •
Install •
Example •
Commented Example •
Docs •
Owners •
Acknowledgements •
Maintainance •
License
Description
Botok tokenizes Tibetan text into words with optional attributes such as lemma, POS, clean form.
Install
Requires to have Python3 installed.
pip3 install botok
Example
from botok import WordTokenizer
from botok.config import Config
from pathlib import Path
def get_tokens(wt, text):
tokens = wt.tokenize(text, split_affixes=False)
return tokens
if __name__ == "__main__":
config = Config(dialect_name="general", base_path= Path.home())
wt = WordTokenizer(config=config)
text = "བཀྲ་ཤིས་བདེ་ལེགས་ཞུས་རྒྱུ་ཡིན་ སེམས་པ་སྐྱིད་པོ་འདུག།"
tokens = get_tokens(wt, text)
for token in tokens:
print(token)
https://user-images.githubusercontent.com/24893704/148767959-31cc0a69-4c83-4841-8a1d-028d376e4677.mp4
>>> from botok import Text
>>>
>>> in_str = """ལེ གས། བཀྲ་ཤིས་མཐའི་ ༆ ཤི་བཀྲ་ཤིས་ tr
... བདེ་་ལེ གས། བཀྲ་ཤིས་བདེ་ལེགས་༡༢༣ཀཀ།
... མཐའི་རྒྱ་མཚོར་གནས་པའི་ཉས་ཆུ་འཐུང་།། །།མཁའ།"""
>>>
>>> t = Text(in_str)
>>>
...
>>> from pathlib import Path
>>> in_file = Path.cwd() / 'test.txt'
>>>
>>> in_file.read_text()
'བཀྲ་ཤིས་བདེ་ལེགས།།\n'
>>> t = Text(in_file)
>>> t.tokenize_chunks_plaintext
>>>
...
>>> out_file = Path.cwd() / 'test_pybo.txt'
>>> out_file.read_text()
'\ufeffབཀྲ་ ཤིས་ བདེ་ ལེགས །།'
>>>
...
>>> t.tokenize_chunks_plaintext
'ལེ_གས །_ བཀྲ་ ཤིས་ མཐའི་ _༆_ ཤི་ བཀྲ་ ཤིས་__ tr_\n བདེ་་ ལེ_གས །_ བཀྲ་ ཤིས་ བདེ་ ལེགས་ ༡༢༣ ཀཀ །_\n མཐའི་ རྒྱ་ མཚོར་ གནས་ པའི་ ཉས་ ཆུ་ འཐུང་ །།_།། མཁའ །'
>>>
>>> t.tokenize_on_spaces
'ལེ གས། བཀྲ་ཤིས་མཐའི་ ༆ ཤི་བཀྲ་ཤིས་ tr བདེ་་ལེ གས། བཀྲ་ཤིས་བདེ་ལེགས་༡༢༣ཀཀ། མཐའི་རྒྱ་མཚོར་གནས་པའི་ཉས་ཆུ་འཐུང་།། །།མཁའ།'
>>>
...
...
>>> t.tokenize_words_raw_text
Loading Trie... (2s.)
'ལེ_གས །_ བཀྲ་ཤིས་ མཐ འི་ _༆_ ཤི་ བཀྲ་ཤིས་_ tr_ བདེ་་ལེ_གས །_ བཀྲ་ཤིས་ བདེ་ལེགས་ ༡༢༣ ཀཀ །_ མཐ འི་ རྒྱ་མཚོ ར་ གནས་པ འི་ ཉ ས་ ཆུ་ འཐུང་ །།_།། མཁའ །'
>>> t.tokenize_words_raw_lines
'ལེ_གས །_ བཀྲ་ཤིས་ མཐ འི་ _༆_ ཤི་ བཀྲ་ཤིས་__ tr_\n བདེ་་ལེ_གས །_ བཀྲ་ཤིས་ བདེ་ལེགས་ ༡༢༣ ཀཀ །_\n མཐ འི་ རྒྱ་མཚོ ར་ གནས་པ འི་ ཉ ས་ ཆུ་ འཐུང་ །།_།། མཁའ །'
>>>
...
...
>>> print(t.list_word_types)
འི་ 3
། 2
བཀྲ་ཤིས་ 2
མཐ 2
ལེ གས 1
༆ 1
ཤི་ 1
བཀྲ་ཤིས་ 1
tr \n 1
བདེ་་ལེ གས 1
བདེ་ལེགས་ 1
༡༢༣ 1
ཀཀ 1
། \n 1
རྒྱ་མཚོ 1
ར་ 1
གནས་པ 1
ཉ 1
ས་ 1
ཆུ་ 1
འཐུང་ 1
།། །། 1
མཁའ 1
། 1
Custom dialect pack:
In order to use custom dialect pack:
- You need to prepare your dialect pack in same folder structure like general dialect pack
- Then you need to instaintiate a config object where you will pass dialect name and path
- You can instaintiate your tokenizer object using that config object
- Your tokenizer will be using your custom dialect pack and it will be using trie pickled file in future to build the custom trie.
Docs
No documentations.
Owners
Acknowledgements
botok is an open source library for Tibetan NLP.
We are always open to cooperation in introducing new features, tool integrations and testing solutions.
Many thanks to the companies and organizations who have supported botok's development, especially:
Maintainance
Build the source dist:
rm -rf dist/
python3 setup.py clean sdist
and upload on twine (version >= 1.11.0
) with:
twine upload dist/*
License
The Python code is Copyright (C) 2019 Esukhia, provided under Apache 2.
contributors: