Lyti4 commited on
Commit
d45d850
·
verified ·
1 Parent(s): a5e716b

Update custom_tokenizers.py

Browse files
Files changed (1) hide show
  1. custom_tokenizers.py +12 -5
custom_tokenizers.py CHANGED
@@ -35,22 +35,30 @@ class Byt5LangTokenizer(T5Tokenizer):
35
  **kwargs
36
  )
37
 
38
- # Создаем byte_decoder — это ключевой недостающий элемент
39
  self.byte_decoder = {i: bytes([i]) for i in range(256)}
40
 
 
 
 
 
 
 
 
 
 
 
 
41
  @property
42
  def vocab_size(self):
43
- # ByT5 использует байтовое представление (256) + специальные токены
44
  return 256 + self.num_special_tokens
45
 
46
  def get_vocab(self) -> Dict[str, int]:
47
- # Словарь из байтовых строк и специальных токенов
48
  vocab = {chr(i): i for i in range(256)}
49
  vocab.update(self.special_tokens_encoder)
50
  return vocab
51
 
52
  def _tokenize(self, text: str) -> List[Union[int, str]]:
53
- # Превращает текст в последовательность байт (int), как делает ByT5
54
  return list(text.encode("utf-8"))
55
 
56
  def _convert_token_to_id(self, token: Union[str, int]) -> int:
@@ -71,7 +79,6 @@ class Byt5LangTokenizer(T5Tokenizer):
71
  return chr(index)
72
 
73
  def convert_tokens_to_string(self, tokens: List[Union[str, int]]) -> str:
74
- # Преобразует список токенов обратно в строку
75
  decoded = b""
76
  for token in tokens:
77
  if isinstance(token, int):
 
35
  **kwargs
36
  )
37
 
38
+ # Создаем byte_decoder — важно для ByT5
39
  self.byte_decoder = {i: bytes([i]) for i in range(256)}
40
 
41
+ # Добавляем специальные токены
42
+ self.special_tokens = {
43
+ eos_token: self.convert_token_to_id(eos_token),
44
+ unk_token: self.convert_token_to_id(unk_token),
45
+ pad_token: self.convert_token_to_id(pad_token),
46
+ }
47
+
48
+ # Реализуем отсутствующие атрибуты
49
+ self.special_tokens_encoder = self.special_tokens
50
+ self.special_tokens_decoder = {v: k for k, v in self.special_tokens.items()}
51
+
52
  @property
53
  def vocab_size(self):
 
54
  return 256 + self.num_special_tokens
55
 
56
  def get_vocab(self) -> Dict[str, int]:
 
57
  vocab = {chr(i): i for i in range(256)}
58
  vocab.update(self.special_tokens_encoder)
59
  return vocab
60
 
61
  def _tokenize(self, text: str) -> List[Union[int, str]]:
 
62
  return list(text.encode("utf-8"))
63
 
64
  def _convert_token_to_id(self, token: Union[str, int]) -> int:
 
79
  return chr(index)
80
 
81
  def convert_tokens_to_string(self, tokens: List[Union[str, int]]) -> str:
 
82
  decoded = b""
83
  for token in tokens:
84
  if isinstance(token, int):