Path: blob/main/transformers_doc/ja/pytorch/summarization.ipynb
4535 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
Trainer を使用したモデルの微調整に慣れていない場合は、こちら の基本的なチュートリアルをご覧ください。
これでモデルのトレーニングを開始する準備が整いました。 AutoModelForSeq2SeqLM を使用して T5 をロードします。
この時点で残っている手順は次の 3 つだけです。
Seq2SeqTrainingArguments でトレーニング ハイパーパラメータを定義します。唯一の必須パラメータは、モデルの保存場所を指定する
output_dir
です。push_to_hub=True
を設定して、このモデルをハブにプッシュします (モデルをアップロードするには、Hugging Face にサインインする必要があります)。各エポックの終了時に、Trainer は ROUGE メトリクスを評価し、トレーニング チェックポイントを保存します。トレーニング引数をモデル、データセット、トークナイザー、データ照合器、および
compute_metrics
関数とともに Seq2SeqTrainer に渡します。train() を呼び出してモデルを微調整します。
トレーニングが完了したら、 push_to_hub() メソッドを使用してモデルをハブに共有し、誰もがモデルを使用できるようにします。
Inference
モデルを微調整したので、それを推論に使用できるようになりました。
要約したいテキストを考え出します。 T5 の場合、作業中のタスクに応じて入力に接頭辞を付ける必要があります。要約するには、以下に示すように入力にプレフィックスを付ける必要があります。
推論用に微調整されたモデルを試す最も簡単な方法は、それを pipeline() で使用することです。モデルを使用して要約用の pipeline
をインスタンス化し、テキストをそれに渡します。
必要に応じて、pipeline
」の結果を手動で複製することもできます。
Tokenize the text and return the input_ids
as PyTorch tensors:
generate() メソッドを使用して要約を作成します。さまざまなテキスト生成戦略と生成を制御するためのパラメーターの詳細については、Text Generation API を確認してください。
生成されたトークン ID をデコードしてテキストに戻します。