<commit_before><!--* freshness: { owner: 'akhorlin' reviewed: '2021-11-22' } *-->

# テキストタスクの一般的な SavedModel API

このページでは、テキスト関連のタスクに使用する [TF2 SavedModel](../tf2_saved_model.md) が [Reusable SavedModel API](../reusable_saved_models.md) をどのように実装しているかを説明します。（これは、[テキストの共通シグネチャ](../common_signatures/text.md)に置き換わります。[TF1 Hub 形式](../tf1_hub_module)は使用廃止となっています。）

## 概要

**テキストの埋め込み**（テキストの密な表現またはテキスト特徴量ベクトルとも知られています）を計算する API にはいくつかあります。

- *テキスト入力からのテキストの埋め込み*に使用する API は SavedModel によって実装されており、文字列のバッチを埋め込みベクトルのバッチにマッピングします。これは非常に使いやすく、TF Hub の多くのモデルが実装している API ではありますが、TPU でモデルをファインチューニングすることはできません。

- *事前処理された入力によるテキスト埋め込み*に使用する API は、同じタスクを解決しますが、次の 2 つの独立した SavedModel によって実装されます。

    - tf.data 入力パイプライン内で実行し、文字列とその他の可変長データを数値テンソルに変換する*プリプロセッサ*
    - プリプロセッサの結果を受け入れてトレーニング可能な部分の埋め込み計算を実施する*エンコーダ*

    この分割によって、入力がトレーニングループにフィードされる前に、入力を非同期的に事前処理することができます。特に、[TPU](https://www.tensorflow.org/guide/tpu) で実行してファインチューニングを行えるエンコーダを構築することが可能になります。

- *Transformer エンコーダによるテキストの埋め込み*に使用する API は、事前処理された入力からのテキストの埋め込みに使用する API を、BERT とその他の Transformer エンコーダの特定のケースに拡張します。

    - *プリプロセッサ*は、入力テキストの 2 つ以上のセグメントからエンコーダ入力を構築するように拡張されます。
    - *Transformer エンコーダ*は各トークンのコンテキスト認識埋め込みを公開します。

モデルのドキュメントで異なる指定がない限り、各ケースのテキスト入力は UTF-8 エンコード文字列で、通常プレーンテキストです。

API に関係なく、モデルはそれぞれ、さまざまな言語の分野のテキストで、さまざまなタスクを念頭に事前にトレーニングさらえています。そのため、すべてのテキスト埋め込みモデルがあらゆる問題に適しているわけではありません。

<a name="feature-vector"></a>
<a name="text-embeddings-from-text"></a>

## テキスト入力からのテキストの埋め込み

**テキスト入力からのテキストの埋め込み**の SavedModel は、形状 `[batch_size]` の文字列テンソルにある入力のバッチを受け入れ、入力の密な表現（特徴量ベクトル）でそれらを形状 `[batch_size, dim]` の float32 テンソルにマッピングします。

### 使用例

```python<commit_msg>Translate text.md via GitLocalize<commit_after><!--* freshness: { owner: 'akhorlin' reviewed: '2022-05-22' } *-->

# テキストタスクの一般的な SavedModel API

このページでは、テキスト関連のタスクに使用する [TF2 SavedModel](../tf2_saved_model.md) が [Reusable SavedModel API](../reusable_saved_models.md) をどのように実装しているかを説明します。（これは、[テキストの共通シグネチャ](../common_signatures/text.md)に置き換わります。[TF1 Hub 形式](../tf1_hub_module)は使用廃止となっています。）

## 概要

**テキストの埋め込み**（テキストの密な表現またはテキスト特徴量ベクトルとも知られています）を計算する API にはいくつかあります。

- *テキスト入力からのテキストの埋め込み*に使用する API は SavedModel によって実装されており、文字列のバッチを埋め込みベクトルのバッチにマッピングします。これは非常に使いやすく、TF Hub の多くのモデルが実装している API ではありますが、TPU でモデルをファインチューニングすることはできません。

- *事前処理された入力によるテキスト埋め込み*に使用する API は、同じタスクを解決しますが、次の 2 つの独立した SavedModel によって実装されます。

    - tf.data 入力パイプライン内で実行し、文字列とその他の可変長データを数値テンソルに変換する*プリプロセッサ*
    - プリプロセッサの結果を受け入れ、トレーニング可能な部分の埋め込み計算を実施する*エンコーダ*。

    この分割によって、入力がトレーニングループにフィードされる前に、入力を非同期的に事前処理することができます。特に、[TPU](https://www.tensorflow.org/guide/tpu) で実行してファインチューニングを行えるエンコーダを構築することが可能になります。

- *Transformer エンコーダによるテキストの埋め込み*に使用する API は、事前処理された入力からのテキストの埋め込みに使用する API を、BERT とその他の Transformer エンコーダの特定のケースに拡張します。

    - *プリプロセッサ*は、入力テキストの 2 つ以上のセグメントからエンコーダ入力を構築するように拡張されます。
    - *Transformer エンコーダ*は各トークンのコンテキスト認識埋め込みを公開します。

モデルのドキュメントで異なる指定がない限り、各ケースのテキスト入力は UTF-8 エンコード文字列で、通常プレーンテキストです。

API に関係なく、モデルはそれぞれ、さまざまな言語の分野のテキストで、さまざまなタスクを念頭に事前にトレーニングさらえています。そのため、すべてのテキスト埋め込みモデルがあらゆる問題に適しているわけではありません。

<a name="feature-vector"></a>
<a name="text-embeddings-from-text"></a>

## テキスト入力からのテキストの埋め込み

**テキスト入力からのテキストの埋め込み**の SavedModel は、形状 `[batch_size]` の文字列テンソルにある入力のバッチを受け入れ、入力の密な表現（特徴量ベクトル）でそれらを形状 `[batch_size, dim]` の float32 テンソルにマッピングします。

### 使用例

```python
{'fraction_non_alphanumeric': 0.11077389984825493, 'fraction_numerical': 0.01031866464339909, 'mean_word_length': 8.337110481586402, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 13, 'https://': 2, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1680020', 'n_tokens_mistral': 2650, 'n_tokens_neox': 2405, 'n_words': 164}