Transformers 4.37 中文文档(八十八)(4)

简介: Transformers 4.37 中文文档(八十八)

Transformers 4.37 中文文档(八十八)(3)https://developer.aliyun.com/article/1563221


用法:LayoutLMv2Processor

为模型准备数据的最简单方法是使用  LayoutLMv2Processor,它在内部结合了图像处理器(LayoutLMv2ImageProcessor)和标记器(LayoutLMv2Tokenizer  或 LayoutLMv2TokenizerFast)。图像处理器处理图像模态,而标记器处理文本模态。处理器结合了两者,这对于像  LayoutLMv2 这样的多模态模型是理想的。请注意,如果您只想处理一个模态,仍然可以分别使用两者。

from transformers import LayoutLMv2ImageProcessor, LayoutLMv2TokenizerFast, LayoutLMv2Processor
image_processor = LayoutLMv2ImageProcessor()  # apply_ocr is set to True by default
tokenizer = LayoutLMv2TokenizerFast.from_pretrained("microsoft/layoutlmv2-base-uncased")
processor = LayoutLMv2Processor(image_processor, tokenizer)

简而言之,可以将文档图像(以及可能的其他数据)提供给  LayoutLMv2Processor,它将创建模型期望的输入。在内部,处理器首先使用 LayoutLMv2ImageProcessor  在图像上应用 OCR,以获取单词列表和标准化边界框,并将图像调整大小以获得image输入。然后,单词和标准化边界框提供给 LayoutLMv2Tokenizer 或 LayoutLMv2TokenizerFast,将它们转换为标记级别的input_idsattention_masktoken_type_idsbbox。可选地,可以向处理器提供单词标签,这些标签将转换为标记级别的labels

LayoutLMv2Processor 使用PyTesseract,这是 Google 的 Tesseract OCR 引擎的 Python 封装。请注意,您仍然可以使用自己选择的 OCR 引擎,并自己提供单词和标准化框。这需要使用apply_ocr设置为False来初始化 LayoutLMv2ImageProcessor。

总共有 5 个处理器支持的使用案例。下面我们列出它们。请注意,这些使用案例对批处理和非批处理输入都适用(我们为非批处理输入进行说明)。

使用案例 1:文档图像分类(训练、推理)+标记分类(推理),apply_ocr=True

这是最简单的情况,处理器(实际上是图像处理器)将对图像执行 OCR,以获取单词和标准化边界框。

from transformers import LayoutLMv2Processor
from PIL import Image
processor = LayoutLMv2Processor.from_pretrained("microsoft/layoutlmv2-base-uncased")
image = Image.open(
    "name_of_your_document - can be a png, jpg, etc. of your documents (PDFs must be converted to images)."
).convert("RGB")
encoding = processor(
    image, return_tensors="pt"
)  # you can also add all tokenizer parameters here such as padding, truncation
print(encoding.keys())
# dict_keys(['input_ids', 'token_type_ids', 'attention_mask', 'bbox', 'image'])

使用案例 2:文档图像分类(训练、推理)+标记分类(推理),apply_ocr=False

如果想要自己执行 OCR,可以将图像处理器初始化为apply_ocr设置为False。在这种情况下,应该自己向处理器提供单词和相应的(标准化的)边界框。

from transformers import LayoutLMv2Processor
from PIL import Image
processor = LayoutLMv2Processor.from_pretrained("microsoft/layoutlmv2-base-uncased", revision="no_ocr")
image = Image.open(
    "name_of_your_document - can be a png, jpg, etc. of your documents (PDFs must be converted to images)."
).convert("RGB")
words = ["hello", "world"]
boxes = [[1, 2, 3, 4], [5, 6, 7, 8]]  # make sure to normalize your bounding boxes
encoding = processor(image, words, boxes=boxes, return_tensors="pt")
print(encoding.keys())
# dict_keys(['input_ids', 'token_type_ids', 'attention_mask', 'bbox', 'image'])

使用案例 3:标记分类(训练),apply_ocr=False

对于标记分类任务(如 FUNSD、CORD、SROIE、Kleister-NDA),还可以提供相应的单词标签以训练模型。处理器将把这些转换为标记级别的labels。默认情况下,它只会标记单词的第一个词片,并用-100 标记剩余的词片,这是 PyTorch 的 CrossEntropyLoss 的ignore_index。如果希望标记单词的所有词片,可以将分词器初始化为only_label_first_subword设置为False

