Transformers documentation

LayoutXLM

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

该模型于 2021-04-18 在 HF papers 上发布,并于 2021-11-03 贡献至 Hugging Face Transformers。

LayoutXLM

概述

LayoutXLM 由 Yiheng Xu、Tengchao Lv、Lei Cui、Guoxin Wang、Yijuan Lu、Dinei Florencio、Cha Zhang 和 Furu Wei 在 LayoutXLM: Multimodal Pre-training for Multilingual Visually-rich Document Understanding 中提出。它是 LayoutLMv2 模型 的多语言扩展版本,在 53 种语言上进行训练。

该论文的摘要如下:

近期,结合文本、版式和图像的多模态预训练在视觉丰富的文档理解任务上取得了 SOTA 性能,这展示了跨不同模态联合学习的巨大潜力。在本文中,我们提出了 LayoutXLM,一个用于多语言文档理解的多模态预训练模型,旨在消除视觉丰富文档理解中的语言障碍。为了准确评估 LayoutXLM,我们还引入了一个名为 XFUN 的多语言表单理解基准数据集,该数据集包含 7 种语言(中文、日文、西班牙语、法语、意大利语、德语、葡萄牙语)的表单理解样本,并且每种语言的关键值对均经过人工标注。实验结果表明,LayoutXLM 模型在 XFUN 数据集上显著优于现有的 SOTA 跨语言预训练模型。

该模型由 nielsr 贡献。原始代码可在此处找到。

使用技巧与示例

可以直接将 LayoutXLM 的权重加载到 LayoutLMv2 模型中,如下所示:

from transformers import LayoutLMv2Model


model = LayoutLMv2Model.from_pretrained("microsoft/layoutxlm-base", device_map="auto")

请注意,LayoutXLM 拥有自己的分词器,基于 LayoutXLMTokenizer/LayoutXLMTokenizerFast。您可以按如下方式对其进行初始化:

from transformers import LayoutXLMTokenizer


tokenizer = LayoutXLMTokenizer.from_pretrained("microsoft/layoutxlm-base")

与 LayoutLMv2 类似,您可以使用 LayoutXLMProcessor(其内部依次应用 LayoutLMv2ImageProcessor 和 LayoutXLMTokenizer/LayoutXLMTokenizerFast)来为模型准备所有数据。

由于 LayoutXLM 的架构与 LayoutLMv2 相同,您可以参考 LayoutLMv2 的文档页面 获取所有技巧、代码示例和笔记本。

LayoutXLMConfig

class transformers.LayoutXLMConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 30522hidden_size: int = 768num_hidden_layers: int = 12num_attention_heads: int = 12intermediate_size: int = 3072hidden_act: str = 'gelu'hidden_dropout_prob: float | int = 0.1attention_probs_dropout_prob: float | int = 0.1max_position_embeddings: int = 512type_vocab_size: int = 2initializer_range: float = 0.02layer_norm_eps: float = 1e-12pad_token_id: int | None = 0max_2d_position_embeddings: int = 1024max_rel_pos: int = 128rel_pos_bins: int = 32fast_qkv: bool = Truemax_rel_2d_pos: int = 256rel_2d_pos_bins: int = 64convert_sync_batchnorm: bool = Trueimage_feature_pool_shape: list[int] | tuple[int, ...] = (7, 7, 256)coordinate_size: int = 128shape_size: int = 128has_relative_attention_bias: bool = Truehas_spatial_attention_bias: bool = Truehas_visual_segment_embedding: bool = Falsedetectron2_config_args: dict | None = None )

