query词权重(term weighting)是为了计算query分词后,每个term的重要程度。常用的指标是tf*idf(query中term的tf大部分为1),即一个term的出现次数越多,表明信息量越少,相反一个term的次数越少,表明信息量越多。但是term的重要程度并不是和term的出现次数呈严格单调关系,并且idf缺乏上下文语境的考虑(比如“windows”在“windows应用软件”中比较重要,而在“windows xp系统iphone xs导照片”的重要性就比较低)。词权重计算作为一种基础资源在文本相关性,丢词等任务中有着重要作用,其优化方法主要分为下面三类:

1)基于语料统计

2)基于点击日志

3)基于有监督学习

本文首先介绍一些基于语料统计的计算方法。

一、imp(importance的缩写)

idf的一个缺点是仅仅依靠词频比较,imp从在query中的重要性占比基础上,采用迭代的计算方式优化词的静态赋权,其计算过程如下:

multimatchquery设置权重 search term权重_multimatchquery设置权重

其中BT为term的imp值,初始值可设为1,Tmp_i是query中的第i个term的重要性占比,N指所有包含第i个term的query数目。

二、DIMP(Dynamic imp)

idf和imp的一个共同缺点是其都是静态的赋权。DIMP根据query的上下文计算每个term的动态赋权,其主要假设是任意query中的词权重可以由相关query 的词权重来计算,计算过程可分为两部分:

1) 自顶向下的query树构建

根据实际场景中采用不同的构建方法,这里介绍一种在搜索中的做法。如下图,给定query作为根节点,首先获取query的相关query作为第二层节点,在第二层的基础上,枚举相关query的子query作为第三层节点,最后一层为分词后的term节点。因此query树种的节点都是不同粒度的文本串,边都是文本串间的相关关系。在拍卖词推荐任务中,用户query都是比较短的关键词,其可以通过拍卖词间的共同购买关系构建对应的query树。