🚀 多语言 + 荷兰语SQuAD2.0
本模型是谷歌研究团队提供的多语言模型,针对荷兰语问答下游任务进行了微调。它能够有效处理荷兰语的问答任务,为荷兰语相关的信息检索和问答场景提供支持。
📚 详细文档
语言模型详情
语言模型(bert-base-multilingual-cased):
- 12层,768个隐藏层单元,12个注意力头,1.1亿个参数。
- 在维基百科规模最大的前104种语言的大小写文本上进行训练。
下游任务详情
使用mtranslate
Python模块对SQuAD2.0进行机器翻译。为了找到起始标记,在相应段落中搜索答案的直接翻译。由于上下文不同(纯答案中缺少上下文),并非总能在文本中找到答案,从而导致问答示例的丢失。这是数据集可能出现错误的潜在问题。
数据集 |
问答数量 |
SQuAD2.0训练集 |
130K |
荷兰语SQuAD2.0训练集 |
99K |
SQuAD2.0验证集 |
12K |
荷兰语SQuAD2.0验证集 |
10K |
模型基准
模型 |
EM/F1 |
有答案 (EM/F1) |
无答案 |
robBERT |
58.04/60.95 |
33.08/40.64 |
73.67 |
dutchBERT |
64.25/68.45 |
45.59/56.49 |
75.94 |
multiBERT |
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,请随时通过领英与我联系。