全部产品
云市场

类目预测功能

更新时间:2020-01-17 20:11:48

什么是类目预测

搜索引擎的效果优化是一个很大的话题,在查询意图理解阶段可以有语义理解、命名实体识别、词权重分析、拼写纠错等优化手段,在排序阶段可有文本相关度、人气模型、类目预测等优化手段,通过配置查询分析策略和调整排序公式,我们对于效果优化可以有很大的发挥空间,再通过AB测试来对比不同优化策略的效果表现,我们可以做到效果优化心中有数。

那么这其中的类目预测是个什么样的功能?简单来说,用户输入一个query,查询得到一批物品,通过计算每一个物品所属的类目与query之间的相关度,只要物品的排序公式中引用了这个相关度,那么对于这个物品来说,它所属的类目与query的相关度越高,它的排序公式的计算结果就获得了越高的排序得分,从而这个物品就会排在越前面。

举个例子,用户输入的query是“光明”,查询到一批物品,这批物品中可能有一部分所属的类目是“牛奶”,另一部分所属的类目是“大米”。因为根据行为数据,搜索“光明”的人里面,点击“牛奶”类目下的物品的人要比点击“大米”类目下的物品的人多得多,我们事先训练了类目预测模型,模型已经表达了这个信息,那么模型会给出这样的预测结果,对于“光明”这个query来说,“牛奶”类目与“光明”的相关度,要比“大米”类目与“光明”的相关度高多了,所以在计算每个物品的排序分的过程中,“牛奶”类目下的物品所获得的得分要比“大米”类目下的物品得分高,从而“牛奶”类目下的物品会排在更前面。这样我们通过模型就预测了用户搜索“光明”的意图更大的可能是想找“牛奶”类目下的物品,这样的排序结果才是一个比较符合用户预期的结果,用户才更有可能点进去了解详情,从而提升搜索的业务价值。

111

基本原理

类目预测的目标是预测搜索的query与类目的相关度,它需要用到历史query数据、点击行为数据、类目下的物品信息数据。具体来说是把历史上搜过的query收集起来,结合query查询之后的点击行为数据,与类目下的物品信息联系起来,使用这些数据来训练模型,由模型来刻划query与类目之间的数据规律。

训练模型首先需要有数据源,对应到产品上,创建类目预测模型时先要与某个应用关联起来,关联应用之后,我们就可以确定训练模型所需的三类数据:

  1. 历史上在该应用搜索过的所有query,这部分数据由应用后台的日志数据可以得到,关联应用后默认可以取得。
  2. 类目数据和物品数据,这部分数据由用户在准备模型训练时从应用中指定字段,至少需要指定应用中的类目id字段、物品标题字段,也就是说要求事先把这两个字段的内容存入应用中。
  3. 应用的点击行为数据,这部分数据需要用户在产品上做埋点上报,上报的数据越全面、质量越高,意味着模型的特征越丰富,效果越好。

考虑到上报行为数据往往有一个页面埋点的设计、开发、发布的周期,我们提供了两个选项,带行为数据的模型训练和不带行为数据的模型训练。

带行为数据的模型训练,适用于行为数据已经正确上传,在开始训练时会自动做入口条件检查,确保数据量、数据质量、数据完整度都能达到要求,这个时候的模型训练,大致有如下步骤:

  1. 使用历史query和类目信息,抽样生成样本数据,使用行为数据进行样本数据打标签
  2. 通过对行为数据进行指标统计、特征计算等操作,生成点击行为类特征
  3. 结合query和类目下的物品标题,对query和标题分词后,计算query文本与物品标题文本的语义类特征
  4. 如果行为数据上传了成交类行为数据,会对成交行为数据进行指标统计、特征计算,生成成交类特征,这类特征对于模型的意义是使得成交表现较好的物品排在更前面
  5. 把以上抽样生成的样本数据和这些样本数据的行为特征、语义特征、成交特征和样本的标签,综合起来作为训练数据,输入到算法中进行迭代训练
  6. 训练完成后就得到了描述样本中query和类目相关度关系的模型,利用这个模型就可以预测未知的query和类目的相关度

