# Токенизатор

Токенизатор отвечает за подготовку входных данных для модели. Библиотека содержит токенизаторы для всех моделей. Большинство токенизаторов доступны в двух вариантах: полная реализация на Python и «Fast»-реализация на основе Rust-библиотеки [🤗 Tokenizers](https://github.com/huggingface/tokenizers). «Fast»-реализации позволяют:

1. значительное ускорение, особенно при пакетной токенизации и
2. дополнительные методы для отображения между исходной строкой (символы и слова) и пространством токенов (например, получение индекса токена, содержащего заданный символ, или диапазона символов, соответствующего заданному токену).

Базовые классы [PreTrainedTokenizer](/docs/transformers/main/ru/main_classes/tokenizer#transformers.PythonBackend) и [PreTrainedTokenizerFast](/docs/transformers/main/ru/main_classes/tokenizer#transformers.TokenizersBackend) реализуют общие методы для кодирования строковых входных данных в модельные входные данные (см. ниже) и для создания/сохранения токенизаторов на Python и «Fast»-токенизаторов из локального файла или каталога, либо из предобученного токенизатора, предоставляемого библиотекой (скачанного из репозитория AWS S3 HuggingFace). Оба они опираются на [PreTrainedTokenizerBase](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase), который содержит общие методы.

Таким образом, [PreTrainedTokenizer](/docs/transformers/main/ru/main_classes/tokenizer#transformers.PythonBackend) и [PreTrainedTokenizerFast](/docs/transformers/main/ru/main_classes/tokenizer#transformers.TokenizersBackend) реализуют основные методы для работы со всеми токенизаторами:

- Tokenizing (разбиение строк на подсловенные токены), преобразование строк токенов в идентификаторы и обратно, а также кодирование/декодирование (то есть токенизация и преобразование в целые числа).
- Добавление новых токенов в словарь независимо от базовой структуры (BPE, SentencePiece...).
- Управление специальными токенами (например, mask, beginning-of-sentence и т. д.): их добавление, назначение соответствующих атрибутов в токенизаторе для удобного доступа и обеспечение того, чтобы они не разбивались при токенизации.

[BatchEncoding](/docs/transformers/main/ru/main_classes/tokenizer#transformers.BatchEncoding) хранит результат методов кодирования [PreTrainedTokenizerBase](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase) (`__call__`, `encode_plus` и `batch_encode_plus`) и наследуется от словаря Python. Если токенизатор является чистым токенизатором на Python, этот класс ведёт себя как стандартный словарь Python и содержит различные входные данные модели, вычисленные этими методами (`input_ids`, `attention_mask`...). Если токенизатор является «быстрым» (т. е. работает на базе библиотеки [tokenizers](https://github.com/huggingface/tokenizers) от HuggingFace), этот класс дополнительно предоставляет несколько продвинутых методов выравнивания, которые можно использовать для сопоставления между исходной строкой (символы и слова) и пространством токенов (например, получение индекса токена, содержащего заданный символ, или диапазона символов, соответствующего заданному токену).

## Мультимодальный токенизатор

Помимо этого, каждый токенизатор может быть «мультимодальным», что означает, что токенизатор хранит все соответствующие специальные токены в качестве атрибутов токенизатора для более удобного доступа. Например, если токенизатор загружен из модели «зрение-язык», такой как LLaVA, вы сможете обратиться к `tokenizer.image_token_id`, чтобы получить специальный токен изображения, используемый в качестве плейсхолдера.

Чтобы включить дополнительные специальные токены для любого типа токенизатора, необходимо добавить следующие строки и сохранить токенизатор. Дополнительные специальные токены не обязательно должны быть связаны с модальностью и могут быть любыми, к которым модели часто нужен доступ. В приведённом ниже коде токенизатор в `output_dir` получит прямой доступ к трём дополнительным специальным токенам.

```python
vision_tokenizer = AutoTokenizer.from_pretrained(
    "llava-hf/llava-1.5-7b-hf",
    extra_special_tokens={"image_token": "<image>", "boi_token": "<image_start>", "eoi_token": "<image_end>"}
)
print(vision_tokenizer.image_token, vision_tokenizer.image_token_id)
("<image>", 32000)
```

## PreTrainedTokenizer[[transformers.PythonBackend]]

#### transformers.PythonBackend[[transformers.PythonBackend]]

```python
transformers.PythonBackend(**kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L400)

**Параметры:**

model_max_length (`int`, *optional*) : The maximum length (in number of tokens) for the inputs to the transformer model. When the tokenizer is loaded with [from_pretrained()](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.from_pretrained), this will be set to the value stored for the associated model in `max_model_input_sizes` (see above). If no value is provided, will default to VERY_LARGE_INTEGER (`int(1e30)`).

padding_side (`str`, *необязательный*) : Сторона, на которой модель должна применять выравнивание. Значение выбирается из ['right', 'left']. Значение по умолчанию берётся из атрибута класса с тем же именем.

truncation_side (`str`, *необязательный*) : Сторона, на которой модель должна применять усечение. Значение выбирается из ['right', 'left']. Значение по умолчанию берётся из атрибута класса с тем же именем.

chat_template (`str`, *необязательный*) : строка шаблона Jinja, которая будет использоваться для форматирования списков сообщений чата. Полное описание см. по адресу https://huggingface.co/docs/transformers/chat_templating.

model_input_names (`list[string]`, *необязательный*) : Список входных данных, принимаемых прямой передачей модели (например, `"token_type_ids"` или `"attention_mask"`). Значение по умолчанию берётся из атрибута класса с тем же именем.

bos_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, обозначающий начало предложения.

eos_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, обозначающий конец предложения.

unk_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, представляющий токен вне словаря.

sep_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, разделяющий два разных предложения в одном вводе (используется, например, в BERT).

pad_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, используемый для приведения массивов токенов к одинаковому размеру в целях батчинга. В дальнейшем он игнорируется механизмами внимания или при вычислении функции потерь.

cls_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, представляющий класс входных данных (используется, например, в BERT).

mask_token (`str` или `tokenizers.AddedToken`, *необязательный*) : специальный токен, представляющий замаскированный токен (используется в задачах предобучения с маскированием, например, в BERT). Будет связан с `self.mask_token` и `self.mask_token_id`.

extra_special_tokens (список `str` или `tokenizers.AddedToken`, *необязательный*) : Список дополнительных специальных токенов, специфичных для модели. Добавьте их сюда, чтобы они пропускались при декодировании, если `skip_special_tokens` установлен в True. Если они не входят в словарь, они будут добавлены в конец словаря.

split_special_tokens (`bool`, *необязательный*, по умолчанию `False`) : Указывает, следует ли разделять специальные токены в процессе токенизации. Передача этого аргумента влияет на внутреннее состояние токенизатора. По умолчанию специальные токены не разделяются. Это означает, что если `<s>` является `bos_token`, то `tokenizer.tokenize("<s>") = ['<s>`]. В противном случае, если `split_special_tokens=True`, то `tokenizer.tokenize("<s>")` вернёт `['<','s', '>']`.

Базовый класс для всех медленных токенизаторов.

Наследуется от [PreTrainedTokenizerBase](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase).

Обрабатывает все общие методы токенизации и специальных токенов, а также методы загрузки/кэширования/чтения предобученных токенизаторов и добавления токенов в словарь.

Этот класс также содержит добавленные токены в унифицированном виде поверх всех токенизаторов, поэтому нам не нужно обрабатывать специфические методы расширения словаря различных базовых структур словаря (BPE, sentencepiece...).

Атрибуты класса (переопределяются производными классами)

- **vocab_files_names** (`dict[str, str]`) — словарь, в котором ключами являются имена аргументов `__init__` для каждого файла словаря, необходимого модели, а значениями — имена файлов для сохранения соответствующих файлов (строки).
- **pretrained_vocab_files_map** (`dict[str, dict[str, str]]`) -- Словарь словарей, где ключи верхнего уровня — это имена аргументов `__init__` для каждого файла словаря, необходимого модели, а ключи нижнего уровня — `short-cut-names` предобученных моделей, а соответствующие значения — `url` на соответствующий файл предобученного словаря.
- **model_input_names** (`list[str]`) — список входных данных, ожидаемых в прямом проходе модели.
- **padding_side** (`str`) — значение по умолчанию для стороны, на которой модель должна применять заполнение. Должно быть `'right'` или `'left'`.
- **truncation_side** (`str`) — значение по умолчанию для стороны, на которой модель должна применять усечение. Должно быть `'right'` или `'left'`.

#### __call__[[transformers.PythonBackend.__call__]]

```python
__call__(text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, add_special_tokens: bool = True, padding: bool | str | PaddingStrategy = False, truncation: bool | str | TruncationStrategy | None = None, max_length: int | None = None, stride: int = 0, is_split_into_words: bool = False, pad_to_multiple_of: int | None = None, padding_side: str | None = None, return_tensors: str | TensorType | None = None, return_token_type_ids: bool | None = None, return_attention_mask: bool | None = None, return_overflowing_tokens: bool = False, return_special_tokens_mask: bool = False, return_offsets_mapping: bool = False, return_length: bool = False, verbose: bool = True, tokenizer_kwargs: dict[str, Any] | None = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L2449)

**Параметры:**

text (`str`, `list[str]`, `list[list[str]]`, *необязательный*) : Последовательность или батч последовательностей для кодирования. Каждая последовательность может быть строкой или списком строк (предтокенизированная строка). Если последовательности заданы в виде списка строк (предтокенизированных), необходимо установить `is_split_into_words=True` (чтобы устранить неоднозначность с батчем последовательностей).

text_pair (`str`, `list[str]`, `list[list[str]]`, *необязательный*) : Последовательность или батч последовательностей для кодирования. Каждая последовательность может быть строкой или списком строк (предтокенизированная строка). Если последовательности заданы в виде списка строк (предтокенизированных), необходимо установить `is_split_into_words=True` (чтобы устранить неоднозначность с батчем последовательностей).

text_target (`str`, `list[str]`, `list[list[str]]`, *необязательный*) : Последовательность или батч последовательностей, которые нужно закодировать в качестве целевых текстов. Каждая последовательность может быть строкой или списком строк (предтокенизированная строка). Если последовательности заданы в виде списка строк (предтокенизированных), необходимо установить `is_split_into_words=True` (чтобы устранить неоднозначность с батчем последовательностей).

text_pair_target (`str`, `list[str]`, `list[list[str]]`, *необязательный*) : Последовательность или батч последовательностей, которые нужно закодировать в качестве целевых текстов. Каждая последовательность может быть строкой или списком строк (предтокенизированная строка). Если последовательности заданы в виде списка строк (предтокенизированных), необходимо установить `is_split_into_words=True` (чтобы устранить неоднозначность с батчем последовательностей).

tokenizer_kwargs (`dict[str, Any]`, *необязательный*) : Дополнительные kwargs для передачи в токенизатор. Они будут объединены с явными параметрами и другими kwargs, при этом явные параметры имеют приоритет.

add_special_tokens (`bool`, *необязательный*, по умолчанию `True`) : Указывает, следует ли добавлять специальные токены при кодировании последовательностей. Для этого используется базовая функция `PretrainedTokenizerBase.build_inputs_with_special_tokens`, которая определяет, какие токены автоматически добавляются к входным идентификаторам. Это полезно, если вы хотите автоматически добавлять токены `bos` или `eos`.

padding (`bool`, `str` или [PaddingStrategy](/docs/transformers/main/ru/internal/file_utils#transformers.utils.PaddingStrategy), *необязательный*, по умолчанию `False`) : Включает и управляет выравниванием. Принимает следующие значения:  - `True` или `'longest'`: Выравнивание до самой длинной последовательности в батче (или без выравнивания, если предоставлена только одна последовательность). - `'max_length'`: Выравнивание до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. - `False` или `'do_not_pad'` (по умолчанию): Без выравнивания (т. е. на выходе может быть батч с последовательностями разной длины).

truncation (`bool`, `str` или [TruncationStrategy](/docs/transformers/main/ru/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy), *необязательный*, по умолчанию `False`) : Включает и управляет усечением. Принимает следующие значения:  - `True` или `'longest_first'`: Усечение до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. Усечение выполняется посимвольно: если предоставлена пара последовательностей (или пакет пар), то символ удаляется из самой длинной последовательности в паре. - `'only_first'`: Усечение до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. Если предоставлена пара последовательностей (или пакет пар), усечение выполняется только для первой последовательности в паре. - `'only_second'`: Усечение до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. Если предоставлена пара последовательностей (или пакет пар), усечение выполняется только для второй последовательности в паре. - `False` или `'do_not_truncate'` (по умолчанию): Усечение не выполняется (т. е. на выходе может быть пакет с длинами последовательностей, превышающими максимально допустимый размер входных данных модели).

max_length (`int`, *optional*) : Управляет максимальной длиной, используемой одним из параметров усечения/дополнения. Если значение не задано или равно `None`, будет использована предопределённая максимальная длина модели, если один из параметров усечения/дополнения требует указания максимальной длины. Если у модели нет конкретной максимальной длины входных данных (как у XLNet), усечение/дополнение до максимальной длины будет отключено.

stride (`int`, *optional*, по умолчанию 0) : Если задано число вместе с `max_length`, то переполненные токены, возвращаемые при `return_overflowing_tokens=True`, будут содержать некоторые токены из конца усечённой последовательности, чтобы обеспечить перекрытие между усечённой и переполненной последовательностями. Значение этого аргумента определяет количество перекрывающихся токенов.

is_split_into_words (`bool`, *необязательный*, по умолчанию `False`) : Указывает, является ли вход уже предтокенизированным (например, разбитым на слова). Если установлено в `True`, токенизатор предполагает, что вход уже разбит на слова (например, по пробелам), и токенизирует их. Это полезно для NER или классификации токенов.

pad_to_multiple_of (`int`, *optional*) : Если задано, последовательность будет дополнена до кратного указанного значения. Требуется, чтобы `padding` был активирован. Это особенно полезно для использования Tensor Cores на аппаратных средствах NVIDIA с вычислительной способностью `>= 7.5` (Volta).

padding_side (`str`, *необязательный*) : Сторона, на которой модель должна применять выравнивание. Значение выбирается из ['right', 'left']. Значение по умолчанию берётся из атрибута класса с тем же именем.

return_tensors (`str` или [TensorType](/docs/transformers/main/ru/internal/file_utils#transformers.TensorType), *optional*) : Если задано, возвращает тензоры вместо списка целых чисел Python. Допустимые значения:  - `'pt'`: Возвращает объекты `torch.Tensor` PyTorch. - `'np'`: Возвращает объекты `np.ndarray` Numpy.

return_token_type_ids (`bool`, *необязательный*) : Указывает, следует ли возвращать идентификаторы типов токенов. Если значение не задано, идентификаторы типов токенов будут возвращены в соответствии со значением по умолчанию конкретного токенизатора, определяемым атрибутом `return_outputs`.  [Что такое идентификаторы типов токенов?](../glossary#token-type-ids)

return_attention_mask (`bool`, *необязательный*) : Указывает, следует ли возвращать маску внимания. Если значение не задано, маска внимания будет возвращена в соответствии со значением по умолчанию конкретного токенизатора, определяемым атрибутом `return_outputs`.  [Что такое маски внимания?](../glossary#attention-mask)

return_overflowing_tokens (`bool`, *необязательный*, по умолчанию `False`) : Возвращать ли переполненные последовательности токенов. Если передана пара последовательностей входных идентификаторов (или батч пар) с `truncation_strategy = longest_first` или `True`, вместо возврата переполненных токенов будет выброшена ошибка.

return_special_tokens_mask (`bool`, *необязательный*, по умолчанию `False`) : Нужно ли возвращать информацию о маске специальных токенов.

return_offsets_mapping (`bool`, *необязательный*, по умолчанию `False`) : Возвращать или нет `(char_start, char_end)` для каждого токена. Это доступно только для быстрых токенизаторов, наследующихся от [PreTrainedTokenizerFast](/docs/transformers/main/ru/main_classes/tokenizer#transformers.TokenizersBackend); при использовании токенизатора на Python этот метод вызовет `NotImplementedError`.

return_length  (`bool`, *необязательный*, по умолчанию `False`) : Возвращать ли длины закодированных входных данных.

verbose (`bool`, *необязательный*, по умолчанию `True`) : Выводить ли дополнительную информацию и предупреждения.

- ****kwargs** : передаются в метод `self.tokenize()`

**Возвращает:** [BatchEncoding](/docs/transformers/main/ru/main_classes/tokenizer#transformers.BatchEncoding)

[BatchEncoding](/docs/transformers/main/ru/main_classes/tokenizer#transformers.BatchEncoding) со следующими полями:

- **input_ids** -- Список идентификаторов токенов, которые подаются в модель.

  [Что такое входные идентификаторы?](../glossary#input-ids)

- **token_type_ids** -- Список идентификаторов типов токенов, передаваемых в модель (если `return_token_type_ids=True` или если *"token_type_ids"* входит в `self.model_input_names`).

  [Что такое идентификаторы типов токенов?](../glossary#token-type-ids)

- **attention_mask** -- список индексов, указывающих, на какие токены модель должна обращать внимание (когда `return_attention_mask=True` или если *"attention_mask"* входит в `self.model_input_names`).

  [Что такое маски внимания?](../glossary#attention-mask)

- **overflowing_tokens** -- Список переполненных последовательностей токенов (если заданы `max_length` и `return_overflowing_tokens=True`).
- **num_truncated_tokens** -- Количество отсечённых токенов (если задано `max_length` и `return_overflowing_tokens=True`).
- **special_tokens_mask** -- Список нулей и единиц, где 1 указывает на добавленные специальные токены, а 0 — на обычные токены последовательности (при `add_special_tokens=True` и `return_special_tokens_mask=True`).
- **length** -- Длина входных данных (когда `return_length=True`)

Основной метод для токенизации и подготовки одной или нескольких последовательностей или одной или нескольких пар последовательностей для модели.

#### add_tokens[[transformers.PythonBackend.add_tokens]]

```python
add_tokens(new_tokens: str | AddedToken | Sequence[str | AddedToken], special_tokens: bool = False)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L1218)

**Параметры:**

new_tokens (`str`, `tokenizers.AddedToken` или последовательность *str* или `tokenizers.AddedToken`) : Токены добавляются только в том случае, если они ещё отсутствуют в словаре. `tokenizers.AddedToken` инкапсулирует строковый токен, позволяя настраивать его поведение: должен ли токен соответствовать только одному слову, следует ли удалять все возможные пробельные символы слева, следует ли удалять все возможные пробельные символы справа и т. д.

special_tokens (`bool`, *необязательный*, по умолчанию `False`) : Указывает, является ли токен специальным. Это в основном влияет на поведение нормализации. Подробности о `tokenizers.AddedToken` см. в библиотеке HuggingFace tokenizers.

**Возвращает:** `int`

Количество токенов, добавленных в словарь.

#TODO удалить это отсюда! PreTrainedTokenizerBase не должен зависеть от AddedToken.

Добавьте список новых токенов. Если новые токены отсутствуют в словаре, они добавляются в его конец. Таким образом, добавленные токены и токены из словаря алгоритма токенизации обрабатываются по-разному.

Быстрые токенизаторы с претокенизатором `Metaspace`, использующим `prepend_scheme="always"` (например, NLLB), добавляют `"▁"` к тексту, следующему за добавленным токеном. После `tokenizer.add_tokens(["abcd"])` строка `"abcdgym"` токенизируется как `["abcd", "▁gym"]` и декодируется в `"abcd gym"`. Если добавленные токены могут появляться внутри слов, переключите претокенизатор

в `prepend_scheme="first"`, чтобы префикс добавлялся только к началу входных данных:

```python
from tokenizers import pre_tokenizers

pre_tokenizer = tokenizer.backend_tokenizer.pre_tokenizer
tokenizer.backend_tokenizer.pre_tokenizer = pre_tokenizers.Metaspace(
    replacement=pre_tokenizer.replacement, prepend_scheme="first", split=pre_tokenizer.split
)
```

Примеры:

```python
# Let's see how to increase the vocabulary of Bert model and tokenizer
tokenizer = BertTokenizerFast.from_pretrained("google-bert/bert-base-uncased")
model = BertModel.from_pretrained("google-bert/bert-base-uncased")

num_added_toks = tokenizer.add_tokens(["new_tok1", "my_new-tok2"])
print("We have added", num_added_toks, "tokens")
# Notice: resize_token_embeddings expect to receive the full size of the new vocabulary, i.e., the length of the tokenizer.
model.resize_token_embeddings(len(tokenizer))
```

#### add_special_tokens[[transformers.PythonBackend.add_special_tokens]]

```python
add_special_tokens(special_tokens_dict: dict[str, str | AddedToken | Sequence[str | AddedToken]], replace_extra_special_tokens = True)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L1113)

**Параметры:**

special_tokens_dict (словарь *str* в *str*, `tokenizers.AddedToken` или `Sequence[Union[str, AddedToken]]`) : Ключи должны входить в список предопределённых специальных атрибутов: [`bos_token`, `eos_token`, `unk_token`, `sep_token`, `pad_token`, `cls_token`, `mask_token`, `extra_special_tokens`]. Токены добавляются только в том случае, если их ещё нет в словаре (проверяется по тому, назначает ли токенизатор им индекс `unk_token`).

replace_extra_special_tokens (`bool`, *необязательный*, по умолчанию `True`) : Если `True`, существующий список дополнительных специальных токенов будет заменён списком, переданным в `special_tokens_dict`. В противном случае `extra_special_tokens` будет дополнен. В первом случае токены НЕ будут удалены из полного словаря токенизатора — они лишь будут помечены как неспециальные. Помните, что это влияет только на то, какие токены пропускаются при декодировании, а не на `added_tokens_encoder` и `added_tokens_decoder`. Это означает, что предыдущие `extra_special_tokens` остаются добавленными токенами и не будут разбиваться моделью.

**Возвращает:** `int`

Количество токенов, добавленных в словарь.

Добавляет словарь специальных токенов (eos, pad, cls и т. д.) в энкодер и связывает их с атрибутами класса. Если специальные токены отсутствуют в словаре, они добавляются в него (индексация начинается с последнего индекса текущего словаря).

При добавлении новых токенов в словарь необходимо также изменить размер матрицы эмбеддингов токенов модели, чтобы её матрица эмбеддингов соответствовала токенизатору.

Для этого используйте метод [resize_token_embeddings()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.resize_token_embeddings).

Использование `add_special_tokens` гарантирует, что ваши специальные токены можно использовать несколькими способами:

- Специальные токены можно пропустить при декодировании, используя `skip_special_tokens = True`.
- Специальные токены тщательно обрабатываются токенизатором (они никогда не разбиваются), аналогично `AddedTokens`.
- Вы можете легко обращаться к специальным токенам с помощью атрибутов класса токенизатора, например `tokenizer.cls_token`. Это упрощает разработку скриптов обучения и дообучения, не привязанных к конкретной модели.

По возможности, специальные токены уже зарегистрированы для предоставленных предобученных моделей (например, [BertTokenizer](/docs/transformers/main/ru/model_doc/lxmert#transformers.BertTokenizer) `cls_token` уже зарегистрирован как `'[CLS]'`, а для XLM он также зарегистрирован как `'</s>'`).

Примеры:

```python
# Let's see how to add a new classification token to GPT-2
tokenizer = GPT2Tokenizer.from_pretrained("openai-community/gpt2")
model = GPT2Model.from_pretrained("openai-community/gpt2")

special_tokens_dict = {"cls_token": "<CLS>"}

num_added_toks = tokenizer.add_special_tokens(special_tokens_dict)
print("We have added", num_added_toks, "tokens")
# Notice: resize_token_embeddings expect to receive the full size of the new vocabulary, i.e., the length of the tokenizer.
model.resize_token_embeddings(len(tokenizer))

assert tokenizer.cls_token == "<CLS>"
```

#### apply_chat_template[[transformers.PythonBackend.apply_chat_template]]

```python
apply_chat_template(conversation: list[dict[str, str]] | list[list[dict[str, str]]], tools: list[dict | Callable] | None = None, documents: list[dict[str, str]] | None = None, chat_template: str | None = None, add_generation_prompt: bool = False, continue_final_message: bool | str = False, tokenize: bool = True, sanitize_control_tokens: bool = False, padding: bool | str | PaddingStrategy = False, truncation: bool = False, max_length: int | None = None, return_tensors: str | TensorType | None = None, return_dict: bool = True, return_assistant_tokens_mask: bool = False, tokenizer_kwargs: dict[str, Any] | None = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L3021)

**Параметры:**

conversation (Union[list[dict[str, str]], list[list[dict[str, str]]]]) : список словарей с ключами "role" и "content", представляющий историю чата на данный момент.

tools (`list[Union[Dict, Callable]]`, *необязательный*) : Список инструментов (вызываемых функций), доступных модели. Если шаблон не поддерживает вызов функций, этот аргумент не будет иметь эффекта. Каждый инструмент должен передаваться в виде JSON Schema, указывающего имя, описание и типы аргументов инструмента. Подробнее см. в нашем [руководстве по использованию инструментов](https://huggingface.co/docs/transformers/en/chat_extras#passing-tools).

documents (`list[dict[str, str]]`, *необязательный*) : Список словарей, представляющих документы, доступные модели при выполнении RAG (генерация с дополнением из поиска). Если шаблон не поддерживает RAG, этот аргумент не будет иметь эффекта. Рекомендуется, чтобы каждый документ был словарем, содержащим ключи "title" и "text".

chat_template (`str`, *необязательный*) : Шаблон Jinja, используемый для этого преобразования. Как правило, не нужно передавать в этот аргумент ничего, так как по умолчанию используется шаблон модели.

add_generation_prompt (bool, *optional*) : Если этот параметр установлен, к отформатированному выводу будет добавлен промпт с токеном(ами), указывающими на начало сообщения ассистента. Это полезно, если вы хотите сгенерировать ответ от модели. Обратите внимание, что этот аргумент будет передан в шаблон чата, поэтому для того, чтобы он имел эффект, он должен поддерживаться в шаблоне.

continue_final_message (bool or str, *необязательный*) : Если этот параметр задан, чат будет отформатирован так, чтобы последнее сообщение в чате было открытым, без токенов EOS. Модель продолжит это сообщение, а не начнёт новое. Это позволяет «предзаполнить» часть ответа модели. Если передана строка, она будет использована в качестве ключа для поля, которое нужно продолжить (например, "reasoning_content"). Не может использоваться одновременно с `add_generation_prompt`.

tokenize (`bool`, по умолчанию `True`) : Флаг, определяющий, следует ли токенизировать вывод. Если `False`, выводом будет строка.

sanitize_control_tokens (`bool`, по умолчанию `False`) : Если установлено, управляющие токены, встречающиеся в сообщениях, инструментах или документах, кодируются как обычный текст, так что в виде токенов кодируются только управляющие токены, записанные самим шаблоном чата. К управляющим токенам относятся специальные токены токенизатора, а также добавленные токены из `tokenizer.chat_control_tokens`. Если эта переменная не задана, управляющие токены определяются на основе добавленных токенов, которые встречаются в тексте шаблона чата и строковых литералах. Санитизируются только целые управляющие токены, поэтому, если шаблон объединяет строки из входных данных в управляющие токены (например, `'<|' + message['role'] + '|>'`), эти строки необходимо проверять отдельно. Ключи словарей также не санитизируются.

padding (`bool`, `str` или [PaddingStrategy](/docs/transformers/main/ru/internal/file_utils#transformers.utils.PaddingStrategy), *необязательный*, по умолчанию `False`) : Выберите стратегию выравнивания возвращаемых последовательностей (с учётом стороны выравнивания и индекса выравнивания модели) из следующих:  - `True` или `'longest'`: Выровнять до самой длинной последовательности в батче (или не выравнивать, если предоставлена только одна последовательность). - `'max_length'`: Выровнять до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. - `False` или `'do_not_pad'` (по умолчанию): Без выравнивания (т. е. может быть выведен батч с последовательностями разной длины).

truncation (`bool`, по умолчанию `False`) : Указывает, нужно ли обрезать последовательности до максимальной длины. Не имеет эффекта, если tokenize равно `False`.

max_length (`int`, *optional*) : Максимальная длина (в токенах), используемая для выравнивания или усечения. Не влияет на результат, если tokenize равно `False`. Если значение не указано, по умолчанию будет использован атрибут `max_length` токенизатора.

return_tensors (`str` или [TensorType](/docs/transformers/main/ru/internal/file_utils#transformers.TensorType), *необязательный*) : Если задано, возвращает тензоры конкретного фреймворка. Не влияет на результат, если tokenize равно `False`. Допустимые значения: - `'pt'`: возвращает объекты `torch.Tensor` PyTorch. - `'np'`: возвращает объекты `np.ndarray` NumPy.

return_dict (`bool`, по умолчанию `True`) : Возвращать ли словарь с именованными выходами. Не имеет значения, если tokenize равно `False`.

tokenizer_kwargs (`dict[str : Any]`, *необязательный*): Дополнительные аргументы для передачи в токенизатор.

return_assistant_tokens_mask (`bool`, по умолчанию `False`) : Указывает, следует ли возвращать маску токенов, сгенерированных ассистентом. Для токенов, сгенерированных ассистентом, маска будет содержать 1. Для токенов пользователя и системы маска будет содержать 0. Эта функция доступна только для шаблонов чата, которые поддерживают её с помощью ключевого слова `{% generation %}`.

- ****kwargs** : Дополнительные аргументы, передаваемые в рендер шаблона. Будут доступны для чат-шаблона.

**Возвращает:** `Union[list[int], Dict]`

Список идентификаторов токенов, представляющий токенизированный чат на данный момент, включая управляющие токены. Этот вывод готов к передаче в модель, как напрямую, так и через методы вроде `generate()`. Если `return_dict` установлен, будет возвращен словарь с результатами токенизатора.

Преобразует список словарей с ключами `"role"` и `"content"` в список идентификаторов токенов. Этот метод предназначен для использования с чат-моделями и читает атрибут chat_template токенизатора, чтобы определить формат и управляющие токены, используемые при преобразовании.

#### batch_decode[[transformers.PythonBackend.batch_decode]]

```python
batch_decode(sequences: list[int] | list[list[int]] | np.ndarray | torch.Tensor, skip_special_tokens: bool = False, clean_up_tokenization_spaces: bool | None = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L2933)

**Параметры:**

sequences (`Union[list[int], list[list[int]], np.ndarray, torch.Tensor]`) : Список идентификаторов токенизированного входа. Может быть получен с помощью метода `__call__`.

skip_special_tokens (`bool`, *необязательный*, по умолчанию `False`) : Указывает, следует ли удалять специальные токены при декодировании.

clean_up_tokenization_spaces (`bool`, *необязательный*) : Указывает, следует ли очищать пробелы токенизации. Если `None`, по умолчанию используется `self.clean_up_tokenization_spaces`.

kwargs (дополнительные аргументы ключ-значение, *необязательные*): будут переданы в специфичный для базовой модели метод декодирования.

**Возвращает:** `list[str]`

Список декодированных предложений.

Преобразуйте список списков идентификаторов токенов в список строк, вызвав decode.

Этот метод предоставляется в целях обратной совместимости. Метод `decode` теперь нативно обрабатывает пакетный ввод, поэтому вы можете использовать `decode` напрямую вместо `batch_decode`.

#### decode[[transformers.PythonBackend.decode]]

```python
decode(token_ids: int | list[int] | list[list[int]] | np.ndarray | torch.Tensor, skip_special_tokens: bool = False, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L2885)

**Параметры:**

token_ids (`Union[int, list[int], list[list[int]], np.ndarray, torch.Tensor]`) : одна последовательность или батч (список последовательностей) токенизированных входных id. Может быть получена с помощью метода `__call__`.

skip_special_tokens (`bool`, *необязательный*, по умолчанию `False`) : Указывает, следует ли удалять специальные токены при декодировании.

kwargs (дополнительные аргументы ключ-значение, *необязательные*): будут переданы в специфичный для базовой модели метод декодирования.

**Возвращает:** `Union[str, list[str]]`

Декодированная строка для одной последовательности или список декодированных строк для батча последовательностей.

Преобразует последовательность идентификаторов в строку или список последовательностей в список строк, используя токенизатор и словарь, с опциями для удаления специальных токенов и очистки пробелов токенизации.

Аналогично выполнению `self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids))`.

#### encode[[transformers.PythonBackend.encode]]

```python
encode(text: TextInput | PreTokenizedInput | EncodedInput, text_pair: TextInput | PreTokenizedInput | EncodedInput | None = None, add_special_tokens: bool = True, padding: bool | str | PaddingStrategy = False, truncation: bool | str | TruncationStrategy | None = None, max_length: int | None = None, stride: int = 0, padding_side: str | None = None, return_tensors: str | TensorType | None = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L2263)

**Параметры:**

text (`str`, `list[str]` or `list[int]`) : Первая последовательность, подлежащая кодированию. Это может быть строка, список строк (токенизированная строка с использованием метода `tokenize`) или список целых чисел (идентификаторы токенизированной строки, полученные с помощью метода `convert_tokens_to_ids`).

text_pair (`str`, `list[str]` или `list[int]`, *необязательный*) : Необязательная вторая последовательность для кодирования. Это может быть строка, список строк (токенизированная строка с использованием метода `tokenize`) или список целых чисел (идентификаторы токенизированной строки с использованием метода `convert_tokens_to_ids`).

add_special_tokens (`bool`, *необязательный*, по умолчанию `True`) : Указывает, следует ли добавлять специальные токены при кодировании последовательностей. Для этого используется базовая функция `PretrainedTokenizerBase.build_inputs_with_special_tokens`, которая определяет, какие токены автоматически добавляются к входным идентификаторам. Это полезно, если вы хотите автоматически добавлять токены `bos` или `eos`.

padding (`bool`, `str` или [PaddingStrategy](/docs/transformers/main/ru/internal/file_utils#transformers.utils.PaddingStrategy), *необязательный*, по умолчанию `False`) : Включает и управляет выравниванием. Принимает следующие значения:  - `True` или `'longest'`: Выравнивание до самой длинной последовательности в батче (или без выравнивания, если предоставлена только одна последовательность). - `'max_length'`: Выравнивание до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. - `False` или `'do_not_pad'` (по умолчанию): Без выравнивания (т. е. на выходе может быть батч с последовательностями разной длины).

truncation (`bool`, `str` или [TruncationStrategy](/docs/transformers/main/ru/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy), *необязательный*, по умолчанию `False`) : Включает и управляет усечением. Принимает следующие значения:  - `True` или `'longest_first'`: Усечение до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. Усечение выполняется посимвольно: если предоставлена пара последовательностей (или пакет пар), то символ удаляется из самой длинной последовательности в паре. - `'only_first'`: Усечение до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. Если предоставлена пара последовательностей (или пакет пар), усечение выполняется только для первой последовательности в паре. - `'only_second'`: Усечение до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. Если предоставлена пара последовательностей (или пакет пар), усечение выполняется только для второй последовательности в паре. - `False` или `'do_not_truncate'` (по умолчанию): Усечение не выполняется (т. е. на выходе может быть пакет с длинами последовательностей, превышающими максимально допустимый размер входных данных модели).

max_length (`int`, *optional*) : Управляет максимальной длиной, используемой одним из параметров усечения/дополнения. Если значение не задано или равно `None`, будет использована предопределённая максимальная длина модели, если один из параметров усечения/дополнения требует указания максимальной длины. Если у модели нет конкретной максимальной длины входных данных (как у XLNet), усечение/дополнение до максимальной длины будет отключено.

stride (`int`, *optional*, по умолчанию 0) : Если задано число вместе с `max_length`, то переполненные токены, возвращаемые при `return_overflowing_tokens=True`, будут содержать некоторые токены из конца усечённой последовательности, чтобы обеспечить перекрытие между усечённой и переполненной последовательностями. Значение этого аргумента определяет количество перекрывающихся токенов.

is_split_into_words (`bool`, *необязательный*, по умолчанию `False`) : Указывает, является ли вход уже предтокенизированным (например, разбитым на слова). Если установлено в `True`, токенизатор предполагает, что вход уже разбит на слова (например, по пробелам), и токенизирует их. Это полезно для NER или классификации токенов.

pad_to_multiple_of (`int`, *optional*) : Если задано, последовательность будет дополнена до кратного указанного значения. Требуется, чтобы `padding` был активирован. Это особенно полезно для использования Tensor Cores на аппаратных средствах NVIDIA с вычислительной способностью `>= 7.5` (Volta).

padding_side (`str`, *необязательный*) : Сторона, на которой модель должна применять выравнивание. Значение выбирается из ['right', 'left']. Значение по умолчанию берётся из атрибута класса с тем же именем.

return_tensors (`str` или [TensorType](/docs/transformers/main/ru/internal/file_utils#transformers.TensorType), *optional*) : Если задано, возвращает тензоры вместо списка целых чисел Python. Допустимые значения:  - `'pt'`: Возвращает объекты `torch.Tensor` PyTorch. - `'np'`: Возвращает объекты `np.ndarray` Numpy.

- ****kwargs** : Передаются в метод `.tokenize()`.

**Возвращает:** `list[int]`, `torch.Tensor` или `np.ndarray`

Токенизированные идентификаторы текста.

Преобразует строку в последовательность идентификаторов (целых чисел), используя токенизатор и словарь.

Аналогично выполнению `self.convert_tokens_to_ids(self.tokenize(text))`.

#### push_to_hub[[transformers.PythonBackend.push_to_hub]]

```python
push_to_hub(repo_id: str, commit_message: str | None = None, commit_description: str | None = None, private: bool | None = None, token: bool | str | None = None, revision: str | None = None, create_pr: bool = False, max_shard_size: int | str | None = '50GB', tags: list[str] | None = None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/utils/hub.py#L822)

**Параметры:**

repo_id (`str`) : Имя репозитория, в который вы хотите загрузить свой токенизатор. При загрузке в определённую организацию это имя должно содержать название вашей организации.

commit_message (`str`, *необязательный*) : Сообщение для коммита при выполнении push. По умолчанию используется `"Upload tokenizer"`.

commit_description (`str`, *необязательный*) : Описание коммита, который будет создан

private (`bool`, *optional*) : Указывает, нужно ли сделать репозиторий приватным. Если `None` (по умолчанию), репозиторий будет публичным, если только по умолчанию для организации не задан приватный режим. Это значение игнорируется, если репозиторий уже существует.

token (`bool` или `str`, *необязательный*) : Токен, используемый в качестве HTTP bearer-авторизации для удалённых файлов. Если `True` (по умолчанию), будет использован токен, сгенерированный при выполнении `hf auth login` (хранится в `~/.huggingface`).

revision (`str`, *необязательный*) : Ветка, в которую будут отправлены загруженные файлы.

create_pr (`bool`, *необязательный*, по умолчанию `False`) : Создавать ли PR с загруженными файлами или коммитить изменения напрямую.

max_shard_size (`int` или `str`, *необязательный*, по умолчанию `"50GB"`) : Применимо только к моделям. Максимальный размер контрольной точки до её разбивки на части. Каждая часть контрольной точки будет иметь размер, меньший этого значения. Если значение указано в виде строки, оно должно состоять из цифр, за которыми следует единица измерения (например, `"5MB"`).

tags (`list[str]`, *необязательный*) : Список тегов для загрузки на Hub.

Загрузите файлы токенизатора в 🤗 Model Hub.

Примеры:

```python
from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-cased")

# Push the tokenizer to your namespace with the name "my-finetuned-bert".
tokenizer.push_to_hub("my-finetuned-bert")

# Push the tokenizer to an organization with the name "my-finetuned-bert".
tokenizer.push_to_hub("huggingface/my-finetuned-bert")
```

#### build_inputs_with_special_tokens[[transformers.PythonBackend.build_inputs_with_special_tokens]]

```python
build_inputs_with_special_tokens(token_ids_0: list, token_ids_1: list[int] | None = None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L865)

**Параметры:**

token_ids_0 (`list[int]`) : Список идентификаторов, к которым будут добавлены специальные токены.

token_ids_1 (`list[int]`, *необязательный*) : Необязательный второй список идентификаторов для пар последовательностей.

**Возвращает:** `list[int]`

Список входных идентификаторов с соответствующими специальными токенами.

Создайте входные данные модели из последовательности или пары последовательностей, добавив специальные токены.

Этот метод динамически формирует входные данные на основе `special_tokens_pattern` токенизатора:
- `"none"`: без специальных токенов
- `"cls_sep"`: [CLS] seq0 [SEP] или [CLS] seq0 [SEP] seq1 [SEP]
- `"eos"`: seq0 [EOS] или seq0 [EOS] seq1 [EOS]
- `"bos"`: [BOS] seq0 или [BOS] seq0 [BOS] seq1
- `"bos_eos"`: [BOS] seq0 [EOS] или [BOS] seq0 [EOS] seq1 [EOS]
- `"cls_double_sep"`: [CLS] seq0 [SEP] или [CLS] seq0 [SEP] [SEP] seq1 [SEP]
- `"prefix_suffix"`: `<prefix_tokens> seq0 [seq1] <suffix_tokens>` (собственный префикс/суффикс, хранящийся в токенизаторе)

#### create_token_type_ids_from_sequences[[transformers.PythonBackend.create_token_type_ids_from_sequences]]

```python
create_token_type_ids_from_sequences(token_ids_0: list, token_ids_1: list[int] | None = None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L1298)

**Параметры:**

token_ids_0 (`list[int]`) : Список идентификаторов.

token_ids_1 (`list[int]`, *необязательный*) : Необязательный второй список идентификаторов для пар последовательностей.

**Возвращает:** `list[int]`

Идентификаторы типов токенов в соответствии с настроенным шаблоном.

Создайте маску из двух переданных последовательностей для использования в задаче классификации пар последовательностей.

Этот метод динамически формирует идентификаторы типов токенов на основе атрибутов конфигурации токенизатора:
- `token_type_ids_pattern`: Шаблон для использования ("all_zeros" или "bert_style")
- `token_type_ids_include_special_tokens`: Учитывать ли специальные токены при вычислении длины

Примеры:
```python
# All zeros pattern (default, used by RoBERTa, BART, etc.)
tokenizer.token_type_ids_pattern = "all_zeros"
# Returns: [0, 0, 0, ...] for both sequences

# BERT-style pattern (first sequence gets 0s, second gets 1s)
tokenizer.token_type_ids_pattern = "bert_style"
# Returns: [0, 0, 0, ..., 1, 1, 1, ...] for sequence pairs
```

#### get_added_vocab[[transformers.PythonBackend.get_added_vocab]]

```python
get_added_vocab()
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L488)

**Возвращает:** `dict[str, int]`

Добавленные токены.

Возвращает добавленные токены словаря в виде словаря «токен — индекс». Результаты могут отличаться от результатов быстрого вызова, поскольку на данный момент токены всегда добавляются, даже если они уже присутствуют в словаре. Это следует изменить.

#### get_special_tokens_mask[[transformers.PythonBackend.get_special_tokens_mask]]

```python
get_special_tokens_mask(token_ids_0: list, token_ids_1: list | None = None, already_has_special_tokens: bool = False)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L969)

**Параметры:**

token_ids_0 (`list[int]`) : Список идентификаторов первой последовательности.

token_ids_1 (`list[int]`, *необязательный*) : Список идентификаторов второй последовательности.

already_has_special_tokens (`bool`, *необязательный*, по умолчанию `False`) : Указывает, является ли список токенов уже отформатированным со специальными токенами для модели.

**Возвращаемое значение:** список целых чисел в диапазоне [0, 1]

1 для специального токена, 0 для токена последовательности.

Получает идентификаторы последовательностей из списка токенов, в который не добавлены специальные токены. Этот метод вызывается при добавлении специальных токенов с помощью методов `prepare_for_model` или `encode_plus` токенизатора.

Этот метод динамически формирует маску специальных токенов на основе `special_tokens_pattern` токенизатора:
- `"none"`: без специальных токенов (по умолчанию, возвращает все нули)
- `"cls_sep"`: [CLS] seq0 [SEP] или [CLS] seq0 [SEP] seq1 [SEP]
- `"eos"`: seq0 [EOS] или seq0 [EOS] seq1 [EOS]
- `"bos"`: [BOS] seq0 или [BOS] seq0 [BOS] seq1
- `"bos_eos"`: [BOS] seq0 [EOS] или [BOS] seq0 [EOS] seq1 [EOS]
- `"cls_double_sep"`: [CLS] seq0 [SEP] или [CLS] seq0 [SEP] [SEP] seq1 [SEP]
- `"prefix_suffix"`: `<prefix_tokens> seq0 [seq1] <suffix_tokens>`

#### num_special_tokens_to_add[[transformers.PythonBackend.num_special_tokens_to_add]]

```python
num_special_tokens_to_add(pair: bool = False)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L602)

**Параметры:**

pair (`bool`, *необязательный*, по умолчанию `False`) : Нужно ли вычислять количество добавленных токенов для пары последовательностей или для одиночной последовательности.

**Возвращает:** `int`

Количество специальных токенов, добавляемых к последовательностям.

Возвращает количество добавленных токенов при кодировании последовательности со специальными токенами.

Это кодирует фиктивный вход и проверяет количество добавленных токенов, поэтому не является эффективным. Не помещайте этот код внутрь цикла обучения.

#### prepare_for_model[[transformers.PythonBackend.prepare_for_model]]

```python
prepare_for_model(ids: list, pair_ids: list[int] | None = None, add_special_tokens: bool = True, padding: bool | str | transformers.utils.generic.PaddingStrategy = False, truncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy = False, max_length: int | None = None, stride: int = 0, pad_to_multiple_of: int | None = None, padding_side: str | None = None, return_tensors: str | transformers.utils.generic.TensorType | None = None, return_token_type_ids: bool | None = None, return_attention_mask: bool | None = None, return_overflowing_tokens: bool = False, return_special_tokens_mask: bool = False, return_length: bool = False, verbose: bool = True, prepend_batch_axis: bool = False, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L1121)

**Параметры:**

ids : Идентификаторы токенизированного входа первой последовательности.

pair_ids : Идентификаторы токенизированного входа второй последовательности (необязательно).

Готовит последовательность входных идентификаторов для использования в модели. Добавляет специальные токены, обрезает и дополняет последовательность.

#### prepare_for_tokenization[[transformers.PythonBackend.prepare_for_tokenization]]

```python
prepare_for_tokenization(text: str, is_split_into_words: bool = False, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L841)

**Параметры:**

text (`str`) : Текст для подготовки.

is_split_into_words (`bool`, *необязательный*, по умолчанию `False`) : Указывает, является ли вход уже предтокенизированным (например, разбитым на слова). Если установлено в `True`, токенизатор предполагает, что вход уже разбит на слова (например, по пробелам), и токенизирует их. Это полезно для NER или классификации токенов.

kwargs (`dict[str, Any]`, *необязательный*) : Ключевые аргументы, используемые для токенизации.

**Возвращает:** `tuple[str, dict[str, Any]]`

Подготовленный текст и неиспользуемые kwargs.

Выполняет необходимые преобразования перед токенизацией.

Этот метод должен извлекать аргументы из `kwargs` и возвращать оставшиеся `kwargs`. В конце процесса кодирования мы проверяем `kwargs`, чтобы убедиться, что все аргументы были использованы.

#### save_vocabulary[[transformers.PythonBackend.save_vocabulary]]

```python
save_vocabulary(save_directory: str, filename_prefix: str | None = None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L1362)

**Параметры:**

save_directory (`str`) : Каталог, в котором будет сохранен словарь.

filename_prefix (`str`, *необязательный*) : Необязательный префикс, который добавляется к именам сохраняемых файлов.

**Возвращает:** `tuple[str, ...]`

Пути к сохранённым файлам или пустой кортеж, если файлы не были сохранены.

Реализация по умолчанию для распространённых схем сохранения словаря. Сохраняет self.encoder/self.vocab в формате JSON, при необходимости вместе с self.bpe_ranks в качестве слияний. Возвращает пустой кортеж, если словарь отсутствует.

Переопределите этот метод, если вашему токенизатору требуется собственная логика сохранения (например, для моделей SentencePiece, нескольких файлов словаря или специальных форматов файлов).

#### tokenize[[transformers.PythonBackend.tokenize]]

```python
tokenize(text: str, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L625)

**Параметры:**

text : последовательность, подлежащая кодированию.

- ****kwargs** : Передаются в специфичный для модели метод предобработки `prepare_for_tokenization`.

**Возвращаемое значение:**

Список токенов.

Преобразует строку в последовательность токенов с помощью токенизатора.

#### truncate_sequences[[transformers.PythonBackend.truncate_sequences]]

```python
truncate_sequences(ids: list, pair_ids: list[int] | None = None, num_tokens_to_remove: int = 0, truncation_strategy: str | transformers.tokenization_utils_base.TruncationStrategy = 'longest_first', stride: int = 0)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L1231)

Обрезает последовательности в соответствии с указанной стратегией.

## PreTrainedTokenizerFast[[transformers.TokenizersBackend]]

Класс [PreTrainedTokenizerFast](/docs/transformers/main/ru/main_classes/tokenizer#transformers.TokenizersBackend) зависит от библиотеки [tokenizers](https://huggingface.co/docs/tokenizers). Токенайзеры, полученные из библиотеки 🤗 tokenizers, можно очень просто загрузить в 🤗 transformers. Ознакомьтесь со страницей [Использование токенайзеров из 🤗 tokenizers](../fast_tokenizers), чтобы понять, как это делается.

#### transformers.TokenizersBackend[[transformers.TokenizersBackend]]

```python
transformers.TokenizersBackend(*args, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L86)

**Параметры:**

model_max_length (`int`, *optional*) : The maximum length (in number of tokens) for the inputs to the transformer model. When the tokenizer is loaded with [from_pretrained()](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.from_pretrained), this will be set to the value stored for the associated model in `max_model_input_sizes` (see above). If no value is provided, will default to VERY_LARGE_INTEGER (`int(1e30)`).

padding_side (`str`, *необязательный*) : Сторона, на которой модель должна применять выравнивание. Значение выбирается из ['right', 'left']. Значение по умолчанию берётся из атрибута класса с тем же именем.

truncation_side (`str`, *необязательный*) : Сторона, на которой модель должна применять усечение. Значение выбирается из ['right', 'left']. Значение по умолчанию берётся из атрибута класса с тем же именем.

chat_template (`str`, *необязательный*) : строка шаблона Jinja, которая будет использоваться для форматирования списков сообщений чата. Полное описание см. по адресу https://huggingface.co/docs/transformers/chat_templating.

model_input_names (`list[string]`, *необязательный*) : Список входных данных, принимаемых прямой передачей модели (например, `"token_type_ids"` или `"attention_mask"`). Значение по умолчанию берётся из атрибута класса с тем же именем.

bos_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, обозначающий начало предложения.

eos_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, обозначающий конец предложения.

unk_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, представляющий токен вне словаря.

sep_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, разделяющий два разных предложения в одном вводе (используется, например, в BERT).

pad_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, используемый для приведения массивов токенов к одинаковому размеру в целях батчинга. В дальнейшем он игнорируется механизмами внимания или при вычислении функции потерь.

cls_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, представляющий класс входных данных (используется, например, в BERT).

mask_token (`str` или `tokenizers.AddedToken`, *необязательный*) : специальный токен, представляющий замаскированный токен (используется в задачах предобучения с маскированием, например, в BERT). Будет связан с `self.mask_token` и `self.mask_token_id`.

extra_special_tokens (список `str` или `tokenizers.AddedToken`, *необязательный*) : Список дополнительных специальных токенов, специфичных для модели. Добавьте их сюда, чтобы они пропускались при декодировании, если `skip_special_tokens` установлен в True. Если они не входят в словарь, они будут добавлены в конец словаря.

split_special_tokens (`bool`, *необязательный*, по умолчанию `False`) : Указывает, следует ли разделять специальные токены в процессе токенизации. Передача этого аргумента влияет на внутреннее состояние токенизатора. По умолчанию специальные токены не разделяются. Это означает, что если `<s>` является `bos_token`, то `tokenizer.tokenize("<s>") = ['<s>`]. В противном случае, если `split_special_tokens=True`, то `tokenizer.tokenize("<s>")` вернёт `['<','s', '>']`.

tokenizer_object (`tokenizers.Tokenizer`) : объект `tokenizers.Tokenizer` из 🤗 tokenizers, от которого требуется создать экземпляр. Подробнее см. [Использование токенизаторов из 🤗 tokenizers](../fast_tokenizers).

tokenizer_file (`str`) : Путь к локальному JSON-файлу, представляющему ранее сериализованный объект `tokenizers.Tokenizer` из 🤗 tokenizers.

Базовый класс для всех быстрых токенизаторов (обёртка над библиотекой HuggingFace tokenizers).

Наследуется от [PreTrainedTokenizerBase](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase).

Обрабатывает все общие методы токенизации и специальных токенов, а также методы загрузки/кэширования/чтения предобученных токенизаторов, а также добавления токенов в словарь.

Этот класс также содержит добавленные токены в унифицированном виде поверх всех токенизаторов, поэтому нам не нужно обрабатывать специфические методы расширения словаря различных базовых структур словаря (BPE, sentencepiece...).

Атрибуты класса (переопределяются производными классами)

- **vocab_files_names** (`dict[str, str]`) — словарь, в котором ключами являются имена аргументов `__init__` для каждого файла словаря, необходимого модели, а значениями — имена файлов для сохранения соответствующих файлов (строки).
- **pretrained_vocab_files_map** (`dict[str, dict[str, str]]`) -- Словарь словарей, где ключи верхнего уровня — это имена аргументов `__init__` для каждого файла словаря, необходимого модели, а ключи нижнего уровня — `short-cut-names` предобученных моделей, а соответствующие значения — `url` на соответствующий файл предобученного словаря.
- **model_input_names** (`list[str]`) — список входных данных, ожидаемых в прямом проходе модели.
- **padding_side** (`str`) — значение по умолчанию для стороны, на которой модель должна применять заполнение. Должно быть `'right'` или `'left'`.
- **truncation_side** (`str`) — значение по умолчанию для стороны, на которой модель должна применять усечение. Должно быть `'right'` или `'left'`.

#### __call__[[transformers.TokenizersBackend.__call__]]

```python
__call__(text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, text_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = None, add_special_tokens: bool = True, padding: bool | str | PaddingStrategy = False, truncation: bool | str | TruncationStrategy | None = None, max_length: int | None = None, stride: int = 0, is_split_into_words: bool = False, pad_to_multiple_of: int | None = None, padding_side: str | None = None, return_tensors: str | TensorType | None = None, return_token_type_ids: bool | None = None, return_attention_mask: bool | None = None, return_overflowing_tokens: bool = False, return_special_tokens_mask: bool = False, return_offsets_mapping: bool = False, return_length: bool = False, verbose: bool = True, tokenizer_kwargs: dict[str, Any] | None = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L2449)

**Параметры:**

text (`str`, `list[str]`, `list[list[str]]`, *необязательный*) : Последовательность или батч последовательностей для кодирования. Каждая последовательность может быть строкой или списком строк (предтокенизированная строка). Если последовательности заданы в виде списка строк (предтокенизированных), необходимо установить `is_split_into_words=True` (чтобы устранить неоднозначность с батчем последовательностей).

text_pair (`str`, `list[str]`, `list[list[str]]`, *необязательный*) : Последовательность или батч последовательностей для кодирования. Каждая последовательность может быть строкой или списком строк (предтокенизированная строка). Если последовательности заданы в виде списка строк (предтокенизированных), необходимо установить `is_split_into_words=True` (чтобы устранить неоднозначность с батчем последовательностей).

text_target (`str`, `list[str]`, `list[list[str]]`, *необязательный*) : Последовательность или батч последовательностей, которые нужно закодировать в качестве целевых текстов. Каждая последовательность может быть строкой или списком строк (предтокенизированная строка). Если последовательности заданы в виде списка строк (предтокенизированных), необходимо установить `is_split_into_words=True` (чтобы устранить неоднозначность с батчем последовательностей).

text_pair_target (`str`, `list[str]`, `list[list[str]]`, *необязательный*) : Последовательность или батч последовательностей, которые нужно закодировать в качестве целевых текстов. Каждая последовательность может быть строкой или списком строк (предтокенизированная строка). Если последовательности заданы в виде списка строк (предтокенизированных), необходимо установить `is_split_into_words=True` (чтобы устранить неоднозначность с батчем последовательностей).

tokenizer_kwargs (`dict[str, Any]`, *необязательный*) : Дополнительные kwargs для передачи в токенизатор. Они будут объединены с явными параметрами и другими kwargs, при этом явные параметры имеют приоритет.

add_special_tokens (`bool`, *необязательный*, по умолчанию `True`) : Указывает, следует ли добавлять специальные токены при кодировании последовательностей. Для этого используется базовая функция `PretrainedTokenizerBase.build_inputs_with_special_tokens`, которая определяет, какие токены автоматически добавляются к входным идентификаторам. Это полезно, если вы хотите автоматически добавлять токены `bos` или `eos`.

padding (`bool`, `str` или [PaddingStrategy](/docs/transformers/main/ru/internal/file_utils#transformers.utils.PaddingStrategy), *необязательный*, по умолчанию `False`) : Включает и управляет выравниванием. Принимает следующие значения:  - `True` или `'longest'`: Выравнивание до самой длинной последовательности в батче (или без выравнивания, если предоставлена только одна последовательность). - `'max_length'`: Выравнивание до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. - `False` или `'do_not_pad'` (по умолчанию): Без выравнивания (т. е. на выходе может быть батч с последовательностями разной длины).

truncation (`bool`, `str` или [TruncationStrategy](/docs/transformers/main/ru/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy), *необязательный*, по умолчанию `False`) : Включает и управляет усечением. Принимает следующие значения:  - `True` или `'longest_first'`: Усечение до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. Усечение выполняется посимвольно: если предоставлена пара последовательностей (или пакет пар), то символ удаляется из самой длинной последовательности в паре. - `'only_first'`: Усечение до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. Если предоставлена пара последовательностей (или пакет пар), усечение выполняется только для первой последовательности в паре. - `'only_second'`: Усечение до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. Если предоставлена пара последовательностей (или пакет пар), усечение выполняется только для второй последовательности в паре. - `False` или `'do_not_truncate'` (по умолчанию): Усечение не выполняется (т. е. на выходе может быть пакет с длинами последовательностей, превышающими максимально допустимый размер входных данных модели).

max_length (`int`, *optional*) : Управляет максимальной длиной, используемой одним из параметров усечения/дополнения. Если значение не задано или равно `None`, будет использована предопределённая максимальная длина модели, если один из параметров усечения/дополнения требует указания максимальной длины. Если у модели нет конкретной максимальной длины входных данных (как у XLNet), усечение/дополнение до максимальной длины будет отключено.

stride (`int`, *optional*, по умолчанию 0) : Если задано число вместе с `max_length`, то переполненные токены, возвращаемые при `return_overflowing_tokens=True`, будут содержать некоторые токены из конца усечённой последовательности, чтобы обеспечить перекрытие между усечённой и переполненной последовательностями. Значение этого аргумента определяет количество перекрывающихся токенов.

is_split_into_words (`bool`, *необязательный*, по умолчанию `False`) : Указывает, является ли вход уже предтокенизированным (например, разбитым на слова). Если установлено в `True`, токенизатор предполагает, что вход уже разбит на слова (например, по пробелам), и токенизирует их. Это полезно для NER или классификации токенов.

pad_to_multiple_of (`int`, *optional*) : Если задано, последовательность будет дополнена до кратного указанного значения. Требуется, чтобы `padding` был активирован. Это особенно полезно для использования Tensor Cores на аппаратных средствах NVIDIA с вычислительной способностью `>= 7.5` (Volta).

padding_side (`str`, *необязательный*) : Сторона, на которой модель должна применять выравнивание. Значение выбирается из ['right', 'left']. Значение по умолчанию берётся из атрибута класса с тем же именем.

return_tensors (`str` или [TensorType](/docs/transformers/main/ru/internal/file_utils#transformers.TensorType), *optional*) : Если задано, возвращает тензоры вместо списка целых чисел Python. Допустимые значения:  - `'pt'`: Возвращает объекты `torch.Tensor` PyTorch. - `'np'`: Возвращает объекты `np.ndarray` Numpy.

return_token_type_ids (`bool`, *необязательный*) : Указывает, следует ли возвращать идентификаторы типов токенов. Если значение не задано, идентификаторы типов токенов будут возвращены в соответствии со значением по умолчанию конкретного токенизатора, определяемым атрибутом `return_outputs`.  [Что такое идентификаторы типов токенов?](../glossary#token-type-ids)

return_attention_mask (`bool`, *необязательный*) : Указывает, следует ли возвращать маску внимания. Если значение не задано, маска внимания будет возвращена в соответствии со значением по умолчанию конкретного токенизатора, определяемым атрибутом `return_outputs`.  [Что такое маски внимания?](../glossary#attention-mask)

return_overflowing_tokens (`bool`, *необязательный*, по умолчанию `False`) : Возвращать ли переполненные последовательности токенов. Если передана пара последовательностей входных идентификаторов (или батч пар) с `truncation_strategy = longest_first` или `True`, вместо возврата переполненных токенов будет выброшена ошибка.

return_special_tokens_mask (`bool`, *необязательный*, по умолчанию `False`) : Нужно ли возвращать информацию о маске специальных токенов.

return_offsets_mapping (`bool`, *необязательный*, по умолчанию `False`) : Возвращать или нет `(char_start, char_end)` для каждого токена. Это доступно только для быстрых токенизаторов, наследующихся от [PreTrainedTokenizerFast](/docs/transformers/main/ru/main_classes/tokenizer#transformers.TokenizersBackend); при использовании токенизатора на Python этот метод вызовет `NotImplementedError`.

return_length  (`bool`, *необязательный*, по умолчанию `False`) : Возвращать ли длины закодированных входных данных.

verbose (`bool`, *необязательный*, по умолчанию `True`) : Выводить ли дополнительную информацию и предупреждения.

- ****kwargs** : передаются в метод `self.tokenize()`

**Возвращает:** [BatchEncoding](/docs/transformers/main/ru/main_classes/tokenizer#transformers.BatchEncoding)

[BatchEncoding](/docs/transformers/main/ru/main_classes/tokenizer#transformers.BatchEncoding) со следующими полями:

- **input_ids** -- Список идентификаторов токенов, которые подаются в модель.

  [Что такое входные идентификаторы?](../glossary#input-ids)

- **token_type_ids** -- Список идентификаторов типов токенов, передаваемых в модель (если `return_token_type_ids=True` или если *"token_type_ids"* входит в `self.model_input_names`).

  [Что такое идентификаторы типов токенов?](../glossary#token-type-ids)

- **attention_mask** -- список индексов, указывающих, на какие токены модель должна обращать внимание (когда `return_attention_mask=True` или если *"attention_mask"* входит в `self.model_input_names`).

  [Что такое маски внимания?](../glossary#attention-mask)

- **overflowing_tokens** -- Список переполненных последовательностей токенов (если заданы `max_length` и `return_overflowing_tokens=True`).
- **num_truncated_tokens** -- Количество отсечённых токенов (если задано `max_length` и `return_overflowing_tokens=True`).
- **special_tokens_mask** -- Список нулей и единиц, где 1 указывает на добавленные специальные токены, а 0 — на обычные токены последовательности (при `add_special_tokens=True` и `return_special_tokens_mask=True`).
- **length** -- Длина входных данных (когда `return_length=True`)

Основной метод для токенизации и подготовки одной или нескольких последовательностей или одной или нескольких пар последовательностей для модели.

#### add_tokens[[transformers.TokenizersBackend.add_tokens]]

```python
add_tokens(new_tokens: str | AddedToken | Sequence[str | AddedToken], special_tokens: bool = False)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L1218)

**Параметры:**

new_tokens (`str`, `tokenizers.AddedToken` или последовательность *str* или `tokenizers.AddedToken`) : Токены добавляются только в том случае, если они ещё отсутствуют в словаре. `tokenizers.AddedToken` инкапсулирует строковый токен, позволяя настраивать его поведение: должен ли токен соответствовать только одному слову, следует ли удалять все возможные пробельные символы слева, следует ли удалять все возможные пробельные символы справа и т. д.

special_tokens (`bool`, *необязательный*, по умолчанию `False`) : Указывает, является ли токен специальным. Это в основном влияет на поведение нормализации. Подробности о `tokenizers.AddedToken` см. в библиотеке HuggingFace tokenizers.

**Возвращает:** `int`

Количество токенов, добавленных в словарь.

#TODO удалить это отсюда! PreTrainedTokenizerBase не должен зависеть от AddedToken.

Добавьте список новых токенов. Если новые токены отсутствуют в словаре, они добавляются в его конец. Таким образом, добавленные токены и токены из словаря алгоритма токенизации обрабатываются по-разному.

Быстрые токенизаторы с претокенизатором `Metaspace`, использующим `prepend_scheme="always"` (например, NLLB), добавляют `"▁"` к тексту, следующему за добавленным токеном. После `tokenizer.add_tokens(["abcd"])` строка `"abcdgym"` токенизируется как `["abcd", "▁gym"]` и декодируется в `"abcd gym"`. Если добавленные токены могут появляться внутри слов, переключите претокенизатор

в `prepend_scheme="first"`, чтобы префикс добавлялся только к началу входных данных:

```python
from tokenizers import pre_tokenizers

pre_tokenizer = tokenizer.backend_tokenizer.pre_tokenizer
tokenizer.backend_tokenizer.pre_tokenizer = pre_tokenizers.Metaspace(
    replacement=pre_tokenizer.replacement, prepend_scheme="first", split=pre_tokenizer.split
)
```

Примеры:

```python
# Let's see how to increase the vocabulary of Bert model and tokenizer
tokenizer = BertTokenizerFast.from_pretrained("google-bert/bert-base-uncased")
model = BertModel.from_pretrained("google-bert/bert-base-uncased")

num_added_toks = tokenizer.add_tokens(["new_tok1", "my_new-tok2"])
print("We have added", num_added_toks, "tokens")
# Notice: resize_token_embeddings expect to receive the full size of the new vocabulary, i.e., the length of the tokenizer.
model.resize_token_embeddings(len(tokenizer))
```

#### add_special_tokens[[transformers.TokenizersBackend.add_special_tokens]]

```python
add_special_tokens(special_tokens_dict: dict[str, str | AddedToken | Sequence[str | AddedToken]], replace_extra_special_tokens = True)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L1113)

**Параметры:**

special_tokens_dict (словарь *str* в *str*, `tokenizers.AddedToken` или `Sequence[Union[str, AddedToken]]`) : Ключи должны входить в список предопределённых специальных атрибутов: [`bos_token`, `eos_token`, `unk_token`, `sep_token`, `pad_token`, `cls_token`, `mask_token`, `extra_special_tokens`]. Токены добавляются только в том случае, если их ещё нет в словаре (проверяется по тому, назначает ли токенизатор им индекс `unk_token`).

replace_extra_special_tokens (`bool`, *необязательный*, по умолчанию `True`) : Если `True`, существующий список дополнительных специальных токенов будет заменён списком, переданным в `special_tokens_dict`. В противном случае `extra_special_tokens` будет дополнен. В первом случае токены НЕ будут удалены из полного словаря токенизатора — они лишь будут помечены как неспециальные. Помните, что это влияет только на то, какие токены пропускаются при декодировании, а не на `added_tokens_encoder` и `added_tokens_decoder`. Это означает, что предыдущие `extra_special_tokens` остаются добавленными токенами и не будут разбиваться моделью.

**Возвращает:** `int`

Количество токенов, добавленных в словарь.

Добавляет словарь специальных токенов (eos, pad, cls и т. д.) в энкодер и связывает их с атрибутами класса. Если специальные токены отсутствуют в словаре, они добавляются в него (индексация начинается с последнего индекса текущего словаря).

При добавлении новых токенов в словарь необходимо также изменить размер матрицы эмбеддингов токенов модели, чтобы её матрица эмбеддингов соответствовала токенизатору.

Для этого используйте метод [resize_token_embeddings()](/docs/transformers/main/ru/main_classes/model#transformers.PreTrainedModel.resize_token_embeddings).

Использование `add_special_tokens` гарантирует, что ваши специальные токены можно использовать несколькими способами:

- Специальные токены можно пропустить при декодировании, используя `skip_special_tokens = True`.
- Специальные токены тщательно обрабатываются токенизатором (они никогда не разбиваются), аналогично `AddedTokens`.
- Вы можете легко обращаться к специальным токенам с помощью атрибутов класса токенизатора, например `tokenizer.cls_token`. Это упрощает разработку скриптов обучения и дообучения, не привязанных к конкретной модели.

По возможности, специальные токены уже зарегистрированы для предоставленных предобученных моделей (например, [BertTokenizer](/docs/transformers/main/ru/model_doc/lxmert#transformers.BertTokenizer) `cls_token` уже зарегистрирован как `'[CLS]'`, а для XLM он также зарегистрирован как `'</s>'`).

Примеры:

```python
# Let's see how to add a new classification token to GPT-2
tokenizer = GPT2Tokenizer.from_pretrained("openai-community/gpt2")
model = GPT2Model.from_pretrained("openai-community/gpt2")

special_tokens_dict = {"cls_token": "<CLS>"}

num_added_toks = tokenizer.add_special_tokens(special_tokens_dict)
print("We have added", num_added_toks, "tokens")
# Notice: resize_token_embeddings expect to receive the full size of the new vocabulary, i.e., the length of the tokenizer.
model.resize_token_embeddings(len(tokenizer))

assert tokenizer.cls_token == "<CLS>"
```

#### apply_chat_template[[transformers.TokenizersBackend.apply_chat_template]]

```python
apply_chat_template(conversation: list[dict[str, str]] | list[list[dict[str, str]]], tools: list[dict | Callable] | None = None, documents: list[dict[str, str]] | None = None, chat_template: str | None = None, add_generation_prompt: bool = False, continue_final_message: bool | str = False, tokenize: bool = True, sanitize_control_tokens: bool = False, padding: bool | str | PaddingStrategy = False, truncation: bool = False, max_length: int | None = None, return_tensors: str | TensorType | None = None, return_dict: bool = True, return_assistant_tokens_mask: bool = False, tokenizer_kwargs: dict[str, Any] | None = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L3021)

**Параметры:**

conversation (Union[list[dict[str, str]], list[list[dict[str, str]]]]) : список словарей с ключами "role" и "content", представляющий историю чата на данный момент.

tools (`list[Union[Dict, Callable]]`, *необязательный*) : Список инструментов (вызываемых функций), доступных модели. Если шаблон не поддерживает вызов функций, этот аргумент не будет иметь эффекта. Каждый инструмент должен передаваться в виде JSON Schema, указывающего имя, описание и типы аргументов инструмента. Подробнее см. в нашем [руководстве по использованию инструментов](https://huggingface.co/docs/transformers/en/chat_extras#passing-tools).

documents (`list[dict[str, str]]`, *необязательный*) : Список словарей, представляющих документы, доступные модели при выполнении RAG (генерация с дополнением из поиска). Если шаблон не поддерживает RAG, этот аргумент не будет иметь эффекта. Рекомендуется, чтобы каждый документ был словарем, содержащим ключи "title" и "text".

chat_template (`str`, *необязательный*) : Шаблон Jinja, используемый для этого преобразования. Как правило, не нужно передавать в этот аргумент ничего, так как по умолчанию используется шаблон модели.

add_generation_prompt (bool, *optional*) : Если этот параметр установлен, к отформатированному выводу будет добавлен промпт с токеном(ами), указывающими на начало сообщения ассистента. Это полезно, если вы хотите сгенерировать ответ от модели. Обратите внимание, что этот аргумент будет передан в шаблон чата, поэтому для того, чтобы он имел эффект, он должен поддерживаться в шаблоне.

continue_final_message (bool or str, *необязательный*) : Если этот параметр задан, чат будет отформатирован так, чтобы последнее сообщение в чате было открытым, без токенов EOS. Модель продолжит это сообщение, а не начнёт новое. Это позволяет «предзаполнить» часть ответа модели. Если передана строка, она будет использована в качестве ключа для поля, которое нужно продолжить (например, "reasoning_content"). Не может использоваться одновременно с `add_generation_prompt`.

tokenize (`bool`, по умолчанию `True`) : Флаг, определяющий, следует ли токенизировать вывод. Если `False`, выводом будет строка.

sanitize_control_tokens (`bool`, по умолчанию `False`) : Если установлено, управляющие токены, встречающиеся в сообщениях, инструментах или документах, кодируются как обычный текст, так что в виде токенов кодируются только управляющие токены, записанные самим шаблоном чата. К управляющим токенам относятся специальные токены токенизатора, а также добавленные токены из `tokenizer.chat_control_tokens`. Если эта переменная не задана, управляющие токены определяются на основе добавленных токенов, которые встречаются в тексте шаблона чата и строковых литералах. Санитизируются только целые управляющие токены, поэтому, если шаблон объединяет строки из входных данных в управляющие токены (например, `'<|' + message['role'] + '|>'`), эти строки необходимо проверять отдельно. Ключи словарей также не санитизируются.

padding (`bool`, `str` или [PaddingStrategy](/docs/transformers/main/ru/internal/file_utils#transformers.utils.PaddingStrategy), *необязательный*, по умолчанию `False`) : Выберите стратегию выравнивания возвращаемых последовательностей (с учётом стороны выравнивания и индекса выравнивания модели) из следующих:  - `True` или `'longest'`: Выровнять до самой длинной последовательности в батче (или не выравнивать, если предоставлена только одна последовательность). - `'max_length'`: Выровнять до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. - `False` или `'do_not_pad'` (по умолчанию): Без выравнивания (т. е. может быть выведен батч с последовательностями разной длины).

truncation (`bool`, по умолчанию `False`) : Указывает, нужно ли обрезать последовательности до максимальной длины. Не имеет эффекта, если tokenize равно `False`.

max_length (`int`, *optional*) : Максимальная длина (в токенах), используемая для выравнивания или усечения. Не влияет на результат, если tokenize равно `False`. Если значение не указано, по умолчанию будет использован атрибут `max_length` токенизатора.

return_tensors (`str` или [TensorType](/docs/transformers/main/ru/internal/file_utils#transformers.TensorType), *необязательный*) : Если задано, возвращает тензоры конкретного фреймворка. Не влияет на результат, если tokenize равно `False`. Допустимые значения: - `'pt'`: возвращает объекты `torch.Tensor` PyTorch. - `'np'`: возвращает объекты `np.ndarray` NumPy.

return_dict (`bool`, по умолчанию `True`) : Возвращать ли словарь с именованными выходами. Не имеет значения, если tokenize равно `False`.

tokenizer_kwargs (`dict[str : Any]`, *необязательный*): Дополнительные аргументы для передачи в токенизатор.

return_assistant_tokens_mask (`bool`, по умолчанию `False`) : Указывает, следует ли возвращать маску токенов, сгенерированных ассистентом. Для токенов, сгенерированных ассистентом, маска будет содержать 1. Для токенов пользователя и системы маска будет содержать 0. Эта функция доступна только для шаблонов чата, которые поддерживают её с помощью ключевого слова `{% generation %}`.

- ****kwargs** : Дополнительные аргументы, передаваемые в рендер шаблона. Будут доступны для чат-шаблона.

**Возвращает:** `Union[list[int], Dict]`

Список идентификаторов токенов, представляющий токенизированный чат на данный момент, включая управляющие токены. Этот вывод готов к передаче в модель, как напрямую, так и через методы вроде `generate()`. Если `return_dict` установлен, будет возвращен словарь с результатами токенизатора.

Преобразует список словарей с ключами `"role"` и `"content"` в список идентификаторов токенов. Этот метод предназначен для использования с чат-моделями и читает атрибут chat_template токенизатора, чтобы определить формат и управляющие токены, используемые при преобразовании.

#### batch_decode[[transformers.TokenizersBackend.batch_decode]]

```python
batch_decode(sequences: list[int] | list[list[int]] | np.ndarray | torch.Tensor, skip_special_tokens: bool = False, clean_up_tokenization_spaces: bool | None = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L2933)

**Параметры:**

sequences (`Union[list[int], list[list[int]], np.ndarray, torch.Tensor]`) : Список идентификаторов токенизированного входа. Может быть получен с помощью метода `__call__`.

skip_special_tokens (`bool`, *необязательный*, по умолчанию `False`) : Указывает, следует ли удалять специальные токены при декодировании.

clean_up_tokenization_spaces (`bool`, *необязательный*) : Указывает, следует ли очищать пробелы токенизации. Если `None`, по умолчанию используется `self.clean_up_tokenization_spaces`.

kwargs (дополнительные аргументы ключ-значение, *необязательные*): будут переданы в специфичный для базовой модели метод декодирования.

**Возвращает:** `list[str]`

Список декодированных предложений.

Преобразуйте список списков идентификаторов токенов в список строк, вызвав decode.

Этот метод предоставляется в целях обратной совместимости. Метод `decode` теперь нативно обрабатывает пакетный ввод, поэтому вы можете использовать `decode` напрямую вместо `batch_decode`.

#### decode[[transformers.TokenizersBackend.decode]]

```python
decode(token_ids: int | list[int] | list[list[int]] | np.ndarray | torch.Tensor, skip_special_tokens: bool = False, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L2885)

**Параметры:**

token_ids (`Union[int, list[int], list[list[int]], np.ndarray, torch.Tensor]`) : одна последовательность или батч (список последовательностей) токенизированных входных id. Может быть получена с помощью метода `__call__`.

skip_special_tokens (`bool`, *необязательный*, по умолчанию `False`) : Указывает, следует ли удалять специальные токены при декодировании.

kwargs (дополнительные аргументы ключ-значение, *необязательные*): будут переданы в специфичный для базовой модели метод декодирования.

**Возвращает:** `Union[str, list[str]]`

Декодированная строка для одной последовательности или список декодированных строк для батча последовательностей.

Преобразует последовательность идентификаторов в строку или список последовательностей в список строк, используя токенизатор и словарь, с опциями для удаления специальных токенов и очистки пробелов токенизации.

Аналогично выполнению `self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids))`.

#### encode[[transformers.TokenizersBackend.encode]]

```python
encode(text: TextInput | PreTokenizedInput | EncodedInput, text_pair: TextInput | PreTokenizedInput | EncodedInput | None = None, add_special_tokens: bool = True, padding: bool | str | PaddingStrategy = False, truncation: bool | str | TruncationStrategy | None = None, max_length: int | None = None, stride: int = 0, padding_side: str | None = None, return_tensors: str | TensorType | None = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L2263)

**Параметры:**

text (`str`, `list[str]` or `list[int]`) : Первая последовательность, подлежащая кодированию. Это может быть строка, список строк (токенизированная строка с использованием метода `tokenize`) или список целых чисел (идентификаторы токенизированной строки, полученные с помощью метода `convert_tokens_to_ids`).

text_pair (`str`, `list[str]` или `list[int]`, *необязательный*) : Необязательная вторая последовательность для кодирования. Это может быть строка, список строк (токенизированная строка с использованием метода `tokenize`) или список целых чисел (идентификаторы токенизированной строки с использованием метода `convert_tokens_to_ids`).

add_special_tokens (`bool`, *необязательный*, по умолчанию `True`) : Указывает, следует ли добавлять специальные токены при кодировании последовательностей. Для этого используется базовая функция `PretrainedTokenizerBase.build_inputs_with_special_tokens`, которая определяет, какие токены автоматически добавляются к входным идентификаторам. Это полезно, если вы хотите автоматически добавлять токены `bos` или `eos`.

padding (`bool`, `str` или [PaddingStrategy](/docs/transformers/main/ru/internal/file_utils#transformers.utils.PaddingStrategy), *необязательный*, по умолчанию `False`) : Включает и управляет выравниванием. Принимает следующие значения:  - `True` или `'longest'`: Выравнивание до самой длинной последовательности в батче (или без выравнивания, если предоставлена только одна последовательность). - `'max_length'`: Выравнивание до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. - `False` или `'do_not_pad'` (по умолчанию): Без выравнивания (т. е. на выходе может быть батч с последовательностями разной длины).

truncation (`bool`, `str` или [TruncationStrategy](/docs/transformers/main/ru/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy), *необязательный*, по умолчанию `False`) : Включает и управляет усечением. Принимает следующие значения:  - `True` или `'longest_first'`: Усечение до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. Усечение выполняется посимвольно: если предоставлена пара последовательностей (или пакет пар), то символ удаляется из самой длинной последовательности в паре. - `'only_first'`: Усечение до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. Если предоставлена пара последовательностей (или пакет пар), усечение выполняется только для первой последовательности в паре. - `'only_second'`: Усечение до максимальной длины, указанной в аргументе `max_length`, или до максимально допустимой входной длины для модели, если этот аргумент не указан. Если предоставлена пара последовательностей (или пакет пар), усечение выполняется только для второй последовательности в паре. - `False` или `'do_not_truncate'` (по умолчанию): Усечение не выполняется (т. е. на выходе может быть пакет с длинами последовательностей, превышающими максимально допустимый размер входных данных модели).

max_length (`int`, *optional*) : Управляет максимальной длиной, используемой одним из параметров усечения/дополнения. Если значение не задано или равно `None`, будет использована предопределённая максимальная длина модели, если один из параметров усечения/дополнения требует указания максимальной длины. Если у модели нет конкретной максимальной длины входных данных (как у XLNet), усечение/дополнение до максимальной длины будет отключено.

stride (`int`, *optional*, по умолчанию 0) : Если задано число вместе с `max_length`, то переполненные токены, возвращаемые при `return_overflowing_tokens=True`, будут содержать некоторые токены из конца усечённой последовательности, чтобы обеспечить перекрытие между усечённой и переполненной последовательностями. Значение этого аргумента определяет количество перекрывающихся токенов.

is_split_into_words (`bool`, *необязательный*, по умолчанию `False`) : Указывает, является ли вход уже предтокенизированным (например, разбитым на слова). Если установлено в `True`, токенизатор предполагает, что вход уже разбит на слова (например, по пробелам), и токенизирует их. Это полезно для NER или классификации токенов.

pad_to_multiple_of (`int`, *optional*) : Если задано, последовательность будет дополнена до кратного указанного значения. Требуется, чтобы `padding` был активирован. Это особенно полезно для использования Tensor Cores на аппаратных средствах NVIDIA с вычислительной способностью `>= 7.5` (Volta).

padding_side (`str`, *необязательный*) : Сторона, на которой модель должна применять выравнивание. Значение выбирается из ['right', 'left']. Значение по умолчанию берётся из атрибута класса с тем же именем.

return_tensors (`str` или [TensorType](/docs/transformers/main/ru/internal/file_utils#transformers.TensorType), *optional*) : Если задано, возвращает тензоры вместо списка целых чисел Python. Допустимые значения:  - `'pt'`: Возвращает объекты `torch.Tensor` PyTorch. - `'np'`: Возвращает объекты `np.ndarray` Numpy.

- ****kwargs** : Передаются в метод `.tokenize()`.

**Возвращает:** `list[int]`, `torch.Tensor` или `np.ndarray`

Токенизированные идентификаторы текста.

Преобразует строку в последовательность идентификаторов (целых чисел), используя токенизатор и словарь.

Аналогично выполнению `self.convert_tokens_to_ids(self.tokenize(text))`.

#### push_to_hub[[transformers.TokenizersBackend.push_to_hub]]

```python
push_to_hub(repo_id: str, commit_message: str | None = None, commit_description: str | None = None, private: bool | None = None, token: bool | str | None = None, revision: str | None = None, create_pr: bool = False, max_shard_size: int | str | None = '50GB', tags: list[str] | None = None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/utils/hub.py#L822)

**Параметры:**

repo_id (`str`) : Имя репозитория, в который вы хотите загрузить свой токенизатор. При загрузке в определённую организацию это имя должно содержать название вашей организации.

commit_message (`str`, *необязательный*) : Сообщение для коммита при выполнении push. По умолчанию используется `"Upload tokenizer"`.

commit_description (`str`, *необязательный*) : Описание коммита, который будет создан

private (`bool`, *optional*) : Указывает, нужно ли сделать репозиторий приватным. Если `None` (по умолчанию), репозиторий будет публичным, если только по умолчанию для организации не задан приватный режим. Это значение игнорируется, если репозиторий уже существует.

token (`bool` или `str`, *необязательный*) : Токен, используемый в качестве HTTP bearer-авторизации для удалённых файлов. Если `True` (по умолчанию), будет использован токен, сгенерированный при выполнении `hf auth login` (хранится в `~/.huggingface`).

revision (`str`, *необязательный*) : Ветка, в которую будут отправлены загруженные файлы.

create_pr (`bool`, *необязательный*, по умолчанию `False`) : Создавать ли PR с загруженными файлами или коммитить изменения напрямую.

max_shard_size (`int` или `str`, *необязательный*, по умолчанию `"50GB"`) : Применимо только к моделям. Максимальный размер контрольной точки до её разбивки на части. Каждая часть контрольной точки будет иметь размер, меньший этого значения. Если значение указано в виде строки, оно должно состоять из цифр, за которыми следует единица измерения (например, `"5MB"`).

tags (`list[str]`, *необязательный*) : Список тегов для загрузки на Hub.

Загрузите файлы токенизатора в 🤗 Model Hub.

Примеры:

```python
from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-cased")

# Push the tokenizer to your namespace with the name "my-finetuned-bert".
tokenizer.push_to_hub("my-finetuned-bert")

# Push the tokenizer to an organization with the name "my-finetuned-bert".
tokenizer.push_to_hub("huggingface/my-finetuned-bert")
```

#### convert_to_native_format[[transformers.TokenizersBackend.convert_to_native_format]]

```python
convert_to_native_format(trust_remote_code = False, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L103)

Создайте бэкенд `tokenizers.Tokenizer` из доступных файлов сериализации (tokenizer.json, sentencepiece models, tekken.json, vocab/merges).

#### get_added_vocab[[transformers.TokenizersBackend.get_added_vocab]]

```python
get_added_vocab()
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L740)

**Возвращает:** `dict[str, int]`

Добавленные токены.

Возвращает добавленные токены в словаре в виде словаря, сопоставляющего токены с их индексами.

#### num_special_tokens_to_add[[transformers.TokenizersBackend.num_special_tokens_to_add]]

```python
num_special_tokens_to_add(pair: bool = False)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L837)

**Параметры:**

pair (`bool`, *необязательный*, по умолчанию `False`) : Нужно ли вычислять количество добавленных токенов для пары последовательностей или для одиночной последовательности.

**Возвращает:** `int`

Количество специальных токенов, добавляемых к последовательностям.

Возвращает количество добавленных токенов при кодировании последовательности со специальными токенами.

Это кодирует фиктивный вход и проверяет количество добавленных токенов, поэтому не является эффективным. Не помещайте этот код внутрь цикла обучения.

#### save_pretrained[[transformers.TokenizersBackend.save_pretrained]]

```python
save_pretrained(save_directory: str | os.PathLike, legacy_format: bool | None = None, filename_prefix: str | None = None, push_to_hub: bool = False, save_format: str | None = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L559)

**Параметры:**

save_format (`str`, *необязательный*) : `"mistral"` для сохранения в формате `tekken.json` путём копирования исходного файла (требуется наличие исходного файла словаря tekken). При сохранении имя нормализуется до `tekken.json`, и созданный токенизатор должен точно соответствовать ему. `"hf"` или `None` для формата HuggingFace по умолчанию.

kwargs (`dict[str, Any]`, *необязательный*) : Дополнительные именованные аргументы, передаваемые в метод [push_to_hub()](/docs/transformers/main/ru/main_classes/model#transformers.utils.PushToHubMixin.push_to_hub).

**Возвращаемое значение:** кортеж `str`

Файлы сохранены.

Сохраните полное состояние токенизатора.

Расширяет [save_pretrained()](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.save_pretrained) поддержкой `save_format` для токенизаторов, сконвертированных из нативного файла словаря (например, `tekken.json` от Mistral). См. базовый метод для `legacy_format`, `filename_prefix` и `push_to_hub`.

#### set_truncation_and_padding[[transformers.TokenizersBackend.set_truncation_and_padding]]

```python
set_truncation_and_padding(padding_strategy: PaddingStrategy, truncation_strategy: TruncationStrategy, max_length: int, stride: int, pad_to_multiple_of: int | None, padding_side: str | None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L896)

**Параметры:**

padding_strategy ([PaddingStrategy](/docs/transformers/main/ru/internal/file_utils#transformers.utils.PaddingStrategy)) : тип выравнивания, который будет применён к входным данным

truncation_strategy ([TruncationStrategy](/docs/transformers/main/ru/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy)) : тип усечения, который будет применён к входным данным

max_length (`int`) : Максимальный размер последовательности.

stride (`int`) : Шаг, используемый при обработке переполнения.

pad_to_multiple_of (`int`, *optional*) : Если задано, последовательность будет дополнена нулями до кратного указанного значения. Это особенно полезно для использования Tensor Cores на аппаратных платформах NVIDIA с вычислительной способностью `>= 7.5` (Volta).

padding_side (`str`, *необязательный*) : Сторона, на которой модель должна применять выравнивание. Значение выбирается из ['right', 'left']. Значение по умолчанию берётся из атрибута класса с тем же именем.

Определите стратегии усечения и дополнения для быстрых токенизаторов (предоставляемых библиотекой HuggingFace tokenizers) и восстановите настройки токенизатора после этого.

Предоставленный токенизатор не имеет стратегии отступов (padding) / усечения (truncation) перед управляемым разделом. Если ваш токенизатор ранее установил стратегию отступов / усечения, она будет сброшена до отсутствия отступов / усечения при выходе из управляемого раздела.

#### train_new_from_iterator[[transformers.TokenizersBackend.train_new_from_iterator]]

```python
train_new_from_iterator(text_iterator, vocab_size, length = None, new_special_tokens = None, special_tokens_map = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L1192)

**Параметры:**

text_iterator (генератор `list[str]`) : Корпус для обучения. Должен быть генератором батчей текстов, например, список списков текстов, если все данные находятся в памяти.

vocab_size (`int`) : Размер словаря, который вы хотите использовать для вашего токенизатора.

length (`int`, *optional*) : Общее количество последовательностей в итераторе. Используется для предоставления осмысленного отслеживания прогресса

new_special_tokens (список `str` или `AddedToken`, *необязательный*) : список новых специальных токенов, которые нужно добавить в токенизатор, который вы обучаете.

special_tokens_map (`dict[str, str]`, *необязательный*) : Если вы хотите переименовать некоторые из специальных токенов, используемых этим токенизатором, передайте в этот аргумент отображение от старого имени специального токена к новому.

kwargs (`dict[str, Any]`, *необязательный*) : Дополнительные именованные аргументы, передаваемые в тренер из библиотеки 🤗 Tokenizers.

**Возвращает:** [PreTrainedTokenizerFast](/docs/transformers/main/ru/main_classes/tokenizer#transformers.TokenizersBackend)

Новый токенизатор того же типа, что и исходный, обученный на `text_iterator`.

Обучает токенизатор на новом корпусе с теми же параметрами по умолчанию (в части специальных токенов или конвейера токенизации), что и у текущего.

#### update_post_processor[[transformers.TokenizersBackend.update_post_processor]]

```python
update_post_processor()
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L627)

Обновляет базовый постпроцессор с использованием текущих `bos_token` и `eos_token`.

## PythonBackend[[transformers.PythonBackend]]

#### transformers.PythonBackend[[transformers.PythonBackend]]

```python
transformers.PythonBackend(**kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L400)

**Параметры:**

model_max_length (`int`, *optional*) : The maximum length (in number of tokens) for the inputs to the transformer model. When the tokenizer is loaded with [from_pretrained()](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.from_pretrained), this will be set to the value stored for the associated model in `max_model_input_sizes` (see above). If no value is provided, will default to VERY_LARGE_INTEGER (`int(1e30)`).

padding_side (`str`, *необязательный*) : Сторона, на которой модель должна применять выравнивание. Значение выбирается из ['right', 'left']. Значение по умолчанию берётся из атрибута класса с тем же именем.

truncation_side (`str`, *необязательный*) : Сторона, на которой модель должна применять усечение. Значение выбирается из ['right', 'left']. Значение по умолчанию берётся из атрибута класса с тем же именем.

chat_template (`str`, *необязательный*) : строка шаблона Jinja, которая будет использоваться для форматирования списков сообщений чата. Полное описание см. по адресу https://huggingface.co/docs/transformers/chat_templating.

model_input_names (`list[string]`, *необязательный*) : Список входных данных, принимаемых прямой передачей модели (например, `"token_type_ids"` или `"attention_mask"`). Значение по умолчанию берётся из атрибута класса с тем же именем.

bos_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, обозначающий начало предложения.

eos_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, обозначающий конец предложения.

unk_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, представляющий токен вне словаря.

sep_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, разделяющий два разных предложения в одном вводе (используется, например, в BERT).

pad_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, используемый для приведения массивов токенов к одинаковому размеру в целях батчинга. В дальнейшем он игнорируется механизмами внимания или при вычислении функции потерь.

cls_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, представляющий класс входных данных (используется, например, в BERT).

mask_token (`str` или `tokenizers.AddedToken`, *необязательный*) : специальный токен, представляющий замаскированный токен (используется в задачах предобучения с маскированием, например, в BERT). Будет связан с `self.mask_token` и `self.mask_token_id`.

extra_special_tokens (список `str` или `tokenizers.AddedToken`, *необязательный*) : Список дополнительных специальных токенов, специфичных для модели. Добавьте их сюда, чтобы они пропускались при декодировании, если `skip_special_tokens` установлен в True. Если они не входят в словарь, они будут добавлены в конец словаря.

split_special_tokens (`bool`, *необязательный*, по умолчанию `False`) : Указывает, следует ли разделять специальные токены в процессе токенизации. Передача этого аргумента влияет на внутреннее состояние токенизатора. По умолчанию специальные токены не разделяются. Это означает, что если `<s>` является `bos_token`, то `tokenizer.tokenize("<s>") = ['<s>`]. В противном случае, если `split_special_tokens=True`, то `tokenizer.tokenize("<s>")` вернёт `['<','s', '>']`.

Базовый класс для всех медленных токенизаторов.

Наследуется от [PreTrainedTokenizerBase](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase).

Обрабатывает все общие методы токенизации и специальных токенов, а также методы загрузки/кэширования/чтения предобученных токенизаторов и добавления токенов в словарь.

Этот класс также содержит добавленные токены в унифицированном виде поверх всех токенизаторов, поэтому нам не нужно обрабатывать специфические методы расширения словаря различных базовых структур словаря (BPE, sentencepiece...).

Атрибуты класса (переопределяются производными классами)

- **vocab_files_names** (`dict[str, str]`) — словарь, в котором ключами являются имена аргументов `__init__` для каждого файла словаря, необходимого модели, а значениями — имена файлов для сохранения соответствующих файлов (строки).
- **pretrained_vocab_files_map** (`dict[str, dict[str, str]]`) -- Словарь словарей, где ключи верхнего уровня — это имена аргументов `__init__` для каждого файла словаря, необходимого модели, а ключи нижнего уровня — `short-cut-names` предобученных моделей, а соответствующие значения — `url` на соответствующий файл предобученного словаря.
- **model_input_names** (`list[str]`) — список входных данных, ожидаемых в прямом проходе модели.
- **padding_side** (`str`) — значение по умолчанию для стороны, на которой модель должна применять заполнение. Должно быть `'right'` или `'left'`.
- **truncation_side** (`str`) — значение по умолчанию для стороны, на которой модель должна применять усечение. Должно быть `'right'` или `'left'`.

#### build_inputs_with_special_tokens[[transformers.PythonBackend.build_inputs_with_special_tokens]]

```python
build_inputs_with_special_tokens(token_ids_0: list, token_ids_1: list[int] | None = None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L865)

**Параметры:**

token_ids_0 (`list[int]`) : Список идентификаторов, к которым будут добавлены специальные токены.

token_ids_1 (`list[int]`, *необязательный*) : Необязательный второй список идентификаторов для пар последовательностей.

**Возвращает:** `list[int]`

Список входных идентификаторов с соответствующими специальными токенами.

Создайте входные данные модели из последовательности или пары последовательностей, добавив специальные токены.

Этот метод динамически формирует входные данные на основе `special_tokens_pattern` токенизатора:
- `"none"`: без специальных токенов
- `"cls_sep"`: [CLS] seq0 [SEP] или [CLS] seq0 [SEP] seq1 [SEP]
- `"eos"`: seq0 [EOS] или seq0 [EOS] seq1 [EOS]
- `"bos"`: [BOS] seq0 или [BOS] seq0 [BOS] seq1
- `"bos_eos"`: [BOS] seq0 [EOS] или [BOS] seq0 [EOS] seq1 [EOS]
- `"cls_double_sep"`: [CLS] seq0 [SEP] или [CLS] seq0 [SEP] [SEP] seq1 [SEP]
- `"prefix_suffix"`: `<prefix_tokens> seq0 [seq1] <suffix_tokens>` (собственный префикс/суффикс, хранящийся в токенизаторе)

#### create_token_type_ids_from_sequences[[transformers.PythonBackend.create_token_type_ids_from_sequences]]

```python
create_token_type_ids_from_sequences(token_ids_0: list, token_ids_1: list[int] | None = None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L1298)

**Параметры:**

token_ids_0 (`list[int]`) : Список идентификаторов.

token_ids_1 (`list[int]`, *необязательный*) : Необязательный второй список идентификаторов для пар последовательностей.

**Возвращает:** `list[int]`

Идентификаторы типов токенов в соответствии с настроенным шаблоном.

Создайте маску из двух переданных последовательностей для использования в задаче классификации пар последовательностей.

Этот метод динамически формирует идентификаторы типов токенов на основе атрибутов конфигурации токенизатора:
- `token_type_ids_pattern`: Шаблон для использования ("all_zeros" или "bert_style")
- `token_type_ids_include_special_tokens`: Учитывать ли специальные токены при вычислении длины

Примеры:
```python
# All zeros pattern (default, used by RoBERTa, BART, etc.)
tokenizer.token_type_ids_pattern = "all_zeros"
# Returns: [0, 0, 0, ...] for both sequences

# BERT-style pattern (first sequence gets 0s, second gets 1s)
tokenizer.token_type_ids_pattern = "bert_style"
# Returns: [0, 0, 0, ..., 1, 1, 1, ...] for sequence pairs
```

#### get_added_vocab[[transformers.PythonBackend.get_added_vocab]]

```python
get_added_vocab()
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L488)

**Возвращает:** `dict[str, int]`

Добавленные токены.

Возвращает добавленные токены словаря в виде словаря «токен — индекс». Результаты могут отличаться от результатов быстрого вызова, поскольку на данный момент токены всегда добавляются, даже если они уже присутствуют в словаре. Это следует изменить.

#### get_special_tokens_mask[[transformers.PythonBackend.get_special_tokens_mask]]

```python
get_special_tokens_mask(token_ids_0: list, token_ids_1: list | None = None, already_has_special_tokens: bool = False)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L969)

**Параметры:**

token_ids_0 (`list[int]`) : Список идентификаторов первой последовательности.

token_ids_1 (`list[int]`, *необязательный*) : Список идентификаторов второй последовательности.

already_has_special_tokens (`bool`, *необязательный*, по умолчанию `False`) : Указывает, является ли список токенов уже отформатированным со специальными токенами для модели.

**Возвращаемое значение:** список целых чисел в диапазоне [0, 1]

1 для специального токена, 0 для токена последовательности.

Получает идентификаторы последовательностей из списка токенов, в который не добавлены специальные токены. Этот метод вызывается при добавлении специальных токенов с помощью методов `prepare_for_model` или `encode_plus` токенизатора.

Этот метод динамически формирует маску специальных токенов на основе `special_tokens_pattern` токенизатора:
- `"none"`: без специальных токенов (по умолчанию, возвращает все нули)
- `"cls_sep"`: [CLS] seq0 [SEP] или [CLS] seq0 [SEP] seq1 [SEP]
- `"eos"`: seq0 [EOS] или seq0 [EOS] seq1 [EOS]
- `"bos"`: [BOS] seq0 или [BOS] seq0 [BOS] seq1
- `"bos_eos"`: [BOS] seq0 [EOS] или [BOS] seq0 [EOS] seq1 [EOS]
- `"cls_double_sep"`: [CLS] seq0 [SEP] или [CLS] seq0 [SEP] [SEP] seq1 [SEP]
- `"prefix_suffix"`: `<prefix_tokens> seq0 [seq1] <suffix_tokens>`

#### num_special_tokens_to_add[[transformers.PythonBackend.num_special_tokens_to_add]]

```python
num_special_tokens_to_add(pair: bool = False)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L602)

**Параметры:**

pair (`bool`, *необязательный*, по умолчанию `False`) : Нужно ли вычислять количество добавленных токенов для пары последовательностей или для одиночной последовательности.

**Возвращает:** `int`

Количество специальных токенов, добавляемых к последовательностям.

Возвращает количество добавленных токенов при кодировании последовательности со специальными токенами.

Это кодирует фиктивный вход и проверяет количество добавленных токенов, поэтому не является эффективным. Не помещайте этот код внутрь цикла обучения.

#### prepare_for_model[[transformers.PythonBackend.prepare_for_model]]

```python
prepare_for_model(ids: list, pair_ids: list[int] | None = None, add_special_tokens: bool = True, padding: bool | str | transformers.utils.generic.PaddingStrategy = False, truncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy = False, max_length: int | None = None, stride: int = 0, pad_to_multiple_of: int | None = None, padding_side: str | None = None, return_tensors: str | transformers.utils.generic.TensorType | None = None, return_token_type_ids: bool | None = None, return_attention_mask: bool | None = None, return_overflowing_tokens: bool = False, return_special_tokens_mask: bool = False, return_length: bool = False, verbose: bool = True, prepend_batch_axis: bool = False, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L1121)

**Параметры:**

ids : Идентификаторы токенизированного входа первой последовательности.

pair_ids : Идентификаторы токенизированного входа второй последовательности (необязательно).

Готовит последовательность входных идентификаторов для использования в модели. Добавляет специальные токены, обрезает и дополняет последовательность.

#### prepare_for_tokenization[[transformers.PythonBackend.prepare_for_tokenization]]

```python
prepare_for_tokenization(text: str, is_split_into_words: bool = False, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L841)

**Параметры:**

text (`str`) : Текст для подготовки.

is_split_into_words (`bool`, *необязательный*, по умолчанию `False`) : Указывает, является ли вход уже предтокенизированным (например, разбитым на слова). Если установлено в `True`, токенизатор предполагает, что вход уже разбит на слова (например, по пробелам), и токенизирует их. Это полезно для NER или классификации токенов.

kwargs (`dict[str, Any]`, *необязательный*) : Ключевые аргументы, используемые для токенизации.

**Возвращает:** `tuple[str, dict[str, Any]]`

Подготовленный текст и неиспользуемые kwargs.

Выполняет необходимые преобразования перед токенизацией.

Этот метод должен извлекать аргументы из `kwargs` и возвращать оставшиеся `kwargs`. В конце процесса кодирования мы проверяем `kwargs`, чтобы убедиться, что все аргументы были использованы.

#### save_vocabulary[[transformers.PythonBackend.save_vocabulary]]

```python
save_vocabulary(save_directory: str, filename_prefix: str | None = None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L1362)

**Параметры:**

save_directory (`str`) : Каталог, в котором будет сохранен словарь.

filename_prefix (`str`, *необязательный*) : Необязательный префикс, который добавляется к именам сохраняемых файлов.

**Возвращает:** `tuple[str, ...]`

Пути к сохранённым файлам или пустой кортеж, если файлы не были сохранены.

Реализация по умолчанию для распространённых схем сохранения словаря. Сохраняет self.encoder/self.vocab в формате JSON, при необходимости вместе с self.bpe_ranks в качестве слияний. Возвращает пустой кортеж, если словарь отсутствует.

Переопределите этот метод, если вашему токенизатору требуется собственная логика сохранения (например, для моделей SentencePiece, нескольких файлов словаря или специальных форматов файлов).

#### tokenize[[transformers.PythonBackend.tokenize]]

```python
tokenize(text: str, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L625)

**Параметры:**

text : последовательность, подлежащая кодированию.

- ****kwargs** : Передаются в специфичный для модели метод предобработки `prepare_for_tokenization`.

**Возвращаемое значение:**

Список токенов.

Преобразует строку в последовательность токенов с помощью токенизатора.

#### truncate_sequences[[transformers.PythonBackend.truncate_sequences]]

```python
truncate_sequences(ids: list, pair_ids: list[int] | None = None, num_tokens_to_remove: int = 0, truncation_strategy: str | transformers.tokenization_utils_base.TruncationStrategy = 'longest_first', stride: int = 0)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_python.py#L1231)

Обрезает последовательности в соответствии с указанной стратегией.

## TokenizersBackend[[transformers.TokenizersBackend]]

#### transformers.TokenizersBackend[[transformers.TokenizersBackend]]

```python
transformers.TokenizersBackend(*args, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L86)

**Параметры:**

model_max_length (`int`, *optional*) : The maximum length (in number of tokens) for the inputs to the transformer model. When the tokenizer is loaded with [from_pretrained()](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.from_pretrained), this will be set to the value stored for the associated model in `max_model_input_sizes` (see above). If no value is provided, will default to VERY_LARGE_INTEGER (`int(1e30)`).

padding_side (`str`, *необязательный*) : Сторона, на которой модель должна применять выравнивание. Значение выбирается из ['right', 'left']. Значение по умолчанию берётся из атрибута класса с тем же именем.

truncation_side (`str`, *необязательный*) : Сторона, на которой модель должна применять усечение. Значение выбирается из ['right', 'left']. Значение по умолчанию берётся из атрибута класса с тем же именем.

chat_template (`str`, *необязательный*) : строка шаблона Jinja, которая будет использоваться для форматирования списков сообщений чата. Полное описание см. по адресу https://huggingface.co/docs/transformers/chat_templating.

model_input_names (`list[string]`, *необязательный*) : Список входных данных, принимаемых прямой передачей модели (например, `"token_type_ids"` или `"attention_mask"`). Значение по умолчанию берётся из атрибута класса с тем же именем.

bos_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, обозначающий начало предложения.

eos_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, обозначающий конец предложения.

unk_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, представляющий токен вне словаря.

sep_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, разделяющий два разных предложения в одном вводе (используется, например, в BERT).

pad_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, используемый для приведения массивов токенов к одинаковому размеру в целях батчинга. В дальнейшем он игнорируется механизмами внимания или при вычислении функции потерь.

cls_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, представляющий класс входных данных (используется, например, в BERT).

mask_token (`str` или `tokenizers.AddedToken`, *необязательный*) : специальный токен, представляющий замаскированный токен (используется в задачах предобучения с маскированием, например, в BERT). Будет связан с `self.mask_token` и `self.mask_token_id`.

extra_special_tokens (список `str` или `tokenizers.AddedToken`, *необязательный*) : Список дополнительных специальных токенов, специфичных для модели. Добавьте их сюда, чтобы они пропускались при декодировании, если `skip_special_tokens` установлен в True. Если они не входят в словарь, они будут добавлены в конец словаря.

split_special_tokens (`bool`, *необязательный*, по умолчанию `False`) : Указывает, следует ли разделять специальные токены в процессе токенизации. Передача этого аргумента влияет на внутреннее состояние токенизатора. По умолчанию специальные токены не разделяются. Это означает, что если `<s>` является `bos_token`, то `tokenizer.tokenize("<s>") = ['<s>`]. В противном случае, если `split_special_tokens=True`, то `tokenizer.tokenize("<s>")` вернёт `['<','s', '>']`.

tokenizer_object (`tokenizers.Tokenizer`) : объект `tokenizers.Tokenizer` из 🤗 tokenizers, от которого требуется создать экземпляр. Подробнее см. [Использование токенизаторов из 🤗 tokenizers](../fast_tokenizers).

tokenizer_file (`str`) : Путь к локальному JSON-файлу, представляющему ранее сериализованный объект `tokenizers.Tokenizer` из 🤗 tokenizers.

Базовый класс для всех быстрых токенизаторов (обёртка над библиотекой HuggingFace tokenizers).

Наследуется от [PreTrainedTokenizerBase](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase).

Обрабатывает все общие методы токенизации и специальных токенов, а также методы загрузки/кэширования/чтения предобученных токенизаторов, а также добавления токенов в словарь.

Этот класс также содержит добавленные токены в унифицированном виде поверх всех токенизаторов, поэтому нам не нужно обрабатывать специфические методы расширения словаря различных базовых структур словаря (BPE, sentencepiece...).

Атрибуты класса (переопределяются производными классами)

- **vocab_files_names** (`dict[str, str]`) — словарь, в котором ключами являются имена аргументов `__init__` для каждого файла словаря, необходимого модели, а значениями — имена файлов для сохранения соответствующих файлов (строки).
- **pretrained_vocab_files_map** (`dict[str, dict[str, str]]`) -- Словарь словарей, где ключи верхнего уровня — это имена аргументов `__init__` для каждого файла словаря, необходимого модели, а ключи нижнего уровня — `short-cut-names` предобученных моделей, а соответствующие значения — `url` на соответствующий файл предобученного словаря.
- **model_input_names** (`list[str]`) — список входных данных, ожидаемых в прямом проходе модели.
- **padding_side** (`str`) — значение по умолчанию для стороны, на которой модель должна применять заполнение. Должно быть `'right'` или `'left'`.
- **truncation_side** (`str`) — значение по умолчанию для стороны, на которой модель должна применять усечение. Должно быть `'right'` или `'left'`.

#### convert_to_native_format[[transformers.TokenizersBackend.convert_to_native_format]]

```python
convert_to_native_format(trust_remote_code = False, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L103)

Создайте бэкенд `tokenizers.Tokenizer` из доступных файлов сериализации (tokenizer.json, sentencepiece models, tekken.json, vocab/merges).

#### get_added_vocab[[transformers.TokenizersBackend.get_added_vocab]]

```python
get_added_vocab()
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L740)

**Возвращает:** `dict[str, int]`

Добавленные токены.

Возвращает добавленные токены в словаре в виде словаря, сопоставляющего токены с их индексами.

#### num_special_tokens_to_add[[transformers.TokenizersBackend.num_special_tokens_to_add]]

```python
num_special_tokens_to_add(pair: bool = False)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L837)

**Параметры:**

pair (`bool`, *необязательный*, по умолчанию `False`) : Нужно ли вычислять количество добавленных токенов для пары последовательностей или для одиночной последовательности.

**Возвращает:** `int`

Количество специальных токенов, добавляемых к последовательностям.

Возвращает количество добавленных токенов при кодировании последовательности со специальными токенами.

Это кодирует фиктивный вход и проверяет количество добавленных токенов, поэтому не является эффективным. Не помещайте этот код внутрь цикла обучения.

#### save_pretrained[[transformers.TokenizersBackend.save_pretrained]]

```python
save_pretrained(save_directory: str | os.PathLike, legacy_format: bool | None = None, filename_prefix: str | None = None, push_to_hub: bool = False, save_format: str | None = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L559)

**Параметры:**

save_format (`str`, *необязательный*) : `"mistral"` для сохранения в формате `tekken.json` путём копирования исходного файла (требуется наличие исходного файла словаря tekken). При сохранении имя нормализуется до `tekken.json`, и созданный токенизатор должен точно соответствовать ему. `"hf"` или `None` для формата HuggingFace по умолчанию.

kwargs (`dict[str, Any]`, *необязательный*) : Дополнительные именованные аргументы, передаваемые в метод [push_to_hub()](/docs/transformers/main/ru/main_classes/model#transformers.utils.PushToHubMixin.push_to_hub).

**Возвращаемое значение:** кортеж `str`

Файлы сохранены.

Сохраните полное состояние токенизатора.

Расширяет [save_pretrained()](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.save_pretrained) поддержкой `save_format` для токенизаторов, сконвертированных из нативного файла словаря (например, `tekken.json` от Mistral). См. базовый метод для `legacy_format`, `filename_prefix` и `push_to_hub`.

#### set_truncation_and_padding[[transformers.TokenizersBackend.set_truncation_and_padding]]

```python
set_truncation_and_padding(padding_strategy: PaddingStrategy, truncation_strategy: TruncationStrategy, max_length: int, stride: int, pad_to_multiple_of: int | None, padding_side: str | None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L896)

**Параметры:**

padding_strategy ([PaddingStrategy](/docs/transformers/main/ru/internal/file_utils#transformers.utils.PaddingStrategy)) : тип выравнивания, который будет применён к входным данным

truncation_strategy ([TruncationStrategy](/docs/transformers/main/ru/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy)) : тип усечения, который будет применён к входным данным

max_length (`int`) : Максимальный размер последовательности.

stride (`int`) : Шаг, используемый при обработке переполнения.

pad_to_multiple_of (`int`, *optional*) : Если задано, последовательность будет дополнена нулями до кратного указанного значения. Это особенно полезно для использования Tensor Cores на аппаратных платформах NVIDIA с вычислительной способностью `>= 7.5` (Volta).

padding_side (`str`, *необязательный*) : Сторона, на которой модель должна применять выравнивание. Значение выбирается из ['right', 'left']. Значение по умолчанию берётся из атрибута класса с тем же именем.

Определите стратегии усечения и дополнения для быстрых токенизаторов (предоставляемых библиотекой HuggingFace tokenizers) и восстановите настройки токенизатора после этого.

Предоставленный токенизатор не имеет стратегии отступов (padding) / усечения (truncation) перед управляемым разделом. Если ваш токенизатор ранее установил стратегию отступов / усечения, она будет сброшена до отсутствия отступов / усечения при выходе из управляемого раздела.

#### train_new_from_iterator[[transformers.TokenizersBackend.train_new_from_iterator]]

```python
train_new_from_iterator(text_iterator, vocab_size, length = None, new_special_tokens = None, special_tokens_map = None, **kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L1192)

**Параметры:**

text_iterator (генератор `list[str]`) : Корпус для обучения. Должен быть генератором батчей текстов, например, список списков текстов, если все данные находятся в памяти.

vocab_size (`int`) : Размер словаря, который вы хотите использовать для вашего токенизатора.

length (`int`, *optional*) : Общее количество последовательностей в итераторе. Используется для предоставления осмысленного отслеживания прогресса

new_special_tokens (список `str` или `AddedToken`, *необязательный*) : список новых специальных токенов, которые нужно добавить в токенизатор, который вы обучаете.

special_tokens_map (`dict[str, str]`, *необязательный*) : Если вы хотите переименовать некоторые из специальных токенов, используемых этим токенизатором, передайте в этот аргумент отображение от старого имени специального токена к новому.

kwargs (`dict[str, Any]`, *необязательный*) : Дополнительные именованные аргументы, передаваемые в тренер из библиотеки 🤗 Tokenizers.

**Возвращает:** [PreTrainedTokenizerFast](/docs/transformers/main/ru/main_classes/tokenizer#transformers.TokenizersBackend)

Новый токенизатор того же типа, что и исходный, обученный на `text_iterator`.

Обучает токенизатор на новом корпусе с теми же параметрами по умолчанию (в части специальных токенов или конвейера токенизации), что и у текущего.

#### update_post_processor[[transformers.TokenizersBackend.update_post_processor]]

```python
update_post_processor()
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L627)

Обновляет базовый постпроцессор с использованием текущих `bos_token` и `eos_token`.

## SentencePieceBackend[[transformers.SentencePieceBackend]]

#### transformers.SentencePieceBackend[[transformers.SentencePieceBackend]]

```python
transformers.SentencePieceBackend(**kwargs)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_sentencepiece.py#L45)

**Параметры:**

model_max_length (`int`, *optional*) : The maximum length (in number of tokens) for the inputs to the transformer model. When the tokenizer is loaded with [from_pretrained()](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.from_pretrained), this will be set to the value stored for the associated model in `max_model_input_sizes` (see above). If no value is provided, will default to VERY_LARGE_INTEGER (`int(1e30)`).

padding_side (`str`, *необязательный*) : Сторона, на которой модель должна применять выравнивание. Значение выбирается из ['right', 'left']. Значение по умолчанию берётся из атрибута класса с тем же именем.

truncation_side (`str`, *необязательный*) : Сторона, на которой модель должна применять усечение. Значение выбирается из ['right', 'left']. Значение по умолчанию берётся из атрибута класса с тем же именем.

chat_template (`str`, *необязательный*) : строка шаблона Jinja, которая будет использоваться для форматирования списков сообщений чата. Полное описание см. по адресу https://huggingface.co/docs/transformers/chat_templating.

model_input_names (`list[string]`, *необязательный*) : Список входных данных, принимаемых прямой передачей модели (например, `"token_type_ids"` или `"attention_mask"`). Значение по умолчанию берётся из атрибута класса с тем же именем.

bos_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, обозначающий начало предложения.

eos_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, обозначающий конец предложения.

unk_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, представляющий токен вне словаря.

sep_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, разделяющий два разных предложения в одном вводе (используется, например, в BERT).

pad_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, используемый для приведения массивов токенов к одинаковому размеру в целях батчинга. В дальнейшем он игнорируется механизмами внимания или при вычислении функции потерь.

cls_token (`str` или `tokenizers.AddedToken`, *необязательный*) : Специальный токен, представляющий класс входных данных (используется, например, в BERT).

mask_token (`str` или `tokenizers.AddedToken`, *необязательный*) : специальный токен, представляющий замаскированный токен (используется в задачах предобучения с маскированием, например, в BERT). Будет связан с `self.mask_token` и `self.mask_token_id`.

extra_special_tokens (список `str` или `tokenizers.AddedToken`, *необязательный*) : Список дополнительных специальных токенов, специфичных для модели. Добавьте их сюда, чтобы они пропускались при декодировании, если `skip_special_tokens` установлен в True. Если они не входят в словарь, они будут добавлены в конец словаря.

split_special_tokens (`bool`, *необязательный*, по умолчанию `False`) : Указывает, следует ли разделять специальные токены в процессе токенизации. Передача этого аргумента влияет на внутреннее состояние токенизатора. По умолчанию специальные токены не разделяются. Это означает, что если `<s>` является `bos_token`, то `tokenizer.tokenize("<s>") = ['<s>`]. В противном случае, если `split_special_tokens=True`, то `tokenizer.tokenize("<s>")` вернёт `['<','s', '>']`.

Базовый класс для токенизаторов на основе SentencePiece, загружаемых из файлов sentencepiece.model.

Наследуется от [PreTrainedTokenizer](/docs/transformers/main/ru/main_classes/tokenizer#transformers.PythonBackend).

Обрабатывает все общие методы токенизации и специальных токенов, а также методы загрузки/кэширования/чтения предобученных токенизаторов и добавления токенов в словарь.

Этот класс также содержит добавленные токены в унифицированном виде поверх всех токенизаторов, поэтому нам не нужно обрабатывать специфические методы расширения словаря различных базовых структур словаря (BPE, sentencepiece...).

Атрибуты класса (переопределяются производными классами)

- **vocab_files_names** (`dict[str, str]`) — словарь, в котором ключами являются имена аргументов `__init__` для каждого файла словаря, необходимого модели, а значениями — имена файлов для сохранения соответствующих файлов (строки).
- **pretrained_vocab_files_map** (`dict[str, dict[str, str]]`) -- Словарь словарей, где ключи верхнего уровня — это имена аргументов `__init__` для каждого файла словаря, необходимого модели, а ключи нижнего уровня — `short-cut-names` предобученных моделей, а соответствующие значения — `url` на соответствующий файл предобученного словаря.
- **model_input_names** (`list[str]`) — список входных данных, ожидаемых в прямом проходе модели.
- **padding_side** (`str`) — значение по умолчанию для стороны, на которой модель должна применять заполнение. Должно быть `'right'` или `'left'`.
- **truncation_side** (`str`) — значение по умолчанию для стороны, на которой модель должна применять усечение. Должно быть `'right'` или `'left'`.

#### convert_tokens_to_string[[transformers.SentencePieceBackend.convert_tokens_to_string]]

```python
convert_tokens_to_string(tokens: list)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_sentencepiece.py#L232)

Преобразует последовательность токенов (строку) в одну строку.

#### get_vocab[[transformers.SentencePieceBackend.get_vocab]]

```python
get_vocab()
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_sentencepiece.py#L104)

Возвращает словарь в виде объекта dict

#### save_vocabulary[[transformers.SentencePieceBackend.save_vocabulary]]

```python
save_vocabulary(save_directory: str, filename_prefix: str | None = None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_sentencepiece.py#L237)

**Параметры:**

save_directory (`str`) : Каталог, в котором будет сохранен словарь.

filename_prefix (`str`, *необязательный*) : Необязательный префикс, который добавляется к именам сохраняемых файлов.

**Возвращает:** `tuple(str)`

Пути к сохранённым файлам.

Сохраните словарь sentencepiece (скопируйте исходный файл) в каталог.

## BatchEncoding[[transformers.BatchEncoding]]

#### transformers.BatchEncoding[[transformers.BatchEncoding]]

```python
transformers.BatchEncoding(data: dict[str, Any] | None = None, encoding: EncodingFast | Sequence[EncodingFast] | None = None, tensor_type: None | str | TensorType = None, prepend_batch_axis: bool = False, n_sequences: int | None = None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L201)

**Параметры:**

data (`dict`, *необязательный*) : Словарь списков/массивов/тензоров, возвращаемый методами `__call__`/`encode_plus`/`batch_encode_plus` ('input_ids', 'attention_mask' и т. д.).

encoding (`tokenizers.Encoding` или `Sequence[tokenizers.Encoding]`, *необязательный*) : Если токенизатор является быстрым и выводит дополнительную информацию, например, отображение из пространства слов/символов в пространство токенов, то экземпляр `tokenizers.Encoding` или список экземпляров (для батчей) содержит эту информацию.

tensor_type (`Union[None, str, TensorType]`, *необязательный*) : Здесь можно указать tensor_type, чтобы при инициализации преобразовать списки целых чисел в тензоры PyTorch/Numpy.

prepend_batch_axis (`bool`, *необязательный*, по умолчанию `False`) : добавлять ли ось батча при преобразовании в тензоры (см. `tensor_type` выше). Обратите внимание, что этот параметр имеет значение, если параметр `tensor_type` задан, *иначе не влияет на результат*.

n_sequences (`Optional[int]`, *необязательный*) : Количество входных последовательностей, представленных каждым кодированием (`None` для неизвестного, `1` для одной последовательности и `2` для пары последовательностей).

Содержит результат вызова методов [__call__()](/docs/transformers/main/ru/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.__call__), `~tokenization_utils_base.PreTrainedTokenizerBase.encode_plus` и `~tokenization_utils_base.PreTrainedTokenizerBase.batch_encode_plus` (токены, attention_masks и т. д.).

Этот класс наследуется от словаря Python и может использоваться как словарь. Кроме того, этот класс предоставляет вспомогательные методы для отображения из пространства слов/символов в пространство токенов.

#### char_to_token[[transformers.BatchEncoding.char_to_token]]

```python
char_to_token(batch_or_char_index: int, char_index: int | None = None, sequence_index: int = 0)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L547)

**Параметры:**

batch_or_char_index (`int`) : Индекс последовательности в батче. Если батч содержит только одну последовательность, это может быть индекс символа в последовательности

char_index (`int`, *необязательный*) : Если в *batch_or_char_index* указан индекс батча, это может быть индекс символа в последовательности.

sequence_index (`int`, *optional*, по умолчанию 0) : Если в батче закодирована пара последовательностей, этот параметр позволяет указать, к какой из последовательностей в паре (0 или 1) относится предоставленный индекс символа.

**Возвращает:** `int`

Индекс токена или None, если индекс символа относится к токену, содержащему только пробельные символы, и пробелы удаляются с помощью `trim_offsets=True`.

Получить индекс токена в закодированном выводе, содержащего символ из исходной строки, для последовательности в батче.

Можно вызвать следующим образом:

- `self.char_to_token(char_index)`, если размер батча равен 1
- `self.char_to_token(batch_index, char_index)`, если размер батча больше или равен 1

Этот метод особенно хорошо подходит, когда входные последовательности предоставлены в виде предтокенизированных последовательностей (т. е. слова определяются пользователем). В этом случае он позволяет легко сопоставить закодированные токены с предоставленными токенизированными словами.

#### char_to_word[[transformers.BatchEncoding.char_to_word]]

```python
char_to_word(batch_or_char_index: int, char_index: int | None = None, sequence_index: int = 0)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L632)

**Параметры:**

batch_or_char_index (`int`) : Индекс последовательности в батче. Если батч содержит только одну последовательность, это может быть индекс символа в исходной строке.

char_index (`int`, *необязательный*) : если в *batch_or_char_index* указан индекс батча, это может быть индекс символа в исходной строке.

sequence_index (`int`, *optional*, по умолчанию 0) : Если в батче закодирована пара последовательностей, этот параметр позволяет указать, к какой из последовательностей в паре (0 или 1) относится предоставленный индекс символа.

**Возвращает:** `int`

Индекс слова, содержащего символ.

Получить слово в исходной строке, соответствующее символу в исходной строке последовательности из батча.

Можно вызвать следующим образом:

- `self.char_to_word(char_index)`, если размер батча равен 1
- `self.char_to_word(batch_index, char_index)`, если размер батча больше 1

Этот метод особенно хорошо подходит, когда входные последовательности предоставлены в виде предтокенизированных последовательностей (т. е. слова определяются пользователем). В этом случае он позволяет легко сопоставить закодированные токены с предоставленными токенизированными словами.

#### convert_to_tensors[[transformers.BatchEncoding.convert_to_tensors]]

```python
convert_to_tensors(tensor_type: str | TensorType | None = None, prepend_batch_axis: bool = False)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L671)

**Параметры:**

tensor_type (`str` или [TensorType](/docs/transformers/main/ru/internal/file_utils#transformers.TensorType), *optional*) : Тип тензоров, который следует использовать. Если `str`, значение должно быть одним из значений перечисления [TensorType](/docs/transformers/main/ru/internal/file_utils#transformers.TensorType). Если `None`, изменения не выполняются.

prepend_batch_axis (`bool`, *необязательный*, по умолчанию `False`) : Добавлять ли размерность батча при конвертации.

Преобразуйте внутреннее содержимое в тензоры.

#### sequence_ids[[transformers.BatchEncoding.sequence_ids]]

```python
sequence_ids(batch_index: int = 0)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L341)

**Параметры:**

batch_index (`int`, *необязательный*, по умолчанию 0) : Индекс для доступа в батче.

**Возвращает:** `list[Optional[int]]`

Список, указывающий идентификатор последовательности, соответствующий каждому токену. Специальные токены, добавленные токенизатором, отображаются в `None`, а остальные токены — в индекс их соответствующей последовательности.

Возвращает список, сопоставляющий токены с идентификаторами исходных предложений:

- `None` для специальных токенов, добавляемых вокруг или между последовательностями,
- `0` для токенов, соответствующих словам в первой последовательности,
- `1` для токенов, соответствующих словам во второй последовательности, если пара последовательностей была закодирована совместно.

#### к[[transformers.BatchEncoding.to]]

```python
to(device: str | torch.device | int, non_blocking: bool = False)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L765)

**Параметры:**

device (`str` или `torch.device` или `int`) : Устройство, на которое следует поместить тензоры.

non_blocking (`bool`) : Выполнять ли копирование асинхронно.

**Возвращает:** [BatchEncoding](/docs/transformers/main/ru/main_classes/tokenizer#transformers.BatchEncoding)

Тот же самый экземпляр после модификации.

Отправьте все значения на устройство, вызвав `v.to(device, non_blocking=non_blocking)` (только PyTorch).

#### token_to_chars[[transformers.BatchEncoding.token_to_chars]]

```python
token_to_chars(batch_or_token_index: int, token_index: int | None = None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L508)

**Параметры:**

batch_or_token_index (`int`) : Индекс последовательности в батче. Если батч содержит только одну последовательность, это может быть индекс токена в последовательности.

token_index (`int`, *необязательный*) : если в *batch_or_token_index* указан индекс батча, это может быть индекс токена или токенов в последовательности.

**Возвращает:** [CharSpan](/docs/transformers/main/ru/internal/tokenization_utils#transformers.CharSpan)

Диапазон символов в исходной строке или None, если токен (например, , ) не соответствует никаким символам в исходной строке.

Получите диапазон символов, соответствующий закодированному токену в последовательности из батча.

Диапазоны символов возвращаются в виде [CharSpan](/docs/transformers/main/ru/internal/tokenization_utils#transformers.CharSpan) со следующими полями:

- **start** — Индекс первого символа в исходной строке, соответствующий токену.
- **end** -- Индекс символа, следующего за последним символом в исходной строке, связанной с токеном.

Можно вызвать следующим образом:

- `self.token_to_chars(token_index)`, если размер батча равен 1
- `self.token_to_chars(batch_index, token_index)`, если размер батча больше или равен 1

#### token_to_sequence[[transformers.BatchEncoding.token_to_sequence]]

```python
token_to_sequence(batch_or_token_index: int, token_index: int | None = None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L378)

**Параметры:**

batch_or_token_index (`int`) : Индекс последовательности в батче. Если батч содержит только одну последовательность, это может быть индекс токена в последовательности.

token_index (`int`, *необязательный*) : Если в *batch_or_token_index* указан индекс батча, это может быть индекс токена в последовательности.

**Возвращает:** `int`

Индекс входной последовательности, содержащей токен (`0` для первой последовательности или `1` для второй последовательности в паре).

Получает индекс последовательности, представленной указанным токеном. В общем случае этот метод возвращает `0` для одиночной последовательности или первой последовательности в паре, а `1` — для второй последовательности в паре.

Можно вызвать следующим образом:

- `self.token_to_sequence(token_index)`, если размер батча равен 1
- `self.token_to_sequence(batch_index, token_index)`, если размер батча больше 1

Этот метод особенно хорошо подходит, когда входные последовательности предоставлены в виде предтокенизированных последовательностей (т. е. слова определяются пользователем). В этом случае он позволяет легко сопоставить закодированные токены с предоставленными токенизированными словами.

#### token_to_word[[transformers.BatchEncoding.token_to_word]]

```python
token_to_word(batch_or_token_index: int, token_index: int | None = None)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L417)

**Параметры:**

batch_or_token_index (`int`) : Индекс последовательности в батче. Если батч содержит только одну последовательность, это может быть индекс токена в последовательности.

token_index (`int`, *необязательный*) : Если в *batch_or_token_index* указан индекс батча, это может быть индекс токена в последовательности.

**Возвращает:** `int`

Индекс слова во входной последовательности.

Получить индекс слова, которому соответствует (т. е. которое включает) закодированный токен в последовательности батча.

Можно вызвать следующим образом:

- `self.token_to_word(token_index)`, если размер батча равен 1
- `self.token_to_word(batch_index, token_index)`, если размер батча больше 1

Этот метод особенно хорошо подходит, когда входные последовательности предоставлены в виде предтокенизированных последовательностей (т. е. слова определяются пользователем). В этом случае он позволяет легко сопоставить закодированные токены с предоставленными токенизированными словами.

#### токены[[transformers.BatchEncoding.tokens]]

```python
tokens(batch_index: int = 0)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L326)

**Параметры:**

batch_index (`int`, *необязательный*, по умолчанию 0) : Индекс для доступа в батче.

**Возвращает:** `list[str]`

Список токенов на данном индексе.

Возвращает список токенов (подчасти входных строк после разбиения на слова/субслова и до преобразования в целочисленные индексы) для указанного индекса в батче (работает только для вывода быстрого токенизатора).

#### word_ids[[transformers.BatchEncoding.word_ids]]

```python
word_ids(batch_index: int = 0)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L362)

**Параметры:**

batch_index (`int`, *необязательный*, по умолчанию 0) : Индекс для доступа в батче.

**Возвращает:** `list[Optional[int]]`

Список, указывающий слово, соответствующее каждому токену. Специальные токены, добавленные токенизатором, отображаются в `None`, а остальные токены — в индекс соответствующего им слова (несколько токенов могут отображаться в один и тот же индекс слова, если они являются его частями).

Возвращает список, сопоставляющий токены с их фактическими словами в исходном предложении для быстрого токенизатора.

#### word_to_chars[[transformers.BatchEncoding.word_to_chars]]

```python
word_to_chars(batch_or_word_index: int, word_index: int | None = None, sequence_index: int = 0)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L587)

**Параметры:**

batch_or_word_index (`int`) : Индекс последовательности в батче. Если батч содержит только одну последовательность, это может быть индекс слова в последовательности

word_index (`int`, *необязательный*) : если в *batch_or_word_index* указан индекс батча, это может быть индекс слова в последовательности.

sequence_index (`int`, *optional*, по умолчанию 0) : Если в батче закодирована пара последовательностей, этот параметр позволяет указать, к какой из последовательностей в паре (0 или 1) относится переданный индекс слова.

**Возвращает:** `CharSpan`

Диапазон соответствующих символов в строке. CharSpan — это NamedTuple со следующими полями:

- start: индекс первого символа, связанного со словом в исходной строке
- end: индекс символа, следующего за последним символом, связанным со словом в исходной строке

Получите диапазон символов в исходной строке, соответствующий указанному слову в последовательности из батча.

Диапазоны символов возвращаются в виде именованного кортежа CharSpan со следующими полями:

- start: индекс первого символа в исходной строке
- end: индекс символа, следующего за последним символом в исходной строке

Можно вызвать следующим образом:

- `self.word_to_chars(word_index)`, если размер батча равен 1
- `self.word_to_chars(batch_index, word_index)`, если размер батча больше или равен 1

#### word_to_tokens[[transformers.BatchEncoding.word_to_tokens]]

```python
word_to_tokens(batch_or_word_index: int, word_index: int | None = None, sequence_index: int = 0)
```

[Источник](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L455)

**Параметры:**

batch_or_word_index (`int`) : Индекс последовательности в батче. Если батч содержит только одну последовательность, это может быть индекс слова в последовательности.

word_index (`int`, *необязательный*) : если в *batch_or_word_index* указан индекс батча, это может быть индекс слова в последовательности.

sequence_index (`int`, *optional*, по умолчанию 0) : Если в батче закодирована пара последовательностей, этот параметр позволяет указать, к какой из последовательностей в паре (0 или 1) относится переданный индекс слова.

**Возвращает:** ([TokenSpan](/docs/transformers/main/ru/internal/tokenization_utils#transformers.TokenSpan), *optional*)

Диапазон токенов в закодированной последовательности. Возвращает `None`, если токены не соответствуют слову. Это может происходить, в частности, когда токен является специальным токеном, используемым для форматирования токенизации. Например, когда мы добавляем класс-токен в самом начале токенизации.

Получите закодированный диапазон токенов, соответствующий слову в последовательности из батча.

Диапазоны токенов возвращаются в виде [TokenSpan](/docs/transformers/main/ru/internal/tokenization_utils#transformers.TokenSpan) со следующими полями:

- **start** — индекс первого токена.
- **end** -- Индекс токена, следующего за последним токеном.

Можно вызвать следующим образом:

- `self.word_to_tokens(word_index, sequence_index: int = 0)`, если размер батча равен 1
- `self.word_to_tokens(batch_index, word_index, sequence_index: int = 0)`, если размер батча больше или равен 1

Этот метод особенно хорошо подходит, когда входные последовательности предоставлены в виде предтокенизированных последовательностей (т. е. слова определяются пользователем). В этом случае он позволяет легко сопоставить закодированные токены с предоставленными токенизированными словами.

