spiece_tokenizer.py 782 Bytes
Newer Older
1
2
import os

3
class SPieceTokenizer:
4
5
    add_eos = True

6
7
    @staticmethod
    def from_pretrained(path):
8
        return SPieceTokenizer(path)
9
10
11

    def __init__(self, tokenizer_path):
        import sentencepiece
12
13
14
15
        if isinstance(tokenizer_path, bytes):
            self.tokenizer = sentencepiece.SentencePieceProcessor(model_proto=tokenizer_path, add_eos=self.add_eos)
        else:
            self.tokenizer = sentencepiece.SentencePieceProcessor(model_file=tokenizer_path, add_eos=self.add_eos)
16
17
18
19
20
21
22
23
24
25

    def get_vocab(self):
        out = {}
        for i in range(self.tokenizer.get_piece_size()):
            out[self.tokenizer.id_to_piece(i)] = i
        return out

    def __call__(self, string):
        out = self.tokenizer.encode(string)
        return {"input_ids": out}