Chronicle / tokenizer.py
PaulQ1's picture
Initial commit
a2a4a3b verified
Raw
History Blame Contribute Delete
936 Bytes
"""Chronicle tokenizer: a thin wrapper over a pickled tiktoken encoding."""
import os
import pickle
from functools import lru_cache
class ChronicleTokenizer:
"""131k-vocabulary BPE tokenizer (tiktoken encoding, trained from scratch)."""
def __init__(self, enc, bos_token="<|bos|>"):
self.enc = enc
self.bos_token_id = self.encode_special(bos_token)
@classmethod
def from_directory(cls, tokenizer_dir):
with open(os.path.join(tokenizer_dir, "tokenizer.pkl"), "rb") as f:
return cls(pickle.load(f))
def get_vocab_size(self):
return self.enc.n_vocab
@lru_cache(maxsize=32)
def encode_special(self, text):
return self.enc.encode_single_token(text)
def get_bos_token_id(self):
return self.bos_token_id
def encode(self, text):
return self.enc.encode_ordinary(text)
def decode(self, ids):
return self.enc.decode(ids)