基于FAQ的智能问答(三): 精排篇

本文讨论了在智能问答系统中,如何对召回的问题进行精确排序。通过建立排序模型,对问题进行相关性打分,并设定阈值策略决定是直接回答、推荐还是无法回答。模型在CPU集群上运行,满足线上性能要求。文章提出,适当的推荐策略即使在边界模糊时,也能保持良好的用户体验。
摘要由CSDN通过智能技术生成

在上一篇<基于FAQ的智能问答(二):召回篇>中已经介绍了,给定一个用户的query如何从知识库中快速准确的召回一小批相关的问题,本篇将继续介绍如何对这一小批问题进行精排,最终构建出answer返回给用户。

任务描述

给定一个用户的问题q,和一批召回的问题d,对每个d进行相关性的打分计算,并根据相关性进行评价。同时根据top1打分的不同,客户端执行不同的操作:(1) 如果top1的评分"很高",则直接将答案返回给用户 (2) 如果top1的评分"较高",则进行问题的推荐 (3) 如果top1的评分"较低",则提示无法回答。

评价指标

模型结构

数据构建

对于智能问答场景的精排模型,构建的数据集结构如下:

数据集中的一个例子

所以通过这种方法,可以构建一个大规模的通用领域的弱标签的排序数据集,从而训练出一个通用的排序模型。

模型上线

在模型的预测阶段,给定q与d,可直接计算出q与d的相似度。所以给定一组d,就可根据相似度返回有序的结果。

整个精排模块在进行模型蒸馏以后,部署在k8s的cpu集群上(web API + Tensenflow-Serving),单个pod在batch size=20,max_seq_len = 64的场景下,响应时间为100ms. 满足线上的需求。

玄学阈值:在精排部分我们需要界定出top1的结果是否为正样本,即能不能直接作为答案返给用户;同时top1 - top5中哪些可以作为推荐问进行推荐

最简单的方案是卡一个阈值,例如相似度大于0.85,就认为是正样本,可以直接把知识库中的答案返回给用户;相似度小于0.85但是大于0.1,就认为可以作为推荐问;最后如果top1的相似度小于0.1,就认为无法解答。具体的阈值可以在测试集上进行搜索,保障在测试集上的准确率能够达到95%,同时召回率能够达到80%。(95%与80%来源于业务的指标要求,可调整)。

但是这种方案需要小心翼翼,在实际的场景往往很难很好的去卡这个阈值。

不过从产品实际上来考虑,真的要对边界抱有执念吗?对于原本应该直接回答的query,没有直接回答,而是把非常相关的top1结果进行了推荐,其实也没问题,不会牺牲特别大的用户体验;同时对于原本就没有答案的样本,而也将top1的结果进行推荐(因为有一点的相关性),也不会牺牲用户体验,反而也在引导用户。所以“尽可能的多推荐”,从产品上是合适的。




基于FAQ的智能问答(三): 精排篇 - 知乎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值