from transformers import LayoutLMv2Processor
from PIL import Image
processor = LayoutLMv2Processor.from_pretrained("microsoft/layoutlmv2-base-uncased", revision="no_ocr")
image = Image.open(
    "name_of_your_document - can be a png, jpg, etc. of your documents (PDFs must be converted to images)."
).convert("RGB")
words = ["hello", "world"]
boxes = [[1, 2, 3, 4], [5, 6, 7, 8]]  # make sure to normalize your bounding boxes
word_labels = [1, 2]
encoding = processor(image, words, boxes=boxes, word_labels=word_labels, return_tensors="pt")
print(encoding.keys())
# dict_keys(['input_ids', 'token_type_ids', 'attention_mask', 'bbox', 'labels', 'image'])

使用案例 4:视觉问答(推理),apply_ocr=True

对于视觉问答任务(如 DocVQA),您可以向处理器提供问题。默认情况下,处理器将在图像上应用 OCR,并创建[CLS]问题标记[SEP]单词标记[SEP]。

from transformers import LayoutLMv2Processor
from PIL import Image
processor = LayoutLMv2Processor.from_pretrained("microsoft/layoutlmv2-base-uncased")
image = Image.open(
    "name_of_your_document - can be a png, jpg, etc. of your documents (PDFs must be converted to images)."
).convert("RGB")
question = "What's his name?"
encoding = processor(image, question, return_tensors="pt")
print(encoding.keys())
# dict_keys(['input_ids', 'token_type_ids', 'attention_mask', 'bbox', 'image'])

使用案例 5:视觉问答(推理),apply_ocr=False

对于视觉问答任务(如 DocVQA),您可以向处理器提供问题。如果您想自己执行 OCR,可以向处理器提供自己的单词和(标准化的)边界框。

from transformers import LayoutLMv2Processor
from PIL import Image
processor = LayoutLMv2Processor.from_pretrained("microsoft/layoutlmv2-base-uncased", revision="no_ocr")
image = Image.open(
    "name_of_your_document - can be a png, jpg, etc. of your documents (PDFs must be converted to images)."
).convert("RGB")
question = "What's his name?"
words = ["hello", "world"]
boxes = [[1, 2, 3, 4], [5, 6, 7, 8]]  # make sure to normalize your bounding boxes
encoding = processor(image, question, words, boxes=boxes, return_tensors="pt")
print(encoding.keys())
# dict_keys(['input_ids', 'token_type_ids', 'attention_mask', 'bbox', 'image'])

LayoutLMv2Config

class transformers.LayoutLMv2Config

<来源>

( vocab_size = 30522 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-12 pad_token_id = 0 max_2d_position_embeddings = 1024 max_rel_pos = 128 rel_pos_bins = 32 fast_qkv = True max_rel_2d_pos = 256 rel_2d_pos_bins = 64 convert_sync_batchnorm = True image_feature_pool_shape = [7, 7, 256] coordinate_size = 128 shape_size = 128 has_relative_attention_bias = True has_spatial_attention_bias = True has_visual_segment_embedding = False detectron2_config_args = None **kwargs )

