Transformers documentation
Токенизатор
Токенизатор
Токенайзер отвечает за подготовку входных данных для модели. Библиотека содержит токенайзеры для всех моделей. Большинство токенайзеров доступны в двух вариантах: полная реализация на Python и «быстрая» реализация, основанная на Rust-библиотеке 🤗 Tokenizers. «Быстрые» реализации позволяют:
- значительное ускорение, особенно при пакетной токенизации и
- дополнительные методы для отображения между исходной строкой (символы и слова) и пространством токенов (например, получение индекса токена, содержащего заданный символ, или диапазона символов, соответствующего заданному токену).
Базовые классы PreTrainedTokenizer и PreTrainedTokenizerFast реализуют общие методы для кодирования строковых входных данных в модельные входные данные (см. ниже) и для создания/сохранения токенизаторов на Python и «Fast»-токенизаторов из локального файла или каталога, а также из предобученного токенизатора, предоставляемого библиотекой (скачанного из репозитория AWS S3 HuggingFace). Оба класса опираются на PreTrainedTokenizerBase, который содержит общие методы.
Таким образом, PreTrainedTokenizer и PreTrainedTokenizerFast реализуют основные методы для работы со всеми токенизаторами:
- Токенизация (разбиение строк на подсловесные токены), преобразование строк токенов в идентификаторы и обратно, а также кодирование/декодирование (то есть токенизация и преобразование в целые числа).
- Добавление новых токенов в словарь независимо от базовой структуры (BPE, SentencePiece…).
- Управление специальными токенами (например, mask, beginning-of-sentence и т. д.): их добавление, назначение соответствующих атрибутов в токенизаторе для удобного доступа, а также обеспечение того, чтобы они не разбивались при токенизации.
Класс BatchEncoding хранит результат методов кодирования PreTrainedTokenizerBase (__call__, encode_plus и batch_encode_plus) и наследуется от словаря Python. Если токенизатор является чисто Python-токенизатором, этот класс ведёт себя как стандартный словарь Python и хранит различные входные данные модели, вычисленные этими методами (input_ids, attention_mask…). Если же используется «Fast»-токенизатор (то есть основанный на библиотеке tokenizers от HuggingFace), этот класс дополнительно предоставляет несколько продвинутых методов выравнивания, которые позволяют сопоставлять исходную строку (символы и слова) с пространством токенов (например, получить индекс токена, содержащего заданный символ, или диапазон символов, соответствующий заданному токену).
Мультимодальный токенизатор
Помимо этого, каждый токенизатор может быть «мультимодальным», что означает, что он хранит все соответствующие специальные токены в качестве атрибутов токенизатора для более удобного доступа. Например, если токенизатор загружен из модели «зрение-язык», такой как LLaVA, вы сможете обратиться к tokenizer.image_token_id, чтобы получить специальный токен изображения, используемый в качестве плейсхолдера.
Чтобы добавить дополнительные специальные токены для любого типа токенизатора, необходимо добавить следующие строки и сохранить токенизатор. Дополнительные специальные токены не обязательно должны быть связаны с модальностью — это может быть любой элемент, к которому модели часто нужен доступ. В приведённом ниже коде токенизатор в output_dir получит прямой доступ к трём дополнительным специальным токенам.
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
< source >( **kwargs )
Параметры
- model_max_length (
int, необязательный) — Максимальная длина (в токенах) входных данных для трансформерной модели. При загрузке токенизатора с помощью from_pretrained() это значение устанавливается в соответствии с параметром, сохраненным для соответствующей модели вmax_model_input_sizes(см. выше). Если значение не указано, по умолчанию используется 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.
Обработка всех общих методов токенизации и специальных токенов, а также методов загрузки, кэширования и загрузки предобученных токенизаторов, а также добавления токенов в словарь.
Этот класс также содержит добавленные токены в унифицированном виде поверх всех токенизаторов, поэтому нам не нужно обрабатывать специфические методы расширения словаря различных базовых структур словаря (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__
< source >( text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0is_split_into_words: bool = Falsepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = Truetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → BatchEncoding
Параметры
- 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, необязательный, по умолчаниюFalse) — Включает и управляет выравниванием. Принимает следующие значения:Trueили'longest': дополнить до самой длинной последовательности в батче (или не дополнять, если предоставлена только одна последовательность).'max_length': Дополнить до максимальной длины, указанной аргументомmax_length, или до максимально допустимой длины входных данных для модели, если этот аргумент не указан.Falseили'do_not_pad'(по умолчанию): без дополнения нулями (т. е. может выводить батч с последовательностями разной длины).
- truncation (
bool,strили TruncationStrategy, необязательный, по умолчаниюFalse) — Включает и управляет усечением. Принимает следующие значения:Trueили'longest_first': обрезка до максимальной длины, заданной аргументомmax_length, или до максимально допустимой длины входа для модели, если этот аргумент не указан. Обрезка выполняется посимвольно: если предоставлена пара последовательностей (или батч пар), то токен удаляется из самой длинной последовательности в паре.'only_first': Обрезка до максимальной длины, указанной аргументомmax_length, или до максимально допустимой длины входа для модели, если этот аргумент не задан. Если предоставлена пара последовательностей (или батч пар), будет обрезана только первая последовательность пары.'only_second': Обрезка до максимальной длины, указанной аргументомmax_length, или до максимальной допустимой длины входа для модели, если этот аргумент не задан. Это приводит к обрезке только второй последовательности в паре, если предоставлена пара последовательностей (или батч пар).Falseили'do_not_truncate'(по умолчанию): без усечения (т.е. может выдать батч с длиной последовательности, превышающей максимальный допустимый размер входа модели).
- max_length (
int, необязательный) — Управляет максимальной длиной, используемой одним из параметров усечения/дополнения.Если параметр не задан или установлен в
None, будет использована предопределённая максимальная длина модели, если одна из параметров усечения/дополнения требует указания максимальной длины. Если у модели нет конкретной максимальной длины входных данных (как у XLNet), усечение/дополнение до максимальной длины будет отключено. - stride (
int, необязательный, по умолчанию 0) — Если задано число вместе сmax_length, то переполненные токены, возвращаемые приreturn_overflowing_tokens=True, будут содержать некоторые токены из конца усечённой последовательности, чтобы обеспечить перекрытие между усечённой и переполненной последовательностями. Значение этого аргумента определяет количество перекрывающихся токенов. - is_split_into_words (
bool, необязательный, по умолчаниюFalse) — Указывает, является ли вход уже предтокенизированным (например, разбитым на слова). Если установлено вTrue, токенизатор предполагает, что вход уже разбит на слова (например, по пробелам), и токенизирует их. Это полезно для NER или классификации токенов. - pad_to_multiple_of (
int, необязательный) — Если задано, последовательность будет дополнена до кратного указанного значения. Требуется, чтобыpaddingбыл активирован. Это особенно полезно для использования Tensor Cores на оборудовании NVIDIA с вычислительной способностью>= 7.5(Volta). - padding_side (
str, необязательный) — Сторона, на которой модель должна применять отступы. Следует выбрать одно из значений [‘right’, ‘left’]. Значение по умолчанию выбирается из атрибута класса с тем же именем. - return_tensors (
strили TensorType, необязательный) — Если задано, возвращает тензоры вместо списка целых чисел Python. Допустимые значения:'pt': возвращает объектыtorch.TensorPyTorch.'np': возвращает объекты Numpynp.ndarray.
- return_token_type_ids (
bool, необязательный) — Возвращать ли идентификаторы типов токенов. Если значение не указано, идентификаторы типов токенов будут возвращены в соответствии со значением по умолчанию для конкретного токенизатора, заданным атрибутомreturn_outputs. - return_attention_mask (
bool, необязательный) — Возвращать ли маску внимания. Если значение не указано, маска внимания будет возвращена в соответствии со значением по умолчанию для конкретного токенизатора, определяемым атрибутомreturn_outputs. - 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. Если используется токенизатор на Python, этот метод вызовет
NotImplementedError. - return_length (
bool, необязательный, по умолчаниюFalse) — Возвращать ли длины закодированных входных данных. - verbose (
bool, необязательный, по умолчаниюTrue) — Выводить ли дополнительную информацию и предупреждения. - **kwargs — передаются в метод
self.tokenize()
Возвращает
BatchEncoding со следующими полями:
-
input_ids — список идентификаторов токенов, которые передаются в модель.
-
token_type_ids — список идентификаторов типов токенов, передаваемых в модель (если
return_token_type_ids=Trueили если “token_type_ids” входит вself.model_input_names). -
attention_mask — список индексов, указывающих, на какие токены модель должна обращать внимание (когда
return_attention_mask=Trueили если “attention_mask” входит вself.model_input_names). -
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
< source >( new_tokens: str | AddedToken | Sequence[str | AddedToken]special_tokens: bool = False ) → int
Параметры
- 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", чтобы префикс добавлялся только к началу входных данных: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 )
Примеры:
# 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
< source >( special_tokens_dict: dict[str, str | AddedToken | Sequence[str | AddedToken]]replace_extra_special_tokens = True ) → int
Параметры
- 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().
Использование add_special_tokens гарантирует, что ваши специальные токены можно использовать несколькими способами:
- Специальные токены можно пропустить при декодировании, используя
skip_special_tokens = True. - Специальные токены тщательно обрабатываются токенизатором (они никогда не разбиваются), аналогично
AddedTokens. - Вы можете легко обращаться к специальным токенам с помощью атрибутов класса токенизатора, таких как
tokenizer.cls_token. Это упрощает разработку скриптов обучения и дообучения, не привязанных к конкретной модели.
По возможности, специальные токены уже зарегистрированы для предоставленных предобученных моделей (например, BertTokenizer cls_token уже зарегистрирован как '[CLS]', а для XLM он также зарегистрирован как '</s>').
Примеры:
# 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
< source >( conversation: list[dict[str, str]] | list[list[dict[str, str]]]tools: list[dict | Callable] | None = Nonedocuments: list[dict[str, str]] | None = Nonechat_template: str | None = Noneadd_generation_prompt: bool = Falsecontinue_final_message: bool | str = Falsetokenize: bool = Truesanitize_control_tokens: bool = Falsepadding: bool | str | PaddingStrategy = Falsetruncation: bool = Falsemax_length: int | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_dict: bool = Truereturn_assistant_tokens_mask: bool = Falsetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → Union[list[int], Dict]
Параметры
- conversation (Union[list[dict[str, str]], list[list[dict[str, str]]]]) — список словарей с ключами «role» и «content», представляющий историю чата на данный момент.
- tools (
list[Union[Dict, Callable]], необязательный) — Список инструментов (вызываемых функций), доступных модели. Если шаблон не поддерживает вызов функций, этот аргумент не будет иметь эффекта. Каждый инструмент должен передаваться в формате JSON Schema, указывающем имя, описание и типы аргументов инструмента. Подробнее см. в нашем руководстве по использованию инструментов. - documents (
list[dict[str, str]], необязательный) — Список словарей, представляющих документы, доступные модели при выполнении RAG (retrieval-augmented generation). Если шаблон не поддерживает RAG, этот аргумент не будет влиять на результат. Рекомендуется, чтобы каждый документ был словарем, содержащим ключи “title” и “text”. - chat_template (
str, необязательный) — Шаблон Jinja, используемый для этого преобразования. Обычно не нужно передавать в этот аргумент ничего, так как по умолчанию используется шаблон модели. - add_generation_prompt (bool, необязательный) — Если этот параметр установлен, к отформатированному выводу будет добавлен промпт с токеном(ами), указывающими на начало сообщения ассистента. Это полезно, когда вы хотите сгенерировать ответ от модели. Обратите внимание, что этот аргумент будет передан в шаблон чата, поэтому для того, чтобы он имел какой-либо эффект, он должен поддерживаться в шаблоне.
- 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, необязательный, по умолчаниюFalse) — Выберите стратегию дополнения возвращаемых последовательностей (с учётом стороны дополнения модели и индекса дополнения) из следующих вариантов:Trueили'longest': дополнить до самой длинной последовательности в батче (или не дополнять, если предоставлена только одна последовательность).'max_length': Дополнить до максимальной длины, указанной аргументомmax_length, или до максимально допустимой длины входных данных для модели, если этот аргумент не указан.Falseили'do_not_pad'(по умолчанию): без дополнения нулями (т. е. может выводить батч с последовательностями разной длины).
- truncation (
bool, по умолчаниюFalse) — Определяет, нужно ли обрезать последовательности до максимальной длины. Не имеет эффекта, если tokenize равноFalse. - max_length (
int, необязательный) — Максимальная длина (в токенах), используемая для дополнения или усечения. Не влияет на результат, если tokenize равноFalse. Если значение не указано, по умолчанию будет использован атрибутmax_lengthтокенизатора. - return_tensors (
strили TensorType, необязательный) — Если задано, возвращает тензоры конкретного фреймворка. Не имеет эффекта, если tokenize —False. Допустимые значения:'pt': возвращает объектыtorch.TensorPyTorch.'np': возвращает объекты NumPynp.ndarray.
- return_dict (
bool, по умолчаниюTrue) — Определяет, следует ли возвращать словарь с именованными выводами. Не имеет значения, если tokenize равноFalse. - tokenizer_kwargs (
dict[str -- Any], необязательный): Дополнительные аргументы для передачи в токенизатор. - return_assistant_tokens_mask (
bool, по умолчаниюFalse) — Возвращать ли маску токенов, сгенерированных ассистентом. Для токенов, сгенерированных ассистентом, в маске будет значение 1. Для токенов пользователя и системы — 0. Эта функция доступна только для шаблонов чата, поддерживающих её через ключевое слово{% generation %}. - **kwargs — Дополнительные аргументы kwargs для передачи в рендер шаблона. Будут доступны для чат-шаблона.
Возвращает
Union[list[int], Dict]
Список идентификаторов токенов, представляющий токенизированный чат на данный момент, включая управляющие токены. Этот вывод готов к передаче в модель, как напрямую, так и через методы вроде generate(). Если return_dict установлен, будет возвращен словарь с результатами токенизатора.
Преобразует список словарей с ключами "role" и "content" в список идентификаторов токенов. Этот метод предназначен для использования с чат-моделями и читает атрибут chat_template токенизатора, чтобы определить формат и управляющие токены, используемые при преобразовании.
batch_decode
< source >( sequences: list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = None**kwargs ) → list[str]
Параметры
- 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
< source >( token_ids: int | list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = False**kwargs ) → Union[str, list[str]]
Параметры
- token_ids (
Union[int, list[int], list[list[int]], np.ndarray, torch.Tensor]) — Одна последовательность или батч (список последовательностей) токенизированных входных идентификаторов. Может быть получен с помощью метода__call__. - skip_special_tokens (
bool, необязательный, по умолчаниюFalse) — Удалять ли специальные токены при декодировании. - kwargs (дополнительные именованные аргументы, необязательный) — Будут переданы в метод декодирования, специфичный для базовой модели.
Возвращает
Union[str, list[str]]
Декодированная строка для одной последовательности или список декодированных строк для батча последовательностей.
Преобразует последовательность идентификаторов в строку или список последовательностей в список строк, используя токенизатор и словарь, с опциями для удаления специальных токенов и очистки пробелов токенизации.
Аналогично выполнению self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids)).
encode
< source >( text: TextInput | PreTokenizedInput | EncodedInputtext_pair: TextInput | PreTokenizedInput | EncodedInput | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0padding_side: str | None = Nonereturn_tensors: str | TensorType | None = None**kwargs ) → list[int], torch.Tensor, or np.ndarray
Параметры
- text (
str,list[str]orlist[int]) — Первая последовательность для кодирования. Это может быть строка, список строк (токенизированная строка с использованием методаtokenize) или список целых чисел (идентификаторы токенов строки, полученные с помощью методаconvert_tokens_to_ids). - text_pair (
str,list[str]orlist[int], необязательный) — Необязательная вторая последовательность для кодирования. Это может быть строка, список строк (токенизированная строка с использованием методаtokenize) или список целых чисел (идентификаторы токенов строки, полученные с помощью методаconvert_tokens_to_ids). - add_special_tokens (
bool, необязательный, по умолчаниюTrue) — Указывает, следует ли добавлять специальные токены при кодировании последовательностей. Для этого используется базовая функцияPretrainedTokenizerBase.build_inputs_with_special_tokens, которая определяет, какие токены автоматически добавляются к входным идентификаторам. Это полезно, если вы хотите автоматически добавлять токеныbosилиeos. - padding (
bool,strили PaddingStrategy, необязательный, по умолчаниюFalse) — Включает и управляет выравниванием. Принимает следующие значения:Trueили'longest': дополнить до самой длинной последовательности в батче (или не дополнять, если предоставлена только одна последовательность).'max_length': Дополнить до максимальной длины, указанной аргументомmax_length, или до максимально допустимой длины входных данных для модели, если этот аргумент не указан.Falseили'do_not_pad'(по умолчанию): без дополнения нулями (т. е. может выводить батч с последовательностями разной длины).
- truncation (
bool,strили TruncationStrategy, необязательный, по умолчаниюFalse) — Включает и управляет усечением. Принимает следующие значения:Trueили'longest_first': обрезка до максимальной длины, заданной аргументомmax_length, или до максимально допустимой длины входа для модели, если этот аргумент не указан. Обрезка выполняется посимвольно: если предоставлена пара последовательностей (или батч пар), то токен удаляется из самой длинной последовательности в паре.'only_first': Обрезка до максимальной длины, указанной аргументомmax_length, или до максимально допустимой длины входа для модели, если этот аргумент не задан. Если предоставлена пара последовательностей (или батч пар), будет обрезана только первая последовательность пары.'only_second': Обрезка до максимальной длины, указанной аргументомmax_length, или до максимальной допустимой длины входа для модели, если этот аргумент не задан. Это приводит к обрезке только второй последовательности в паре, если предоставлена пара последовательностей (или батч пар).Falseили'do_not_truncate'(по умолчанию): без усечения (т.е. может выдать батч с длиной последовательности, превышающей максимальный допустимый размер входа модели).
- max_length (
int, необязательный) — Управляет максимальной длиной, используемой одним из параметров усечения/дополнения.Если параметр не задан или установлен в
None, будет использована предопределённая максимальная длина модели, если одна из параметров усечения/дополнения требует указания максимальной длины. Если у модели нет конкретной максимальной длины входных данных (как у XLNet), усечение/дополнение до максимальной длины будет отключено. - stride (
int, необязательный, по умолчанию 0) — Если задано число вместе сmax_length, то переполненные токены, возвращаемые приreturn_overflowing_tokens=True, будут содержать некоторые токены из конца усечённой последовательности, чтобы обеспечить перекрытие между усечённой и переполненной последовательностями. Значение этого аргумента определяет количество перекрывающихся токенов. - is_split_into_words (
bool, необязательный, по умолчаниюFalse) — Указывает, является ли вход уже предтокенизированным (например, разбитым на слова). Если установлено вTrue, токенизатор предполагает, что вход уже разбит на слова (например, по пробелам), и токенизирует их. Это полезно для NER или классификации токенов. - pad_to_multiple_of (
int, необязательный) — Если задано, последовательность будет дополнена до кратного указанного значения. Требуется, чтобыpaddingбыл активирован. Это особенно полезно для использования Tensor Cores на оборудовании NVIDIA с вычислительной способностью>= 7.5(Volta). - padding_side (
str, необязательный) — Сторона, на которой модель должна применять отступы. Следует выбрать одно из значений [‘right’, ‘left’]. Значение по умолчанию выбирается из атрибута класса с тем же именем. - return_tensors (
strили TensorType, необязательный) — Если задано, возвращает тензоры вместо списка целых чисел Python. Допустимые значения:'pt': возвращает объектыtorch.TensorPyTorch.'np': возвращает объекты Numpynp.ndarray.
- **kwargs — Передаются в метод
.tokenize().
Возвращает
list[int], torch.Tensor или np.ndarray
Токенизированные идентификаторы текста.
Преобразует строку в последовательность идентификаторов (целых чисел), используя токенизатор и словарь.
Аналогично выполнению self.convert_tokens_to_ids(self.tokenize(text)).
push_to_hub
< source >( repo_id: strcommit_message: str | None = Nonecommit_description: str | None = Noneprivate: bool | None = Nonetoken: bool | str | None = Nonerevision: str | None = Nonecreate_pr: bool = Falsemax_shard_size: int | str | None = '50GB'tags: list[str] | None = None )
Параметры
- repo_id (
str) — Имя репозитория, в который вы хотите загрузить свой токенизатор. При загрузке в определённую организацию оно должно содержать имя вашей организации. - commit_message (
str, необязательный) — Сообщение для коммита при отправке. По умолчанию —"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.
Примеры:
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
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Параметры
- 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
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Создайте маску из двух переданных последовательностей для использования в задаче классификации пар последовательностей.
Этот метод динамически формирует идентификаторы типов токенов на основе атрибутов конфигурации токенизатора:
token_type_ids_pattern: шаблон для использования (“all_zeros” или “bert_style”)token_type_ids_include_special_tokens: Учитывать ли специальные токены при вычислении длины
Примеры:
# 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_special_tokens_mask
< source >( token_ids_0: listtoken_ids_1: list | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]
Параметры
- 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
< source >( pair: bool = False ) → int
Возвращает количество добавленных токенов при кодировании последовательности со специальными токенами.
Эта операция кодирует фиктивный вход и проверяет количество добавленных токенов, поэтому она неэффективна. Не помещайте её внутрь цикла обучения.
prepare_for_model
< source >( ids: listpair_ids: list[int] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy = Falsemax_length: int | None = Nonestride: int = 0pad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_length: bool = Falseverbose: bool = Trueprepend_batch_axis: bool = False**kwargs )
Готовит последовательность входных идентификаторов для использования в модели. Добавляет специальные токены, обрезает и дополняет последовательность.
prepare_for_tokenization
< source >( text: stris_split_into_words: bool = False**kwargs ) → tuple[str, dict[str, Any]]
Параметры
- 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
< source >( save_directory: strfilename_prefix: str | None = None ) → tuple[str, ...]
Реализация по умолчанию для распространённых схем сохранения словаря. Сохраняет self.encoder/self.vocab в формате JSON, при необходимости вместе с self.bpe_ranks в качестве слияний. Возвращает пустой кортеж, если словарь отсутствует.
Переопределите этот метод, если вашему токенизатору требуется собственная логика сохранения (например, для моделей SentencePiece, нескольких файлов словаря или специальных форматов файлов).
tokenize
< source >( text: str**kwargs )
Преобразует строку в последовательность токенов с помощью токенизатора.
truncate_sequences
< source >( ids: listpair_ids: list[int] | None = Nonenum_tokens_to_remove: int = 0truncation_strategy: str | transformers.tokenization_utils_base.TruncationStrategy = 'longest_first'stride: int = 0 )
Обрезает последовательности в соответствии с указанной стратегией.
PreTrainedTokenizerFast
Класс PreTrainedTokenizerFast зависит от библиотеки tokenizers. Токенайзеры, полученные из библиотеки 🤗 tokenizers, можно очень просто загрузить в 🤗 transformers. Ознакомьтесь со страницей Использование токенайзеров из 🤗 tokenizers, чтобы узнать, как это делается.
класс transformers.TokenizersBackend
< source >( *args**kwargs )
Параметры
- model_max_length (
int, необязательный) — Максимальная длина (в токенах) входных данных для трансформерной модели. При загрузке токенизатора с помощью from_pretrained() это значение устанавливается в соответствии с параметром, сохраненным для соответствующей модели вmax_model_input_sizes(см. выше). Если значение не указано, по умолчанию используется 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. - tokenizer_file (
str) — Путь к локальному JSON-файлу, представляющему ранее сериализованный объектtokenizers.Tokenizerиз 🤗 tokenizers.
Базовый класс для всех быстрых токенизаторов (обёртка над библиотекой HuggingFace tokenizers).
Наследуется от 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__
< source >( text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0is_split_into_words: bool = Falsepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = Truetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → BatchEncoding
Параметры
- 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, необязательный, по умолчаниюFalse) — Включает и управляет выравниванием. Принимает следующие значения:Trueили'longest': дополнить до самой длинной последовательности в батче (или не дополнять, если предоставлена только одна последовательность).'max_length': Дополнить до максимальной длины, указанной аргументомmax_length, или до максимально допустимой длины входных данных для модели, если этот аргумент не указан.Falseили'do_not_pad'(по умолчанию): без дополнения нулями (т. е. может выводить батч с последовательностями разной длины).
- truncation (
bool,strили TruncationStrategy, необязательный, по умолчаниюFalse) — Включает и управляет усечением. Принимает следующие значения:Trueили'longest_first': обрезка до максимальной длины, заданной аргументомmax_length, или до максимально допустимой длины входа для модели, если этот аргумент не указан. Обрезка выполняется посимвольно: если предоставлена пара последовательностей (или батч пар), то токен удаляется из самой длинной последовательности в паре.'only_first': Обрезка до максимальной длины, указанной аргументомmax_length, или до максимально допустимой длины входа для модели, если этот аргумент не задан. Если предоставлена пара последовательностей (или батч пар), будет обрезана только первая последовательность пары.'only_second': Обрезка до максимальной длины, указанной аргументомmax_length, или до максимальной допустимой длины входа для модели, если этот аргумент не задан. Это приводит к обрезке только второй последовательности в паре, если предоставлена пара последовательностей (или батч пар).Falseили'do_not_truncate'(по умолчанию): без усечения (т.е. может выдать батч с длиной последовательности, превышающей максимальный допустимый размер входа модели).
- max_length (
int, необязательный) — Управляет максимальной длиной, используемой одним из параметров усечения/дополнения.Если параметр не задан или установлен в
None, будет использована предопределённая максимальная длина модели, если одна из параметров усечения/дополнения требует указания максимальной длины. Если у модели нет конкретной максимальной длины входных данных (как у XLNet), усечение/дополнение до максимальной длины будет отключено. - stride (
int, необязательный, по умолчанию 0) — Если задано число вместе сmax_length, то переполненные токены, возвращаемые приreturn_overflowing_tokens=True, будут содержать некоторые токены из конца усечённой последовательности, чтобы обеспечить перекрытие между усечённой и переполненной последовательностями. Значение этого аргумента определяет количество перекрывающихся токенов. - is_split_into_words (
bool, необязательный, по умолчаниюFalse) — Указывает, является ли вход уже предтокенизированным (например, разбитым на слова). Если установлено вTrue, токенизатор предполагает, что вход уже разбит на слова (например, по пробелам), и токенизирует их. Это полезно для NER или классификации токенов. - pad_to_multiple_of (
int, необязательный) — Если задано, последовательность будет дополнена до кратного указанного значения. Требуется, чтобыpaddingбыл активирован. Это особенно полезно для использования Tensor Cores на оборудовании NVIDIA с вычислительной способностью>= 7.5(Volta). - padding_side (
str, необязательный) — Сторона, на которой модель должна применять отступы. Следует выбрать одно из значений [‘right’, ‘left’]. Значение по умолчанию выбирается из атрибута класса с тем же именем. - return_tensors (
strили TensorType, необязательный) — Если задано, возвращает тензоры вместо списка целых чисел Python. Допустимые значения:'pt': возвращает объектыtorch.TensorPyTorch.'np': возвращает объекты Numpynp.ndarray.
- return_token_type_ids (
bool, необязательный) — Возвращать ли идентификаторы типов токенов. Если значение не указано, идентификаторы типов токенов будут возвращены в соответствии со значением по умолчанию для конкретного токенизатора, заданным атрибутомreturn_outputs. - return_attention_mask (
bool, необязательный) — Возвращать ли маску внимания. Если значение не указано, маска внимания будет возвращена в соответствии со значением по умолчанию для конкретного токенизатора, определяемым атрибутомreturn_outputs. - 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. Если используется токенизатор на Python, этот метод вызовет
NotImplementedError. - return_length (
bool, необязательный, по умолчаниюFalse) — Возвращать ли длины закодированных входных данных. - verbose (
bool, необязательный, по умолчаниюTrue) — Выводить ли дополнительную информацию и предупреждения. - **kwargs — передаются в метод
self.tokenize()
Возвращает
BatchEncoding со следующими полями:
-
input_ids — список идентификаторов токенов, которые передаются в модель.
-
token_type_ids — список идентификаторов типов токенов, передаваемых в модель (если
return_token_type_ids=Trueили если “token_type_ids” входит вself.model_input_names). -
attention_mask — список индексов, указывающих, на какие токены модель должна обращать внимание (когда
return_attention_mask=Trueили если “attention_mask” входит вself.model_input_names). -
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
< source >( new_tokens: str | AddedToken | Sequence[str | AddedToken]special_tokens: bool = False ) → int
Параметры
- 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", чтобы префикс добавлялся только к началу входных данных: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 )
Примеры:
# 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
< source >( special_tokens_dict: dict[str, str | AddedToken | Sequence[str | AddedToken]]replace_extra_special_tokens = True ) → int
Параметры
- 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().
Использование add_special_tokens гарантирует, что ваши специальные токены можно использовать несколькими способами:
- Специальные токены можно пропустить при декодировании, используя
skip_special_tokens = True. - Специальные токены тщательно обрабатываются токенизатором (они никогда не разбиваются), аналогично
AddedTokens. - Вы можете легко обращаться к специальным токенам с помощью атрибутов класса токенизатора, таких как
tokenizer.cls_token. Это упрощает разработку скриптов обучения и дообучения, не привязанных к конкретной модели.
По возможности, специальные токены уже зарегистрированы для предоставленных предобученных моделей (например, BertTokenizer cls_token уже зарегистрирован как '[CLS]', а для XLM он также зарегистрирован как '</s>').
Примеры:
# 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
< source >( conversation: list[dict[str, str]] | list[list[dict[str, str]]]tools: list[dict | Callable] | None = Nonedocuments: list[dict[str, str]] | None = Nonechat_template: str | None = Noneadd_generation_prompt: bool = Falsecontinue_final_message: bool | str = Falsetokenize: bool = Truesanitize_control_tokens: bool = Falsepadding: bool | str | PaddingStrategy = Falsetruncation: bool = Falsemax_length: int | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_dict: bool = Truereturn_assistant_tokens_mask: bool = Falsetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → Union[list[int], Dict]
Параметры
- conversation (Union[list[dict[str, str]], list[list[dict[str, str]]]]) — список словарей с ключами «role» и «content», представляющий историю чата на данный момент.
- tools (
list[Union[Dict, Callable]], необязательный) — Список инструментов (вызываемых функций), доступных модели. Если шаблон не поддерживает вызов функций, этот аргумент не будет иметь эффекта. Каждый инструмент должен передаваться в формате JSON Schema, указывающем имя, описание и типы аргументов инструмента. Подробнее см. в нашем руководстве по использованию инструментов. - documents (
list[dict[str, str]], необязательный) — Список словарей, представляющих документы, доступные модели при выполнении RAG (retrieval-augmented generation). Если шаблон не поддерживает RAG, этот аргумент не будет влиять на результат. Рекомендуется, чтобы каждый документ был словарем, содержащим ключи “title” и “text”. - chat_template (
str, необязательный) — Шаблон Jinja, используемый для этого преобразования. Обычно не нужно передавать в этот аргумент ничего, так как по умолчанию используется шаблон модели. - add_generation_prompt (bool, необязательный) — Если этот параметр установлен, к отформатированному выводу будет добавлен промпт с токеном(ами), указывающими на начало сообщения ассистента. Это полезно, когда вы хотите сгенерировать ответ от модели. Обратите внимание, что этот аргумент будет передан в шаблон чата, поэтому для того, чтобы он имел какой-либо эффект, он должен поддерживаться в шаблоне.
- 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, необязательный, по умолчаниюFalse) — Выберите стратегию дополнения возвращаемых последовательностей (с учётом стороны дополнения модели и индекса дополнения) из следующих вариантов:Trueили'longest': дополнить до самой длинной последовательности в батче (или не дополнять, если предоставлена только одна последовательность).'max_length': Дополнить до максимальной длины, указанной аргументомmax_length, или до максимально допустимой длины входных данных для модели, если этот аргумент не указан.Falseили'do_not_pad'(по умолчанию): без дополнения нулями (т. е. может выводить батч с последовательностями разной длины).
- truncation (
bool, по умолчаниюFalse) — Определяет, нужно ли обрезать последовательности до максимальной длины. Не имеет эффекта, если tokenize равноFalse. - max_length (
int, необязательный) — Максимальная длина (в токенах), используемая для дополнения или усечения. Не влияет на результат, если tokenize равноFalse. Если значение не указано, по умолчанию будет использован атрибутmax_lengthтокенизатора. - return_tensors (
strили TensorType, необязательный) — Если задано, возвращает тензоры конкретного фреймворка. Не имеет эффекта, если tokenize —False. Допустимые значения:'pt': возвращает объектыtorch.TensorPyTorch.'np': возвращает объекты NumPynp.ndarray.
- return_dict (
bool, по умолчаниюTrue) — Определяет, следует ли возвращать словарь с именованными выводами. Не имеет значения, если tokenize равноFalse. - tokenizer_kwargs (
dict[str -- Any], необязательный): Дополнительные аргументы для передачи в токенизатор. - return_assistant_tokens_mask (
bool, по умолчаниюFalse) — Возвращать ли маску токенов, сгенерированных ассистентом. Для токенов, сгенерированных ассистентом, в маске будет значение 1. Для токенов пользователя и системы — 0. Эта функция доступна только для шаблонов чата, поддерживающих её через ключевое слово{% generation %}. - **kwargs — Дополнительные аргументы kwargs для передачи в рендер шаблона. Будут доступны для чат-шаблона.
Возвращает
Union[list[int], Dict]
Список идентификаторов токенов, представляющий токенизированный чат на данный момент, включая управляющие токены. Этот вывод готов к передаче в модель, как напрямую, так и через методы вроде generate(). Если return_dict установлен, будет возвращен словарь с результатами токенизатора.
Преобразует список словарей с ключами "role" и "content" в список идентификаторов токенов. Этот метод предназначен для использования с чат-моделями и читает атрибут chat_template токенизатора, чтобы определить формат и управляющие токены, используемые при преобразовании.
batch_decode
< source >( sequences: list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = None**kwargs ) → list[str]
Параметры
- 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
< source >( token_ids: int | list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = False**kwargs ) → Union[str, list[str]]
Параметры
- token_ids (
Union[int, list[int], list[list[int]], np.ndarray, torch.Tensor]) — Одна последовательность или батч (список последовательностей) токенизированных входных идентификаторов. Может быть получен с помощью метода__call__. - skip_special_tokens (
bool, необязательный, по умолчаниюFalse) — Удалять ли специальные токены при декодировании. - kwargs (дополнительные именованные аргументы, необязательный) — Будут переданы в метод декодирования, специфичный для базовой модели.
Возвращает
Union[str, list[str]]
Декодированная строка для одной последовательности или список декодированных строк для батча последовательностей.
Преобразует последовательность идентификаторов в строку или список последовательностей в список строк, используя токенизатор и словарь, с опциями для удаления специальных токенов и очистки пробелов токенизации.
Аналогично выполнению self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids)).
encode
< source >( text: TextInput | PreTokenizedInput | EncodedInputtext_pair: TextInput | PreTokenizedInput | EncodedInput | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0padding_side: str | None = Nonereturn_tensors: str | TensorType | None = None**kwargs ) → list[int], torch.Tensor, or np.ndarray
Параметры
- text (
str,list[str]orlist[int]) — Первая последовательность для кодирования. Это может быть строка, список строк (токенизированная строка с использованием методаtokenize) или список целых чисел (идентификаторы токенов строки, полученные с помощью методаconvert_tokens_to_ids). - text_pair (
str,list[str]orlist[int], необязательный) — Необязательная вторая последовательность для кодирования. Это может быть строка, список строк (токенизированная строка с использованием методаtokenize) или список целых чисел (идентификаторы токенов строки, полученные с помощью методаconvert_tokens_to_ids). - add_special_tokens (
bool, необязательный, по умолчаниюTrue) — Указывает, следует ли добавлять специальные токены при кодировании последовательностей. Для этого используется базовая функцияPretrainedTokenizerBase.build_inputs_with_special_tokens, которая определяет, какие токены автоматически добавляются к входным идентификаторам. Это полезно, если вы хотите автоматически добавлять токеныbosилиeos. - padding (
bool,strили PaddingStrategy, необязательный, по умолчаниюFalse) — Включает и управляет выравниванием. Принимает следующие значения:Trueили'longest': дополнить до самой длинной последовательности в батче (или не дополнять, если предоставлена только одна последовательность).'max_length': Дополнить до максимальной длины, указанной аргументомmax_length, или до максимально допустимой длины входных данных для модели, если этот аргумент не указан.Falseили'do_not_pad'(по умолчанию): без дополнения нулями (т. е. может выводить батч с последовательностями разной длины).
- truncation (
bool,strили TruncationStrategy, необязательный, по умолчаниюFalse) — Включает и управляет усечением. Принимает следующие значения:Trueили'longest_first': обрезка до максимальной длины, заданной аргументомmax_length, или до максимально допустимой длины входа для модели, если этот аргумент не указан. Обрезка выполняется посимвольно: если предоставлена пара последовательностей (или батч пар), то токен удаляется из самой длинной последовательности в паре.'only_first': Обрезка до максимальной длины, указанной аргументомmax_length, или до максимально допустимой длины входа для модели, если этот аргумент не задан. Если предоставлена пара последовательностей (или батч пар), будет обрезана только первая последовательность пары.'only_second': Обрезка до максимальной длины, указанной аргументомmax_length, или до максимальной допустимой длины входа для модели, если этот аргумент не задан. Это приводит к обрезке только второй последовательности в паре, если предоставлена пара последовательностей (или батч пар).Falseили'do_not_truncate'(по умолчанию): без усечения (т.е. может выдать батч с длиной последовательности, превышающей максимальный допустимый размер входа модели).
- max_length (
int, необязательный) — Управляет максимальной длиной, используемой одним из параметров усечения/дополнения.Если параметр не задан или установлен в
None, будет использована предопределённая максимальная длина модели, если одна из параметров усечения/дополнения требует указания максимальной длины. Если у модели нет конкретной максимальной длины входных данных (как у XLNet), усечение/дополнение до максимальной длины будет отключено. - stride (
int, необязательный, по умолчанию 0) — Если задано число вместе сmax_length, то переполненные токены, возвращаемые приreturn_overflowing_tokens=True, будут содержать некоторые токены из конца усечённой последовательности, чтобы обеспечить перекрытие между усечённой и переполненной последовательностями. Значение этого аргумента определяет количество перекрывающихся токенов. - is_split_into_words (
bool, необязательный, по умолчаниюFalse) — Указывает, является ли вход уже предтокенизированным (например, разбитым на слова). Если установлено вTrue, токенизатор предполагает, что вход уже разбит на слова (например, по пробелам), и токенизирует их. Это полезно для NER или классификации токенов. - pad_to_multiple_of (
int, необязательный) — Если задано, последовательность будет дополнена до кратного указанного значения. Требуется, чтобыpaddingбыл активирован. Это особенно полезно для использования Tensor Cores на оборудовании NVIDIA с вычислительной способностью>= 7.5(Volta). - padding_side (
str, необязательный) — Сторона, на которой модель должна применять отступы. Следует выбрать одно из значений [‘right’, ‘left’]. Значение по умолчанию выбирается из атрибута класса с тем же именем. - return_tensors (
strили TensorType, необязательный) — Если задано, возвращает тензоры вместо списка целых чисел Python. Допустимые значения:'pt': возвращает объектыtorch.TensorPyTorch.'np': возвращает объекты Numpynp.ndarray.
- **kwargs — Передаются в метод
.tokenize().
Возвращает
list[int], torch.Tensor или np.ndarray
Токенизированные идентификаторы текста.
Преобразует строку в последовательность идентификаторов (целых чисел), используя токенизатор и словарь.
Аналогично выполнению self.convert_tokens_to_ids(self.tokenize(text)).
push_to_hub
< source >( repo_id: strcommit_message: str | None = Nonecommit_description: str | None = Noneprivate: bool | None = Nonetoken: bool | str | None = Nonerevision: str | None = Nonecreate_pr: bool = Falsemax_shard_size: int | str | None = '50GB'tags: list[str] | None = None )
Параметры
- repo_id (
str) — Имя репозитория, в который вы хотите загрузить свой токенизатор. При загрузке в определённую организацию оно должно содержать имя вашей организации. - commit_message (
str, необязательный) — Сообщение для коммита при отправке. По умолчанию —"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.
Примеры:
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")Создайте бэкенд tokenizers.Tokenizer на основе доступных файлов сериализации (tokenizer.json, sentencepiece
models, tekken.json, vocab/merges).
Возвращает добавленные токены в словаре в виде словаря, сопоставляющего токены с их индексами.
num_special_tokens_to_add
< source >( pair: bool = False ) → int
Возвращает количество добавленных токенов при кодировании последовательности со специальными токенами.
Эта операция кодирует фиктивный вход и проверяет количество добавленных токенов, поэтому она неэффективна. Не помещайте её внутрь цикла обучения.
save_pretrained
< source >( save_directory: str | os.PathLikelegacy_format: bool | None = Nonefilename_prefix: str | None = Nonepush_to_hub: bool = Falsesave_format: str | None = None**kwargs ) → A tuple of str
Параметры
- save_format (
str, необязательный) —"mistral"для сохранения в форматеtekken.jsonпутём копирования исходного файла (требуется наличие исходного файла словаря tekken). При сохранении имя нормализуется доtekken.json, и созданный токенизатор должен точно совпадать с ним."hf"илиNoneдля формата HuggingFace по умолчанию. - kwargs (
dict[str, Any], необязательный) — Дополнительные именованные аргументы, передаваемые в метод push_to_hub().
Возвращает
Кортеж str
Файлы сохранены.
Сохраните полное состояние токенизатора.
Расширяет save_pretrained() поддержкой save_format для токенизаторов, сконвертированных из нативного файла словаря (например, tekken.json от Mistral). См. базовый метод для legacy_format, filename_prefix и push_to_hub.
set_truncation_and_padding
< source >( padding_strategy: PaddingStrategytruncation_strategy: TruncationStrategymax_length: intstride: intpad_to_multiple_of: int | Nonepadding_side: str | None )
Параметры
- padding_strategy (PaddingStrategy) — Тип применяемой к входным данным операции выравнивания
- truncation_strategy (TruncationStrategy) — Тип усечения, который будет применён к входным данным
- max_length (
int) — Максимальная длина последовательности. - stride (
int) — Шаг, используемый при обработке переполнения. - pad_to_multiple_of (
int, необязательный) — Если задано, последовательность будет дополнена до кратного указанного значения. Это особенно полезно для использования Tensor Cores на оборудовании NVIDIA с вычислительной способностью>= 7.5(Volta). - padding_side (
str, необязательный) — Сторона, на которой модель должна применять отступы. Следует выбрать одно из значений [‘right’, ‘left’]. Значение по умолчанию выбирается из атрибута класса с тем же именем.
Определите стратегии усечения и дополнения для быстрых токенизаторов (предоставленных библиотекой HuggingFace tokenizers) и восстановите настройки токенизатора после их применения.
Предоставленный токенизатор не имеет стратегии отступов (padding) / усечения (truncation) перед управляемым разделом. Если ваш токенизатор ранее установил стратегию отступов / усечения, она будет сброшена до отсутствия отступов / усечения при выходе из управляемого раздела.
train_new_from_iterator
< source >( text_iteratorvocab_sizelength = Nonenew_special_tokens = Nonespecial_tokens_map = None**kwargs ) → PreTrainedTokenizerFast
Параметры
- text_iterator (генератор
list[str]) — Корпус для обучения. Должен быть генератором батчей текстов, например, список списков текстов, если все данные уже загружены в память. - vocab_size (
int) — Размер словаря, который вы хотите задать для вашего токенизатора. - length (
int, необязательный) — Общее количество последовательностей в итераторе. Используется для предоставления осмысленного отслеживания прогресса - new_special_tokens (список
strилиAddedToken, необязательный) — Список новых специальных токенов, которые нужно добавить в токенизатор, который вы обучаете. - special_tokens_map (
dict[str, str], необязательный) — Если вы хотите переименовать некоторые из специальных токенов, используемых этим токенизатором, передайте в этот аргумент отображение от старого имени специального токена к новому. - kwargs (
dict[str, Any], необязательный) — Дополнительные именованные аргументы, передаваемые в trainer из библиотеки 🤗 Tokenizers.
Возвращает
Новый токенизатор того же типа, что и исходный, обученный на
text_iterator.
Обучает токенизатор на новом корпусе с теми же параметрами по умолчанию (в части специальных токенов или конвейера токенизации), что и у текущего.
Обновляет базовый постпроцессор с использованием текущих bos_token и eos_token.
PythonBackend
класс transformers.PythonBackend
< source >( **kwargs )
Параметры
- model_max_length (
int, необязательный) — Максимальная длина (в токенах) входных данных для трансформерной модели. При загрузке токенизатора с помощью from_pretrained() это значение устанавливается в соответствии с параметром, сохраненным для соответствующей модели вmax_model_input_sizes(см. выше). Если значение не указано, по умолчанию используется 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.
Обработка всех общих методов токенизации и специальных токенов, а также методов загрузки, кэширования и загрузки предобученных токенизаторов, а также добавления токенов в словарь.
Этот класс также содержит добавленные токены в унифицированном виде поверх всех токенизаторов, поэтому нам не нужно обрабатывать специфические методы расширения словаря различных базовых структур словаря (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
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Параметры
- 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
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Создайте маску из двух переданных последовательностей для использования в задаче классификации пар последовательностей.
Этот метод динамически формирует идентификаторы типов токенов на основе атрибутов конфигурации токенизатора:
token_type_ids_pattern: шаблон для использования (“all_zeros” или “bert_style”)token_type_ids_include_special_tokens: Учитывать ли специальные токены при вычислении длины
Примеры:
# 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_special_tokens_mask
< source >( token_ids_0: listtoken_ids_1: list | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]
Параметры
- 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
< source >( pair: bool = False ) → int
Возвращает количество добавленных токенов при кодировании последовательности со специальными токенами.
Эта операция кодирует фиктивный вход и проверяет количество добавленных токенов, поэтому она неэффективна. Не помещайте её внутрь цикла обучения.
prepare_for_model
< source >( ids: listpair_ids: list[int] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy = Falsemax_length: int | None = Nonestride: int = 0pad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_length: bool = Falseverbose: bool = Trueprepend_batch_axis: bool = False**kwargs )
Готовит последовательность входных идентификаторов для использования в модели. Добавляет специальные токены, обрезает и дополняет последовательность.
prepare_for_tokenization
< source >( text: stris_split_into_words: bool = False**kwargs ) → tuple[str, dict[str, Any]]
Параметры
- 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
< source >( save_directory: strfilename_prefix: str | None = None ) → tuple[str, ...]
Реализация по умолчанию для распространённых схем сохранения словаря. Сохраняет self.encoder/self.vocab в формате JSON, при необходимости вместе с self.bpe_ranks в качестве слияний. Возвращает пустой кортеж, если словарь отсутствует.
Переопределите этот метод, если вашему токенизатору требуется собственная логика сохранения (например, для моделей SentencePiece, нескольких файлов словаря или специальных форматов файлов).
tokenize
< source >( text: str**kwargs )
Преобразует строку в последовательность токенов с помощью токенизатора.
truncate_sequences
< source >( ids: listpair_ids: list[int] | None = Nonenum_tokens_to_remove: int = 0truncation_strategy: str | transformers.tokenization_utils_base.TruncationStrategy = 'longest_first'stride: int = 0 )
Обрезает последовательности в соответствии с указанной стратегией.
TokenizersBackend
класс transformers.TokenizersBackend
< source >( *args**kwargs )
Параметры
- model_max_length (
int, необязательный) — Максимальная длина (в токенах) входных данных для трансформерной модели. При загрузке токенизатора с помощью from_pretrained() это значение устанавливается в соответствии с параметром, сохраненным для соответствующей модели вmax_model_input_sizes(см. выше). Если значение не указано, по умолчанию используется 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. - tokenizer_file (
str) — Путь к локальному JSON-файлу, представляющему ранее сериализованный объектtokenizers.Tokenizerиз 🤗 tokenizers.
Базовый класс для всех быстрых токенизаторов (обёртка над библиотекой HuggingFace tokenizers).
Наследуется от 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'.
Создайте бэкенд tokenizers.Tokenizer на основе доступных файлов сериализации (tokenizer.json, sentencepiece
models, tekken.json, vocab/merges).
Возвращает добавленные токены в словаре в виде словаря, сопоставляющего токены с их индексами.
num_special_tokens_to_add
< source >( pair: bool = False ) → int
Возвращает количество добавленных токенов при кодировании последовательности со специальными токенами.
Эта операция кодирует фиктивный вход и проверяет количество добавленных токенов, поэтому она неэффективна. Не помещайте её внутрь цикла обучения.
save_pretrained
< source >( save_directory: str | os.PathLikelegacy_format: bool | None = Nonefilename_prefix: str | None = Nonepush_to_hub: bool = Falsesave_format: str | None = None**kwargs ) → A tuple of str
Параметры
- save_format (
str, необязательный) —"mistral"для сохранения в форматеtekken.jsonпутём копирования исходного файла (требуется наличие исходного файла словаря tekken). При сохранении имя нормализуется доtekken.json, и созданный токенизатор должен точно совпадать с ним."hf"илиNoneдля формата HuggingFace по умолчанию. - kwargs (
dict[str, Any], необязательный) — Дополнительные именованные аргументы, передаваемые в метод push_to_hub().
Возвращает
Кортеж str
Файлы сохранены.
Сохраните полное состояние токенизатора.
Расширяет save_pretrained() поддержкой save_format для токенизаторов, сконвертированных из нативного файла словаря (например, tekken.json от Mistral). См. базовый метод для legacy_format, filename_prefix и push_to_hub.
set_truncation_and_padding
< source >( padding_strategy: PaddingStrategytruncation_strategy: TruncationStrategymax_length: intstride: intpad_to_multiple_of: int | Nonepadding_side: str | None )
Параметры
- padding_strategy (PaddingStrategy) — Тип применяемой к входным данным операции выравнивания
- truncation_strategy (TruncationStrategy) — Тип усечения, который будет применён к входным данным
- max_length (
int) — Максимальная длина последовательности. - stride (
int) — Шаг, используемый при обработке переполнения. - pad_to_multiple_of (
int, необязательный) — Если задано, последовательность будет дополнена до кратного указанного значения. Это особенно полезно для использования Tensor Cores на оборудовании NVIDIA с вычислительной способностью>= 7.5(Volta). - padding_side (
str, необязательный) — Сторона, на которой модель должна применять отступы. Следует выбрать одно из значений [‘right’, ‘left’]. Значение по умолчанию выбирается из атрибута класса с тем же именем.
Определите стратегии усечения и дополнения для быстрых токенизаторов (предоставленных библиотекой HuggingFace tokenizers) и восстановите настройки токенизатора после их применения.
Предоставленный токенизатор не имеет стратегии отступов (padding) / усечения (truncation) перед управляемым разделом. Если ваш токенизатор ранее установил стратегию отступов / усечения, она будет сброшена до отсутствия отступов / усечения при выходе из управляемого раздела.
train_new_from_iterator
< source >( text_iteratorvocab_sizelength = Nonenew_special_tokens = Nonespecial_tokens_map = None**kwargs ) → PreTrainedTokenizerFast
Параметры
- text_iterator (генератор
list[str]) — Корпус для обучения. Должен быть генератором батчей текстов, например, список списков текстов, если все данные уже загружены в память. - vocab_size (
int) — Размер словаря, который вы хотите задать для вашего токенизатора. - length (
int, необязательный) — Общее количество последовательностей в итераторе. Используется для предоставления осмысленного отслеживания прогресса - new_special_tokens (список
strилиAddedToken, необязательный) — Список новых специальных токенов, которые нужно добавить в токенизатор, который вы обучаете. - special_tokens_map (
dict[str, str], необязательный) — Если вы хотите переименовать некоторые из специальных токенов, используемых этим токенизатором, передайте в этот аргумент отображение от старого имени специального токена к новому. - kwargs (
dict[str, Any], необязательный) — Дополнительные именованные аргументы, передаваемые в trainer из библиотеки 🤗 Tokenizers.
Возвращает
Новый токенизатор того же типа, что и исходный, обученный на
text_iterator.
Обучает токенизатор на новом корпусе с теми же параметрами по умолчанию (в части специальных токенов или конвейера токенизации), что и у текущего.
Обновляет базовый постпроцессор с использованием текущих bos_token и eos_token.
SentencePieceBackend
класс transformers.SentencePieceBackend
< source >( **kwargs )
Параметры
- model_max_length (
int, необязательный) — Максимальная длина (в токенах) входных данных для трансформерной модели. При загрузке токенизатора с помощью from_pretrained() это значение устанавливается в соответствии с параметром, сохраненным для соответствующей модели вmax_model_input_sizes(см. выше). Если значение не указано, по умолчанию используется 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.
Обработка всех общих методов токенизации и специальных токенов, а также методов загрузки, кэширования и загрузки предобученных токенизаторов, а также добавления токенов в словарь.
Этот класс также содержит добавленные токены в унифицированном виде поверх всех токенизаторов, поэтому нам не нужно обрабатывать специфические методы расширения словаря различных базовых структур словаря (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'.
Преобразует последовательность токенов (строку) в одну строку.
Возвращает словарь в виде объекта dict
save_vocabulary
< source >( save_directory: strfilename_prefix: str | None = None ) → tuple(str)
Сохраните словарь sentencepiece (скопируйте исходный файл) в каталог.
BatchEncoding
класс transformers.BatchEncoding
< source >( data: dict[str, Any] | None = Noneencoding: EncodingFast | Sequence[EncodingFast] | None = Nonetensor_type: None | str | TensorType = Noneprepend_batch_axis: bool = Falsen_sequences: int | None = None )
Параметры
- 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(), ~tokenization_utils_base.PreTrainedTokenizerBase.encode_plus и ~tokenization_utils_base.PreTrainedTokenizerBase.batch_encode_plus (токены, attention_masks и т. д.).
Этот класс наследуется от словаря Python и может использоваться как словарь. Кроме того, этот класс предоставляет вспомогательные методы для отображения из пространства слов/символов в пространство токенов.
char_to_token
< source >( batch_or_char_index: intchar_index: int | None = Nonesequence_index: int = 0 ) → int
Параметры
- batch_or_char_index (
int) — Индекс последовательности в батче. Если батч содержит только одну последовательность, это может быть индекс символа в последовательности - char_index (
int, необязательный) — Если в batch_or_char_index указан индекс батча, это может быть индекс символа в последовательности. - sequence_index (
int, необязательный, по умолчанию 0) — Если в батче закодирована пара последовательностей, этот параметр позволяет указать, к какой из последовательностей в паре (0 или 1) относится указанный индекс символа.
Возвращает
int
Индекс токена или None, если индекс символа относится к токену, содержащему только пробельные символы, и пробелы удаляются с помощью trim_offsets=True.
Получить индекс токена в закодированном выводе, содержащего символ из исходной строки, для последовательности из батча.
Можно вызвать следующим образом:
self.char_to_token(char_index), если размер батча равен 1self.char_to_token(batch_index, char_index), если размер батча больше или равен 1
Этот метод особенно хорошо подходит, когда входные последовательности предоставлены в виде предтокенизированных последовательностей (т. е. слова определяются пользователем). В этом случае он позволяет легко сопоставлять закодированные токены с предоставленными токенизированными словами.
char_to_word
< source >( batch_or_char_index: intchar_index: int | None = Nonesequence_index: int = 0 ) → int
Параметры
- batch_or_char_index (
int) — Индекс последовательности в батче. Если батч содержит только одну последовательность, это может быть индекс символа в исходной строке. - char_index (
int, необязательный) — Если в batch_or_char_index указан индекс батча, это может быть индекс символа в исходной строке. - sequence_index (
int, необязательный, по умолчанию 0) — Если в батче закодирована пара последовательностей, этот параметр позволяет указать, к какой из последовательностей в паре (0 или 1) относится указанный индекс символа.
Возвращает
int
Индекс слова, содержащего символ.
Получить слово в исходной строке, соответствующее символу в исходной строке последовательности из пакета.
Можно вызвать следующим образом:
self.char_to_word(char_index), если размер батча равен 1self.char_to_word(batch_index, char_index), если размер батча больше 1
Этот метод особенно хорошо подходит, когда входные последовательности предоставлены в виде предтокенизированных последовательностей (т. е. слова определяются пользователем). В этом случае он позволяет легко сопоставлять закодированные токены с предоставленными токенизированными словами.
convert_to_tensors
< source >( tensor_type: str | TensorType | None = Noneprepend_batch_axis: bool = False )
Параметры
- tensor_type (
strили TensorType, необязательный) — Тип тензоров для использования. Еслиstr, должно быть одним из значений перечисления TensorType. ЕслиNone, изменения не вносятся. - prepend_batch_axis (
bool, необязательный, по умолчаниюFalse) — Добавлять или нет размерность батча при конвертации.
Преобразуйте внутреннее содержимое в тензоры.
sequence_ids
< source >( batch_index: int = 0 ) → list[Optional[int]]
Параметры
Возвращает
list[Optional[int]]
Список, указывающий идентификатор последовательности, соответствующий каждому токену. Специальные токены, добавленные токенизатором, отображаются в None, а остальные токены — в индекс их соответствующей последовательности.
Возвращает список, сопоставляющий токены с идентификаторами исходных предложений:
Noneдля специальных токенов, добавляемых вокруг или между последовательностями,0для токенов, соответствующих словам в первой последовательности,1для токенов, соответствующих словам во второй последовательности, если пара последовательностей была закодирована совместно.
до
< source >( device: str | torch.device | intnon_blocking: bool = False ) → BatchEncoding
Отправьте все значения на устройство, вызвав v.to(device, non_blocking=non_blocking) (только PyTorch).
token_to_chars
< source >( batch_or_token_index: inttoken_index: int | None = None ) → CharSpan
Параметры
- batch_or_token_index (
int) — Индекс последовательности в батче. Если батч содержит только одну последовательность, это может быть индекс токена в последовательности. - token_index (
int, необязательный) — Если в batch_or_token_index указан индекс батча, это может быть индекс токена или токенов в последовательности.
Возвращает
Диапазон символов в исходной строке или None, если токен (например, , ) не соответствует никаким символам в исходной строке.
Получите диапазон символов, соответствующий закодированному токену в последовательности из батча.
Диапазоны символов возвращаются в виде CharSpan со следующими полями:
- start — Индекс первого символа в исходной строке, соответствующий токену.
- end — Индекс символа, следующего за последним символом в исходной строке, связанной с токеном.
Можно вызвать следующим образом:
self.token_to_chars(token_index), если размер батча равен 1self.token_to_chars(batch_index, token_index), если размер батча больше или равен 1
token_to_sequence
< source >( batch_or_token_index: inttoken_index: int | None = None ) → int
Параметры
- batch_or_token_index (
int) — Индекс последовательности в батче. Если батч содержит только одну последовательность, это может быть индекс токена в последовательности. - token_index (
int, необязательный) — Если в batch_or_token_index указан индекс батча, это может быть индекс токена в последовательности.
Возвращает
int
Индекс входной последовательности, содержащей токен (0 для первой последовательности или 1 для второй последовательности в паре).
Получает индекс последовательности, представленной указанным токеном. В общем случае этот метод возвращает 0 для одиночной последовательности или первой последовательности в паре, а 1 — для второй последовательности в паре.
Можно вызвать следующим образом:
self.token_to_sequence(token_index), если размер батча равен 1self.token_to_sequence(batch_index, token_index), если размер батча больше 1
Этот метод особенно хорошо подходит, когда входные последовательности предоставлены в виде предтокенизированных последовательностей (т. е. слова определяются пользователем). В этом случае он позволяет легко сопоставить закодированные токены с предоставленными токенизированными словами.
token_to_word
< source >( batch_or_token_index: inttoken_index: int | None = None ) → int
Параметры
- batch_or_token_index (
int) — Индекс последовательности в батче. Если батч содержит только одну последовательность, это может быть индекс токена в последовательности. - token_index (
int, необязательный) — Если в batch_or_token_index указан индекс батча, это может быть индекс токена в последовательности.
Возвращает
int
Индекс слова во входной последовательности.
Получить индекс слова, которому соответствует (т. е. которое включает) закодированный токен в последовательности батча.
Можно вызвать следующим образом:
self.token_to_word(token_index), если размер батча равен 1self.token_to_word(batch_index, token_index), если размер батча больше 1
Этот метод особенно хорошо подходит, когда входные последовательности предоставлены в виде предтокенизированных последовательностей (т. е. слова определяются пользователем). В этом случае он позволяет легко сопоставить закодированные токены с предоставленными токенизированными словами.
токены
< source >( batch_index: int = 0 ) → list[str]
Возвращает список токенов (подчасти входных строк после разбиения на слова/субслова и до преобразования в целочисленные индексы) для указанного индекса в батче (работает только для вывода быстрого токенизатора).
word_ids
< source >( batch_index: int = 0 ) → list[Optional[int]]
Параметры
Возвращает
list[Optional[int]]
Список, указывающий слово, соответствующее каждому токену. Специальные токены, добавленные токенизатором, отображаются в None, а остальные токены — в индекс соответствующего им слова (несколько токенов могут отображаться в один и тот же индекс слова, если они являются его частями).
Возвращает список, сопоставляющий токены с их фактическими словами в исходном предложении для быстрого токенизатора.
word_to_chars
< source >( batch_or_word_index: intword_index: int | None = Nonesequence_index: int = 0 ) → CharSpan
Параметры
- batch_or_word_index (
int) — Индекс последовательности в батче. Если батч содержит только одну последовательность, это может быть индекс слова в последовательности - word_index (
int, необязательный) — Если в batch_or_word_index указан индекс батча, это может быть индекс слова в последовательности. - sequence_index (
int, необязательный, по умолчанию 0) — Если в батче закодирована пара последовательностей, этот параметр позволяет указать, к какой из последовательностей в паре (0 или 1) относится предоставленный индекс слова.
Возвращает
CharSpan
Диапазон соответствующих символов в строке. CharSpan является NamedTuple со следующими полями:
- start: индекс первого символа, связанного со словом в исходной строке
- end: индекс символа, следующего за последним символом, связанным со словом в исходной строке
Получите диапазон символов в исходной строке, соответствующий указанному слову в последовательности из батча.
Диапазоны символов возвращаются в виде именованного кортежа CharSpan со следующими полями:
- start: индекс первого символа в исходной строке
- end: индекс символа, следующего за последним символом в исходной строке
Можно вызвать следующим образом:
self.word_to_chars(word_index), если размер батча равен 1self.word_to_chars(batch_index, word_index), если размер батча больше или равен 1
word_to_tokens
< source >( batch_or_word_index: intword_index: int | None = Nonesequence_index: int = 0 ) → (TokenSpan, optional)
Параметры
- batch_or_word_index (
int) — Индекс последовательности в батче. Если батч содержит только одну последовательность, это может быть индекс слова в последовательности. - word_index (
int, необязательный) — Если в batch_or_word_index указан индекс батча, это может быть индекс слова в последовательности. - sequence_index (
int, необязательный, по умолчанию 0) — Если в батче закодирована пара последовательностей, этот параметр позволяет указать, к какой из последовательностей в паре (0 или 1) относится предоставленный индекс слова.
Возвращает
(TokenSpan, необязательный)
Диапазон токенов в закодированной последовательности. Возвращает
None, если токены не соответствуют слову. Это может происходить, в частности, когда токен является специальным токеном,
используемым для форматирования токенизации. Например, когда мы добавляем класс-токен в самом начале
токенизации.
Получите закодированный диапазон токенов, соответствующий слову в последовательности из батча.
Диапазоны токенов возвращаются в виде TokenSpan со следующими полями:
- start — индекс первого токена.
- end — индекс токена, следующего за последним токеном.
Можно вызвать следующим образом:
self.word_to_tokens(word_index, sequence_index: int = 0), если размер батча равен 1self.word_to_tokens(batch_index, word_index, sequence_index: int = 0), если размер батча больше или равен 1
Этот метод особенно хорошо подходит, когда входные последовательности предоставлены в виде предтокенизированных последовательностей (т. е. слова определяются пользователем). В этом случае он позволяет легко сопоставлять закодированные токены с предоставленными токенизированными словами.