模型:

gaussalgo/xlm-roberta-large_extractive-QA_en-cs

英文

XLM RoBERTa用于捷克语+英语抽取式问答

这是一个带有抽取式问答头部的 XLM-RoBERTa-large 模型,使用捷克SQAD 3.0和 English SQuAD 1.1 Question Answering数据集的组合进行训练。对于捷克SQAD 3.0,原始语境(即整个维基百科网站)被限制在适应RoBERTa上下文窗口的范围内,约占样本的3%。

预期用途和限制

该模型旨在从给定的语境中提取包含给定问题答案的片段(抽取式问答),适用于英语和捷克语。考虑到对这两种语言的微调,并且其他微调的XLM-RoBERTa在零-shot跨语言应用方面表现良好,该模型很可能对其他语言也有效,尽管质量会有所下降。

请注意,尽管英语SQuAD数据集规模较大,但存在多样的报告偏向(详见,例如 L. Mikula (2022) ,第4.1章)。

用法

以下是使用? Transformers在PyTorch中使用该模型回答给定语境中的问题的方法:

from transformers import AutoTokenizer, AutoModelForQuestionAnswering

tokenizer = AutoTokenizer.from_pretrained("gaussalgo/xlm-roberta-large_extractive-QA_en-cs")
model = AutoModelForQuestionAnswering.from_pretrained("gaussalgo/xlm-roberta-large_extractive-QA_en-cs")

context = """
Podle slovenského lidového podání byl Juro Jánošík obdařen magickými předměty (kouzelná valaška, čarovný opasek),
které mu dodávaly nadpřirozené schopnosti. Okrádal především šlechtice,
trestal panské dráby a ze svého lupu vyděloval část pro chudé, tedy bohatým bral a chudým dával.
"""
question = "Jaké schopnosti daly magické předměty Juro Jánošíkovi?"

inputs = tokenizer(question, context, return_tensors="pt")
outputs = model(**inputs)
start_position = outputs.start_logits[0].argmax()
end_position = outputs.end_logits[0].argmax()
answer_ids = inputs["input_ids"][0][start_position:end_position]

print("Answer:")
print(tokenizer.decode(answer_ids))

训练

使用 Adaptor library v0.1.5平行在捷克语和英语数据上训练了该模型,使用以下参数:

training_arguments = AdaptationArguments(output_dir="train_dir",
learning_rate=1e-5,
stopping_strategy=StoppingStrategy.ALL_OBJECTIVES_CONVERGED,
do_train=True,
do_eval=True,
warmup_steps=1000,
max_steps=100000,
gradient_accumulation_steps=30,
eval_steps=100,
logging_steps=10,
save_steps=1000,
num_train_epochs=30,
evaluation_strategy="steps")

可以在train_roberta_extractive_qa.py中找到完整的训练脚本,捷克SQAD的特定数据预处理在parse_czech_squad.py中可以复现。