语言:荷兰语
多语言+荷兰语SQuAD2.0模型
本模型由谷歌研究团队提供的多语言基础模型,针对荷兰语问答任务进行了微调。
语言模型详情
基础模型(bert-base-multilingual-cased):
- 12层Transformer结构
- 768维隐藏层
- 12个注意力头
- 1.1亿参数
- 基于维基百科规模最大的104种语言的区分大小写文本训练
下游任务细节
使用mtranslate
Python模块对SQuAD2.0进行机器翻译。为定位答案起始位置,在对应段落中检索答案的直接翻译结果。由于翻译结果受上下文影响(纯答案缺乏语境),部分答案无法在文本中匹配,导致部分问答样本丢失。这是数据集中可能存在的误差来源。
数据集 |
问答对数 |
SQuAD2.0训练集 |
13万 |
荷兰语SQuAD2.0训练集 |
9.9万 |
SQuAD2.0开发集 |
1.2万 |
荷兰语SQuAD2.0开发集 |
1万 |
模型性能对比
模型 |
精确匹配/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显卡执行以下训练命令:
export SQUAD_DIR=荷兰语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 输出目录 \
--overwrite_cache \
--overwrite_output_dir
评估结果:
{'精确匹配': 67.38, 'F1值': 71.36, '总样本': 9669, '有答案_精确匹配': 47.42, '有答案_F1值': 57.76, '有答案样本': 3724, '无答案_精确匹配': 79.88, '无答案_F1值': 79.88, '无答案样本': 5945, '最佳精确匹配': 67.54, '最佳精确匹配阈值': 0.0, '最佳F1值': 71.36, '最佳F1阈值': 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': "阿姆斯特丹是荷兰的首都和人口最稠密的城市",
'question': "荷兰的首都是哪里?"})
输出示例:
{
"置信度": 0.83,
"起始位置": 0,
"结束位置": 9,
"答案": "阿姆斯特丹"
}
联系方式
如需讨论或获取荷兰语版SQuAD数据集,欢迎通过领英联系作者。