参数

  • vocab_sizeint可选,默认为 30522)—LayoutLMv2 模型的词汇量。定义了在调用 LayoutLMv2Model 或TFLayoutLMv2Model时可以表示的不同标记数量。
  • hidden_sizeint可选,默认为 768)—编码器层和池化器层的维度。
  • num_hidden_layersint可选,默认为 12)—变换器编码器中的隐藏层数量。
  • num_attention_headsint可选,默认为 12)—变换器编码器中每个注意力层的注意力头数量。
  • intermediate_sizeint可选,默认为 3072)—变换器编码器中“中间”(即前馈)层的维度。
  • hidden_actstrfunction可选,默认为"gelu")—编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu""relu""selu""gelu_new"
  • hidden_dropout_probfloat可选,默认为 0.1)—嵌入层、编码器和池化器中所有全连接层的 dropout 概率。
  • attention_probs_dropout_prob (float, optional, 默认为 0.1) — 注意力概率的丢弃比率。
  • max_position_embeddings (int, optional, 默认为 512) — 此模型可能使用的最大序列长度。通常设置为一个较大的值以防万一(例如 512、1024 或 2048)。
  • type_vocab_size (int, optional, 默认为 2) — 在调用 LayoutLMv2Model 或TFLayoutLMv2Model时传递的token_type_ids的词汇表大小。
  • initializer_range (float, optional, 默认为 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。
  • layer_norm_eps (float, optional, 默认为 1e-12) — 层归一化层使用的 epsilon。
  • max_2d_position_embeddings (int, optional, 默认为 1024) — 2D 位置嵌入可能使用的最大值。通常设置为一个较大的值以防万一(例如 1024)。
  • max_rel_pos (int, optional, 默认为 128) — 自注意力机制中要使用的相对位置的最大数量。
  • rel_pos_bins (int, optional, 默认为 32) — 自注意力机制中要使用的相对位置桶的数量。
  • fast_qkv (bool, optional, 默认为True) — 是否在自注意力层中使用单个矩阵作为查询、键、值。
  • max_rel_2d_pos (int, optional, 默认为 256) — 自注意力机制中使用的相对 2D 位置的最大数量。
  • rel_2d_pos_bins (int, optional, 默认为 64) — 自注意力机制中的 2D 相对位置桶的数量。
  • image_feature_pool_shape (List[int], optional, 默认为[7, 7, 256]) — 平均池化特征图的形状。
  • coordinate_size (int, optional, 默认为 128) — 坐标嵌入的维度。
  • shape_size (int, optional, 默认为 128) — 宽度和高度嵌入的维度。
  • has_relative_attention_bias (bool, optional, 默认为True) — 是否在自注意力机制中使用相对注意力偏置。
  • has_spatial_attention_bias (bool, optional, 默认为True) — 是否在自注意力机制中使用空间注意力偏置。
  • has_visual_segment_embedding (bool, optional, 默认为False) — 是否添加视觉段嵌入。
  • detectron2_config_args (dict, optional) — 包含 Detectron2 视觉骨干配置参数的字典。有关默认值的详细信息,请参阅此文件

这是用于存储 LayoutLMv2Model 配置的配置类。它用于根据指定的参数实例化一个 LayoutLMv2 模型,定义模型架构。使用默认值实例化配置将产生类似于 LayoutLMv2 microsoft/layoutlmv2-base-uncased架构的配置。

配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。

示例:

>>> from transformers import LayoutLMv2Config, LayoutLMv2Model
>>> # Initializing a LayoutLMv2 microsoft/layoutlmv2-base-uncased style configuration
>>> configuration = LayoutLMv2Config()
>>> # Initializing a model (with random weights) from the microsoft/layoutlmv2-base-uncased style configuration
>>> model = LayoutLMv2Model(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config

LayoutLMv2FeatureExtractor

class transformers.LayoutLMv2FeatureExtractor

<来源>

( *args **kwargs )
__call__

<来源>

( images **kwargs )

预处理图像或一批图像。

LayoutLMv2ImageProcessor

class transformers.LayoutLMv2ImageProcessor

<来源>

( do_resize: bool = True size: Dict = None resample: Resampling = <Resampling.BILINEAR: 2> apply_ocr: bool = True ocr_lang: Optional = None tesseract_config: Optional = '' **kwargs )

参数

  • do_resize (bool, 可选, 默认为 True) — 是否将图像的 (height, width) 尺寸调整为 (size["height"], size["width"])。可以被 preprocess 中的 do_resize 覆盖。
  • size (Dict[str, int] 可选, 默认为 {"height" -- 224, "width": 224}): 调整大小后的图像尺寸。可以被 preprocess 中的 size 覆盖。
  • resample (PILImageResampling, 可选, 默认为 Resampling.BILINEAR) — 用于调整图像大小时使用的重采样滤波器。可以被 preprocess 方法中的 resample 参数覆盖。
  • apply_ocr (bool, 可选, 默认为 True) — 是否应用 Tesseract OCR 引擎以获取单词 + 规范化边界框。可以被 preprocess 中的 apply_ocr 覆盖。
  • ocr_lang (str, 可选) — 由其 ISO 代码指定的语言,用于 Tesseract OCR 引擎。默认情况下使用英语。可以被 preprocess 中的 ocr_lang 覆盖。
  • tesseract_config (str, 可选, 默认为 "") — 转发到调用 Tesseract 时 config 参数的任何额外自定义配置标志。例如: ‘—psm 6’。可以被 preprocess 中的 tesseract_config 覆盖。

构建一个 LayoutLMv2 图像处理器。

preprocess

<来源>

( images: Union do_resize: bool = None size: Dict = None resample: Resampling = 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) — 要预处理的图像。
  • do_resize (bool, 可选, 默认为 self.do_resize) — 是否调整图像大小。
  • size (Dict[str, int], 可选, 默认为 self.size) — 调整大小后输出图像的期望尺寸。
  • resample (PILImageResampling, 可选, 默认为 self.resample) — 用于调整图像大小时使用的重采样滤波器。可以是枚举 PIL.Image 重采样滤波器之一。仅在 do_resize 设置为 True 时有效。
  • apply_ocr (bool, 可选, 默认为 self.apply_ocr) — 是否应用 Tesseract OCR 引擎以获取单词 + 规范化边界框。
  • ocr_lang (str, 可选, 默认为 self.ocr_lang) — 由其 ISO 代码指定的语言,用于 Tesseract OCR 引擎。默认情况下使用英语。
  • tesseract_config (str, 可选, 默认为 self.tesseract_config) — 转发到调用 Tesseract 时 config 参数的任何额外自定义配置标志。
  • return_tensors (strTensorType, 可选) — 要返回的张量类型。可以是以下之一:
  • 未设置: 返回一个 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 (ChannelDimensionstr, 可选, 默认为 ChannelDimension.FIRST) — 输出图像的通道维度格式。可以是以下之一:
  • ChannelDimension.FIRST: 图像格式为 (num_channels, height, width)。
  • ChannelDimension.LAST: 图像格式为 (height, width, num_channels)。

预处理图像或一批图像。

LayoutLMv2Tokenizer

class transformers.LayoutLMv2Tokenizer

<来源>

( vocab_file do_lower_case = True do_basic_tokenize = True never_split = None unk_token = '[UNK]' sep_token = '[SEP]' pad_token = '[PAD]' cls_token = '[CLS]' 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 = -100 only_label_first_subword = True tokenize_chinese_chars = True strip_accents = None model_max_length: int = 512 additional_special_tokens: Optional = None **kwargs )

构建一个 LayoutLMv2 分词器。基于 WordPiece。LayoutLMv2Tokenizer 可用于将单词、单词级边界框和可选单词标签转换为标记级的 input_idsattention_masktoken_type_idsbbox 和可选的 labels(用于标记分类)。

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

LayoutLMv2Tokenizer 运行端到端的分词:标点符号拆分和 wordpiece。它还将单词级边界框转换为标记级边界框。

__call__

< source >

( 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 ) → export const metadata = 'undefined';BatchEncoding

参数

  • textstrList[str]List[List[str]])— 要编码的序列或批次序列。每个序列可以是一个字符串,一个字符串列表(单个示例的单词或一批示例的问题)或一个字符串列表的列表(单词批次)。
  • text_pairList[str]List[List[str]])— 要编码的序列或批次序列。每个序列应该是一个字符串列表(预分词的字符串)。
  • boxesList[List[int]]List[List[List[int]]])— 单词级边界框。每个边界框应该被归一化为 0-1000 的比例。
  • word_labelsList[int]List[List[int]]可选)— 单词级整数标签(用于标记分类任务,如 FUNSD、CORD)。
  • add_special_tokensbool可选,默认为 True)— 是否使用相对于其模型的特殊标记对序列进行编码。
  • paddingboolstr 或 PaddingStrategy,可选,默认为 False)— 激活和控制填充。接受以下值:
  • True'longest':填充到批次中最长的序列(如果只提供单个序列,则不进行填充)。
  • 'max_length':填充到指定的最大长度(使用参数 max_length)或模型的最大可接受输入长度(如果未提供该参数)。
  • False'do_not_pad'(默认):不进行填充(即,可以输出具有不同长度序列的批次)。
  • truncationboolstr 或 TruncationStrategy,可选,默认为 False)— 激活和控制截断。接受以下值:
  • True'longest_first':截断到指定的最大长度(使用参数 max_length)或模型的最大可接受输入长度(如果未提供该参数)。这将逐标记截断,如果提供了一对序列(或一批对序列),则会从较长序列中删除一个标记。
  • 'only_first':截断到指定的最大长度(使用参数 max_length)或模型的最大可接受输入长度(如果未提供该参数)。如果提供了一对序列(或一批对序列),则只会截断第一个序列。
  • 'only_second':截断到指定的最大长度(使用参数 max_length)或模型的最大可接受输入长度(如果未提供该参数)。如果提供了一对序列(或一批对序列),则只会截断第二个序列。
  • False'do_not_truncate'(默认):不进行截断(即,可以输出具有大于模型最大可接受输入大小的序列长度的批次)。
  • max_lengthint可选)— 控制截断/填充参数使用的最大长度。
    如果未设置或设置为None,则将使用预定义的模型最大长度,如果截断/填充参数之一需要最大长度。如果模型没有特定的最大输入长度(如 XLNet),则截断/填充到最大长度将被停用。
  • strideint可选,默认为 0)— 如果与max_length一起设置为一个数字,则当return_overflowing_tokens=True时返回的溢出令牌将包含截断序列末尾的一些令牌,以提供截断和溢出序列之间的一些重叠。此参数的值定义重叠令牌的数量。
  • pad_to_multiple_ofint可选)— 如果设置,将填充序列到提供的值的倍数。这对于在具有计算能力>= 7.5(Volta)的 NVIDIA 硬件上启用张量核心特别有用。
  • return_tensorsstr或 TensorType,可选)— 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:
  • 'tf':返回 TensorFlow tf.constant对象。
  • 'pt':返回 PyTorch torch.Tensor对象。
  • 'np':返回 Numpy np.ndarray对象。
  • return_token_type_idsbool可选)— 是否返回令牌类型 ID。如果保持默认设置,将根据特定分词器的默认值返回令牌类型 ID,由return_outputs属性定义。
    令牌类型 ID 是什么?
  • return_attention_maskbool可选)— 是否返回注意力蒙版。如果保持默认设置,将根据特定分词器的默认值返回注意力蒙版,由return_outputs属性定义。
    注意力蒙版是什么?
  • return_overflowing_tokensbool可选,默认为False)— 是否返回溢出的令牌序列。如果提供了一对输入 ID 序列(或一批对)并且truncation_strategy = longest_firstTrue,则会引发错误,而不是返回溢出的令牌。
  • return_special_tokens_maskbool可选,默认为False)— 是否返回特殊令牌蒙版信息。
  • return_offsets_mappingbool可选,默认为False)— 是否返回每个令牌的(char_start, char_end)
    这仅适用于继承自 PreTrainedTokenizerFast 的快速分词器,如果使用 Python 的分词器,此方法将引发NotImplementedError
  • return_lengthbool可选,默认为False)— 是否返回编码输入的长度。
  • verbosebool可选,默认为True)— 是否打印更多信息和警告。**kwargs — 传递给self.tokenize()方法

