indigo.tf / indigotf /tokenizer.py
adyoi's picture
Upload folder using huggingface_hub
47dfda4 verified
Raw
History Blame Contribute Delete
829 Bytes
import json
class CharTokenizer:
def __init__(self, vocab=None):
if vocab is None:
self.itos = []
else:
self.itos = list(vocab)
self.stoi = {ch: i for i, ch in enumerate(self.itos)}
@classmethod
def from_text(cls, text):
return cls(sorted(set(text)))
@property
def vocab_size(self):
return len(self.itos)
def encode(self, text):
return [self.stoi[ch] for ch in text if ch in self.stoi]
def decode(self, ids):
return "".join(self.itos[i] for i in ids)
def save(self, path):
with open(path, "w", encoding="utf-8") as f:
json.dump(self.itos, f, ensure_ascii=False)
@classmethod
def load(cls, path):
with open(path, encoding="utf-8") as f:
return cls(json.load(f))