Japanese
rtakeda's picture
Upload 4 files
2790f03 verified
Raw
History Blame Contribute Delete
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,
)
@property
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