不带行为数据的模型训练,适用于没有上传行为数据,或行为数据质量较差的场景,只需要指定应用中的类目id字段和物品标题字段,就可以开始训练模型,由于没有行为数据,样本打标签没有依据,那么会使用另一类算法来训练模型,仅通过query和类目下物品标题的文本数据,进行分词后,计算query文本与物品标题文本的语义相关度,这也就是query与类目的相关度。

理论上使用了行为数据的模型效果要优于不使用行为数据的模型,训练模型的特征越丰富,模型对于query和类目的数据规律的刻划越全面,做出的预测越准确。但是不管是带行为数据的模型还是不带行为数据的模型,训练的过程都经过了大量的实验,使用不同场景的数据,做了精心的参数调优,确保效果能符合预期。

如何使用类目预测

必要条件

进行模型训练需要数据源,有数据源才能生成样本数据,有了样本数据才能做特征计算,才能训练模型,所以训练模型之前必须先绑定某个应用,绑定了应用,也就有了应用数据、应用的query数据、应用的行为数据,这些都是类目预测模型所需要的数据。

如果还没有上传点击行为数据,或不想使用点击行为数据进行训练,或点击行为数据尚未满足训练的入口条件,那么可以先不使用点击行为数据来训练模型,这个时候类目预测模型需要从应用中选择三个字段的数据,分别是:类目id、物品标题、类目名称,也就是说应用中需要事先保存这三个字段的数据。其中类目id和物品标题是必不可少的,它们是模型训练得以正常运行的前提,类目名称是可选的,在模型训练完成后,会输出部分模型的预测结果供人为评估效果,类目名称将被用于效果评估页面中,供人为评估query与类目的相关度是否符合预期,如果不提供类目名称,只显示类目id,显然人为评估的时候是看不懂的,所以建议训练的时候提供类目名称字段。

如果已上传了点击行为数据,那么除了选择上述的字段内容,在进行模型训练时,还可以选择关联行为数据的选项,只要行为数据满足训练的入口条件,后台就会使用这部分数据训练模型。

操作步骤

第一步:算法平台—算法工程里:创建、评估、部署模型。

第二步:应用类目预测模型:可以在查询分析或粗排、精排中生效模型。

第三步:查询中生效类目预测模型:SDK调用查询接口,输入raw_query参数。

接下去会分别描述每一步具体如何操作。

第一步:创建模型

  • 登录阿里云账户,进入开放搜索控制台,在左侧主菜单中找到“算法平台”,展开菜单,选择“算法工程”,在右侧打开的页面中,点击“创建“按钮,打开“算法工程购买”页面,如下图:
    1
  • 在“算法工程购买”页面中,可选择算法工程所在的地域、资源类型、购买时长等,当前类目预测功能处于公测期,可免费使用,点击“立即购买”,即可创建算法工程,如下图:

注意,公测阶段算法工程最多可以创建10个,如果达到上限,将创建失败,可删除不需要的算法工程,再重新创建

2

  • 刚创建成功的算法工程,仍未关联应用,如果需要训练模型,需要先对算法工程做配置,点击“配置”按钮。
    3
  • 在右侧弹出的“配置算法工程”页面中,第一步是“选择算法功能”,这里选择“类目预测”模型,然后点击按钮“下一步”。
    4
  • 在右侧弹出的“配置算法工程”页面中,第二步是“绑定数据源”,选择需要训练模型的应用,如果不需要关联点击采集日志,点击“完成”,完成算法工程配置。
    5
  • 如果需要关联点击采集日志,那么勾选“关联应用的点击采集日志”选项,点击“验证数据”,如果数据未满足训练的入口条件,显示如下,“完成”按钮不可用。
    6如果数据满足训练的入口条件,显示如下,点击“完成”按钮,完成配置。
    6-1
  • 点击新创建的算法工程,查看算法工程详情
    7
  • 在算法工程详情页面,可以查看算法工程的配置信息,点击“模型列表”可进入模型列表页面
    8
  • 在模型列表页面,点击按钮“创建模型”
    9
  • 在右侧弹出的“创建模型”页面中,对模型进行配置,在“模型名称”输入框中输入模型名称,并且选择“类目id”、“物品标题”、“类目名称”字段,点击按钮“训练”,开始训练模型。
    10
  • 回到“模型列表”页面,可以看到模型正在训练,其中模型的“状态”这一栏会显示进度,直到模型训练完成。
    11

