🚀 T5-baseを用いた誘導選択肢生成
このリポジトリには、誘導選択肢生成のためにファインチューニングされたT5-baseモデルが含まれています。T5のテキスト-to-テキストフレームワークとカスタム区切りトークンを利用して、このモデルは与えられた質問、文脈、正解を条件として、選択問題のための3つの妥当な誘導選択肢を生成します。
✨ 主な機能
このモデルは、PyTorch Lightningを用いて構築され、事前学習されたT5-baseモデルをファインチューニングして誘導選択肢を生成します。モデルは、質問、文脈、正解がカスタムトークンで区切られた単一の入力シーケンスを受け取り、3つの誘導選択肢を含むターゲットシーケンスを生成します。このアプローチは、選択問題生成タスクに特に有用です。
📦 インストール
このモデルを使用するには、Hugging FaceのTransformersライブラリが必要です。以下のコマンドでインストールできます。
pip install transformers
💻 使用例
基本的な使用法
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
model_name = "fares7elsadek/t5-base-distractor-generation"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
SEP_TOKEN = "<sep>"
def generate_distractors(question, context, correct, max_length=64):
input_text = f"{question} {SEP_TOKEN} {context} {SEP_TOKEN} {correct}"
inputs = tokenizer([input_text], return_tensors="pt", truncation=True, padding=True)
outputs = model.generate(
input_ids=inputs["input_ids"],
attention_mask=inputs["attention_mask"],
max_length=max_length
)
decoded = tokenizer.decode(outputs[0], skip_special_tokens=True, clean_up_tokenization_spaces=True)
distractors = [d.strip() for d in decoded.split(SEP_TOKEN)]
return distractors
question = "What is the capital of France?"
context = "France is a country in Western Europe known for its rich history and cultural heritage."
correct = "Paris"
print(generate_distractors(question, context, correct))
📚 ドキュメント
データ処理
入力構築
各入力サンプルは、次の形式の単一の文字列です。
question {SEP_TOKEN} context {SEP_TOKEN} correct
- question: 質問文
- context: 文脈の文章
- correct: 正解
- SEP_TOKEN: トークナイザーに追加され、異なるフィールドを区切るための特殊トークン
ターゲット構築
各ターゲットサンプルは、次のように構築されます。
incorrect1 {SEP_TOKEN} incorrect2 {SEP_TOKEN} incorrect3
この形式により、モデルは一度に3つの誘導選択肢を生成できます。
学習詳細
- フレームワーク: PyTorch Lightning
- ベースモデル: T5-base
- オプティマイザー: 線形スケジューリングを使用したAdam(ウォームアップスケジューラーを使用)
- バッチサイズ: 32
- エポック数: 5
- 学習率: 2e-5
- トークン化:
- 入力: 最大長512トークン
- ターゲット: 最大長64トークン
- 特殊トークン: カスタムの
SEP_TOKEN
がトークナイザーに追加され、入力とターゲットシーケンスの異なる部分を区切るために使用されます。
評価指標
モデルは、生成された各誘導選択肢のBLEUスコアを使用して評価されます。以下は、テストセットで得られたBLEUスコアです。
誘導選択肢 |
BLEU-1 |
BLEU-2 |
BLEU-3 |
BLEU-4 |
誘導選択肢1 |
29.59 |
21.55 |
17.86 |
15.75 |
誘導選択肢2 |
25.21 |
16.81 |
13.00 |
10.78 |
誘導選択肢3 |
23.99 |
15.78 |
12.35 |
10.52 |
これらのスコアは、モデルが参照誘導選択肢と比較して高いn-gramオーバーラップを持つ誘導選択肢を生成できることを示しています。
🔧 技術詳細
このモデルは、T5-baseモデルをベースに構築され、PyTorch Lightningを使用して学習されます。Adamオプティマイザーと線形スケジューリングを使用して、モデルのパラメータを最適化します。カスタムのSEP_TOKEN
を使用して、入力とターゲットシーケンスの異なる部分を区切ります。
📄 ライセンス
このプロジェクトはMITライセンスの下で公開されています。