一 引言
在目前付费搜索引擎中,买词和竞价成为广告主竞争流量的主要手段。因此在付费搜索引擎的广告主账户后台中,所有的功能都是围绕三个点在展开,第一:推广产品(product),第二:购买关键词(keyword),第三:关键词出价(bidprice)。在广告主加入新的产品时,第一诉求就是购买关键词。在目前国际B类电商平台上,广告主如何在网站千万级的关键词中选择适合该产品的关键词对于用户来说是一个艰难的任务。并且考虑到网站整体的检索质量,网站展示的广告必须和用户的搜索意图相符,所以在广告主购买关键词时必须要求购买的关键词和产品能够绑定,所谓绑定就是keyword和product的相关性分(mlrscore)必须保证在良及以上。千万级的keyword集合,挑选适合购买的关键词少之又少。如何给用户提供高效选词的渠道成为广告后台账户的重点。
在阿里巴巴国际站投放广告开始,广告后台就有了产品推词模块——先知。先知主要提供根据产品给用户推荐适合购买的关键词。在广告主进入后台进行买词时先知都会实时计算出广告主可以购买的关键词集合,为广告主提供高效的买词解决方案。二 模块及算法设计
产品推词包含四个模块:
- QueryProcess模块,完成title中心短语的抽取。
- query特征抽取模块,为离线模块,抽取完特征后导入引擎,由引擎建立倒排索引。
- 检索引擎模块,完成匹配query的召回。
- mlrscore计算模块,完成offer和query的文本相关性计算。
2.1 中心短语抽取
2.1.1 中心短语构造
TermWeight作为底层基础模块,完成query以及产品title中的term权重分析。TermWeight使用同session的点击query作为训练数据,使用GBDT模型进行训练,构建成query以及title的term权重分析的算法模块。
通过TermWeight分析后,term权重越高表明该term在title中的价值越大,因此通过分析后的weight排序,取top n的term作为title的核心短语。
在QP模块中,TermWeight分析后的term,取top50%的term为有用的term记为Tu,有用term的top50%为重要的term记为Ti。如果term长度小于6,则所有的query都作为有用的term。如果term的长度大于16,最多取8个term为有用term。
使用重要term集合Ti和有用Term Tu进行两两组合,再组合时考虑term在title中的位置信息。考虑组合的位置信息,共有4种位置,分别如下:
- w1 w2型
表示在title中w1是出现在w2前面,所以组合的中心短语只有w1 w2一种。
- w2 w1型
表示在title中w2出现在w1前面,组合成w2 w1的中心短语。
- w1 w2 w1型
表示在title中w1即在w2前面出现,也在后面出现,所以组合的中心短语有两种,分别为:w1 w2和w2 w1。
- w2 w1 w2型
表示在title中w1前后都出现了w2。可以组合成w2 w1和w1 w2两种query。
根据上述四种组合并去重,得到title的初步组合中心短语。中心短语的权重使用组合的两个term中权重较高者表示。
2.1.2 中心短语语言模型处理
根据3.1.1中的方式初步构造出了title的中心短语,组合出的中心短语很多并不符合语法规范。在3.1.1中组合的只有bigram,所以使用bigram语法对组合的中心短语进行过滤。
bigram语法的线下训练方式如下:
bigram训练数据由网站所有offer的title和搜索query组成。bigram的权重使用在文本中出现的频率来表示是否符合语法,如果两个单词经常一起出现,则对应的频率也会比较高。
统计bigram的方法如下:
- 对每条文本进行归一化,然后进行切分。得到有序的word.
- 按照有序的方式分别统计bigram出现的次数以及每个单词出现的次数。
- 计算bigram的频率。P(xi,xj)=C(xi,xj)/C(xi)。C(xi,xj)是xi xj出现的次数,C(xi)是xi出现的次数。为了减小索引的大小在计算频率是过滤C(xi)<100的term。
3.1.1中得到的bigram经过语言模型处理,得到bigram的频率。结合bigram在termweight中的权重,得到bigram总的权重。总权重计算方式如下:
finalweight=0.4*(bi_weight/max_bi_weight)+0.6*(t_weight/max_t_weight)
其中bi_weight为当前bigram的语言模型频率,max_bi_weight为title的所有bigram中语言模型频率的最大值。t_weight为bigram的termweight权重,max_t_weight为title的所有bigram中termweight的最高权重。最后的结果再按照线性组合。
在上述语言模型中,对于未登录词在训练bigram时并没有进行平滑,所以在处理是如果是未登录词,则返回MIN_WEIGHT=0.000001的极小值。
2.2 线下Query特征抽取
为了满足产品推词的精准以及买词的合理性,需要对offer能够推荐的词进行筛选,所以需要对Query进行特征分析,检索时根据query的特征计算排序分。
Query特征抽取模块为线下模块,设计的特征主要为Query的预测类目,Query的中心词,Query的长度等。