language: pl
多语言+波兰语SQuAD2.0模型
该模型是谷歌研究团队提供的多语言模型,并针对波兰语问答下游任务进行了微调。
语言模型详情
语言模型 (bert-base-multilingual-cased):
12层,768隐藏层,12头注意力机制,1.1亿参数。
基于维基百科规模最大的104种语言的区分大小写文本训练而成。
下游任务详情
使用mtranslate
Python模块对SQuAD2.0进行机器翻译。为定位答案起始标记,在对应段落中搜索答案的直接翻译结果。由于翻译会随上下文变化(纯答案缺乏上下文),部分答案无法在文本中匹配,导致问答样本数量减少。这是数据集中可能存在的误差来源。
数据集 |
问答对数 |
SQuAD2.0训练集 |
13万 |
波兰语SQuAD2.0训练集 |
8.31万 |
SQuAD2.0开发集 |
1.2万 |
波兰语SQuAD2.0开发集 |
0.85万 |
模型基准测试
模型 |
精确匹配/F1值 |
有答案(EM/F1) |
无答案准确率 |
斯拉夫BERT |
69.35/71.51 |
47.02/54.09 |
79.20 |
波兰BERT |
67.33/69.80 |
45.73/53.80 |
76.87 |
多语言BERT |
70.76/72.92 |
45.00/52.04 |
82.13 |
模型训练
模型在Tesla V100 GPU上通过以下命令训练:
export SQUAD_DIR=path/to/pl_squad
python run_squad.py
--model_type bert \
--model_name_or_path bert-base-multilingual-cased \
--do_train \
--do_eval \
--version_2_with_negative \
--train_file $SQUAD_DIR/pl_squadv2_train.json \
--predict_file $SQUAD_DIR/pl_squadv2_dev.json \
--num_train_epochs 2 \
--max_seq_length 384 \
--doc_stride 128 \
--save_steps=8000 \
--output_dir ../../output \
--overwrite_cache \
--overwrite_output_dir
评估结果:
{'精确匹配': 70.76671723655035, 'F1值': 72.92156947155917, '总数': 8569, '有答案_精确匹配': 45.00762195121951, '有答案_F1值': 52.04456128116991, '有答案总数': 2624, '无答案_精确匹配': 82.13624894869638, '无答案_F1值': 82.13624894869638, '无答案总数': 5945, '最佳精确匹配': 71.72365503559342, '最佳精确匹配阈值': 0.0, '最佳F1值': 73.62662512059369, '最佳F1阈值': 0.0}
模型应用
使用pipelines快速调用:
from transformers import pipeline
qa_pipeline = pipeline(
"question-answering",
model="henryk/bert-base-multilingual-cased-finetuned-polish-squad2",
tokenizer="henryk/bert-base-multilingual-cased-finetuned-polish-squad2"
)
qa_pipeline({
'context': "华沙是波兰人口最多、面积最大的城市",
'question': "波兰最大的城市是哪个?"})
输出示例:
{
"置信度": 0.9986,
"起始位置": 0,
"结束位置": 8,
"答案": "华沙"
}
联系方式
如需讨论或获取波兰语版SQuAD数据集,欢迎通过领英联系我。