Download tokenizer.py from ouktlab/character_tokenizer_jis_v2: direct link, hf CLI and curl.
- Browser
- Download file 1.95 kB
-
https://huggingface.co/ouktlab/character_tokenizer_jis_v2/resolve/main/tokenizer.py
- Command line
-
hf download hf://ouktlab/character_tokenizer_jis_v2/tokenizer.py
-
curl -L -o tokenizer.py https://huggingface.co/ouktlab/character_tokenizer_jis_v2/resolve/main/tokenizer.py
1.95 kB
| import re | |
| import collections | |
| from transformers.tokenization_utils import PreTrainedTokenizer | |
| VOCAB_FILES_NAMES = {'vocab_file': 'vocab.txt'} | |
| def load_vocab(vocab_file): | |
| vocab = collections.OrderedDict() | |
| with open(vocab_file, "r", encoding="utf-8") as reader: | |
| tokens = reader.readlines() | |
| for index, token in enumerate(tokens): | |
| token = token.rstrip("\n") | |
| vocab[token] = index | |
| return vocab | |
| """ | |
| """ | |
| class CharacterTokenizer(PreTrainedTokenizer): | |
| vocab_files_names = VOCAB_FILES_NAMES | |
| def __init__(self, | |
| vocab_file, | |
| model_max_length=2048, | |
| add_prefix_space=False, | |
| **kwargs): | |
| """Character tokenizer for Hugging Face transformers. | |
| """ | |
| self.model_max_length = model_max_length | |
| self._vocab_str_to_int = load_vocab(vocab_file) | |
| self._vocab_int_to_str = {v: k for k, v in self._vocab_str_to_int.items()} | |
| super().__init__( | |
| add_prefix_space=add_prefix_space, | |
| model_max_length=model_max_length, | |
| **kwargs, | |
| ) | |
| def vocab_size(self): | |
| return len(self._vocab_str_to_int) | |
| def get_vocab(self): | |
| return self._vocab_str_to_int | |
| def _tokenize(self, text): | |
| return list(text) | |
| def _convert_token_to_id(self, token): | |
| return self._vocab_str_to_int.get(token, self._vocab_str_to_int["[UNK]"]) | |
| def _convert_id_to_token(self, index): | |
| return self._vocab_int_to_str[index] | |
| def convert_tokens_to_string(self, tokens): | |
| return "".join(tokens) | |
| def build_inputs_with_special_tokens( | |
| self, token_ids_0, token_ids_1=None | |
| ): | |
| eos = [self.eos_token_id] | |
| sep = [self.sep_token_id] | |
| if token_ids_1 is None: | |
| result = token_ids_0 + eos | |
| else: | |
| result = token_ids_0 + eos + sep + token_ids_1 + eos | |
| return result | |