返回

BatchEncoding

具有以下字段的 BatchEncoding:

  • input_ids — 要馈送到模型的令牌 ID 列表。
    输入 ID 是什么?
  • bbox — 要馈送到模型的边界框列表。
  • token_type_ids — 要馈送到模型的令牌类型 ID 列表(当return_token_type_ids=True或*token_type_ids*在self.model_input_names中时)。
    令牌类型 ID 是什么?
  • attention_mask — 指定哪些令牌应该被模型关注的索引列表(当return_attention_mask=True或*attention_mask*在self.model_input_names中时)。
    注意力蒙版是什么?
  • labels — 要馈送到模型的标签列表(当指定word_labels时)。
  • 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=Truereturn_special_tokens_mask=True时)。
  • length — 输入的长度(当return_length=True时)。

对一个或多个序列或一个或多个序列对进行标记化和为模型准备,具有单词级别标准化边界框和可选标签。

save_vocabulary

<来源>

( save_directory: str filename_prefix: Optional = None )

LayoutLMv2TokenizerFast

class transformers.LayoutLMv2TokenizerFast

<来源>

( vocab_file = None tokenizer_file = None do_lower_case = True unk_token = '[UNK]' sep_token = '[SEP]' pad_token = '[PAD]' cls_token = '[CLS]' 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 = -100 only_label_first_subword = True tokenize_chinese_chars = True strip_accents = None **kwargs )

