# 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](https://huggingface.co/papers/2104.08836) に記載されています。これは、53言語で学習された [LayoutLMv2 モデル](https://huggingface.co/papers/2012.14740) の多言語拡張版です。

論文の抄録は以下の通りです。

*テキスト、レイアウト、画像を用いたマルチモーダル事前学習は、視覚的に豊かな文書理解タスクにおいて最近SOTAの性能を達成しており、異なるモダリティ間の共同学習の大きな可能性を示しています。本論文では、視覚的に豊かな文書理解における言語の壁を越えることを目指した、多言語文書理解のためのマルチモーダル事前学習モデルLayoutXLMを提案します。LayoutXLMを正確に評価するために、7言語（中国語、日本語、スペイン語、フランス語、イタリア語、ドイツ語、ポルトガル語）のフォーム理解サンプルを含む、多言語フォーム理解ベンチマークデータセットXFUNも紹介します。各言語について、キーと値のペアが手動でラベル付けされています。実験結果により、LayoutXLMモデルはXFUNデータセットにおいて、既存のSOTAのクロスリンガル事前学習モデルを大きく上回ることが示されました。*

このモデルは [nielsr](https://huggingface.co/nielsr) によって提供されました。元のコードは [こちら](https://github.com/microsoft/unilm) で確認できます。

## 使用のコツと例

LayoutXLMの重みをLayoutLMv2モデルに直接読み込むことができます。

```python
from transformers import LayoutLMv2Model

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

LayoutXLMには、[LayoutXLMTokenizer](/docs/transformers/main/ja/model_doc/layoutxlm#transformers.LayoutXLMTokenizer)/[LayoutXLMTokenizerFast](/docs/transformers/main/ja/model_doc/layoutxlm#transformers.LayoutXLMTokenizer)をベースにした独自のトークナイザーがあります。以下のように初期化できます:

```python
from transformers import LayoutXLMTokenizer

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

LayoutLMv2と同様に、[LayoutXLMProcessor](/docs/transformers/main/ja/model_doc/layoutxlm#transformers.LayoutXLMProcessor)（内部では[LayoutLMv2ImageProcessor](/docs/transformers/main/ja/model_doc/layoutlmv2#transformers.LayoutLMv2ImageProcessor)と[LayoutXLMTokenizer](/docs/transformers/main/ja/model_doc/layoutxlm#transformers.LayoutXLMTokenizer)/[LayoutXLMTokenizerFast](/docs/transformers/main/ja/model_doc/layoutxlm#transformers.LayoutXLMTokenizer)を順に適用します）を使用して、モデル用のすべてのデータを準備できます。

LayoutXLMのアーキテクチャはLayoutLMv2と同等であるため、すべてのヒント、コード例、ノートブックについては、[LayoutLMv2のドキュメントページ](layoutlmv2)を参照してください。

## LayoutXLMConfig[[transformers.LayoutXLMConfig]]

#### transformers.LayoutXLMConfig[[transformers.LayoutXLMConfig]]

```python
transformers.LayoutXLMConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, vocab_size: int = 30522, hidden_size: int = 768, num_hidden_layers: int = 12, num_attention_heads: int = 12, intermediate_size: int = 3072, hidden_act: str = 'gelu', hidden_dropout_prob: float | int = 0.1, attention_probs_dropout_prob: float | int = 0.1, max_position_embeddings: int = 512, type_vocab_size: int = 2, initializer_range: float = 0.02, layer_norm_eps: float = 1e-12, pad_token_id: int | None = 0, max_2d_position_embeddings: int = 1024, max_rel_pos: int = 128, rel_pos_bins: int = 32, fast_qkv: bool = True, max_rel_2d_pos: int = 256, rel_2d_pos_bins: int = 64, convert_sync_batchnorm: bool = True, image_feature_pool_shape: list[int] | tuple[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 | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/layoutxlm/configuration_layoutxlm.py#L35)

**パラメータ:**

vocab_size (`int`、*任意*、デフォルトは`30522`) : モデルの語彙サイズ。`input_ids`で表現できるトークンの種類数を定義します。

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`) : embeddings、encoder、pooler 内のすべての全結合層における dropout 確率。

attention_probs_dropout_prob (`Union[float, int]`、*任意*、デフォルトは`0.1`) : 注意確率のドロップアウト率。

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`) : layer normalization レイヤーで使用する epsilon。

pad_token_id (`int`, *任意*, デフォルトは `0`) : 語彙内でパディングに使用されるトークン ID。

max_2d_position_embeddings (`int`、*optional*、デフォルトは 1024) : 2D 位置埋め込みが使用される可能性のある最大値です。念のため、通常は大きな値（例: 1024）に設定します。

max_rel_pos (`int`、*optional*、デフォルトは 128) : セルフアテンション機構で使用される相対位置の最大数。

rel_pos_bins (`int`、*任意*、デフォルトは 32) : セルフアテンション機構で使用する相対位置ビンの数。

fast_qkv (`bool`、*任意*、デフォルトは`True`) : セルフアテンション層のクエリ、キー、バリューに単一の行列を使用するかどうか。

max_rel_2d_pos (`int`、*optional*、デフォルトは 256) : セルフアテンション機構における相対 2D 位置の最大数。

rel_2d_pos_bins (`int`、*optional*、デフォルトは 64) : セルフアテンション機構における 2 次元相対位置のビン数です。

convert_sync_batchnorm (`bool`、*任意*、デフォルトは `True`) : バッチ正規化レイヤーを同期バッチ正規化レイヤーに変換するかどうかを指定します。

image_feature_pool_shape (`list[int]`、*optional*、デフォルトは`[7, 7, 256]`) : 平均プーリングされた特徴マップの形状。

coordinate_size (`int`、*任意*、デフォルトは 128) : 座標埋め込みの次元数。

shape_size (`int`、*optional*、デフォルトは 128) : 幅と高さの埋め込みの次元数。

has_relative_attention_bias (`bool`、*任意*、デフォルトは`True`) : セルフアテンション機構で相対アテンションバイアスを使用するかどうか。

has_spatial_attention_bias (`bool`、*任意*、デフォルトは`True`) : セルフアテンション機構で空間アテンションバイアスを使用するかどうか。

has_visual_segment_embedding (`bool`、*任意*、デフォルトは`False`) : 視覚セグメント埋め込みを追加するかどうか。

detectron2_config_args (`dict`, *任意*) : Detectron2 のビジュアルバックボーンの設定引数を含む辞書です。デフォルト値の詳細については、[このファイル](https://github.com/microsoft/unilm/blob/master/layoutlmft/layoutlmft/models/layoutxlm/detectron2_config.py)を参照してください。

これは [microsoft/layoutxlm-base](https://huggingface.co/microsoft/layoutxlm-base) と同様の設定をデフォルト値で生成する、LayoutxlmModel の設定を保存するための設定クラスです。指定された引数に基づいて Layoutxlm モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。

設定オブジェクトは [PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) のドキュメントを参照してください。

例:

```python
>>> 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[[transformers.LayoutXLMTokenizer]]

#### transformers.LayoutXLMTokenizer[[transformers.LayoutXLMTokenizer]]

```python
transformers.LayoutXLMTokenizer(vocab: str | list | None = None, bos_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 = -100, only_label_first_subword = True, add_prefix_space = True, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/layoutxlm/tokenization_layoutxlm.py#L140)

**パラメータ:**

vocab (`str`、`dict`または`list`、*任意*) : トークナイザ用の語彙。パス、辞書、または`(token, score)`のタプルのリストとして指定します。

bos_token (`str`、*任意*、デフォルトは `"<s>"`) : 事前学習で使用されたシーケンスの開始トークンです。シーケンス分類器のトークンとして使用できます。    特殊トークンを使用してシーケンスを構築する場合は、シーケンスの開始にこのトークンは使用されません。使用されるのは `cls_token` です。

eos_token (`str`、*任意*、デフォルトは`"</s>"`) : シーケンスの終了トークン。特殊トークンを使用してシーケンスを構築する場合は、シーケンスの終了に使用されるトークンではありません。使用されるトークンは`sep_token`です。

sep_token (`str`、*任意*、デフォルトは `"</s>"`) : 区切りトークンです。複数のシーケンスからシーケンスを構築する際に使用されます。例えば、シーケンス分類では2つのシーケンス、質問応答ではテキストと質問です。また、特殊トークンを用いて構築されたシーケンスの最後のトークンとしても使用されます。

cls_token (`str`、*任意*、デフォルトは `"<s>"`) : シーケンス分類（トークンごとの分類ではなく、シーケンス全体に対する分類）を行う際に使用される分類トークンです。特殊トークンを用いて構築された場合、シーケンスの最初のトークンになります。

unk_token (`str`、*任意*、デフォルトは `"<unk>"`) : 不明トークン。語彙に存在しないトークンは ID に変換できず、代わりにこのトークンが設定されます。

pad_token (`str`、*任意*、デフォルトは `"<pad>"`) : パディングに使用されるトークンです。長さの異なるシーケンスをバッチ処理する場合などに使用します。

mask_token (`str`、*任意*、デフォルトは `"<mask>"`) : 値をマスクするために使用されるトークンです。これは、マスク言語モデリングでこのモデルを訓練する際に使用されるトークンです。モデルが予測しようとするトークンです。

cls_token_box (`list[int]`、*任意*、デフォルトは`[0, 0, 0, 0]`) : 特別な [CLS] トークンに使用するバウンディングボックス。

sep_token_box (`list[int]`、*任意*、デフォルトは`[1000, 1000, 1000, 1000]`) : 特殊トークン [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`) : ワードラベルが提供されている場合、最初のサブワードのみをラベル付けするかどうか。

