模型:
henryk/bert-base-multilingual-cased-finetuned-dutch-squad2
这个模型是由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 与我联系。