科技战疫·疫情政务问答助手 TOP 思路分享

本文分享了科技战疫·疫情政务问答助手比赛中,Top选手采用的策略。首先通过BM25算法进行粗召回,然后利用BERT进行细召回,找出最相关文档及答案。在训练过程中,设置了高权重的判断相关文档任务,以解决BERT的效率问题。数据预处理、动态规划的段落切割和模型结构设计是关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


         笔者之前也参加了问答助手这个比赛,后面因为一些原因,没有时间完成。不过笔者上周答辩的时候,特地关注了这场比赛TOP选手答辩,在这列举一下我看到的Top思路。

1.1 数据介绍

该赛题的基础文档数据集是通过在互联网上采集到的全国各地发布的疫情相关政策文档,其中以北京市发布的各类政务文件为主。标注数据包含了疫情相关的问题和答案数据,这部分数据是在相关疫情政策文件上通过人工标注形成的。

数据说明

            简单来说,就是训练集有问答对与其对应的抽答案的文档,而测试集只有问题。基于这个数据集,我们需要从文档中找到测试集每一个问题相匹配的文档,并从匹配的文档中抽出答案。

1.2 思路

整体流程图如下,重点在于BERT的细召回部分。

1.2.1 BM25

因为文档的数据有8000多个,如果单单用BERT进行召回的话,那么速度是非常慢的,成本代价也是最高的。BM25算法是业界常用的无监督召回策略。笔者的团队通过BM25算法粗召回与问题相关的文档50个,在训练集的召回正确率达到了90%+,为此笔者将召回文档数目设置为50。

这里值得注意的是,8000多个文档中是有重复的,为此,需要在预处理的过程中将重复的文档删除,降低我们的算法的时空复杂度。

1.2.2 细召回

我们通过BM25算法得到了训练集与测试集中每个问题相关的50个文档,此时我们的任务就转化为如何利用BERT找出问题最相关的文档并找出该文档中的答案。

这里大家可以先估摸一下这两个问题的难度。其实对于BERT来说,找出问题最相关文档任务的难度远远大于阅读理解任务。答辩队伍基本都是将两个任务联合起来进行训练,那么设定两个任务的loss权重则是训练的关键。

数据构造则是问答对的形式:

input:<问题·文档>,output:<是否为相关文档,答案>

因为前者的难度远大于后者,他们的权重的设置在[0.90+, 0.10-]这个范围,也就是说,判断是否为问题最相关文档的权重占比在90%以上。

这里值得注意的是,因为大多数文档存在过长的原因,可能无法全部喂入BERT中,我们团队则是利用动态规划的方式进行切割,尽可能得保留切割出来的段落的信息完整性,而后与问题进行组装喂入BERT中。

模型结构图

其中,cls loss是用来计算判断是否为问题的相关文档任务的loss,start和end则是阅读理解任务的loss。

1.3 总结

至此,这个比赛的最核心的点就已经介绍完了,剩下的trick比如加对抗、改异构单模以及融合等等,基本上都和别的比赛差不多,就不进行赘述了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值