参数

  • vocab_size (int,可选,默认为 30522) — 模型的词汇表大小。定义了 input_ids 可以表示的不同 token 数量。
  • hidden_size (int,可选,默认为 768) — 隐藏表示的维度。
  • num_hidden_layers (int, 可选, 默认为 12) — Transformer 解码器中的隐藏层数量。
  • num_attention_heads (int,可选,默认为 12) — Transformer 解码器中每个注意力层的注意力头数量。
  • intermediate_size (int,可选,默认为 3072) — MLP 表示的维度。
  • hidden_act (str,可选,默认为 gelu) — 解码器中的非线性激活函数(函数或字符串)。例如,"gelu"、 "relu"、"silu" 等。
  • hidden_dropout_prob (Union[float, int],可选,默认为 0.1) — 嵌入层、编码器和池化层中所有全连接层的 dropout 概率。
  • attention_probs_dropout_prob (Union[float, int],可选,默认为 0.1) — 注意力概率的 dropout 比率。
  • max_position_embeddings (int,可选,默认为 512) — 该模型可能使用的最大序列长度。
  • type_vocab_size (int,可选,默认为 2) — token_type_ids 的词汇表大小。
  • initializer_range (float,可选,默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • layer_norm_eps (float,可选,默认为 1e-12) — 层归一化层所使用的 epsilon 值。
  • pad_token_id (int, 可选,默认为 0) — 词表中用于填充的 token id。
  • max_2d_position_embeddings (int,可选,默认值为 1024) — 2D 位置嵌入可能使用的最大值。通常建议将其设置为一个较大的值以防万一(例如 1024)。
  • max_rel_pos (int,可选,默认为 128) — 自注意力机制中使用的最大相对位置数。
  • rel_pos_bins (int,可选,默认为 32) — 自注意力机制中使用的相对位置分箱数量。
  • fast_qkv(bool,可选,默认为 True)— 是否使用单个矩阵来自注意力层中的查询、键和值。
  • max_rel_2d_pos (int,可选,默认为 256) — 自注意力机制中相对 2D 位置的最大数量。
  • rel_2d_pos_bins (int,可选,默认为 64) — 自注意力机制中二维相对位置分箱的数量。
  • convert_sync_batchnorm (bool,可选,默认为 True) — 是否将批归一化层转换为同步批归一化层。
  • image_feature_pool_shape (list[int],可选,默认为 [7, 7, 256]) — 平均池化后特征图的形状。
  • coordinate_size (int,可选,默认为 128) — 坐标嵌入的维度。
  • shape_size (int,可选,默认为 128) — 宽度和高度嵌入的维度。
  • has_relative_attention_bias (bool,可选,默认为 True) — 是否在自注意力机制中使用相对注意力偏置。
  • has_spatial_attention_bias (bool,可选,默认为 True) — 是否在自注意力机制中使用空间注意力偏置。
  • has_visual_segment_embedding (bool,可选,默认为 False) — 是否添加视觉分段嵌入。
  • detectron2_config_args (dict, 可选) — 包含 Detectron2 视觉骨干网络配置参数的字典。有关默认值的详细信息,请参阅此文件。

这是用于存储 LayoutxlmModel 配置的类。它根据指定的参数实例化 Layoutxlm 模型,并定义模型架构。使用默认值实例化配置将得到与 microsoft/layoutxlm-base 类似的配置。

配置对象继承自 PreTrainedConfig,可用于控制模型输出。有关更多信息,请参阅 PreTrainedConfig 的文档。

示例:

>>> from transformers import LayoutXLMConfig, LayoutXLMModel

>>> # Initializing a LayoutXLM microsoft/layoutxlm-base style configuration
>>> configuration = LayoutXLMConfig()

>>> # Initializing a model (with random weights) from the microsoft/layoutxlm-base style configuration
>>> model = LayoutXLMModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

LayoutXLMTokenizer

class transformers.LayoutXLMTokenizer

< >

( vocab: str | list | None = Nonebos_token = '<s>'eos_token = '</s>'sep_token = '</s>'cls_token = '<s>'unk_token = '<unk>'pad_token = '<pad>'mask_token = '<mask>'cls_token_box = [0, 0, 0, 0]sep_token_box = [1000, 1000, 1000, 1000]pad_token_box = [0, 0, 0, 0]pad_token_label = -100only_label_first_subword = Trueadd_prefix_space = True**kwargs )

参数

  • vocab (str、dict 或 list,可选) — 分词器的词表,可以是路径、字典或 (token, score) 元组列表。
  • bos_token (str, 可选, 默认为 "<s>") — 预训练期间使用的序列起始标记。也可用作序列分类标记。

    在构建序列时,如果使用了特殊标记,序列开头使用的并不是这个标记。实际使用的标记是 cls_token。

  • eos_token (str, 可选, 默认为 "</s>") — 序列结束标记。在构建包含特殊标记的序列时,序列结束使用的并非此标记,而是 sep_token。

    在构建包含特殊标记的序列时,序列末尾使用的并不是这个标记。 实际使用的是 sep_token。

  • sep_token (str,可选,默认为 "</s>") — 分隔符 token,用于从多个序列构建序列时,例如用于序列分类的两个序列,或用于问答的文本和问题。它也用作使用特殊 token 构建的序列的最后一个 token。
  • cls_token (str,可选,默认为 "<s>") — 用于序列分类(对整个序列进行分类,而非逐 token 分类)的分类器 token。当使用特殊 token 构建序列时,它是序列的第一个 token。
  • unk_token (str,可选,默认为 "<unk>") — 未知标记。不在词汇表中的标记无法转换为 ID,因此会被设置为该标记。
  • pad_token (str,可选,默认为 "<pad>") — 用于填充的标记,例如在对长度不同的序列进行批处理时。
  • mask_token (str, 可选,默认为 "<mask>") — 用于掩码值的标记。这是在以掩码语言建模方式训练该模型时所使用的标记,也是模型将尝试预测的标记。
  • cls_token_box (list[int],可选,默认为 [0, 0, 0, 0]) — 用于特殊 [CLS] token 的边界框。
  • sep_token_box (list[int],可选,默认为 [1000, 1000, 1000, 1000]) — 用于特殊 [SEP] token 的边界框。
  • pad_token_box (list[int],可选,默认为 [0, 0, 0, 0]) — 用于特殊 [PAD] token 的边界框。
  • pad_token_label (int,可选,默认值为 -100) — 用于填充 token 的标签。默认值为 -100,即 PyTorch 中 CrossEntropyLoss 的 ignore_index。
  • only_label_first_subword (bool,可选,默认为 True) — 如果提供了词标签,是否仅对第一个子词进行标注。
  • add_prefix_space (bool,可选,默认为 True) — 是否要在输入前添加一个初始空格。
  • additional_special_tokens (list[str],可选,默认为 ["<s>NOTUSED", "</s>NOTUSED"]) — 分词器使用的额外特殊标记。

构建一个“快速”的 LayoutXLM 分词器(基于 HuggingFace 的 tokenizers 库)。改编自 RobertaTokenizer 和 XLNetTokenizer。基于 BPE。

该分词器继承自 TokenizersBackend,其中包含了大部分主要方法。用户应参考该父类以获取有关这些方法的更多信息。

__call__

< >

( text: str | list[str] | list[list[str]]text_pair: list[str] | list[list[str]] | None = Noneboxes: list[list[int]] | list[list[list[int]]] | None = Noneword_labels: list[int] | list[list[int]] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy | None = Nonemax_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_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = True**kwargs ) → BatchEncoding

参数

  • text (str, list[str], list[list[str]]) — 要编码的序列或序列批次。每个序列可以是字符串、字符串列表(单个示例的单词或一批示例的问题)或字符串列表的列表(单词批次)。
  • text_pair (list[str], list[list[str]]) — 要编码的序列或序列批次。每个序列应为字符串列表(预分词字符串)。
  • boxes (list[list[int]], list[list[list[int]]]) — 词级边界框。每个边界框应归一化到 0-1000 的尺度上。
  • word_labels (list[int], list[list[int]], 可选) — 词级别的整数标签(用于 FUNSD、CORD 等 token 分类任务)。
  • add_special_tokens (bool,可选,默认为 True) — 是否根据模型为序列编码特殊标记。
  • 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 指定的最大长度,或者如果未提供该参数,则截断至模型可接受的最大输入长度。这将逐个 token 进行截断,如果提供了一对序列(或一批序列对),则会从该对中最长的序列中移除一个 token。
    • 'only_first':截断至由参数 max_length 指定的最大长度,或者在未提供该参数时,截断至模型可接受的最大输入长度。如果提供了一对序列(或一批序列对),则仅截断其中的第一个序列。
    • 'only_second':截断至由参数 max_length 指定的最大长度,或者如果未提供该参数,则截断至模型可接受的最大输入长度。仅当提供了一对序列(或一批序列对)时,才会截断其中的第二个序列。
    • False 或 'do_not_truncate'(默认值):不进行截断(即,可以输出序列长度大于模型最大可接受输入大小的批次)。
  • max_length (int, 可选) — 控制截断/填充参数之一所使用的最大长度。如果未设置或设置为 None,则当截断/填充参数需要最大长度时,将使用预定义的最大模型长度。如果模型没有特定的最大输入长度(如 XLNet),则禁用截断/填充到最大长度的功能。

    如果未设置或设置为 None,当截断/填充参数需要最大长度时,将使用预定义的最大模型长度。如果模型没有特定的最大输入长度(例如 XLNet),则禁用截断/填充至最大长度的功能。

  • stride (int,可选,默认为 0) — 如果与 max_length 一起设置为某个数值,则当 return_overflowing_tokens=True 时,返回的溢出 token 将包含截断序列末尾的若干 token,以在截断序列和溢出序列之间提供一定的重叠。此参数的值定义了重叠 token 的数量。
  • pad_to_multiple_of (int, 可选) — 如果设置,则将序列填充为所提供值的倍数。这对于在计算能力 >= 7.5(Volta)的 NVIDIA 硬件上启用 Tensor Cores 特别有用。
  • return_tensors (str 或 TensorType, 可选) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:
    • 'pt':返回 PyTorch torch.Tensor 对象。
    • 'np':返回 Numpy np.ndarray 对象。
  • return_token_type_ids (bool, 可选) — 是否返回 token type ID。如果保持默认值,将根据特定分词器的默认设置返回 token type ID,该设置由 return_outputs 属性定义。

    什么是 token type ID?

  • return_attention_mask (bool, 可选) — 是否返回注意力掩码。如果保持默认值,将根据特定分词器的默认设置返回注意力掩码,该设置由 return_outputs 属性定义。

    什么是注意力掩码?

  • return_overflowing_tokens (bool,可选,默认为 False) — 是否返回溢出的 token 序列。如果提供了输入 id 的序列对(或序列对批次),且 truncation_strategy = longest_first 或 True,则会抛出错误,而不是返回溢出的 token。
  • return_special_tokens_mask (bool,可选,默认为 False) — 是否返回特殊 token 掩码信息。
  • return_offsets_mapping (bool, 可选, 默认为 False) — 是否返回 (char_start, char_end) 每个 token 的。

    此功能仅在继承自 PreTrainedTokenizerFast 的快速分词器上可用。如果使用 Python 分词器,此方法将抛出 NotImplementedError。

  • return_length (bool,可选,默认为 False) — 是否返回编码后输入的长度。
  • verbose (bool,可选,默认为 True) — 是否打印更多信息和警告。
  • **kwargs — 传递给 self.tokenize() 方法

返回值

BatchEncoding

一个包含以下字段的 BatchEncoding:

  • input_ids — 要输入模型的 token id 列表。

    什么是输入 ID?

  • bbox — 要输入模型的边界框列表。

  • token_type_ids — 要输入模型的 token 类型 ID 列表(当 return_token_type_ids=True 或 self.model_input_names 中包含 “token_type_ids” 时)。

    什么是 token type ID?

  • attention_mask — 索引列表,指定模型应关注哪些 token(当 return_attention_mask=True 或 “attention_mask” 位于 self.model_input_names 中时)。

    什么是注意力掩码?

  • labels — 要输入模型的标签列表。(当指定了 word_labels 时)。

  • overflowing_tokens — 溢出 token 序列的列表(当指定了 max_length 且 return_overflowing_tokens=True 时)。

  • num_truncated_tokens — 被截断的 token 数量(当指定了 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 时)。

用于对一条或多条序列,或一对或多对序列进行分词并准备输入模型的主要方法,这些序列带有词级归一化边界框以及可选的标签。

build_inputs_with_special_tokens

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]

