import json, os from transformers import PreTrainedTokenizer class FelaTokenizer(PreTrainedTokenizer): vocab_files_names = {"vocab_file": "vocab.json"} def __init__(self, vocab_file=None, **kwargs): self.vocab = json.load(open(vocab_file)) if vocab_file else {} self.itos = {v: k for k, v in self.vocab.items()} super().__init__(**kwargs) def _tokenize(self, text, **kwargs): return list(text) def _convert_token_to_id(self, token): return self.vocab.get(token, self.vocab.get("", 23)) def _convert_id_to_token(self, index): return self.itos.get(index, "") def get_vocab(self): return dict(self.vocab) def vocab_size(self): return len(self.vocab) def save_vocabulary(self, save_directory, filename_prefix=None): fname = os.path.join(save_directory, (filename_prefix + "-" if filename_prefix else "") + "vocab.json") with open(fname, "w") as f: json.dump(self.get_vocab(), f) return (fname,)