模型:

henryk/bert-base-multilingual-cased-finetuned-dutch-squad2

英文

多语言 + 荷兰SQuAD2.0

这个模型是由Google研究团队提供的多语言模型,经过了荷兰问答下游任务的微调。

语言模型的详细信息

语言模型 ( bert-base-multilingual-cased ): 12层,768隐藏单元,12个头部,110M参数。训练数据来自最大维基百科的前104种语言的文本(区分大小写)。

下游任务的详细信息

使用mtranslate Python模块,对 SQuAD2.0 进行了机器翻译。为了找到起始标记,对应段落中搜索了答案的直接翻译。由于不同上下文的翻译方式不同(纯答案中缺少上下文),答案并不总是能在文本中找到,因此导致了一些问题-答案示例的丢失。这是一个可能导致数据集中出现错误的潜在问题。

Dataset # Q&A
SQuAD2.0 Train 130 K
Dutch SQuAD2.0 Train 99 K
SQuAD2.0 Dev 12 K
Dutch SQuAD2.0 Dev 10 K

模型评估

Model EM/F1 HasAns (EM/F1) NoAns
1235321 58.04/60.95 33.08/40.64 73.67
1236321 64.25/68.45 45.59/56.49 75.94
1237321 67.38 / 71.36 47.42/57.76 79.88

模型训练

使用Tesla V100 GPU训练的命令如下:

export SQUAD_DIR=path/to/nl_squad

python run_squad.py 
  --model_type bert \
  --model_name_or_path bert-base-multilingual-cased \
  --do_train \
  --do_eval \
  --train_file $SQUAD_DIR/nl_squadv2_train_clean.json \
  --predict_file $SQUAD_DIR/nl_squadv2_dev_clean.json \
  --num_train_epochs 2 \
  --max_seq_length 384 \
  --doc_stride 128 \
  --save_steps=8000 \
  --output_dir ../../output \
  --overwrite_cache \
  --overwrite_output_dir

结果:

{'exact': 67.38028751680629, 'f1': 71.362297054268, 'total': 9669, 'HasAns_exact': 47.422126745435015, 'HasAns_f1': 57.761023151910734, 'HasAns_total': 3724, 'NoAns_exact': 79.88225399495374, 'NoAns_f1': 79.88225399495374, 'NoAns_total': 5945, 'best_exact': 67.53542248422795, 'best_exact_thresh': 0.0, 'best_f1': 71.36229705426837, 'best_f1_thresh': 0.0}

模型应用

使用pipelines可以快速使用模型:

from transformers import pipeline

qa_pipeline = pipeline(
    "question-answering",
    model="henryk/bert-base-multilingual-cased-finetuned-dutch-squad2",
    tokenizer="henryk/bert-base-multilingual-cased-finetuned-dutch-squad2"
)

qa_pipeline({
    'context': "Amsterdam is de hoofdstad en de dichtstbevolkte stad van Nederland.",
    'question': "Wat is de hoofdstad van Nederland?"})

输出:

{
  "score": 0.83,
  "start": 0, 
  "end": 9,
  "answer": "Amsterdam"
}

联系方式

如果您想讨论或获得荷兰版本的SQuAD,请通过 LinkedIn 与我联系。