评估模型
  • 模型训练完成,在“模型列表”页面的“状态”这一栏会显示“训练完成”,这时可以进入模型详情,查看模型评估报告,点击带链接的模型名称,如下图:
    1
  • 在模型详情页面,可查看该模型的配置,包括已关联的应用和已关联的字段,如需设置干预字典,可点击“修改”,选择一个干预字典,点击“保存”按钮即可生效
    2
  • 点击模型详情的“评估报告”,右侧显示的评估报告中会显示“模型评估结论”、“准确率和召回率”、“模型预测效果预览”等内容
    3
    其中“模型评估结论”是根据模型的指标数据,给出的一个通俗易懂的基本结论,主要是对模型整体效果的一个评价,和要不要使用这个模型的一个建议。
    “准确率和召回率”是理论上对模型预测结果的评估指标,可以客观评估模型综合表现,是决定是否使用这个模型的重要依据。
    “模型预测效果预览”是使用训练完成的模型,对部分热搜query进行预测后的结果,可供人为评估这些预测结果是否符合预期,这样对模型效果可以有一个直观的感受。在这个效果预览中,还可以对预测结果进行好评或差评,这个人为评价结果会被后台收集后重新用于下一轮的模型训练中,达到进一步优化模型效果的目的。
    4

部署模型
  • 在“模型列表”页面,点击“去部署”按钮,进入模型部署页面
    1
  • 在打开的部署页面中点击“创建部署”按钮
    2
  • 在右侧弹出的“创建部署”页面中选择要部署的应用和部署场景,类目预测的部署场景只支持精排部署,点击“下一步”按钮
    3
  • 在跳转过来的页面中,点击“+”按钮,弹出模型列表对话框
    4
  • 在弹出的“可部署的模型列表”对话框中,选择刚刚训练完成的模型,点击“确认”按钮
    5
  • 回到“创建部署”页面,可以看到将部署的模型名称,点击“下一步”继续部署
    6
  • 在跳转过来的页面中点击“提交”按钮,开始进行部署
    7
  • 回到部署列表,可以看到部署已经在进行中,等部署完成,就可以在排序公式中引用模型的预测结果了
    8

第二步:应用类目预测模型

类目预测功能的目的是为了提升搜索结果的排序效果。例如预测到用户输入“苹果”是想要搜“电子产品”类的苹果手机,而不是“水果”类的可以吃的苹果,那么搜索结果中,苹果手机的搜索结果就应该更靠前。

类目预测模型的应用,顾名思义是将该类目预测模型配置到开放搜索应用里去,再修改粗排或精排表达式,将类目预测算分特征函数category_score()添加到表达式中,最后搜索时配置raw_query参数,即可观察到搜索提升后的效果。

关于排序表达式使用,详情请参见搜索相关性配置

2.1配置类目预测到粗精排表达式

点击控制台左侧 “高级配置”下的“搜索结果排序”,进入搜索结果排序配置页面,然后点击右上角“修改表达式”:

createFirstRank

点击后,可以编辑现有的排序表达式或者增加新的排序表达式:

2

点击粗排表达式下的加号,增加一条新的排序,如下图,输入粗排名称,然后选择category_score()算分特征:

3

然后指定一个字段(只能是用于训练时作为类目id的字段)作为category_score()的输入参数计算类目得分,再指定权重,点击添加:

4

添加后,选中刚刚新建的排序表达式,然后点击保存按钮,即可生效:

5

类目预测既可以应用在粗排表达式中(如本例所示),也可以应用于精排表达式中,配置方式相同。

2.2配置类目预测到查询分析

将类目预测模型应用到查询意图理解规则。11111上线新增规则以及效果测试。11

1

第三步:应用类目预测到搜索

设置查询参数raw_query
  • 用于类目预测查询;只有查询词和raw_query的内容一致时,查询时,才会去查查询分析中配置的类目预测;
  • 用于类目预测等算法训练使用;
  • 一般建议设置为终端用户输入的原始查询词。
    格式
    1. raw_query=content
    2. //API传参content需要URL_ENCODE(SDK不需要encode);content为原始查询词

常见问题

左侧导航栏点击算法工程——模型列表,可查看当前算法工程下所有的训练模型,若状态栏显示模型一直训练中,或训练失败,请提交工单,我们会及时排查并处理。工单中请您提供模型名称、模型关联的应用名以及应用所在区域,以便我们定位问题。