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_ids
、attention_mask
、token_type_ids
、bbox
。可选地,可以向处理器提供单词标签,这些标签将转换为标记级别的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_size
(int
,可选,默认为 30522)—LayoutLMv2 模型的词汇量。定义了在调用 LayoutLMv2Model 或TFLayoutLMv2Model
时可以表示的不同标记数量。hidden_size
(int
,可选,默认为 768)—编码器层和池化器层的维度。num_hidden_layers
(int
,可选,默认为 12)—变换器编码器中的隐藏层数量。num_attention_heads
(int
,可选,默认为 12)—变换器编码器中每个注意力层的注意力头数量。intermediate_size
(int
,可选,默认为 3072)—变换器编码器中“中间”(即前馈)层的维度。hidden_act
(str
或function
,可选,默认为"gelu"
)—编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"
、"relu"
、"selu"
和"gelu_new"
。hidden_dropout_prob
(float
,可选,默认为 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
(str
或TensorType
, 可选) — 要返回的张量类型。可以是以下之一:
- 未设置: 返回一个
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
, 可选, 默认为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_ids
、attention_mask
、token_type_ids
、bbox
和可选的 labels
(用于标记分类)。
这个分词器继承自 PreTrainedTokenizer,其中包含大部分主要方法。用户应参考这个超类以获取有关这些方法的更多信息。
LayoutLMv2Tokenizer 运行端到端的分词:标点符号拆分和 wordpiece。它还将单词级边界框转换为标记级边界框。
__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]]
,可选)— 单词级整数标签(用于标记分类任务,如 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 硬件上启用张量核心特别有用。return_tensors
(str
或 TensorType,可选)— 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:
'tf'
:返回 TensorFlowtf.constant
对象。'pt'
:返回 PyTorchtorch.Tensor
对象。'np'
:返回 Numpynp.ndarray
对象。
return_token_type_ids
(bool
,可选)— 是否返回令牌类型 ID。如果保持默认设置,将根据特定分词器的默认值返回令牌类型 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
具有以下字段的 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=True
和return_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 toTrue
) — 在标记化时是否将输入转换为小写。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 toTrue
) — 是否仅标记第一个子词,如果提供了单词标签。tokenize_chinese_chars
(bool
, optional, defaults toTrue
) — 是否标记化中文字符。这可能应该在日语中停用(参见此问题)。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_tensors
(str
或 TensorType,可选)— 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:
'tf'
:返回 TensorFlowtf.constant
对象。'pt'
:返回 PyTorchtorch.Tensor
对象。'np'
:返回 Numpynp.ndarray
对象。
return_token_type_ids
(bool
,可选)— 是否返回令牌类型 ID。如果保持默认设置,将根据特定分词器的默认设置返回令牌类型 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
一个带有以下字段的 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