参数

  • token_ids_0 (list[int]) — 将添加特殊标记的 ID 列表。
  • token_ids_1 (list[int], 可选) — 用于序列对的可选第二组 ID 列表。

返回值

list[int]

包含相应特殊标记的输入 ID列表。

通过拼接并添加特殊标记,从单个序列或序列对构建用于序列分类任务的模型输入。XLM-RoBERTa 序列的格式如下:

  • 单条序列:<s> X </s>
  • 序列对:<s> A </s></s> B </s>

get_special_tokens_mask

< >

( token_ids_0: list[int]token_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]

参数

  • token_ids_0 — (可能已格式化的)序列的 ID 列表。
  • token_ids_1 — 当 already_has_special_tokens=True 时未使用。在这种情况下,该值必须为 None。
  • already_has_special_tokens — 序列是否已使用特殊标记进行格式化。

返回值

一个取值范围为 [0, 1] 的整数列表

1 表示特殊标记,0 表示序列标记。

从未添加特殊标记的标记列表中检索序列 ID。

对于快速分词器,数据整理器会传入 already_has_special_tokens=True 来调用此方法,以在已格式化的序列上构建掩码。在这种情况下,我们通过检查元素是否属于 all_special_ids 来计算掩码。

create_token_type_ids_from_sequences

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]

