roberta-base-chinese-extractive-qa项目介绍
项目背景
roberta-base-chinese-extractive-qa 是一个专注于中文抽取式问答的模型。该模型通过针对特定任务的微调实现了对问题的精准回答,旨在利用深度学习技术提高中文问答的效率和准确性。该模型最初由 UER-py 微调而来,并可以通过 TencentPretrain 微调,两者均基于强大的预训练模型进行优化。
使用方法
用户可以通过简单的Python代码实现对中文问题的自动回答。以下是一个简单的使用示例:
from transformers import AutoModelForQuestionAnswering, AutoTokenizer, pipeline
model = AutoModelForQuestionAnswering.from_pretrained('uer/roberta-base-chinese-extractive-qa')
tokenizer = AutoTokenizer.from_pretrained('uer/roberta-base-chinese-extractive-qa')
QA = pipeline('question-answering', model=model, tokenizer=tokenizer)
QA_input = {
'question': "著名诗歌《假如生活欺骗了你》的作者是",
'context': "普希金从那里学习人民的语言,吸取了许多有益的养料,这一切对普希金后来的创作产生了很大的影响。这两年里,普希金创作了不少优秀的作品,如《囚徒》、《致大海》、《致凯恩》和《假如生活欺骗了你》等几十首抒情诗..."
}
QA(QA_input)
这种简单直观的方法使得用户可以快速上手并体验到模型的强大功能。
训练数据
模型的训练数据来源于三个主要数据集:cmrc2018、webqa 和 laisi。这些数据集提供了丰富的问答内容,为模型的高效训练奠定了基础。
训练流程
该模型使用 UER-py 在 腾讯云 上进行微调。具体的训练过程包括:
- 选择预训练模型 chinese_roberta_L-12_H-768 作为基础模型。
- 使用最长序列长度512进行三轮微调。
- 在每轮训练结束时,保存开发集性能最佳的模型。
训练的参数设置如下:
python3 finetune/run_cmrc.py --pretrained_model_path models/cluecorpussmall_roberta_base_seq512_model.bin-250000 \
--vocab_path models/google_zh_vocab.txt \
--train_path datasets/extractive_qa.json \
--dev_path datasets/cmrc2018/dev.json \
--output_model_path models/extractive_qa_model.bin \
--learning_rate 3e-5 --epochs_num 3 --batch_size 32 --seq_length 512
在完成微调后,模型被转换为Huggingface的格式,以便用户更加便利地使用:
python3 scripts/convert_bert_extractive_qa_from_uer_to_huggingface.py --input_model_path models/extractive_qa_model.bin \
--output_model_path pytorch_model.bin \
--layers_num 12
参考文献
在研究和引用该项目时,可以参考以下文献:
- Liu et al., "RoBERTa: A robustly optimized bert pretraining approach," 2019.
- Zhao et al., "UER: An Open-Source Toolkit for Pre-training Models," EMNLP-IJCNLP 2019.
- Zhao et al., "TencentPretrain: A Scalable and Flexible Toolkit for Pre-training Models of Different Modalities," ACL 2023.
通过这样的开放资源和详细文档,roberta-base-chinese-extractive-qa 模型为中文问答研究提供了强有力的技术支持和工具。