参数

  • vocab_file (str) — 包含词汇表的文件。
  • do_lower_case (bool, optional, defaults to True) — 在标记化时是否将输入转换为小写。
  • unk_token (str, optional, defaults to "[UNK]") — 未知标记。词汇表中不存在的标记无法转换为 ID,而是设置为此标记。
  • sep_token (str, optional, defaults to "[SEP]") — 分隔符标记,在从多个序列构建序列时使用,例如用于序列分类的两个序列或用于文本和问题的问题回答。它也用作使用特殊标记构建的序列的最后一个标记。
  • pad_token (str, optional, defaults to "[PAD]") — 用于填充的标记,例如在批处理不同长度的序列时使用。
  • cls_token (str, optional, defaults to "[CLS]") — 在进行序列分类(对整个序列而不是每个标记进行分类)时使用的分类器标记。当使用特殊标记构建序列时,它是序列的第一个标记。
  • mask_token (str, optional, defaults to "[MASK]") — 用于屏蔽值的标记。在使用掩码语言建模训练此模型时使用的标记。这是模型将尝试预测的标记。
  • cls_token_box (List[int], optional, defaults to [0, 0, 0, 0]) — 用于特殊[CLS]标记的边界框。
  • sep_token_box (List[int], optional, defaults to [1000, 1000, 1000, 1000]) — 用于特殊[SEP]标记的边界框。
  • pad_token_box (List[int], optional, defaults to [0, 0, 0, 0]) — 用于特殊[PAD]标记的边界框。
  • pad_token_label (int, optional, defaults to -100) — 用于填充标记的标签。默认为-100,这是 PyTorch 的 CrossEntropyLoss 的ignore_index
  • only_label_first_subword (bool, optional, defaults to True) — 是否仅标记第一个子词,如果提供了单词标签。
  • tokenize_chinese_chars (bool, optional, defaults to True) — 是否标记化中文字符。这可能应该在日语中停用(参见此问题)。
  • strip_accents (bool, optional) — 是否去除所有重音符号。如果未指定此选项,则将由lowercase的值确定(与原始 LayoutLMv2 中的情况相同)。