参数

  • token_ids_0 (list[int]) — ID 列表。
  • token_ids_1 (list[int], 可选) — 用于序列对的可选第二组 ID 列表。

返回值

list[int]

零列表。

根据传入的两个序列创建掩码,用于序列对分类任务。XLM-RoBERTa 不使用 token type ids,因此返回一个全零列表。

save_vocabulary

< >

( save_directory: strfilename_prefix: str | None = None )

LayoutXLMProcessor

class transformers.LayoutXLMProcessor

< >

( image_processor = Nonetokenizer = None**kwargs )

参数

  • image_processor (LayoutLMv2ImageProcessor) — 图像处理器是必需的输入。
  • tokenizer (LayoutXLMTokenizer) — 分词器是必需的输入。

构建一个 LayoutXLMProcessor,它将图像处理器和分词器封装为单一处理器。

LayoutXLMProcessor 提供了 LayoutLMv2ImageProcessor 和 LayoutXLMTokenizer 的所有功能。有关更多信息,请参阅 ~LayoutLMv2ImageProcessor 和 ~LayoutXLMTokenizer。

__call__

< >

( imagestext: str | list[str] | list[list[str]] = Nonetext_pair: list[str] | list[list[str]] | None = Noneboxes: list[list[int]] | list[list[list[int]]] | None = Noneword_labels: list[int] | list[list[int]] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | transformers.utils.generic.PaddingStrategy = Falsetruncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy = Nonemax_length: int | None = Nonestride: int = 0pad_to_multiple_of: int | 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 = Truereturn_tensors: str | transformers.utils.generic.TensorType | None = None**kwargs ) → ~tokenization_utils_base.BatchEncoding

