LayoutLMv3
原文链接:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/layoutlmv3
概述
LayoutLMv3 模型由 Yupan Huang、Tengchao Lv、Lei Cui、Yutong Lu、Furu Wei 在LayoutLMv3: Pre-training for Document AI with Unified Text and Image Masking中提出。LayoutLMv3 通过使用补丁嵌入(如 ViT 中的方式)简化了 LayoutLMv2,并在 3 个目标上对模型进行了预训练:掩码语言建模(MLM)、掩码图像建模(MIM)和单词-补丁对齐(WPA)。
论文摘要如下:
自监督预训练技术在文档 AI 领域取得了显著进展。大多数多模态预训练模型使用掩码语言建模目标来学习文本模态上的双向表示,但它们在图像模态的预训练目标上有所不同。这种差异增加了多模态表示学习的难度。在本文中,我们提出了 LayoutLMv3,用于为文档 AI 预训练多模态 Transformers,统一文本和图像掩码。此外,LayoutLMv3 还使用了单词-补丁对齐目标进行预训练,通过预测文本单词的相应图像补丁是否被掩码来学习跨模态对齐。简单的统一架构和训练目标使 LayoutLMv3 成为文本中心和图像中心文档 AI 任务的通用预训练模型。实验结果表明,LayoutLMv3 不仅在文本中心任务(如表单理解、收据理解和文档视觉问答)中取得了最先进的性能,而且在图像中心任务(如文档图像分类和文档布局分析)中也取得了最先进的性能。
LayoutLMv3 架构。摘自原始论文。
该模型由nielsr贡献。该模型的 TensorFlow 版本由chriskoo、tokec和lre添加。原始代码可以在这里找到。
使用提示
- 在数据处理方面,LayoutLMv3 与其前身 LayoutLMv2 相同,只是:
- 图像需要调整大小并使用常规 RGB 格式的通道进行归一化。另一方面,LayoutLMv2 在内部对图像进行归一化,并期望通道以 BGR 格式提供。
- 文本使用字节对编码(BPE)进行标记化,而不是 WordPiece。由于数据预处理中的这些差异,可以使用 LayoutLMv3Processor,它内部结合了 LayoutLMv3ImageProcessor(用于图像模态)和 LayoutLMv3Tokenizer/LayoutLMv3TokenizerFast(用于文本模态)来为模型准备所有数据。
- 关于 LayoutLMv3Processor 的使用,我们参考其前身的使用指南。
资源
Hugging Face 官方和社区(🌎表示)资源列表,帮助您开始使用 LayoutLMv3。如果您有兴趣提交资源以包含在此处,请随时打开一个 Pull Request,我们将进行审核!资源应该最好展示一些新东西,而不是重复现有资源。
LayoutLMv3 几乎与 LayoutLMv2 相同,因此我们还包含了您可以为 LayoutLMv3 任务调整的 LayoutLMv2 资源。在准备模型数据时,请务必使用 LayoutLMv2Processor!
文本分类
- 这个笔记本支持 LayoutLMv2ForSequenceClassification。
- 文本分类任务指南
标记分类
- 这个示例脚本和笔记本支持 LayoutLMv3ForTokenClassification。
- 一个关于如何使用 LayoutLMv2ForTokenClassification 进行推断的笔记本,以及一个关于如何在没有标签的情况下使用 LayoutLMv2ForTokenClassification 进行推断的笔记本。
- 一个关于如何使用🤗 Trainer 对 LayoutLMv2ForTokenClassification 进行微调的笔记本。
- 标记分类任务指南
问答
- 这个笔记本支持 LayoutLMv2ForQuestionAnswering。
- 问答任务指南
文档问答
- 文档问答任务指南
LayoutLMv3Config
class transformers.LayoutLMv3Config
( vocab_size = 50265 hidden_size = 768 num_hidden_layers = 12 num_attention_heads = 12 intermediate_size = 3072 hidden_act = 'gelu' hidden_dropout_prob = 0.1 attention_probs_dropout_prob = 0.1 max_position_embeddings = 512 type_vocab_size = 2 initializer_range = 0.02 layer_norm_eps = 1e-05 pad_token_id = 1 bos_token_id = 0 eos_token_id = 2 max_2d_position_embeddings = 1024 coordinate_size = 128 shape_size = 128 has_relative_attention_bias = True rel_pos_bins = 32 max_rel_pos = 128 rel_2d_pos_bins = 64 max_rel_2d_pos = 256 has_spatial_attention_bias = True text_embed = True visual_embed = True input_size = 224 num_channels = 3 patch_size = 16 classifier_dropout = None **kwargs )
参数
vocab_size(int, optional, 默认为 50265) — LayoutLMv3 模型的词汇量。定义了在调用 LayoutLMv3Model 时可以表示的不同标记数量。hidden_size(int, optional, 默认为 768) — 编码器层和池化层的维度。num_hidden_layers(int, optional, 默认为 12) — Transformer 编码器中隐藏层的数量。num_attention_heads(int, optional, 默认为 12) — Transformer 编码器中每个注意力层的注意力头数。intermediate_size(int, optional, 默认为 3072) — Transformer 编码器中“中间”(即前馈)层的维度。hidden_act(str或function, optional, 默认为"gelu") — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu","relu","selu"和"gelu_new"。hidden_dropout_prob(float, optional, 默认为 0.1) — 嵌入、编码器和池化器中所有全连接层的 dropout 概率。attention_probs_dropout_prob(float, optional, 默认为 0.1) — 注意力概率的 dropout 比率。max_position_embeddings(int, optional, 默认为 512) — 该模型可能使用的最大序列长度。通常设置为一个较大的值以防万一(例如,512 或 1024 或 2048)。type_vocab_size(int, optional, 默认为 2) — 在调用 LayoutLMv3Model 时传递的token_type_ids的词汇表大小。initializer_range(float, optional, 默认为 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。layer_norm_eps(float, optional, 默认为 1e-5) — 层归一化层使用的 epsilon。max_2d_position_embeddings(int, optional, 默认为 1024) — 2D 位置嵌入可能使用的最大值。通常设置为一个较大的值以防万一(例如,1024)。coordinate_size(int, optional, 默认为128) — 坐标嵌入的维度。shape_size(int, optional, 默认为128) — 宽度和高度嵌入的维度。has_relative_attention_bias(bool, optional, 默认为True) — 是否在自注意力机制中使用相对注意力偏置。rel_pos_bins(int, optional, 默认为 32) — 在自注意力机制中使用的相对位置桶的数量。max_rel_pos(int, optional, 默认为 128) — 在自注意力机制中使用的最大相对位置数。max_rel_2d_pos(int, optional, 默认为 256) — 自注意力机制中的最大 2D 相对位置数。rel_2d_pos_bins(int, optional, 默认为 64) — 自注意力机制中的 2D 相对位置桶的数量。has_spatial_attention_bias(bool, optional, 默认为True) — 是否在自注意力机制中使用空间注意偏置。visual_embed(bool, optional, 默认为True) — 是否添加补丁嵌入。input_size(int, optional, 默认为224) — 图像的大小(分辨率)。num_channels(int, optional, 默认为3) — 图像的通道数。patch_size(int, optional, 默认为16) — 补丁的大小(分辨率)。classifier_dropout(float, optional) — 分类头的 dropout 比率。
这是一个配置类,用于存储 LayoutLMv3Model 的配置。它用于根据指定的参数实例化一个 LayoutLMv3 模型,定义模型架构。使用默认值实例化配置将产生类似于 LayoutLMv3 microsoft/layoutlmv3-base 架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import LayoutLMv3Config, LayoutLMv3Model >>> # Initializing a LayoutLMv3 microsoft/layoutlmv3-base style configuration >>> configuration = LayoutLMv3Config() >>> # Initializing a model (with random weights) from the microsoft/layoutlmv3-base style configuration >>> model = LayoutLMv3Model(configuration) >>> # Accessing the model configuration >>> configuration = model.config
LayoutLMv3FeatureExtractor
class transformers.LayoutLMv3FeatureExtractor
( *args **kwargs )
__call__
( images **kwargs )
预处理一张图像或一批图像。
LayoutLMv3ImageProcessor
class transformers.LayoutLMv3ImageProcessor
( do_resize: bool = True size: Dict = None resample: Resampling = <Resampling.BILINEAR: 2> do_rescale: bool = True rescale_value: float = 0.00392156862745098 do_normalize: bool = True image_mean: Union = None image_std: Union = None apply_ocr: bool = True ocr_lang: Optional = None tesseract_config: Optional = '' **kwargs )
参数
do_resize(bool, optional, 默认为True) — 是否将图像的 (高度,宽度) 尺寸调整为(size["height"], size["width"])。可以被preprocess中的do_resize覆盖。size(Dict[str, int]optional, 默认为{"height" -- 224, "width": 224}): 调整大小后的图像尺寸。可以被preprocess中的size覆盖。resample(PILImageResampling, optional, 默认为PILImageResampling.BILINEAR) — 如果调整图像大小,要使用的重采样滤波器。可以被preprocess中的resample覆盖。do_rescale(bool, optional, 默认为True) — 是否按指定的rescale_value重新缩放图像的像素值。可以被preprocess中的do_rescale覆盖。rescale_factor(float, optional, 默认为 1 / 255) — 图像的像素值被重新缩放的值。可以被preprocess中的rescale_factor覆盖。do_normalize(bool, optional, 默认为True) — 是否对图像进行规范化。可以被preprocess方法中的do_normalize参数覆盖。image_mean(Iterable[float]或float, optional, 默认为IMAGENET_STANDARD_MEAN) — 如果规范化图像要使用的均值。这是一个浮点数或与图像通道数相同长度的浮点数列表。可以被preprocess方法中的image_mean参数覆盖。image_std(Iterable[float]或float, optional, 默认为IMAGENET_STANDARD_STD) — 如果规范化图像要使用的标准差。这是一个浮点数或与图像通道数相同长度的浮点数列表。可以被preprocess方法中的image_std参数覆盖。apply_ocr(bool, optional, 默认为True) — 是否应用 Tesseract OCR 引擎以获取单词 + 规范化边界框。可以被preprocess方法中的apply_ocr参数覆盖。ocr_lang(str, optional) — Tesseract OCR 引擎要使用的语言,由其 ISO 代码指定。默认情况下使用英语。可以被preprocess方法中的ocr_lang参数覆盖。tesseract_config(str, optional) — 转发到调用 Tesseract 时config参数的任何额外自定义配置标志。例如:‘—psm 6’。可以被preprocess方法中的tesseract_config参数覆盖。
构建一个 LayoutLMv3 图像处理器。
preprocess
( images: Union do_resize: bool = None size: Dict = None resample = None do_rescale: bool = None rescale_factor: float = None do_normalize: bool = None image_mean: Union = None image_std: Union = None apply_ocr: bool = None ocr_lang: Optional = None tesseract_config: Optional = None return_tensors: Union = None data_format: ChannelDimension = <ChannelDimension.FIRST: 'channels_first'> input_data_format: Union = None **kwargs )
参数
images(ImageInput) — 要预处理的图像。期望单个或批量图像,像素值范围为 0 到 255。如果传入像素值在 0 到 1 之间的图像,请设置do_rescale=False。do_resize(bool, optional, 默认为self.do_resize) — 是否调整图像大小。size(Dict[str, int], optional, 默认为self.size) — 应用resize后输出图像的期望大小。resample(int, optional, defaults toself.resample) — 如果调整图像大小,则要使用的重采样滤波器。这可以是PILImageResampling滤波器之一。仅在do_resize设置为True时有效。do_rescale(bool, optional, defaults toself.do_rescale) — 是否将图像像素值重新缩放到 [0, 1] 之间。rescale_factor(float, optional, defaults toself.rescale_factor) — 应用于图像像素值的重新缩放因子。仅在do_rescale设置为True时有效。do_normalize(bool, optional, defaults toself.do_normalize) — 是否对图像进行归一化。image_mean(floatorIterable[float], optional, defaults toself.image_mean) — 用于归一化的均值。仅在do_normalize设置为True时有效。image_std(floatorIterable[float], optional, defaults toself.image_std) — 用于归一化的标准差值。仅在do_normalize设置为True时有效。apply_ocr(bool, optional, defaults toself.apply_ocr) — 是否应用 Tesseract OCR 引擎以获取单词 + 规范化边界框。ocr_lang(str, optional, defaults toself.ocr_lang) — Tesseract OCR 引擎使用的语言,由其 ISO 代码指定。默认情况下使用英语。tesseract_config(str, optional, defaults toself.tesseract_config) — 转发到调用 Tesseract 时config参数的任何额外自定义配置标志。return_tensors(strorTensorType, optional) — 要返回的张量类型。可以是以下之一:
- 未设置:返回
np.ndarray的列表。 TensorType.TENSORFLOW或'tf':返回类型为tf.Tensor的批次。TensorType.PYTORCH或'pt':返回类型为torch.Tensor的批次。TensorType.NUMPY或'np':返回类型为np.ndarray的批次。TensorType.JAX或'jax':返回类型为jax.numpy.ndarray的批次。
data_format(ChannelDimension或str, optional, defaults toChannelDimension.FIRST) — 输出图像的通道维度格式。可以是以下之一:
ChannelDimension.FIRST:图像以 (通道数, 高度, 宽度) 格式。ChannelDimension.LAST:图像以 (高度, 宽度, 通道数) 格式。
input_data_format(ChannelDimension或str, optional) — 输入图像的通道维度格式。如果未设置,则从输入图像中推断通道维度格式。可以是以下之一:
"channels_first"或ChannelDimension.FIRST:图像以 (通道数, 高度, 宽度) 格式。"channels_last"或ChannelDimension.LAST:图像以 (高度, 宽度, 通道数) 格式。"none"或ChannelDimension.NONE:图像以 (高度, 宽度) 格式。
预处理图像或图像批次。
LayoutLMv3Tokenizer
class transformers.LayoutLMv3Tokenizer
( vocab_file merges_file errors = 'replace' bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' mask_token = '<mask>' add_prefix_space = True cls_token_box = [0, 0, 0, 0] sep_token_box = [0, 0, 0, 0] pad_token_box = [0, 0, 0, 0] pad_token_label = -100 only_label_first_subword = True **kwargs )
参数
vocab_file(str) — 词汇文件的路径。merges_file(str) — 合并文件的路径。errors(str, optional, defaults to"replace") — 解码字节为 UTF-8 时要遵循的范例。有关更多信息,请参阅 bytes.decode。bos_token(str, optional, defaults to"") — 在预训练期间使用的序列开头标记。可用作序列分类器标记。
构建序列时使用特殊标记,这不是序列开头使用的标记。使用的标记是cls_token。eos_token(str, optional, defaults to"") — 序列结束标记。
构建序列时使用特殊标记,这不是序列末尾使用的标记。使用的标记是sep_token。sep_token(str, optional, 默认为"") — 分隔符标记,在构建来自多个序列的序列时使用,例如用于序列分类的两个序列或用于问题回答的文本和问题。它还用作使用特殊标记构建的序列的最后一个标记。cls_token(str, optional, 默认为"") — 分类器标记,用于进行序列分类(对整个序列进行分类,而不是每个标记进行分类)。它是使用特殊标记构建的序列的第一个标记。unk_token(str, optional, 默认为"") — 未知标记。词汇表中没有的标记无法转换为 ID,而是设置为此标记。pad_token(str, optional, 默认为"") — 用于填充的标记,例如在批处理不同长度的序列时使用。mask_token(str, optional, 默认为"") — 用于屏蔽值的标记。这是在使用掩码语言建模训练此模型时使用的标记。这是模型将尝试预测的标记。add_prefix_space(bool, optional, 默认为True) — 是否在输入中添加初始空格。这允许将前导单词视为任何其他单词。(RoBERTa 分词器通过前面的空格检测单词的开头)。cls_token_box(List[int], optional, 默认为[0, 0, 0, 0]) — 用于特殊[CLS]标记的边界框。sep_token_box(List[int], optional, 默认为[0, 0, 0, 0]) — 用于特殊[SEP]标记的边界框。pad_token_box(List[int], optional, 默认为[0, 0, 0, 0]) — 用于特殊[PAD]标记的边界框。pad_token_label(int, optional, 默认为 -100) — 用于填充标记的标签。默认为-100,这是 PyTorch 的 CrossEntropyLoss 的ignore_index。only_label_first_subword(bool, optional, 默认为True) — 是否仅标记第一个子词,如果提供了单词标签。
构建一个 LayoutLMv3 分词器。基于RoBERTatokenizer(字节对编码或 BPE)。LayoutLMv3Tokenizer 可用于将单词、单词级边界框和可选单词标签转换为标记级input_ids、attention_mask、token_type_ids、bbox和可选labels(用于标记分类)。
此分词器继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参考此超类以获取有关这些方法的更多信息。
LayoutLMv3Tokenizer 运行端到端的分词:标点符号拆分和词块。它还将单词级边界框转换为标记级边界框。
__call__
( text: Union text_pair: Union = None boxes: Union = None word_labels: Union = 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 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 )
参数
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]], optional) — 单词级整数标签(用于诸如 FUNSD、CORD 之类的标记分类任务)。add_special_tokens(bool, optional, defaults toTrue) — 是否对序列进行编码,使用相对于其模型的特殊标记。padding(bool,str或 PaddingStrategy, optional, defaults toFalse) — 激活并控制填充。接受以下值:
True或'longest': 填充到批次中最长的序列(如果只提供了单个序列,则不填充)。'max_length': 填充到指定的最大长度(使用参数max_length)或模型的最大可接受输入长度(如果未提供该参数)。False或'do_not_pad'(默认):无填充(即,可以输出具有不同长度序列的批次)。
truncation(bool,str或 TruncationStrategy, optional, defaults toFalse) — 激活并控制截断。接受以下值:
True或'longest_first': 截断到指定的最大长度(使用参数max_length)或模型的最大可接受输入长度(如果未提供该参数)。如果提供了一对序列(或一批对序列),则逐标记截断,从最长序列中删除一个标记。'only_first': 截断到指定的最大长度(使用参数max_length)或模型的最大可接受输入长度(如果未提供该参数)。如果提供了一对序列(或一批对序列),则仅截断第一个序列。'only_second': 截断到指定的最大长度(使用参数max_length)或模型的最大可接受输入长度(如果未提供该参数)。如果提供了一对序列(或一批对序列),则仅截断第二个序列。False或'do_not_truncate'(默认):无截断(即,可以输出具有大于模型最大可接受输入大小的序列长度的批次)。
max_length(int, optional) — 控制截断/填充参数使用的最大长度。
如果未设置或设置为None,则将使用预定义的模型最大长度(如果截断/填充参数需要最大长度)。如果模型没有特定的最大输入长度(如 XLNet),则将禁用截断/填充到最大长度。stride(int, optional, defaults to 0) — 如果设置为一个数字,并且与max_length一起使用,当return_overflowing_tokens=True时返回的溢出标记将包含截断序列末尾的一些标记,以提供截断和溢出序列之间的一些重叠。该参数的值定义了重叠标记的数量。pad_to_multiple_of(int, optional) — 如果设置,将填充序列到提供的值的倍数。这对于在具有计算能力>= 7.5(Volta)的 NVIDIA 硬件上启用 Tensor Cores 特别有用。return_tensors(str或 TensorType, optional) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:
'tf': 返回 TensorFlowtf.constant对象。'pt': 返回 PyTorchtorch.Tensor对象。'np': 返回 Numpynp.ndarray对象。
add_special_tokens(bool, optional, defaults toTrue) — 是否对序列进行编码,使用相对于其模型的特殊标记。padding(bool,str或 PaddingStrategy, optional, defaults toFalse) — 激活并控制填充。接受以下值:
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时返回的溢出标记将包含从截断序列末尾返回的一些标记,以提供截断和溢出序列之间的一些重叠。该参数的值定义了重叠标记的数量。pad_to_multiple_of(int, 可选) — 如果设置,将填充序列到提供的值的倍数。这对于在具有计算能力>= 7.5(Volta)的 NVIDIA 硬件上启用 Tensor Cores 特别有用。return_tensors(str或 TensorType, 可选) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:
'tf': 返回 TensorFlowtf.constant对象。'pt': 返回 PyTorchtorch.Tensor对象。'np': 返回 Numpynp.ndarray对象。
用于对一个或多个序列或一个或多个序列对进行标记化和为模型准备的主要方法,其中包括单词级别的归一化边界框和可选标签。
save_vocabulary
( save_directory: str filename_prefix: Optional = None )
LayoutLMv3TokenizerFast
class transformers.LayoutLMv3TokenizerFast
( vocab_file = None merges_file = None tokenizer_file = None errors = 'replace' bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' mask_token = '<mask>' add_prefix_space = True trim_offsets = True cls_token_box = [0, 0, 0, 0] sep_token_box = [0, 0, 0, 0] pad_token_box = [0, 0, 0, 0] pad_token_label = -100 only_label_first_subword = True **kwargs )
参数
vocab_file(str) — 词汇表文件的路径。merges_file(str) — 合并文件的路径。errors(str, 可选, 默认为"replace") — 解码字节为 UTF-8 时要遵循的范例。有关更多信息,请参阅 bytes.decode。bos_token(str, 可选, 默认为"") — 在预训练期间使用的序列开始标记。可以用作序列分类器标记。
构建序列时使用特殊标记时,这不是用于序列开头的标记。使用的标记是cls_token。eos_token(str, 可选, 默认为"") — 序列结束标记。
构建序列时使用特殊标记时,这不是用于序列结尾的标记。使用的标记是sep_token。sep_token(str, 可选, 默认为"") — 分隔符标记,用于从多个序列构建序列,例如用于序列分类的两个序列或用于文本和问题的问题回答。它也用作使用特殊标记构建的序列的最后一个标记。cls_token(str, 可选, 默认为"") — 在进行序列分类(整个序列而不是每个标记的分类)时使用的分类器标记。当使用特殊标记构建序列时,它是序列的第一个标记。unk_token(str, 可选, 默认为"") — 未知标记。词汇表中没有的标记无法转换为 ID,而是设置为此标记。pad_token(str, 可选, 默认为"") — 用于填充的标记,例如在批处理不同长度的序列时使用。mask_token(str, 可选, 默认为"") — 用于屏蔽值的标记。这是在使用掩码语言建模训练此模型时使用的标记。这是模型将尝试预测的标记。add_prefix_space(bool, 可选, 默认为False) — 是否在输入中添加初始空格。这允许将前导单词视为任何其他单词。(RoBERTa 标记器通过前面的空格检测单词的开头)。trim_offsets(bool, 可选, 默认为True) — 后处理步骤是否应修剪偏移量以避免包含空格。cls_token_box(List[int], 可选, 默认为[0, 0, 0, 0]) — 用于特殊[CLS]标记的边界框。sep_token_box(List[int], 可选, 默认为[0, 0, 0, 0]) — 用于特殊[SEP]标记的边界框。pad_token_box(List[int], 可选, 默认为[0, 0, 0, 0]) — 用于特殊[PAD]标记的边界框。pad_token_label(int, 可选, 默认为 -100) — 用于填充标记的标签。默认为-100,这是 PyTorch 的 CrossEntropyLoss 的ignore_index。only_label_first_subword(bool, 可选, 默认为True) — 是否仅标记第一个子词,如果提供了单词标签。
构建“快速”LayoutLMv3 标记器(由 HuggingFace 的tokenizers库支持)。基于 BPE。
此标记器继承自 PreTrainedTokenizerFast,其中包含大多数主要方法。用户应参考此超类以获取有关这些方法的更多信息。
__call__
( text: Union text_pair: Union = None boxes: Union = None word_labels: Union = 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 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 )
参数
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 等标记分类任务)。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指定的最大长度,或者截断到模型可接受的最大输入长度(如果未提供该参数)。如果提供了一对序列(或一批对序列),则将逐个标记进行截断,从一对序列中最长的序列中删除一个标记。'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时返回的溢出标记将包含截断序列末尾的一些标记,以提供截断和溢出序列之间的一些重叠。该参数的值定义了重叠标记的数量。pad_to_multiple_of(int,可选) — 如果设置,将填充序列到提供的值的倍数。这对于在具有计算能力>= 7.5(Volta)的 NVIDIA 硬件上启用 Tensor Cores 特别有用。return_tensors(str或 TensorType,可选) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:
'tf':返回 TensorFlowtf.constant对象。'pt':返回 PyTorchtorch.Tensor对象。'np':返回 Numpynp.ndarray对象。
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指定的最大长度截断,或者如果未提供该参数,则截断到模型的最大可接受输入长度。如果提供了一对序列(或一批对序列),则将逐标记截断,从一对序列中最长的序列中删除一个标记。'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时返回的溢出标记将包含截断序列末尾的一些标记,以提供截断和溢出序列之间的一些重叠。该参数的值定义了重叠标记的数量。pad_to_multiple_of(int,可选) - 如果设置,将序列填充到提供的值的倍数。这对于启用具有计算能力>= 7.5(Volta)的 NVIDIA 硬件上的 Tensor Cores 特别有用。return_tensors(str或 TensorType,可选) - 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:
'tf': 返回 TensorFlowtf.constant对象。'pt': 返回 PyTorchtorch.Tensor对象。'np': 返回 Numpynp.ndarray对象。
用于标记和准备一个或多个序列或一个或多个序列对的主要方法,具有单词级别的归一化边界框和可选标签。
Transformers 4.37 中文文档(八十九)(2)https://developer.aliyun.com/article/1563230