Path: blob/main/transformers_doc/ja/tensorflow/summarization.ipynb
4542 views
Summarization
要約により、すべての重要な情報をまとめた短いバージョンの文書または記事が作成されます。これは、翻訳と並んで、シーケンス間のタスクとして定式化できるタスクのもう 1 つの例です。要約は次のようになります。
抽出: 文書から最も関連性の高い情報を抽出します。
抽象的: 最も関連性の高い情報を捉えた新しいテキストを生成します。
このガイドでは、次の方法を説明します。
このタスクと互換性のあるすべてのアーキテクチャとチェックポイントを確認するには、タスクページ を確認することをお勧めします。
始める前に、必要なライブラリがすべてインストールされていることを確認してください。
モデルをアップロードしてコミュニティと共有できるように、Hugging Face アカウントにログインすることをお勧めします。プロンプトが表示されたら、トークンを入力してログインします。
Load BillSum dataset
まず、🤗 データセット ライブラリから BillSum データセットの小さいカリフォルニア州請求書サブセットを読み込みます。
train_test_split
メソッドを使用して、データセットをトレイン セットとテスト セットに分割します。
次に、例を見てみましょう。
使用するフィールドが 2 つあります。
text
: モデルへの入力となる請求書のテキスト。summary
: モデルのターゲットとなるtext
の要約版。
Preprocess
次のステップでは、T5 トークナイザーをロードして「text」とsummary
を処理します。
作成する前処理関数は次のことを行う必要があります。
T5 がこれが要約タスクであることを認識できるように、入力の前にプロンプトを付けます。複数の NLP タスクが可能な一部のモデルでは、特定のタスクのプロンプトが必要です。
ラベルをトークン化するときにキーワード
text_target
引数を使用します。max_length
パラメータで設定された最大長を超えないようにシーケンスを切り詰めます。
データセット全体に前処理関数を適用するには、🤗 Datasets map
メソッドを使用します。 batched=True
を設定してデータセットの複数の要素を一度に処理することで、map
関数を高速化できます。
次に、DataCollatorForSeq2Seq
を使用してサンプルのバッチを作成します。データセット全体を最大長までパディングするのではなく、照合中にバッチ内の最長の長さまで文を 動的にパディング する方が効率的です。
Evaluate
次に、予測とラベルを compute
に渡して ROUGE メトリクスを計算する関数を作成します。
これでcompute_metrics
関数の準備が整いました。トレーニングをセットアップするときにこの関数に戻ります。
Train
Keras を使用したモデルの微調整に慣れていない場合は、こちら の基本的なチュートリアルをご覧ください。
次に、TFAutoModelForSeq2SeqLM を使用して T5 をロードできます。
prepare_tf_dataset() を使用して、データセットを tf.data.Dataset
形式に変換します。
compile
を使用してトレーニング用のモデルを設定します。 Transformers モデルにはすべてデフォルトのタスク関連の損失関数があるため、次の場合を除き、損失関数を指定する必要はないことに注意してください。
トレーニングを開始する前にセットアップする最後の 2 つのことは、予測から ROUGE スコアを計算し、モデルをハブにプッシュする方法を提供することです。どちらも Keras コールバック を使用して行われます。
compute_metrics
関数を KerasMetricCallback に渡します。
Specify where to push your model and tokenizer in the PushToHubCallback:
次に、コールバックをまとめてバンドルします。
ついに、モデルのトレーニングを開始する準備が整いました。トレーニングおよび検証データセット、エポック数、コールバックを指定して fit
を呼び出し、モデルを微調整します。
トレーニングが完了すると、モデルは自動的にハブにアップロードされ、誰でも使用できるようになります。
要約用にモデルを微調整する方法のより詳細な例については、対応するセクションを参照してください。 PyTorch ノートブック または TensorFlow ノートブック。
Inference
モデルを微調整したので、それを推論に使用できるようになりました。
要約したいテキストを考え出します。 T5 の場合、作業中のタスクに応じて入力に接頭辞を付ける必要があります。要約するには、以下に示すように入力にプレフィックスを付ける必要があります。
推論用に微調整されたモデルを試す最も簡単な方法は、それを pipeline() で使用することです。モデルを使用して要約用の pipeline
をインスタンス化し、テキストをそれに渡します。
必要に応じて、pipeline
」の結果を手動で複製することもできます。
テキストをトークン化し、input_ids
を TensorFlow テンソルとして返します。
~transformers.generation_tf_utils.TFGenerationMixin.generate
メソッドを使用して要約を作成します。さまざまなテキスト生成戦略と生成を制御するためのパラメーターの詳細については、Text Generation API を確認してください。
生成されたトークン ID をデコードしてテキストに戻します。