参数

  • images (`) -- Image to preprocess. Expects a single or batch of images with pixel values ranging from 0 to 255. If passing in images with pixel values between 0 and 1, set do_rescale=False`.
  • text (Union[str, list[str], list[list[str]]],可选) — 要编码的序列或序列批次。每个序列可以是字符串或字符串列表(预分词字符串)。如果传入预分词输入,请设置 is_split_into_words=True,以避免与批量输入产生歧义。
  • text_pair (str, list[str] or list[int], 可选) — 要编码的可选第二个序列。它可以是一个字符串、一个字符串列表(使用 tokenize 方法分词后的字符串)或一个整数列表(使用 convert_tokens_to_ids 方法得到的分词字符串 ID)。
  • boxes (list[list[int]] or list[list[list[int]]], 可选) — 词级边界框。每个边界框应归一化到 0-1000 的尺度上。
  • word_labels (list[int] or list[list[int]],可选) — 词级别的整数标签(用于 FUNSD、CORD 等 token 分类任务)。
  • 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, ,可选) — 启用并控制截断。接受以下值:
    • True 或 'longest_first':截断至由参数 max_length 指定的最大长度,或者如果未提供该参数,则截断至模型可接受的最大输入长度。这将逐个 token 进行截断,如果提供了一对序列(或一批序列对),则会从该对中最长的序列中移除一个 token。
    • 'only_first':截断至由参数 max_length 指定的最大长度,或者在未提供该参数时,截断至模型可接受的最大输入长度。如果提供了一对序列(或一批序列对),则仅截断其中的第一个序列。
    • 'only_second':截断至由参数 max_length 指定的最大长度,或者如果未提供该参数,则截断至模型可接受的最大输入长度。仅当提供了一对序列(或一批序列对)时,才会截断其中的第二个序列。
    • False 或 'do_not_truncate'(默认值):不进行截断(即,可以输出序列长度大于模型最大可接受输入大小的批次)。
  • max_length (int, 可选) — 控制截断/填充参数之一所使用的最大长度。如果未设置或设置为 None,则当截断/填充参数需要最大长度时,将使用预定义的最大模型长度。如果模型没有特定的最大输入长度(如 XLNet),则禁用截断/填充到最大长度的功能。

    如果未设置或设置为 None,当截断/填充参数需要最大长度时,将使用预定义的最大模型长度。如果模型没有特定的最大输入长度(例如 XLNet),则禁用截断/填充至最大长度的功能。

  • stride (int,可选,默认为 0) — 如果与 max_length 一起设置为某个数值,则当 return_overflowing_tokens=True 时,返回的溢出 token 将包含截断序列末尾的某些 token,以在截断序列和溢出序列之间提供一些重叠。此参数的值定义了重叠 token 的数量。
  • pad_to_multiple_of (int, 可选) — 如果设置,则将序列填充为所提供值的倍数。需要启用 padding。 这对于在具有计算能力 >= 7.5(Volta)的 NVIDIA 硬件上启用 Tensor Cores 特别有用。
  • return_token_type_ids (bool, 可选) — 是否返回 token type ID。如果保持默认值,将根据特定分词器的默认设置返回 token type ID,该设置由 return_outputs 属性定义。

    什么是 token type ID?

  • return_attention_mask (bool, 可选) — 是否返回注意力掩码。如果保持默认值,将根据特定分词器的默认设置返回注意力掩码,该设置由 return_outputs 属性定义。

    什么是注意力掩码?

  • return_overflowing_tokens (bool,可选,默认为 False) — 是否返回溢出的 token 序列。如果提供了输入 id 的序列对(或序列对批次),且 truncation_strategy = longest_first 或 True,则会抛出错误,而不是返回溢出的 token。
  • return_special_tokens_mask (bool,可选,默认为 False) — 是否返回特殊 token 掩码信息。
  • return_offsets_mapping (bool, 可选, 默认为 False) — 是否返回 (char_start, char_end) 每个 token 的。

    此功能仅在继承自 PreTrainedTokenizerFast 的快速分词器上可用。如果使用 Python 分词器,此方法将抛出 NotImplementedError。

  • return_length (bool,可选,默认为 False) — 是否返回编码后输入的长度。
  • verbose (bool,可选,默认为 True) — 是否打印更多信息和警告。
  • return_tensors (Union[str, ~utils.generic.TensorType], 可选) — 如果设置,将返回特定框架的张量。可接受的值为:
    • 'pt':返回 PyTorch torch.Tensor 对象。
    • 'np':返回 NumPy np.ndarray 对象。

返回值

~tokenization_utils_base.BatchEncoding

  • data (dict,可选) — 由 __call__/encode_plus/batch_encode_plus 方法返回的列表/数组/张量字典 (‘input_ids’、‘attention_mask’ 等)。
  • encoding(tokenizers.Encoding 或 Sequence[tokenizers.Encoding],可选)— 如果分词器是快速分词器,并且会输出诸如从词/字符空间到 token 空间的映射等附加信息,则 tokenizers.Encoding 实例或实例列表(用于批次)将保存这些信息。
  • tensor_type (Union[None, str, TensorType], 可选) — 您可以在此处指定 tensor_type,以便在初始化时将 PyTorch/Numpy 张量中的整数列表进行转换。
  • prepend_batch_axis (bool,可选,默认为 False) — 在转换为张量时是否添加批次维度(参见上文中的 tensor_type)。请注意,仅当参数 tensor_type 被设置时,该参数才会生效,否则无效。
  • n_sequences (int,可选) — 每个编码所表示的输入序列数量(None 表示未知,1 表示单个序列,2 表示一对序列)。
Update on GitHub