构建一个“快速”LayoutLMv2 分词器(由 HuggingFace 的tokenizers库支持)。基于 WordPiece。

此分词器继承自 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 ) → export const metadata = 'undefined';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]], optional) — 单词级别的整数标签(用于诸如 FUNSD、CORD 等标记分类任务)。
  • add_special_tokens (bool, optional, 默认为True) — 是否使用相对于其模型的特殊标记对序列进行编码。
  • padding (bool, str 或 PaddingStrategy, optional, 默认为False) — 激活和控制填充。接受以下值:
  • True'longest': 填充到批次中最长的序列(如果只提供单个序列,则不填充)。
  • 'max_length': 填充到由参数max_length指定的最大长度,或者如果未提供该参数,则填充到模型的最大可接受输入长度。
  • False'do_not_pad'(默认): 不填充(即,可以输出具有不同长度的序列的批次)。
  • truncation (bool, str 或 TruncationStrategy, optional, 默认为False) — 激活和控制截断。接受以下值:
  • True'longest_first': 截断到由参数max_length指定的最大长度,或者如果未提供该参数,则截断到模型的最大可接受输入长度。这将逐标记截断,如果提供了一对序列(或一批序列),则从较长序列中删除一个标记。
  • 'only_first': 截断到由参数max_length指定的最大长度,或者如果未提供该参数,则截断到模型的最大可接受输入长度。如果提供了一对序列(或一批序列),则仅截断第一个序列。
  • 'only_second': 截断到由参数max_length指定的最大长度,或者如果未提供该参数,则截断到模型的最大可接受输入长度。如果提供了一对序列(或一批序列),则仅截断第二个序列。
  • False'do_not_truncate'(默认): 不截断(即,可以输出长度大于模型最大可接受输入大小的批次)。
  • max_length (int, optional) — 控制截断/填充参数使用的最大长度。
    如果未设置或设置为None,则如果截断/填充参数中的一个需要最大长度,则将使用预定义的模型最大长度。如果模型没有特定的最大输入长度(如 XLNet),则将禁用截断/填充到最大长度。
  • stride (int, optional, 默认为 0) — 如果设置为一个数字,并且与max_length一起使用,当return_overflowing_tokens=True时返回的溢出标记将包含截断序列末尾的一些标记,以提供截断和溢出序列之间的一些重叠。此参数的值定义了重叠标记的数量。
  • pad_to_multiple_of (int, optional) — 如果设置,将填充序列到提供的值的倍数。这对于在具有计算能力>= 7.5(Volta)的 NVIDIA 硬件上启用 Tensor Cores 特别有用。
  • return_tensorsstr或 TensorType,可选)— 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:
  • 'tf':返回 TensorFlow tf.constant 对象。
  • 'pt':返回 PyTorch torch.Tensor 对象。
  • 'np':返回 Numpy np.ndarray 对象。
  • return_token_type_idsbool可选)— 是否返回令牌类型 ID。如果保持默认设置,将根据特定分词器的默认设置返回令牌类型 ID,由return_outputs属性定义。
    什么是令牌类型 ID?
  • return_attention_maskbool可选)— 是否返回注意力掩码。如果保持默认设置,将根据特定分词器的默认设置返回注意力掩码,由return_outputs属性定义。
    什么是注意力掩码?
  • return_overflowing_tokensbool可选,默认为False)— 是否返回溢出的令牌序列。如果提供一对输入 id 序列(或一批对)并且truncation_strategy = longest_firstTrue,则会引发错误,而不是返回溢出的令牌。
  • return_special_tokens_maskbool可选,默认为False)— 是否返回特殊令牌掩码信息。
  • return_offsets_mappingbool可选,默认为False)— 是否返回每个令牌的(char_start, char_end)
    这仅适用于继承自 PreTrainedTokenizerFast 的快速分词器,如果使用 Python 的分词器,此方法将引发NotImplementedError
  • return_lengthbool可选,默认为False)— 是否返回编码输入的长度。
  • verbosebool可选,默认为True)— 是否打印更多信息和警告。**kwargs — 传递给self.tokenize()方法