add_prefix_space (`bool`、*任意*、デフォルトは`True`) : 入力に先頭スペースを追加するかどうか。

additional_special_tokens (`list[str]`、*任意*、デフォルトは `["<s>NOTUSED", "</s>NOTUSED"]`) : トークナイザーで使用される追加の特殊トークン。

「fast」LayoutXLM トークナイザーを構築します（HuggingFaceの*tokenizers*ライブラリをベースにしています）。[RobertaTokenizer](/docs/transformers/main/ja/model_doc/led#transformers.RobertaTokenizer)および[XLNetTokenizer](/docs/transformers/main/ja/model_doc/xlnet#transformers.XLNetTokenizer)を参考にしています。[BPE](https://huggingface.co/docs/tokenizers/python/latest/components.html?highlight=BPE#models)に基づいています。

このトークナイザーは、[TokenizersBackend](/docs/transformers/main/ja/main_classes/tokenizer#transformers.TokenizersBackend) を継承しており、主要なメソッドの大部分がそこに含まれています。これらのメソッドに関する詳細については、このスーパークラスを参照してください。

#### __call__[[transformers.LayoutXLMTokenizer.__call__]]

```python
__call__(text: str | list[str] | list[list[str]], text_pair: list[str] | list[list[str]] | None = None, boxes: list[list[int]] | list[list[list[int]]] | None = None, word_labels: list[int] | list[list[int]] | None = None, add_special_tokens: bool = True, padding: bool | str | transformers.utils.generic.PaddingStrategy = False, truncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy | None = None, max_length: int | None = None, stride: int = 0, pad_to_multiple_of: int | None = None, padding_side: str | None = None, return_tensors: str | transformers.utils.generic.TensorType | None = None, return_token_type_ids: bool | None = None, return_attention_mask: bool | None = 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)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/layoutxlm/tokenization_layoutxlm.py#L413)

**パラメータ:**

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](/docs/transformers/main/ja/internal/file_utils#transformers.utils.PaddingStrategy)、*optional*、デフォルトは`False`) : パディングの有効化と制御を行います。以下の値を受け取ります: - `True`または`'longest'`: バッチ内の最長のシーケンスの長さにパディングします（単一のシーケンスのみが提供された場合は、パディングを行いません）。 - `'max_length'`: 引数`max_length`で指定された最大長、またはその引数が提供されていない場合はモデルが受け入れ可能な最大入力長までパディングします。 - `False`または`'do_not_pad'`（デフォルト）: パディングを行いません（つまり、長さが異なるシーケンスのバッチを出力できます）。

truncation (`bool`、`str` または [TruncationStrategy](/docs/transformers/main/ja/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy)、*optional*、デフォルトは `False`) : トランケーションを有効化し、制御します。以下の値を受け取ります: - `True` または `'longest_first'`: 引数 `max_length` で指定された最大長、またはその引数が指定されていない場合はモデルが許容する最大入力長まで切り詰めます。ペアのシーケンス（またはペアのバッチ）が提供されている場合、ペアの中で最も長いシーケンスからトークン単位で1トークンずつ削除します。 - `'only_first'`: 引数 `max_length` で指定された最大長、またはその引数が指定されていない場合はモデルが許容する最大入力長まで切り詰めます。ペアのシーケンス（またはペアのバッチ）が提供されている場合、ペアの最初のシーケンスのみを切り詰めます。 - `'only_second'`: 引数 `max_length` で指定された最大長、またはその引数が指定されていない場合はモデルが許容する最大入力長まで切り詰めます。ペアのシーケンス（またはペアのバッチ）が提供されている場合、ペアの2番目のシーケンスのみを切り詰めます。 - `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](/docs/transformers/main/ja/internal/file_utils#transformers.TensorType)、*optional*) : 設定されている場合、Python の整数のリストではなくテンソルを返します。指定可能な値は以下の通りです。 - `'pt'`: PyTorch の `torch.Tensor` オブジェクトを返します。 - `'np'`: Numpy の `np.ndarray` オブジェクトを返します。

return_token_type_ids (`bool`、*省略可*) : トークンタイプIDを返すかどうか。デフォルトのままにすると、`return_outputs` 属性で定義される特定のトークナイザーのデフォルトに従って、トークンタイプIDを返します。  [トークンタイプIDとは?](../glossary#token-type-ids)

return_attention_mask (`bool`、*省略可*) : アテンションマスクを返すかどうか。デフォルトのままにすると、`return_outputs` 属性で定義される特定のトークナイザーのデフォルトに従って、アテンションマスクを返します。  [アテンションマスクとは?](../glossary#attention-mask)

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](/docs/transformers/main/ja/main_classes/tokenizer#transformers.TokenizersBackend)を継承する fast tokenizer のみで利用可能であり、Python の tokenizer を使用している場合、このメソッドは`NotImplementedError`を送出します。

return_length (`bool`、*任意*、デフォルトは`False`) : エンコードされた入力の長さを返すかどうか。

verbose (`bool`、*任意*、デフォルトは `True`) : 詳細な情報や警告を表示するかどうか。

- ****kwargs** : `self.tokenize()` メソッドに渡されます

**戻り値:** [BatchEncoding](/docs/transformers/main/ja/main_classes/tokenizer#transformers.BatchEncoding)

以下のフィールドを持つ[BatchEncoding](/docs/transformers/main/ja/main_classes/tokenizer#transformers.BatchEncoding):

- **input_ids** -- モデルに渡すトークンIDのリスト。

  [入力IDとは何ですか？](../glossary#input-ids)

- **bbox** -- モデルに渡すバウンディングボックスのリスト。

- **token_type_ids** -- モデルに渡すトークンタイプIDのリスト（`return_token_type_ids=True`の場合、または`self.model_input_names`に*"token_type_ids"*が含まれる場合）。

  [トークンタイプIDとは?](../glossary#token-type-ids)

- **attention_mask** -- モデルがどのトークンに注意すべきかを指定するインデックスのリスト（`return_attention_mask=True` の場合、または `self.model_input_names` に *"attention_mask"* が含まれている場合）。

  [アテンションマスクとは?](../glossary#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`の場合）。

単語レベルで正規化されたバウンディングボックスおよび任意のラベルを伴う、1つ以上のシーケンスまたは1つ以上のシーケンスのペアをトークナイズし、モデル用に準備するための主要なメソッドです。

#### build_inputs_with_special_tokens[[transformers.LayoutXLMTokenizer.build_inputs_with_special_tokens]]

```python
build_inputs_with_special_tokens(token_ids_0: list, token_ids_1: list[int] | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/layoutxlm/tokenization_layoutxlm.py#L892)

**パラメータ:**

token_ids_0 (`list[int]`) : 特殊トークンが追加されるIDのリスト。

token_ids_1 (`list[int]`, *任意*) : シーケンスペア用の任意の第2のIDリスト。

**戻り値:** `list[int]`

適切な特殊トークンを含む[入力 ID](../glossary#input-ids)のリスト。

シーケンス分類タスクにおいて、シーケンスまたはシーケンスのペアからモデルの入力を構築するために、特殊トークンを追加して連結します。XLM-RoBERTa のシーケンスは、次の形式を持ちます:

- 単一シーケンス: `<s> X </s>`
- シーケンスのペア: `<s> A </s></s> B </s>`

#### get_special_tokens_mask[[transformers.LayoutXLMTokenizer.get_special_tokens_mask]]

```python
get_special_tokens_mask(token_ids_0: list[int], token_ids_1: list[int] | None = None, already_has_special_tokens: bool = False)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_base.py#L1338)

**パラメータ:**

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[[transformers.LayoutXLMTokenizer.create_token_type_ids_from_sequences]]

```python
create_token_type_ids_from_sequences(token_ids_0: list, token_ids_1: list[int] | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/layoutxlm/tokenization_layoutxlm.py#L918)

**パラメータ:**

token_ids_0 (`list[int]`) : ID のリスト。

token_ids_1 (`list[int]`, *任意*) : シーケンスペア用の任意の第2のIDリスト。

**戻り値:** `list[int]`

ゼロのリスト。

シーケンスペア分類タスクで使用するために、渡された2つのシーケンスからマスクを作成します。XLM-RoBERTaはトークンタイプIDを使用しないため、ゼロのリストが返されます。

#### save_vocabulary[[transformers.LayoutXLMTokenizer.save_vocabulary]]

```python
save_vocabulary(save_directory: str, filename_prefix: str | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/tokenization_utils_tokenizers.py#L546)

## LayoutXLMProcessor[[transformers.LayoutXLMProcessor]]

#### transformers.LayoutXLMProcessor[[transformers.LayoutXLMProcessor]]

```python
transformers.LayoutXLMProcessor(image_processor = None, tokenizer = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/layoutxlm/processing_layoutxlm.py#L24)

**パラメータ:**

image_processor (`LayoutLMv2ImageProcessor`) : 画像プロセッサは必須の入力です。

tokenizer (`LayoutXLMTokenizer`) : トークナイザーは必須の入力です。

画像プロセッサとトークナイザーを単一のプロセッサにラップするLayoutXLMProcessorを構築します。

[LayoutXLMProcessor](/docs/transformers/main/ja/model_doc/layoutxlm#transformers.LayoutXLMProcessor) は、[LayoutLMv2ImageProcessor](/docs/transformers/main/ja/model_doc/layoutlmv2#transformers.LayoutLMv2ImageProcessor) と [LayoutXLMTokenizer](/docs/transformers/main/ja/model_doc/layoutxlm#transformers.LayoutXLMTokenizer) のすべての機能を提供します。詳細については、[~LayoutLMv2ImageProcessor](/docs/transformers/main/ja/model_doc/layoutlmv2#transformers.LayoutLMv2ImageProcessor) および [~LayoutXLMTokenizer](/docs/transformers/main/ja/model_doc/layoutxlm#transformers.LayoutXLMTokenizer) を参照してください。

#### __call__[[transformers.LayoutXLMProcessor.__call__]]

```python
__call__(images, text: str | list[str] | list[list[str]] = None, text_pair: list[str] | list[list[str]] | None = None, boxes: list[list[int]] | list[list[list[int]]] | None = None, word_labels: list[int] | list[list[int]] | None = None, add_special_tokens: bool = True, padding: bool | str | transformers.utils.generic.PaddingStrategy = False, truncation: bool | str | transformers.tokenization_utils_base.TruncationStrategy = None, max_length: int | None = None, stride: int = 0, pad_to_multiple_of: int | None = None, return_token_type_ids: bool | None = None, return_attention_mask: bool | None = None, return_overflowing_tokens: bool = False, return_special_tokens_mask: bool = False, return_offsets_mapping: bool = False, return_length: bool = False, verbose: bool = True, return_tensors: str | transformers.utils.generic.TensorType | None = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/layoutxlm/processing_layoutxlm.py#L28)

**パラメータ:**

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]`、*省略可能*) : エンコード対象の任意の第2のシーケンスです。これは、文字列、文字列のリスト（`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 などのトークン分類タスク用）。

add_special_tokens (`bool`、*任意*、デフォルトは`True`) : シーケンスをエンコードする際に特殊トークンを追加するかどうか。これは、入力 ID に自動的に追加されるトークンを定義する基盤となる`PretrainedTokenizerBase.build_inputs_with_special_tokens`関数を使用します。`bos`または`eos`トークンを自動的に追加したい場合に便利です。

padding (bool, str or [PaddingStrategy](/docs/transformers/main/ja/internal/file_utils#transformers.utils.PaddingStrategy), *optional*, デフォルトは `False`) : パディングの有効化と制御を行います。以下の値を受け取ります:  - `True` または `'longest'`: バッチ内の最長のシーケンスの長さにパディングします（単一のシーケンスのみが提供された場合は、パディングを行いません）。 - `'max_length'`: 引数 `max_length` で指定された最大長、またはその引数が提供されていない場合はモデルが受け入れ可能な最大入力長までパディングします。 - `False` または `'do_not_pad'`（デフォルト）: パディングを行いません（つまり、長さが異なるシーケンスを含むバッチを出力できます）。

truncation (bool, str or [TruncationStrategy](/docs/transformers/main/ja/internal/tokenization_utils#transformers.tokenization_utils_base.TruncationStrategy), *optional*) : トランケーションを有効化し、制御します。以下の値を受け取ります:  - `True` または `'longest_first'`: 引数 `max_length` で指定された最大長、またはその引数が指定されていない場合はモデルが許容する最大入力長まで切り詰めます。ペアのシーケンス（またはペアのバッチ）が提供されている場合、ペアの中で最も長いシーケンスからトークン単位で1トークンずつ削除して切り詰めます。 - `'only_first'`: 引数 `max_length` で指定された最大長、またはその引数が指定されていない場合はモデルが許容する最大入力長まで切り詰めます。ペアのシーケンス（またはペアのバッチ）が提供されている場合、ペアの最初のシーケンスのみを切り詰めます。 - `'only_second'`: 引数 `max_length` で指定された最大長、またはその引数が指定されていない場合はモデルが許容する最大入力長まで切り詰めます。ペアのシーケンス（またはペアのバッチ）が提供されている場合、ペアの2番目のシーケンスのみを切り詰めます。 - `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*) : 設定すると、シーケンスを指定された値の倍数にパディングします。`padding` が有効化されている必要があります。これは、計算能力 `>= 7.5` (Volta) を備えた NVIDIA ハードウェア上で Tensor Cores を使用できるようにするため、特に有用です。

return_token_type_ids (`bool`、*省略可*) : トークンタイプIDを返すかどうか。デフォルトのままにすると、`return_outputs` 属性で定義される特定のトークナイザーのデフォルトに従って、トークンタイプIDを返します。  [トークンタイプIDとは?](../glossary#token-type-ids)

return_attention_mask (`bool`、*省略可*) : アテンションマスクを返すかどうか。デフォルトのままにすると、`return_outputs` 属性で定義される特定のトークナイザーのデフォルトに従って、アテンションマスクを返します。  [アテンションマスクとは?](../glossary#attention-mask)

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](/docs/transformers/main/ja/main_classes/tokenizer#transformers.TokenizersBackend)を継承する fast tokenizer のみで利用可能であり、Python の tokenizer を使用している場合、このメソッドは`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`, *optional*) -- `__call__`/`encode_plus`/`batch_encode_plus` メソッドによって返される、リスト/配列/テンソルの辞書（'input_ids'、'attention_mask' など）。
- **encoding**（`tokenizers.Encoding` または `Sequence[tokenizers.Encoding]`、*任意*）-- トークナイザーが、単語/文字空間からトークン空間へのマッピングなどの追加情報を出力する fast tokenizer の場合、`tokenizers.Encoding` のインスタンス、またはそのリスト（バッチの場合）にこの情報が保持されます。
- **tensor_type** (`Union[None, str, TensorType]`、*省略可*) -- 初期化時に PyTorch/Numpy の Tensor 内の整数リストを変換するために、ここで tensor_type を指定できます。
- **prepend_batch_axis** (`bool`、*任意*、デフォルトは `False`) -- テンソルに変換する際にバッチ軸を追加するかどうかを指定します(`tensor_type` を参照)。パラメータ `tensor_type` が設定されている場合のみこのパラメータが有効で、*それ以外の場合は無効です*。
- **n_sequences** (`int`, *任意*) -- 各エンコーディングが表す入力シーケンスの数（不明な場合は`None`、単一のシーケンスの場合は`1`、シーケンスのペアの場合は`2`）。

