query改写其实理解起来很简单,就是把原始的query经历一系列的操作,然后变成另外一个query,从而达到提升召回率和准确率的效果。
query改写的过程中,这一系列的操作,其实是围绕两个方面展开的。第一是在原始query中添加一些有用的内容(可以理解为query扩展),把本该召回却没有召回的内容给召回,提高topK的召回率。第二是在原始query中去掉一些杂质内容(可以理解为蒸馏),对于长尾的query,很可能存在很多的干扰项。特别是在Bm25相关性召回下,对query条件进行蒸馏,会有一定的收益。并且资源花费和成本并不大。
本文主要介绍query蒸馏。本文涉及到的是,根据词性从query中提取优质的关键词,去在请求过程中加分,从而提升召回率和召回排名效果。
一、蒸馏思考
对于有一些问题case,是可以考虑抽取实体的。通过实体匹配来加分,提高排序的效果。
eg:文章中提到了哪些促进区域协调发展的措施?
通过词性分析,提取一些重要的词来做加分的查询操作。使用should语法
根据词性整理了一定的规则。
NT : 时间名词,连续的NT词必须是一个整体;
VV: 去除单字;保留2个字及以上;
NN:前后独立的NN去除;单字的NN需和前后NN组成整体词;
OD:中文序数词,如“第一、第二、十九”,需与前后组成整体词;
M:数量词;需与前后组成整体词;
二、优化后的效果
BM25召回率提提升了 1.23% 。原来有63个没有被召回。修改后只有34个没有召回。实际上效果已经提升了将近50%。
top1召回率提升了 7.6%,top5提升了 5%,top10提升了3.3%,top20提升了2%
在34个没有召回的case里边。其中有24条,是有问题的问题(问题太泛了)。
三、负面效果
关键词提取的方式,也存在一些badcase,并不总是那么完美。
剩余10条没有召回case里,看到加分策略的副作用。这里举一个例子:如何理解“十个行动”?
显然这里会拿着"理解" + "行动"去加分,结果会变差。