返回

BatchEncoding

一个带有以下字段的 BatchEncoding:

  • input_ids — 要提供给模型的令牌 id 列表。
    什么是输入 ID?
  • bbox — 要提供给模型的边界框列表。
  • token_type_ids — 要提供给模型的令牌类型 id 列表(当return_token_type_ids=True或者self.model_input_names中包含*token_type_ids*时)。
    什么是令牌类型 ID?
  • attention_mask — 指定哪些令牌应该被模型关注的索引列表(当return_attention_mask=True或者self.model_input_names中包含*attention_mask*时)。
    什么是注意力掩码?
  • labels — 要提供给模型的标签列表(当指定word_labels时)。
  • 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时)。

对一个或多个序列或一个或多个序列对进行分词和准备模型,其中包含单词级别的归一化边界框和可选标签。


Transformers 4.37 中文文档(八十八)(5)https://developer.aliyun.com/article/1563223

相关文章
|
3月前
|
自然语言处理 PyTorch 算法框架/工具
Transformers 4.37 中文文档(八十三)(5)
Transformers 4.37 中文文档(八十三)
22 4
|
3月前
|
存储 PyTorch 算法框架/工具
Transformers 4.37 中文文档(八十三)(2)
Transformers 4.37 中文文档(八十三)
22 3
|
3月前
|
存储 自然语言处理 PyTorch
Transformers 4.37 中文文档(八十三)(1)
Transformers 4.37 中文文档(八十三)
33 3
|
3月前
|
存储 PyTorch 算法框架/工具
Transformers 4.37 中文文档(八十七)(5)
Transformers 4.37 中文文档(八十七)
22 3
|
3月前
|
文字识别 PyTorch 算法框架/工具
Transformers 4.37 中文文档(八十八)(5)
Transformers 4.37 中文文档(八十八)
18 2
|
3月前
|
PyTorch TensorFlow 算法框架/工具
Transformers 4.37 中文文档(八十八)(2)
Transformers 4.37 中文文档(八十八)
21 2
|
3月前
|
自然语言处理 PyTorch 算法框架/工具
Transformers 4.37 中文文档(八十八)(1)
Transformers 4.37 中文文档(八十八)
28 2
|
3月前
|
PyTorch TensorFlow 算法框架/工具
Transformers 4.37 中文文档(八十八)(3)
Transformers 4.37 中文文档(八十八)
25 2
|
3月前
|
存储 PyTorch 测试技术
Transformers 4.37 中文文档(八十三)(4)
Transformers 4.37 中文文档(八十三)
26 2
|
3月前
|
存储 编解码 PyTorch
Transformers 4.37 中文文档(八十三)(3)
Transformers 4.37 中文文档(八十三)
22 2