🚀 bert-base-chinese-finetuned-squadv2
このモデルは、bert-base-chinese を Chinese SQuAD v2.0 データセット でファインチューニングしたバージョンです。これは、中国語の質問応答タスクに特化しており、与えられた文脈から回答を抽出する抽出型QAに最適化されています。
✨ 主な機能
- BERT-base Chineseアーキテクチャに基づいています。
- 回答可能な質問と回答不可能な質問の両方をサポートします。
- 中国語の質問と回答のペアで学習されています。
- 抽出型の質問応答に最適化されています。
📦 インストール
このセクションでは、元の文書にインストール手順が記載されていないため、省略されています。
💻 使用例
基本的な使用法
from transformers import AutoModelForQuestionAnswering, AutoTokenizer
import torch
model_name = "real-jiakai/bert-base-chinese-finetuned-squadv2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForQuestionAnswering.from_pretrained(model_name)
def get_answer(question, context, threshold=0.0):
inputs = tokenizer(
question,
context,
return_tensors="pt",
max_length=384,
truncation=True
)
with torch.no_grad():
outputs = model(**inputs)
start_logits = outputs.start_logits[0]
end_logits = outputs.end_logits[0]
null_score = start_logits[0].item() + end_logits[0].item()
start_logits[0] = float('-inf')
end_logits[0] = float('-inf')
start_idx = torch.argmax(start_logits)
end_idx = torch.argmax(end_logits)
if end_idx < start_idx:
end_idx = start_idx
answer_score = start_logits[start_idx].item() + end_logits[end_idx].item()
if null_score - answer_score > threshold:
return "Question cannot be answered based on the given context."
tokens = tokenizer.convert_ids_to_tokens(inputs["input_ids"][0])
answer = tokenizer.convert_tokens_to_string(tokens[start_idx:end_idx+1])
if not answer.strip() or answer.strip() in ['[CLS]', '[SEP]']:
return "Question cannot be answered based on the given context."
return answer.strip()
questions = [
"本届第十五届珠海航展的亮点和主要展示内容是什么?",
"珠海杀人案发生地点?"
]
context = '第十五届中国国际航空航天博览会(珠海航展)于2024年11月12日至17日在珠海国际航展中心举行。本届航展吸引了来自47个国家和地区的超过890家企业参展,展示了涵盖"陆、海、空、天、电、网"全领域的高精尖展品。其中,备受瞩目的中国空军"八一"飞行表演队和"红鹰"飞行表演队,以及俄罗斯"勇士"飞行表演队同台献技,为观众呈现了精彩的飞行表演。此外,本届航展还首次开辟了无人机、无人船演示区,展示了多款前沿科技产品。'
for question in questions:
answer = get_answer(question, context)
print(f"问题: {question}")
print(f"答案: {answer}")
print("-" * 50)
📚 ドキュメント
モデルの説明
このモデルは、中国語の質問応答タスクを目的として設計されています。具体的には、与えられた文脈段落から回答を抽出する抽出型QAに特化しています。SQuAD v2.0フォーマットに従い、回答可能な質問と回答不可能な質問の両方を扱うことができます。
想定される用途と制限
想定される用途
- 中国語の抽出型質問応答
- 読解タスク
- 中国語テキストからの情報抽出
- 自動質問応答システム
制限
- 回答不可能な質問に対する性能(精度76.65%)は、回答可能な質問に対する性能(精度36.41%)よりも大幅に良いです。
- 抽出型QAに限定されており、新しい回答を生成することはできません。
- 学習データ外の特定ドメインの質問に対しては、性能が低下する可能性があります。
- 現代中国語テキストを対象として設計されており、古典中国語や方言のバリエーションではうまく機能しない可能性があります。
学習と評価データ
このモデルは、中国語のSQuAD v2.0データセットで学習されています。このデータセットには以下の内容が含まれています。
学習セット:
- 総サンプル数: 90,027
- 回答可能な質問: 46,529
- 回答不可能な質問: 43,498
検証セット:
- 総サンプル数: 9,936
- 回答可能な質問: 3,991
- 回答不可能な質問: 5,945
学習手順
学習ハイパーパラメータ
- 学習率: 3e-05
- バッチサイズ: 12
- 評価バッチサイズ: 8
- エポック数: 5
- オプティマイザ: AdamW (β1=0.9, β2=0.999, ε=1e-08)
- 学習率スケジューラ: 線形
- 最大シーケンス長: 384
- ドキュメントストライド: 128
- 学習デバイス: CUDA対応GPU
学習結果
最終評価指標:
- 全体的な正解率: 60.49%
- 全体的なF1スコア: 60.54%
- 回答可能な質問:
- 正解率: 36.41%
- F1スコア: 36.53%
- 回答不可能な質問:
- 正解率: 76.65%
- F1スコア: 76.65%
フレームワークバージョン
- Transformers: 4.47.0.dev0
- PyTorch: 2.5.1+cu124
- Datasets: 3.1.0
- Tokenizers: 0.20.3
🔧 技術詳細
このモデルは、回答可能な質問と回答不可能な質問の間で性能に大きな差があります。これは以下の可能性を示唆しています。
- データセットの品質問題
- 中国語版SQuADにおける潜在的な翻訳アーティファクト
- 回答可能な質問と回答不可能な質問の不均衡な取り扱い
📄 ライセンス
元の文書にライセンス情報が記載されていないため、このセクションは省略されています。
⚠️ 重要提示
このモデルは学習データに含まれるバイアスを反映する可能性があります。
💡 使用建议
- 質問のタイプによって性能が大きく異なることに注意してください。
- 重要なアプリケーションでは、結果を検証する必要があります。
- 重要なシステムにおいて、このモデルを唯一の決定者として使用しないでください。