Srna Tokenizer

Срна је специјализовани токенизатор за српски језик.

Укључује неколико слојева нормализације у циљу уједначавања ћирилице и латинице и смањења броја редудантних токена.

Покривена су три случаја:

  • Компресија писма: реч текст postaje <boc> tekst<eoc> приликом обраде, чувајући информацији о употреби писма, како би се у процесу декодирања извршила рестаурација.
  • Компресија капитализације: реч Tekst постаје <cap> tekst, чувајући потребне информације да би се текст реконстурисао, избегавајући засебне токене за Tekst и tekst.
  • Компресија великих слова: реч TEKST постаје <up> tekst, како би се избегло разбијање на појединачне карактере, притом чувајући инофмрације неопходне за рекоснтрукцију као и у претходним случајевима.

Овај приступ изједначава латиницу и ћирилицу у моделу, смањујући дупликацију, олакшавајући учење и побољшавајући компресију кроз ослобађање места у вокабулару.

Ограничење: рестаурација ћирилице је комплексан задатак и захтева листу изузетака за диграфе (, lj, nj и у посебним случајевима dj). Овде су имплементиране до сада најпотпуније листе изузетака за српски језик, оформљене за потребе софтвера Ћирилизатор.

Напомена: и постојећи токенизатори/модели се могу адаптирати. У том случају, је препоручено је искључивање компресије капитализације и великих слова, уколико се не ради дообучавање модела.

Srna is a specialized tokenizer for the Serbian language.

It includes several layers of normalization in order to equlaize Cyrillic and Latin scripts and reduce the number of redundant tokens.

Three cases are covered:

  • Script compression: the word text becomes <boc> text<eoc> during processing, preserving information about the script usage, in order to perform restoration during the decoding process.
  • Capitalization compression: the word Text becomes <cap> text, preserving the information needed to reconstruct the text, avoiding separate tokens for Text and text.
  • Uppercase compression: the word TEXT becomes <up> text, to avoid breaking it into individual characters, while preserving the information necessary for reconstruction as in the previous cases.

This approach equates Latin and Cyrillic in the model, reducing duplication, facilitating learning, and improving compression by freeing up space in the vocabulary.

Limitation: Cyrillic restoration is a complex task and requires a list of exceptions for digraphs (, lj, nj and in some cases dj). The most complete lists of exceptions for the Serbian language have been implemented here, designed for the needs of the Cirilizator software.

Note: Existing tokenizers/models can also be adapted. In that case, it is recommended to turn off capitalization and uppercase compression unless fine-tuning of the model is being done.


Употреба / Usage

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("procesaur/Srna_tokenizer", trust_remote_code=True)

# Options
#tokenizer.case_compression=False
#tokenizer.script_compression=False
#tokenizer.omit_tags=True

text = "Pitao sam se 'да ли ће ме и рођени дјед и оџак надживети'?"

# Tokenize and print tokens
tokens = tokenizer.tokenize(text)
print(tokens)

# Encode to ids and decode back to string
ids = tokenizer.encode(text)
decoded = tokenizer.decode(ids)
print(decoded)

print(text==decoded)
['<capi>', 'pita', 'o', 'Ġsam', 'Ġse', "Ġ'", '<csta>', 'da', 'Ġli', 'ĠÄĩe', 'Ġme', 'Ġi', 'ĠroÄijeni', 'Ġdje', 'd', 'Ġi', 'Ġod', 'žak', 'Ġnad', 'ži', 'veti', "'", '?']
"Pitao sam se 'да ли ће ме и рођени дјед и оџак надживети'?"
True
Аутор / Author
Mihailo Škorić

Citation:

ускоро / soon
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support