模型:

mrm8488/spanbert-large-finetuned-squadv2

英文

SpanBERT 模型在 SQuAD v2 上的精调

SpanBERT Facebook Research 创建,并在 SQuAD 2.0 上进行了 Q&A 下游任务( by them )的精调。

SpanBERT 的详细信息

SpanBERT: Improving Pre-training by Representing and Predicting Spans

下游任务(Q&A)的详细信息 - 数据集 ? ? ❓

SQuAD2.0 组合了 SQuAD1.1 中的 100,000 个问题,以及由众包工作者制作的 50,000 个无法回答的问题,这些问题与可回答的问题相似。为了在 SQuAD2.0 上表现良好,系统不仅需要在可能时回答问题,还需要确定段落中是否支持回答,并避免回答无法回答的问题。

Dataset Split # samples
SQuAD2.0 train 130k
SQuAD2.0 eval 12.3k

模型精调 ?️‍

您可以获取精调脚本 here

python code/run_squad.py \
  --do_train \
  --do_eval \
  --model spanbert-large-cased \
  --train_file train-v2.0.json \
  --dev_file dev-v2.0.json \
  --train_batch_size 32 \
  --eval_batch_size 32  \
  --learning_rate 2e-5 \
  --num_train_epochs 4 \
  --max_seq_length 512 \
  --doc_stride 128 \
  --eval_metric best_f1 \
  --output_dir squad2_output \
  --version_2_with_negative \
  --fp16

结果比较 ?

SQuAD 1.1 SQuAD 2.0 Coref TACRED
F1 F1 avg. F1 F1
BERT (base) 88.5* 76.5* 73.1 67.7
SpanBERT (base) 1239321 12310321 77.4 12311321
BERT (large) 91.3 83.3 77.1 66.4
SpanBERT (large) 12312321 88.7 (this) 79.6 12313321

注意:标有 * 的数字是在开发集上评估的,因为这些模型没有提交到官方 SQuAD 排行榜。所有其他数字都是测试结果。

模型在实际应用中的效果

使用 pipelines 进行快速应用:

from transformers import pipeline

qa_pipeline = pipeline(
    "question-answering",
    model="mrm8488/spanbert-large-finetuned-squadv2",
    tokenizer="SpanBERT/spanbert-large-cased"
)

qa_pipeline({
    'context': "Manuel Romero has been working very hard in the repository hugginface/transformers lately",
    'question': "How has been working Manuel Romero lately?"

})
# Output: {'answer': 'very hard', 'end': 40, 'score': 0.9052708846768347, 'start': 31}

Manuel Romero/@mrm8488 创建

在西班牙制作 ❤