EasyNLP带你实现中英文机器阅读理解( 二 )


具体来讲,等模型在MLM时,对中文整词中所有单字同时进行mask,并采用n-gram mask策略,从到4-gram对应的mask概率分别为40%-10% 。在mask时不再采用 [MASK] token,而改为使用词语的近义词,近义词采用基于相似度计算的 获取,在极少数情况没有近义词时,使用随机词进行替换 。模型总体对输入15%的词进行mask,mask时80%的概率替换为近义词、10%的概率替换为随机词、10%的概率保留为原始词 。此外,BERT原版的NSP模型长期为研究者们所诟病,模型中将NSP修改为SOP ( Order ),其正例为连续文本,负例为交换原始文本顺序,这样很好提升了模型在多句篇章型任务上的效果 。模型的实验结果表明,去除上述MLM中任一改进都会导致平均性能下降,这表明几处掩码修改都有助于语言模型学习;同时去除SOP任务后,在机器阅读理解任务上的效果会明显下降,这也表明句子级预训练任务在篇章学习中的必要性 。
机器阅读理解模型使用教程
以下我们简要介绍,如何在框架中使用及其他预训练语言模型,进行机器阅读理解任务的训练及预测 。
安装
用户可以直接参考()上的说明安装算法框架 。
接口快速“尝鲜”体验效果
为了方便开发者使用,我们在框架内实现了 功能 。用户可以在不需要自己训练或微调模型的情况下,直接“尝鲜”,使用接口一步调用好的中英文机器阅读理解模型 。只需执行如下命令即可:
from easynlp.pipelines import pipeline# 输入数据data = http://www.kingceram.com/post/[{"query": "杭州什么时候发布了《杭州市亚运城市行动计划纲要》?","answer_text": "2020年4月","context": "新华社杭州9月22日电(采访人员商意盈 夏亮)竞赛场馆全部竣工并完成赛事功能验收,“迎亚运”城市基础设施建设迈入快车道,亚运场馆提前开放掀起全民健身热潮……23日,延期后的杭州亚运会将迎来倒计时一周年,各项筹备工作也结出累累硕果,“天堂之城”再次蓄势待发 。办好一个会,提升一座城 。2020年4月,杭州发布了《杭州市亚运城市行动计划纲要》,其中包括基础设施提升、绿水青山守护、数字治理赋能等八项具体行动 。随着亚运的脚步日益临近,杭州西站、萧山国际机场三期、合杭高铁湖杭段、机场轨道快线(19号线)等“两点两线”重大项目正式投运 。根据杭州市城乡建设委员会发布的信息,预计到今年9月底全市快速路总里程将达到480公里 。住在这里的人们正切身体会到悄然发生的变化——交通方便了,道路变美了,城市基础设施也愈发完善 。","qas_id": "CN_01"},{"query": "今年9月底全市快速路总里程将达到多少?","answer_text": "480公里","context": "新华社杭州9月22日电(采访人员商意盈 夏亮)竞赛场馆全部竣工并完成赛事功能验收,“迎亚运”城市基础设施建设迈入快车道,亚运场馆提前开放掀起全民健身热潮……23日,延期后的杭州亚运会将迎来倒计时一周年,各项筹备工作也结出累累硕果,“天堂之城”再次蓄势待发 。办好一个会,提升一座城 。2020年4月,杭州发布了《杭州市亚运城市行动计划纲要》,其中包括基础设施提升、绿水青山守护、数字治理赋能等八项具体行动 。随着亚运的脚步日益临近,杭州西站、萧山国际机场三期、合杭高铁湖杭段、机场轨道快线(19号线)等“两点两线”重大项目正式投运 。根据杭州市城乡建设委员会发布的信息,预计到今年9月底全市快速路总里程将达到480公里 。住在这里的人们正切身体会到悄然发生的变化——交通方便了,道路变美了,城市基础设施也愈发完善 。","qas_id": "CN_02"}]# pipeline的参数为finetune好的模型# 当前EasyNLP支持中英文机器阅读理解的pipeline快速体验,分别集成了finetune好的中文macbert模型和英文bert模型# 如想体验英文阅读理解,只需将模型名改为 'bert-base-rcen' 即可generator = pipeline('macbert-base-rczh')results = generator(data)for input_dict, result in zip(data, results):context = result["context"]query = result["query"]answer_gold = result["gold_answer"]answer_pred = result["best_answer"]print('\n context: {} \n query: {} \n gold_answer: {} \n pred_answer: {} \n'.format(context, query, answer_gold, answer_pred))