分词器工具
此页面列出了分词器使用的所有实用函数,主要是 PreTrainedTokenizerBase 类,它实现了 PreTrainedTokenizer 和 PreTrainedTokenizerFast 之间的通用方法,以及 SpecialTokensMixin 混入。
如果您正在研究库中分词器的代码,则其中大多数功能才有用。
PreTrainedTokenizerBase
类 transformers.PreTrainedTokenizerBase
< 源代码 >( **kwargs )
参数
- model_max_length (
int
, 可选) — Transformer 模型输入的最大长度(以标记数表示)。当使用 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
,可选) — 表示句子开头的特殊标记。将与self.bos_token
和self.bos_token_id
关联。 - eos_token (
str
或tokenizers.AddedToken
,可选) — 表示句子结尾的特殊标记。将与self.eos_token
和self.eos_token_id
关联。 - unk_token (
str
或tokenizers.AddedToken
,可选) — 表示词汇表外标记的特殊标记。将与self.unk_token
和self.unk_token_id
关联。 - sep_token (
str
或tokenizers.AddedToken
,可选) — 用于分隔同一输入中两个不同句子的特殊标记(例如,BERT 使用)。将与self.sep_token
和self.sep_token_id
关联。 - pad_token (
str
或tokenizers.AddedToken
,可选) — 用于使标记数组大小相同以进行批处理的特殊标记。然后将被注意力机制或损失计算忽略。将与self.pad_token
和self.pad_token_id
关联。 - cls_token (
str
或tokenizers.AddedToken
,可选) — 表示输入类别的特殊标记(例如,由 BERT 使用)。将与self.cls_token
和self.cls_token_id
关联。 - mask_token (
str
或tokenizers.AddedToken
,可选) — 表示掩码标记的特殊标记(由掩码语言建模预训练目标使用,例如 BERT)。将与self.mask_token
和self.mask_token_id
关联。 - additional_special_tokens (
str
或tokenizers.AddedToken
的元组或列表,可选) — 附加特殊标记的元组或列表。将它们添加到此处以确保在将skip_special_tokens
设置为 True 时解码时跳过它们。如果它们不属于词汇表,则将它们添加到词汇表的末尾。 - clean_up_tokenization_spaces (
bool
,可选,默认为True
) — 模型是否应该清除在标记化过程中拆分输入文本时添加的空格。 - split_special_tokens (
bool
,可选,默认为False
) — 是否应该在标记化过程中拆分特殊标记。传递将影响标记器的内部状态。默认行为是不拆分特殊标记。这意味着如果<s>
是bos_token
,则tokenizer.tokenize("<s>") = ['<s>
]。否则,如果split_special_tokens=True
,则tokenizer.tokenize("<s>")
将给出['<','s', '>']
。
PreTrainedTokenizer 和 PreTrainedTokenizerFast 的基类。
处理这两个类的共享(主要是样板)方法。
类属性(由派生类覆盖)
- 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__
< 源代码 >( text: Union = None text_pair: Union = None text_target: Union = None text_pair_target: Union = None add_special_tokens: bool = True padding: Union = False truncation: Union = None max_length: Optional = None stride: int = 0 is_split_into_words: bool = False pad_to_multiple_of: Optional = None padding_side: Optional = None return_tensors: Union = None return_token_type_ids: Optional = None return_attention_mask: Optional = None return_overflowing_tokens: bool = False return_special_tokens_mask: bool = False return_offsets_mapping: bool = False return_length: bool = False verbose: bool = True **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
(以消除与一批序列的歧义)。 - add_special_tokens (
bool
, 可选, 默认值True
) — 在对序列进行编码时是否添加特殊标记。这将使用底层的PretrainedTokenizerBase.build_inputs_with_special_tokens
函数,该函数定义了哪些标记会自动添加到输入 ID 中。如果您想自动添加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
。这对于在计算能力>= 7.5
(Volta) 的 NVIDIA 硬件上使用 Tensor Cores 特别有用。 - padding_side (
str
,*可选*) — 模型应该在其上应用填充的一侧。应在 [‘right’, ‘left’] 之间选择。默认值取自同名类属性。 - return_tensors (
str
或 TensorType,*可选*) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:'tf'
:返回 TensorFlowtf.constant
对象。'pt'
:返回 PyTorchtorch.Tensor
对象。'np'
:返回 Numpynp.ndarray
对象。
- return_token_type_ids (
bool
,*可选*) — 是否返回标记类型 ID。如果保留默认值,将根据特定分词器的默认值(由return_outputs
属性定义)返回标记类型 ID。 - return_attention_mask (
bool
,*可选*) — 是否返回注意力掩码。如果保留默认值,将根据特定分词器的默认值(由return_outputs
属性定义)返回注意力掩码。 - return_overflowing_tokens (
bool
, 可选, 默认为False
) — 是否返回溢出的标记序列。如果一对输入 ID 序列(或一批对)使用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 — 要输入到模型的标记 ID 列表。
-
token_type_ids — 要输入到模型的标记类型 ID 列表(当
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 — 由 0 和 1 组成的列表,其中 1 表示添加的特殊标记,0 表示常规序列标记(当
add_special_tokens=True
并且return_special_tokens_mask=True
时)。 -
length — 输入的长度(当
return_length=True
时)
对一个或多个序列或一对或多对序列进行标记化并为模型做准备的主要方法。
apply_chat_template
< source >( conversation: Union tools: Optional = None documents: Optional = None chat_template: Optional = None add_generation_prompt: bool = False continue_final_message: bool = False tokenize: bool = True padding: bool = False truncation: bool = False max_length: Optional = None return_tensors: Union = None return_dict: bool = False return_assistant_tokens_mask: bool = False tokenizer_kwargs: Optional = None **kwargs ) → Union[List[int], Dict]
参数
- conversation (Union[List[Dict[str, str]], List[List[Dict[str, str]]]]) — 包含“role”和“content”键的字典列表,表示到目前为止的聊天历史记录。
- tools (
List[Dict]
, 可选) — 模型可访问的工具(可调用函数)列表。如果模板不支持函数调用,则此参数无效。每个工具都应作为 JSON Schema 传递,给出工具的名称、描述和参数类型。有关更多信息,请参阅我们的 聊天模板指南。 - documents (
List[Dict[str, str]]
, 可选) — 如果模型正在执行 RAG(检索增强生成),则表示模型可访问的文档的字典列表。如果模板不支持 RAG,则此参数无效。我们建议每个文档都应该是包含“title”和“text”键的字典。有关使用聊天模板传递文档的示例,请参阅 聊天模板指南 的 RAG 部分。 - chat_template (
str
, 可选) — 用于此转换的 Jinja 模板。通常不需要向此参数传递任何内容,因为默认情况下将使用模型的模板。 - add_generation_prompt (bool, 可选) — 如果设置了此选项,则会在格式化输出中追加一个提示,其中包含指示助手消息开始的标记。当您想从模型生成响应时,这很有用。请注意,此参数将传递给聊天模板,因此必须在模板中支持此参数才能生效。
- continue_final_message (bool, 可选) — 如果设置了此选项,则聊天将被格式化,以便聊天中的最后一条消息是开放式的,没有任何 EOS 标记。模型将继续此消息,而不是开始新消息。这允许您为模型“预填充”其响应的一部分。不能与
add_generation_prompt
同时使用。 - tokenize (
bool
, 默认值为True
) — 是否对输出进行分词。如果为False
,则输出将是一个字符串。 - padding (
bool
, 默认值为False
) — 是否将序列填充到最大长度。如果 tokenize 为False
,则无效。 - truncation (
bool
, 默认值为False
) — 是否在达到最大长度时截断序列。如果 tokenize 为False
,则无效。 - max_length (
int
, 可选) — 用于填充或截断的最大长度(以标记为单位)。如果 tokenize 为False
,则无效。如果未指定,则将使用分词器的max_length
属性作为默认值。 - return_tensors (
str
或 TensorType, 可选) — 如果设置,将返回特定框架的张量。如果 tokenize 为False
,则无效。可接受的值为:'tf'
:返回 TensorFlowtf.Tensor
对象。'pt'
:返回 PyTorchtorch.Tensor
对象。'np'
:返回 NumPynp.ndarray
对象。'jax'
:返回 JAXjnp.ndarray
对象。
- return_dict (
bool
,默认为False
) — 是否返回包含命名输出的字典。如果 `tokenize` 为 `False`,则无效。 - tokenizer_kwargs (
Dict[str -- Any]
,可选): 传递给分词器的额外关键字参数。 - return_assistant_tokens_mask (
bool
,默认为False
) — 是否返回助手生成token的掩码。对于助手生成的token,掩码将包含 1。对于用户和系统token,掩码将包含 0。此功能仅适用于通过 `{% generation %}` 关键字支持它的聊天模板。 **kwargs — 传递给模板渲染器的额外关键字参数。聊天模板可以访问这些参数。
返回值
Union[List[int], Dict]
表示到目前为止已分词的聊天的token ID列表,包括控制token。此输出可以直接或通过 `generate()` 等方法传递给模型。如果设置了 `return_dict`,则将返回分词器输出的字典。
将包含 `“role”` 和 `“content”` 键的字典列表转换为token ID列表。此方法旨在与聊天模型一起使用,并将读取分词器的 `chat_template` 属性,以确定转换时要使用的格式和控制token。
临时设置用于编码目标的分词器。对于与序列到序列模型关联的分词器,这很有用,因为这些模型的标签需要稍微不同的处理。
batch_decode
< source >( sequences: Union skip_special_tokens: bool = False clean_up_tokenization_spaces: bool = None **kwargs ) → List[str]
参数
- sequences (
Union[List[int], List[List[int]], np.ndarray, torch.Tensor, tf.Tensor]
) — 已分词的输入 ID 列表。可以使用 `__call__` 方法获取。 - skip_special_tokens (
bool
,*可选*,默认为False
) — 解码时是否移除特殊标记。 - clean_up_tokenization_spaces (
bool
,*可选*) — 是否清理标记化空格。如果为None
,则默认为self.clean_up_tokenization_spaces
。 - kwargs (其他关键字参数,*可选*) — 将传递给底层模型特定的解码方法。
返回值
List[str]
解码后的句子列表。
通过调用 decode 将标记 ID 的列表列表转换为字符串列表。
batch_encode_plus
< source >( batch_text_or_text_pairs: Union add_special_tokens: bool = True padding: Union = False truncation: Union = None max_length: Optional = None stride: int = 0 is_split_into_words: bool = False pad_to_multiple_of: Optional = None padding_side: Optional = None return_tensors: Union = None return_token_type_ids: Optional = None return_attention_mask: Optional = None return_overflowing_tokens: bool = False return_special_tokens_mask: bool = False return_offsets_mapping: bool = False return_length: bool = False verbose: bool = True split_special_tokens: bool = False **kwargs ) → BatchEncoding
参数
- batch_text_or_text_pairs (
List[str]
、List[Tuple[str, str]]
、List[List[str]]
、List[Tuple[List[str], List[str]]]
以及对于非快速分词器,还有List[List[int]]
、List[Tuple[List[int], List[int]]]
) — 要编码的序列或序列对的批次。这可以是字符串/字符串序列/整数序列的列表,也可以是字符串/字符串序列/整数序列对的列表(有关详细信息,请参阅encode_plus
)。 - add_special_tokens (
bool
, 可选, 默认值:True
) — 编码序列时是否添加特殊标记。这将使用底层PretrainedTokenizerBase.build_inputs_with_special_tokens
函数,该函数定义了哪些标记会自动添加到输入 ID 中。如果您想自动添加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
。这对于在具有>= 7.5
(Volta) 计算能力的 NVIDIA 硬件上使用 Tensor Core 特别有用。 - padding_side (
str
, 可选) — 模型应该在其上应用填充的一侧。应在 [‘right’, ‘left’] 之间选择。默认值从同名的类属性中选取。 - return_tensors (
str
或 TensorType, 可选) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值有:'tf'
:返回 TensorFlowtf.constant
对象。'pt'
:返回 PyTorchtorch.Tensor
对象。'np'
:返回 Numpynp.ndarray
对象。
- return_token_type_ids (
bool
, 可选) — 是否返回标记类型 ID。如果保留默认值,则将根据特定分词器的默认值返回标记类型 ID,该默认值由return_outputs
属性定义。 - return_attention_mask (
bool
, 可选) — 是否返回注意力掩码。如果保留默认值,则将根据特定分词器的默认值返回注意力掩码,由return_outputs
属性定义。 - return_overflowing_tokens (
bool
, 可选, 默认值为False
) — 是否返回溢出的标记序列。如果提供了一对输入 ID 序列(或一批对)以及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 — 要输入到模型的标记 ID 列表。
-
token_type_ids — 要输入到模型的标记类型 ID 列表(当
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 — 由 0 和 1 组成的列表,其中 1 表示添加的特殊标记,0 表示常规序列标记(当
add_special_tokens=True
并且return_special_tokens_mask=True
时)。 -
length — 输入的长度(当
return_length=True
时)
对模型的一系列序列或一系列序列对进行标记化和准备。
此方法已弃用,应改用 __call__
。
build_inputs_with_special_tokens
< 来源 >( token_ids_0: List token_ids_1: Optional = None ) → List[int]
通过连接和添加特殊标记,从一个序列或一对序列构建用于序列分类任务的模型输入。
此实现不添加特殊标记,应在子类中重写此方法。
clean_up_tokenization
< source >( out_string: str ) → str
清理简单英语分词结果中的一些常见问题,例如标点符号前的空格和缩写形式。
convert_tokens_to_string
< source >( tokens: List ) → str
将标记序列转换为单个字符串。最简单的方法是 " ".join(tokens)
,但我们通常希望同时删除子词分词结果中的常见问题。
create_token_type_ids_from_sequences
< source >( token_ids_0: List token_ids_1: Optional = None ) → List[int]
创建与传入序列相对应的词类型 ID。什么是词类型 ID?
如果模型有特殊的构建方式,则应在子类中重写。
decode
< source >( token_ids: Union skip_special_tokens: bool = False clean_up_tokenization_spaces: bool = None **kwargs ) → str
参数
- token_ids (
Union[int, List[int], np.ndarray, torch.Tensor, tf.Tensor]
) — 标记化输入 ID 列表。可以使用__call__
方法获取。 - skip_special_tokens (
bool
, 可选, 默认值:False
) — 解码时是否删除特殊词。 - clean_up_tokenization_spaces (
bool
, 可选) — 是否清除标记化空格。如果为None
,则默认为self.clean_up_tokenization_spaces
。 - kwargs (其他关键字参数,可选 )- 将传递给底层模型特定的解码方法。
返回值
str
解码后的句子。
使用分词器和词汇表将 id 序列转换为字符串,并提供删除特殊标记和清理标记化空格的选项。
类似于执行 self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids))
。
编码
< 源代码 >( text: Union text_pair: Union = None add_special_tokens: bool = True padding: Union = False truncation: Union = None max_length: Optional = None stride: int = 0 padding_side: Optional = None return_tensors: Union = None **kwargs ) → List[int]
、torch.Tensor
、tf.Tensor
或 np.ndarray
参数
- text (
str
、List[str]
或List[int]
) - 要编码的第一个序列。这可以是一个字符串,一个字符串列表(使用tokenize
方法标记化的字符串)或一个整数列表(使用convert_tokens_to_ids
方法标记化的字符串 id)。 - text_pair (
str
、List[str]
或List[int]
,可选) - 要编码的可选第二个序列。这可以是一个字符串,一个字符串列表(使用tokenize
方法标记化的字符串)或一个整数列表(使用convert_tokens_to_ids
方法标记化的字符串 id)。 - add_special_tokens (
bool
,可选,默认为True
) - 编码序列时是否添加特殊标记。这将使用底层的PretrainedTokenizerBase.build_inputs_with_special_tokens
函数,该函数定义哪些标记会自动添加到输入 id 中。如果您想自动添加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
。 这对于在计算能力>= 7.5
(Volta) 的 NVIDIA 硬件上使用 Tensor Core 特别有用。 - padding_side (
str
, 可选) — 模型应用填充的一侧。 应在 [‘right’, ‘left’] 中选择。 默认值取自同名类属性。 - return_tensors (
str
或 TensorType, 可选) — 如果设置,则返回张量而不是 Python 整数列表。 可接受的值为:'tf'
:返回 TensorFlowtf.constant
对象。'pt'
:返回 PyTorchtorch.Tensor
对象。'np'
:返回 Numpynp.ndarray
对象。
**kwargs — 传递给
.tokenize()
方法。
返回值
List[int]
、torch.Tensor
、tf.Tensor
或 np.ndarray
文本的标记化 ID。
使用标记器和词汇表将字符串转换为 ID(整数)序列。
与执行 self.convert_tokens_to_ids(self.tokenize(text))
相同。
encode_plus
< source >( text: Union text_pair: Union = None add_special_tokens: bool = True padding: Union = False truncation: Union = None max_length: Optional = None stride: int = 0 is_split_into_words: bool = False pad_to_multiple_of: Optional = None padding_side: Optional = None return_tensors: Union = None return_token_type_ids: Optional = None return_attention_mask: Optional = None return_overflowing_tokens: bool = False return_special_tokens_mask: bool = False return_offsets_mapping: bool = False return_length: bool = False verbose: bool = True **kwargs ) → BatchEncoding
参数
- text (
str
,List[str]
或 (对于非快速分词器)List[int]
) — 要编码的第一个序列。可以是字符串、字符串列表(使用tokenize
方法分词后的字符串)或整数列表(使用convert_tokens_to_ids
方法分词后的字符串 ID)。 - text_pair (
str
,List[str]
或List[int]
, 可选) — 要编码的可选第二个序列。可以是字符串、字符串列表(使用tokenize
方法分词后的字符串)或整数列表(使用convert_tokens_to_ids
方法分词后的字符串 ID)。 - add_special_tokens (
bool
, 可选, 默认值True
) — 编码序列时是否添加特殊标记。这将使用底层的PretrainedTokenizerBase.build_inputs_with_special_tokens
函数,该函数定义了哪些标记会自动添加到输入 ID 中。如果您想自动添加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
。这对于在计算能力>= 7.5
(Volta)的 NVIDIA 硬件上使用 Tensor Cores 特别有用。 - padding_side (
str
, 可选) — 模型应该在其上应用填充的一侧。应该在 ['right', 'left'] 中选择。默认值取自同名类的属性。 - return_tensors (
str
或 TensorType, 可选) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值包括:'tf'
:返回 TensorFlowtf.constant
对象。'pt'
:返回 PyTorchtorch.Tensor
对象。'np'
:返回 Numpynp.ndarray
对象。
- return_token_type_ids (
bool
, 可选) — 是否返回Token类型ID。如果保留默认值,则将根据特定Tokenizer的默认值(由return_outputs
属性定义)返回Token类型ID。 - return_attention_mask (
bool
, 可选) — 是否返回注意力掩码。如果保留默认值,则将根据特定Tokenizer的默认值(由return_outputs
属性定义)返回注意力掩码。 - return_overflowing_tokens (
bool
, 可选, 默认值False
) — 是否返回溢出的Token序列。如果使用truncation_strategy = longest_first
或True
提供了一对输入ID序列(或一批对),则会引发错误,而不是返回溢出的Token。 - return_special_tokens_mask (
bool
, 可选, 默认值False
) — 是否返回特殊Token掩码信息。 - return_offsets_mapping (
bool
, 可选, 默认值False
) — 是否为每个Token返回(char_start, char_end)
。这仅适用于继承自PreTrainedTokenizerFast的快速Tokenizer,如果使用Python的Tokenizer,此方法将引发
NotImplementedError
。 - return_length (
bool
, 可选, 默认值False
) — 是否返回编码输入的长度。 - verbose (
bool
, 可选, 默认值True
) — 是否打印更多信息和警告。 **kwargs — 传递给self.tokenize()
方法
返回值
一个 BatchEncoding,包含以下字段
-
input_ids — 要输入到模型的标记 ID 列表。
-
token_type_ids — 要输入到模型的标记类型 ID 列表(当
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 — 由 0 和 1 组成的列表,其中 1 表示添加的特殊标记,0 表示常规序列标记(当
add_special_tokens=True
并且return_special_tokens_mask=True
时)。 -
length — 输入的长度(当
return_length=True
时)
对模型的序列或序列对进行标记化和准备。
此方法已弃用,应改用 __call__
。
from_pretrained
< 源代码 >( pretrained_model_name_or_path: Union *init_inputs cache_dir: Union = None force_download: bool = False local_files_only: bool = False token: Union = None revision: str = 'main' trust_remote_code = False **kwargs )
参数
- pretrained_model_name_or_path (
str
或os.PathLike
) — 可以是以下任意一种:- 字符串,huggingface.co 上模型仓库中托管的预定义标记器的*模型 ID*。
- 包含标记器所需的词汇文件的*目录*的路径,例如使用 save_pretrained() 方法保存的目录,例如
./my_model_directory/
。 - (**已弃用**,不适用于所有派生类)单个已保存词汇文件的路径或 URL(当且仅当标记器仅需要单个词汇文件时,例如 Bert 或 XLNet),例如
./my_model_directory/vocab.txt
。
- cache_dir (
str
或os.PathLike
, *可选*) — 如果不应使用标准缓存,则为下载的预定义标记器词汇文件应缓存到的目录的路径。 - force_download (
bool
, *可选*, 默认为False
) — 是否强制(重新)下载词汇文件并覆盖缓存的版本(如果存在)。resume_download — 已弃用且被忽略。现在,所有下载在可能的情况下默认都会恢复。将在 Transformers 的 v5 版本中删除。 - proxies (
Dict[str, str]
, *可选*) — 要按协议或端点使用的代理服务器字典,例如{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}
。代理服务器在每个请求中使用。 - token (
str
或 bool,可选) — 用于远程文件的 HTTP 持有者授权的令牌。如果为True
,将使用运行huggingface-cli login
时生成的令牌(存储在~/.huggingface
中)。 - local_files_only (
bool
,可选,默认为False
) — 是否仅依赖本地文件而不尝试下载任何文件。 - revision (
str
,可选,默认为"main"
) — 要使用的特定模型版本。它可以是分支名称、标签名称或提交 ID,因为我们使用基于 Git 的系统在 huggingface.co 上存储模型和其他工件,所以revision
可以是 Git 允许的任何标识符。 - subfolder (
str
,可选) — 如果相关文件位于 huggingface.co 上模型仓库的子文件夹中(例如 facebook/rag-token-base),请在此处指定。 - inputs(其他位置参数,可选) — 将传递给 Tokenizer 的
__init__
方法。 - trust_remote_code (
bool
,可选,默认为False
) — 是否允许在其自己的建模文件中定义在 Hub 上的自定义模型。此选项应仅对您信任且已阅读代码的存储库设置为True
,因为它将在您的本地机器上执行 Hub 上的代码。 - kwargs(其他关键字参数,可选) — 将传递给 Tokenizer 的
__init__
方法。可用于设置特殊标记,如bos_token
、eos_token
、unk_token
、sep_token
、pad_token
、cls_token
、mask_token
、additional_special_tokens
。有关详细信息,请参阅__init__
中的参数。
从预定义的 tokenizer 实例化 PreTrainedTokenizerBase(或派生类)。
当您想使用私有模型时,需要传递 token=True
。
例子
# We can't instantiate directly the base class *PreTrainedTokenizerBase* so let's show our examples on a derived class: BertTokenizer
# Download vocabulary from huggingface.co and cache.
tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-uncased")
# Download vocabulary from huggingface.co (user-uploaded) and cache.
tokenizer = BertTokenizer.from_pretrained("dbmdz/bert-base-german-cased")
# If vocabulary files are in a directory (e.g. tokenizer was saved using *save_pretrained('./test/saved_model/')*)
tokenizer = BertTokenizer.from_pretrained("./test/saved_model/")
# If the tokenizer uses a single vocabulary file, you can point directly to this file
tokenizer = BertTokenizer.from_pretrained("./test/saved_model/my_vocab.txt")
# You can link tokens to special vocabulary when instantiating
tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-uncased", unk_token="<unk>")
# You should be sure '<unk>' is in the vocabulary when doing that.
# Otherwise use tokenizer.add_special_tokens({'unk_token': '<unk>'}) instead)
assert tokenizer.unk_token == "<unk>"
get_chat_template
< source >( chat_template: Optional = None tools: Optional = None ) → str
参数
- chat_template (
str
, *可选*) — 用于此转换的 Jinja 模板或模板名称。通常不需要向此参数传递任何内容,因为默认情况下将使用模型的模板。 - tools (
List[Dict]
, *可选*) — 模型可访问的工具(可调用函数)列表。如果模板不支持函数调用,则此参数将不起作用。每个工具都应作为 JSON Schema 传递,提供工具的名称、描述和参数类型。有关更多信息,请参阅我们的聊天模板指南。
返回值
str
聊天模板字符串。
检索用于标记聊天消息的聊天模板字符串。此模板由 apply_chat_template
方法在内部使用,也可以在外部使用以检索模型的聊天模板以实现更好的生成跟踪。
get_special_tokens_mask
< source >( token_ids_0: List token_ids_1: Optional = None already_has_special_tokens: bool = False ) → 范围为 [0, 1] 的整数列表
从没有添加特殊标记的标记列表中检索序列 ID。 当使用分词器 prepare_for_model
或 encode_plus
方法添加特殊标记时,将调用此方法。
以字典形式返回词汇表,键为标记,值为索引。
当 token
在词汇表中时,tokenizer.get_vocab()[token]
等价于 tokenizer.convert_tokens_to_ids(token)
。
pad
< source >( encoded_inputs: Union padding: Union = True max_length: Optional = None pad_to_multiple_of: Optional = None padding_side: Optional = None return_attention_mask: Optional = None return_tensors: Union = None verbose: bool = True )
参数
- encoded_inputs (BatchEncoding, BatchEncoding 列表,
Dict[str, List[int]]
,Dict[str, List[List[int]]
或List[Dict[str, List[int]]]
) — 标记化的输入。 可以表示一个输入 (BatchEncoding 或Dict[str, List[int]]
) 或一批标记化的输入 (BatchEncoding 列表, Dict[str, List[List[int]]] 或 List[Dict[str, List[int]]]),因此您可以在预处理期间以及在 PyTorch Dataloader collate 函数中使用此方法。您可以使用张量(numpy 数组、PyTorch 张量或 TensorFlow 张量)代替
List[int]
,有关返回类型,请参见上面的注释。 - padding (
bool
、str
或 PaddingStrategy,可选,默认为True
) — 选择一种策略来填充返回的序列(根据模型的填充方向和填充索引):True
或'longest'
:填充到批次中最长的序列(如果只提供了一个序列,则不填充)。'max_length'
:填充到使用参数max_length
指定的最大长度,或者填充到模型可接受的最大输入长度(如果未提供该参数)。False
或'do_not_pad'
(默认):不填充(即,可以输出包含不同长度序列的批次)。
- max_length (
int
,可选) — 返回列表的最大长度以及可选的填充长度(见上文)。 - pad_to_multiple_of (
int
,可选) — 如果设置,则将序列填充到所提供值的倍数。这对于在计算能力
>= 7.5
(Volta)的 NVIDIA 硬件上使用 Tensor Core 特别有用。 - padding_side (
str
,可选) — 模型应用填充的一侧。应在 [‘right’, ‘left’] 之间选择。默认值取自同名的类属性。 - return_attention_mask (
bool
,可选) — 是否返回注意力掩码。如果保留默认值,则将根据特定分词器的默认值返回注意力掩码,该默认值由return_outputs
属性定义。 - return_tensors (
str
或 TensorType,可选) — 如果设置,则将返回张量而不是 Python 整数列表。可接受的值有:'tf'
:返回 TensorFlowtf.constant
对象。'pt'
:返回 PyTorchtorch.Tensor
对象。'np'
:返回 Numpynp.ndarray
对象。
- verbose (
bool
,可选,默认为True
) — 是否打印更多信息和警告。
将单个编码输入或一批编码输入填充到预定义长度或批次中的最大序列长度。
填充方向(左/右)填充标记 ID 在分词器级别定义(使用 self.padding_side
、self.pad_token_id
和 self.pad_token_type_id
)。
请注意,对于快速分词器,使用 __call__
方法比使用先对文本进行编码的方法,然后再调用 pad
方法来获取填充编码要快。
如果传入的 encoded_inputs
是 numpy 数组、PyTorch 张量或 TensorFlow 张量的字典,则结果将使用相同的类型,除非您使用 return_tensors
提供不同的张量类型。 但是,在 PyTorch 张量的情况下,您将丢失张量的特定设备。
prepare_for_model
< 源代码 >( ids: List pair_ids: Optional = None add_special_tokens: bool = True padding: Union = False truncation: Union = None max_length: Optional = None stride: int = 0 pad_to_multiple_of: Optional = None padding_side: Optional = None return_tensors: Union = None return_token_type_ids: Optional = None return_attention_mask: Optional = None return_overflowing_tokens: bool = False return_special_tokens_mask: bool = False return_offsets_mapping: bool = False return_length: bool = False verbose: bool = True prepend_batch_axis: bool = False **kwargs ) → BatchEncoding
参数
- ids (
List[int]
) — 第一个序列的标记化输入 ID。 可以通过链接tokenize
和convert_tokens_to_ids
方法从字符串中获取。 - pair_ids (
List[int]
, 可选) — 第二个序列的标记化输入 ID。 可以通过链接tokenize
和convert_tokens_to_ids
方法从字符串中获取。 - add_special_tokens (
bool
, 可选, 默认值True
) — 在对序列进行编码时是否添加特殊标记。 这将使用底层的PretrainedTokenizerBase.build_inputs_with_special_tokens
函数,该函数定义了哪些标记会自动添加到输入 ID 中。 如果您想自动添加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
。这对于在计算能力>= 7.5
(Volta) 的 NVIDIA 硬件上使用 Tensor Cores 特别有用。 - padding_side (
str
, 可选) — 模型应该应用填充的一侧。应该在 [‘right’, ‘left’] 之间选择。默认值是从同名类属性中选取的。 - return_tensors (
str
或 TensorType, 可选) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:'tf'
:返回 TensorFlowtf.constant
对象。'pt'
:返回 PyTorchtorch.Tensor
对象。'np'
:返回 Numpynp.ndarray
对象。
- return_token_type_ids (
bool
, 可选) — 是否返回标记类型 ID。如果保留默认值,将根据特定标记器的默认值返回标记类型 ID,由return_outputs
属性定义。 - return_attention_mask (
bool
, 可选) — 是否返回注意力掩码。如果保留默认值,将根据特定标记器的默认值返回注意力掩码,由return_outputs
属性定义。 - return_overflowing_tokens (
bool
, 可选, 默认值为False
) — 是否返回溢出的标记序列。如果一对输入 ID 序列(或一批对)使用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 — 要输入到模型的标记 ID 列表。
-
token_type_ids — 要输入到模型的标记类型 ID 列表(当
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 — 由 0 和 1 组成的列表,其中 1 表示添加的特殊标记,0 表示常规序列标记(当
add_special_tokens=True
并且return_special_tokens_mask=True
时)。 -
length — 输入的长度(当
return_length=True
时)
准备一个输入 ID 序列,或一对输入 ID 序列,以便模型可以使用它。它会添加特殊词符,如果序列溢出,则会在考虑特殊词符的情况下截断序列,并为溢出词符管理一个移动窗口(使用用户定义的步幅)。请注意,对于 pair_ids 不为 None
且 truncation_strategy = longest_first 或 True
的情况,无法返回溢出词符。这种参数组合将引发错误。
prepare_seq2seq_batch
< source >( src_texts: List tgt_texts: Optional = None max_length: Optional = None max_target_length: Optional = None padding: str = 'longest' return_tensors: str = None truncation: bool = True **kwargs ) → BatchEncoding
参数
- src_texts (
List[str]
) — 要概括的文档列表或源语言文本列表。 - tgt_texts (
列表
, 可选) — 摘要列表或目标语言文本列表。 - max_length (
整数
, 可选) — 控制编码器输入的最大长度(要汇总的文档或源语言文本)。如果未设置或设置为None
,则在截断/填充参数之一需要最大长度的情况下,将使用预定义的模型最大长度。如果模型没有特定的最大输入长度(如 XLNet),则会停用截断/填充到最大长度的操作。 - max_target_length (
整数
, 可选) — 控制解码器输入的最大长度(目标语言文本或摘要)。如果未设置或设置为None
,则将使用 max_length 值。 - padding (
布尔值
,字符串
或 PaddingStrategy, 可选, 默认值:False
) — 激活并控制填充。接受以下值:True
或'longest'
:填充到批次中最长的序列(如果只提供了一个序列,则不填充)。'max_length'
:填充到使用参数max_length
指定的最大长度,或者填充到模型可接受的最大输入长度(如果未提供该参数)。False
或'do_not_pad'
(默认值):不填充(即,可以输出具有不同长度序列的批次)。
- return_tensors (
字符串
或 TensorType, 可选) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:'tf'
:返回 TensorFlowtf.constant
对象。'pt'
:返回 PyTorchtorch.Tensor
对象。'np'
:返回 Numpynp.ndarray
对象。
- truncation (
bool
、str
或 TruncationStrategy,可选,默认为True
) — 激活并控制截断。接受以下值:True
或'longest_first'
:截断到参数max_length
指定的最大长度,如果未提供该参数,则截断到模型可接受的最大输入长度。如果提供了一对序列(或一批序列对),这将逐个标记地截断,从最长序列中删除一个标记。'only_first'
:截断到参数max_length
指定的最大长度,如果未提供该参数,则截断到模型可接受的最大输入长度。如果提供了一对序列(或一批序列对),这将仅截断第一序列。'only_second'
:截断到参数max_length
指定的最大长度,如果未提供该参数,则截断到模型可接受的最大输入长度。如果提供了一对序列(或一批序列对),这将仅截断第二序列。False
或'do_not_truncate'
(默认):不截断(即,可以输出序列长度大于模型最大允许输入大小的批次)。 **kwargs — 传递给self.__call__
的其他关键字参数。
返回值
一个 BatchEncoding,包含以下字段
- input_ids — 要馈送到编码器的标记 ID 列表。
- attention_mask — 指定模型应关注哪些标记的索引列表。
- labels — tgt_texts 的标记 ID 列表。
仅当传递了 tgt_texts 时,才会返回完整的键集 [input_ids, attention_mask, labels]
。否则,input_ids、attention_mask 将是唯一的键。
准备用于翻译的模型输入。为了获得最佳性能,请一次翻译一句。
push_to_hub
< source >( repo_id: str use_temp_dir: Optional = None commit_message: Optional = None private: Optional = None token: Union = None max_shard_size: Union = '5GB' create_pr: bool = False safe_serialization: bool = True revision: str = None commit_description: str = None tags: Optional = None **deprecated_kwargs )
参数
- repo_id (
str
) — 要将您的分词器推送到哪个存储库的名称。当推送到给定组织时,它应该包含您的组织名称。 - use_temp_dir (
bool
,可选) — 是否使用临时目录来存储保存的文件,然后再将它们推送到 Hub。如果没有名为repo_id
的目录,则默认为True
,否则为False
。 - commit_message (
str
,可选) — 推送时提交的信息。默认为"Upload tokenizer"
。 - private (
bool
,可选) — 创建的仓库是否应该是私有的。 - token (
bool
或str
,可选) — 用于远程文件的 HTTP 持有者授权的令牌。如果为True
,将使用运行huggingface-cli login
时生成的令牌(存储在~/.huggingface
中)。如果未指定repo_url
,则默认为True
。 - max_shard_size (
int
或str
,可选,默认为"5GB"
) — 仅适用于模型。在进行分片之前,检查点的最大大小。然后,检查点分片的每个大小都将小于此大小。如果表示为字符串,则需要是数字后跟单位(例如"5MB"
)。我们默认将其设置为"5GB"
,以便用户可以在免费层的 Google Colab 实例上轻松加载模型,而不会出现任何 CPU OOM 问题。 - create_pr (
bool
,可选,默认为False
) — 是否使用上传的文件创建 PR 或直接提交。 - safe_serialization (
bool
,可选,默认为True
) — 是否将模型权重转换为 safetensors 格式以实现更安全的序列化。 - revision (
str
,可选) — 要将上传的文件推送到哪个分支。 - commit_description (
str
,可选) — 将创建的提交的描述 - tags (
List[str]
,可选) — 要推送到 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")
register_for_auto_class
< source >( auto_class = 'AutoTokenizer' )
使用给定的自动类注册此类。 这应该只用于自定义分词器,因为库中的分词器已经使用 AutoTokenizer
映射。
此 API 处于实验阶段,在下一个版本中可能会有一些细微的更改。
save_pretrained
< source >( save_directory: Union legacy_format: Optional = None filename_prefix: Optional = None push_to_hub: bool = False **kwargs ) → str
元组
参数
- save_directory (
str
或os.PathLike
) — 将保存分词器的目录的路径。 - legacy_format (
bool
, 可选) - 仅适用于快速分词器。如果未设置(默认),则会将分词器保存为统一的 JSON 格式,以及如果存在则保存为旧格式,即使用分词器特定的词汇表和单独的 added_tokens 文件。如果为
False
,则只会将分词器保存为统一的 JSON 格式。此格式与“慢速”分词器(不使用 tokenizers 库)不兼容,因此分词器将无法在相应的“慢速”分词器中加载。如果为
True
,则会将分词器保存为旧格式。如果“慢速”分词器不存在,则会引发值错误。 - filename_prefix (
str
, 可选) - 要添加到分词器保存的文件名中的前缀。 - push_to_hub (
bool
, 可选, 默认为False
) - 保存模型后是否将其推送到 Hugging Face 模型中心。您可以使用repo_id
指定要推送到的存储库(默认为您命名空间中的save_directory
名称)。 - kwargs (
Dict[str, Any]
, 可选) - 传递给 push_to_hub() 方法的附加关键字参数。
返回值
str
类型的元组
保存的文件。
保存完整的 tokenizer 状态。
此方法确保可以使用 ~tokenization_utils_base.PreTrainedTokenizer.from_pretrained
类方法重新加载完整的 tokenizer。
警告:此操作不会保存您在实例化后可能对 tokenizer 应用的修改(例如,在创建后修改 tokenizer.do_lower_case
)。
save_vocabulary
< source >( save_directory: str filename_prefix: Optional = None ) → Tuple(str)
仅保存分词器的词汇表(词汇表 + 添加的标记)。
此方法不会保存分词器的配置和特殊标记映射。使用 _save_pretrained()
保存分词器的完整状态。
tokenize(分词)
< source >( text: str pair: Optional = None add_special_tokens: bool = False **kwargs ) → List[str]
参数
- text (
str
) — 要编码的序列。 - pair (
str
, 可选) — 要与第一个序列一起编码的第二个序列。 - add_special_tokens (
bool
, 可选, 默认值:False
) — 是否添加与相应模型关联的特殊标记。 - kwargs (其他关键字参数, 可选) — 将传递给底层模型特定的编码方法。有关详细信息,请参阅 call()
返回值
List[str]
标记列表。
将字符串转换为标记序列,并将未知标记替换为 unk_token
。
truncate_sequences(截断序列)
< source >( ids: List pair_ids: Optional = None num_tokens_to_remove: int = 0 truncation_strategy: Union = 'longest_first' stride: int = 0 ) → Tuple[List[int], List[int], List[int]]
参数
- ids (
List[int]
) — 第一个序列的标记化输入 ID。 可以通过链接tokenize
和convert_tokens_to_ids
方法从字符串中获取。 - pair_ids (
List[int]
, 可选) — 第二个序列的标记化输入 ID。 可以通过链接tokenize
和convert_tokens_to_ids
方法从字符串中获取。 - num_tokens_to_remove (
int
, 可选, 默认值: 0) — 使用截断策略要移除的标记数量。 - truncation_strategy (
str
或 TruncationStrategy, 可选, 默认值:'longest_first'
) — 要遵循的截断策略。 可以是:'longest_first'
:截断到使用参数max_length
指定的最大长度,如果未提供该参数,则截断到模型可接受的最大输入长度。 如果提供了一对序列(或一批对),这将逐个标记地截断,从最长序列中移除一个标记。'only_first'
:截断到使用参数max_length
指定的最大长度,如果未提供该参数,则截断到模型可接受的最大输入长度。 如果提供了一对序列(或一批对),这将仅截断第一序列。'only_second'
:截断到使用参数max_length
指定的最大长度,如果未提供该参数,则截断到模型可接受的最大输入长度。 如果提供了一对序列(或一批对),这将仅截断第二序列。'do_not_truncate'
(默认):不截断(即,可以输出序列长度大于模型最大允许输入大小的批次)。
- stride (
int
, 可选, 默认值: 0) — 如果设置为正数,则返回的溢出标记将包含来自返回的主序列的一些标记。 此参数的值定义了其他标记的数量。
返回值
Tuple[List[int], List[int], List[int]]
截断后的 ids
,截断后的 pair_ids
和溢出标记列表。 注意:如果提供了一对序列(或一批对),则 longest_first 策略将返回空的溢出标记列表。
按照策略原地截断序列对。
SpecialTokensMixin
类 transformers.SpecialTokensMixin
< 源代码 >( verbose = False **kwargs )
参数
- 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)。 - additional_special_tokens (
str
或tokenizers.AddedToken
的元组或列表,可选) — 一个元组或一个额外的标记列表,将被标记为special
,这意味着如果skip_special_tokens
设置为True
,则在解码时将跳过这些标记。
由 PreTrainedTokenizer 和 PreTrainedTokenizerFast 派生的混合类,用于处理与特殊标记相关的特定行为。 特别是,此类保存可用于以独立于模型的方式直接访问这些特殊标记的属性,并允许设置和更新特殊标记。
add_special_tokens
< source >( special_tokens_dict: Dict replace_additional_special_tokens = True ) → int
参数
- special_tokens_dict (
str
到str
或tokenizers.AddedToken
的字典) — 键应位于预定义的特殊属性列表中: [bos_token
、eos_token
、unk_token
、sep_token
、pad_token
、cls_token
、mask_token
、additional_special_tokens
]。仅当标记不在词汇表中时才会添加它们(通过检查分词器是否为它们分配了
unk_token
的索引来进行测试)。 - replace_additional_special_tokens (
bool
, 可选,默认为True
) — 如果为True
,则现有的额外特殊标记列表将被special_tokens_dict
中提供的列表替换。 否则,self._additional_special_tokens
将被扩展。 在前一种情况下,标记不会从分词器的完整词汇表中删除 - 它们只是被标记为非特殊标记。 请记住,这只会影响在解码期间跳过哪些标记,而不会影响added_tokens_encoder
和added_tokens_decoder
。 这意味着以前的additional_special_tokens
仍然是添加的标记,并且不会被模型拆分。
返回值
int
添加到词汇表中的标记数量。
将特殊标记(eos、pad、cls 等)字典添加到编码器,并将它们链接到类属性。 如果特殊标记不在词汇表中,则将它们添加到词汇表中(从当前词汇表的最后一个索引开始索引)。
向词汇表添加新标记时,应确保还调整模型的标记嵌入矩阵的大小,以便其嵌入矩阵与分词器匹配。
为此,请使用 resize_token_embeddings() 方法。
使用 add_special_tokens
将确保您的特殊标记可以通过以下几种方式使用
- 使用
skip_special_tokens = True
解码时,可以跳过特殊标记。 - 特殊标记由分词器小心处理(它们永远不会被拆分),类似于
AddedTokens
。 - 您可以使用分词器类属性(如
tokenizer.cls_token
)轻松引用特殊标记。 这使得开发与模型无关的训练和微调脚本变得容易。
如果可能,特殊标记已经为提供的预训练模型注册(例如 BertTokenizer 的 cls_token
已经注册为 :obj’[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>"
add_tokens
< source >( new_tokens: Union special_tokens: bool = False ) → int
参数
- new_tokens (
str
,tokenizers.AddedToken
或 str 或tokenizers.AddedToken
列表) — 仅当新标记不在词汇表中时才会添加。tokenizers.AddedToken
包装字符串标记,以便您个性化其行为:此标记是否应仅与单个单词匹配,此标记是否应去除左侧的所有潜在空格,此标记是否应去除右侧的所有潜在空格,等等。 - special_tokens (
bool
, 可选, 默认为False
) — 可用于指定标记是否是特殊标记。这主要改变了规范化行为(例如,像 CLS 或 [MASK] 这样的特殊标记通常不会小写)。有关 HuggingFace 分词器库中的
tokenizers.AddedToken
的详细信息,请参阅详细信息。
返回值
int
添加到词汇表中的标记数量。
向分词器类添加新的标记列表。如果新标记不在词汇表中,则将它们添加到词汇表中,索引从当前词汇表的长度开始,并在应用分词算法之前进行隔离。因此,添加的标记和来自分词算法词汇表的标记不会以相同的方式处理。
注意,在向词汇表添加新标记时,您应该确保也调整模型的标记嵌入矩阵的大小,以便其嵌入矩阵与分词器匹配。
为此,请使用 resize_token_embeddings() 方法。
例子
# 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))
sanitize_special_tokens
现已弃用,保留是为了向后兼容,并将在 transformers v5 中删除。
枚举和命名元组
类 transformers.tokenization_utils_base.TruncationStrategy
< source >( value names = None module = None qualname = None type = None start = 1 )
truncation
参数在 PreTrainedTokenizerBase.call() 中的可用值。 对IDE中的代码补全很有用。
类 transformers.CharSpan
< source >( start: int end: int )
原始字符串中的字符范围。
类 transformers.TokenSpan
< source >( start: int end: int )
编码字符串(标记列表)中的标记范围。