全部产品
云市场

类目预测功能

更新时间:2019-08-16 12:10:13

基本概念

类目预测

根据用户的查询字符串来预测用户是想要查询那个类目的结果,比如当用户搜索“苹果”时,类目预测可能的预测结果为:

  • 电子产品类目的可能性为2。
  • 水果类目的可能性为1。

类目预测的结果会作用于搜索结果排序,使得更符合用户搜索意图的结果更加靠前。如下图所示,在电商场景下,对“光明”的搜索Query进行类目预测后的结果:example

模型:

本语境下,特指基于用户数据训练出来的类目预测数据结果,在线搜索时直接查询该结果。

使用前提

  1. 有阿里云账号并且有正在使用的新高级版Opensearch应用(标准版和老高级版,不支持类目预测功能)。

  2. Opensearch应用主表中有定义训练字段类目字段,其中训练字段应为Text类型,类目字段应为INT类型。

  3. 我们支持有点击日志的训练和没有点击日志的训练,所以有无点击日志均可以使用类目预测。

操作流程

第一步:创建类目预测模型。如果业务有特殊场景等,可以配置类目预测干预词典(可选)。

第二步:应用类目预测模型。配置查询分析——类目预测,配置粗精排表达式。

第三步:SDK调用查询接口,输入raw_query参数。

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

操作步骤

创建模型

打开控制台,点击左侧“算法功能”内“类目预测”按钮,然后点击右上角“创建模型”按钮:

create

填写类目预测模型名称、关联应用(必须为新高级版应用)、训练字段和类目字段(必须为INT)。第一次关联的应用使用“点击行为采集”需要先开通“数据采集”服务,具体可以查看“数据采集”文档。如果有点击日志则需提供点击日志所在的ODPS项目、表和Access ID:

fillin

所有字段填写完成后,点击创建。

查看模型运行状态

创建成功后,自动跳转到模型列表页,可以看到刚刚创建的模型:

status

点击模型名称或者配置按钮,进入模型详情页:

DetailPage

模型训练通常会花费小时级别时间,可以在模型详情页查看训练进度。

效果测试

待模型训练完成生效后,可以点击模型详情页右上角“搜索测试”按钮,输入搜索字符串,查看该模型对该搜索字符串所预测的各类目得分:

Test

如上图,“苹果”对应的类目1得分为2,类目2的得分为2,类目5得分为1。

类目预测结果将作用于该搜索串的搜索结果排序,相比未应用类目预测的结果,应用类目预测后的搜索结果中,类目1和类目2的结果可能会相对更加靠前。

使用ODPS同步点击日志步骤(可选)

创建SLS项目

打开地址:https://sls.console.aliyun.com/#/

slsProjectCreate

进入控制台后,创建SLS项目:

Create

填写Project名称并选择区域(应该和Click log所在ECS区域相同),创建成功后会出现以下提示:

Check

创建Logstore

点击上图中创建出现下图:

logstore

填写Logstore名称,其余保持默认。创建log store之后,出现以下提示:

success

创建数据接入配置

将页面拉到最下方,点击“文本文件”,然后点击下一步,进入数据源设置页面:

DataSource

设置配置名称和日志路径。

比如收集/root/shiliang/click.log.json的数据,那么就在日志路径行第一个空白处填写/root/shiliang,第二个空白处填写click.log.json

nextstep

模式选择为使用JSON模式,然后保持高级选项不变,点击下一步:Format

创建机器组并应用数据接入配置

点击“创建机器组”创建机器组(如果已有,应用到已有机器组即可):

机器组

填写机器组的名称和ECS VM IP地址即可(填写内部IP,非公网IP):

ecs

勾选刚刚创建的机器组,然后点击“应用到机器组”:

check

在查询分析&可视化步骤不做操作,点击下一步:

diliver

在“投递MaxCompute”栏点击“开启投递”,会跳转到数加控制台。

开启MaxCompute投递

MaxCompute

选择投递区域,设定投递名称,选择要投递到的项目名和日志表名。选择后,页面右侧会出现ODPS表的各个native字段和partition字段(如下):

FillIn

分区字段使用partition_time,时间分区格式使用yyyyMMdd,其余配置保持不变即可。

检查日志同步状态

在logstore列表中选择自己的logstore,点击查询,可以查看已经收集到SLS的日志。点击MaxCompute可以查看每次投递任务的状态:

Check

已经收集到SLS的2条数据:

status

2条数据已经都投递到了MaxCompute:

success

在MaxCompute的web IDE中可以看到:

webIDE

在日志成功投递到MaxCompute之后,就可以使用其进行下一步计算。

应用类目预测模型

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

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

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

应用类目预测到排序

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

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

createFirstRank

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

2

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

3

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

4

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

5

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

配置类目预测到查询分析

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

1

应用类目预测到搜索

设置查询参数raw_query

  • 用于类目预测查询;只有查询词和raw_query的内容一致时,查询时,才会去查查询分析中配置的类目预测;
  • 用于类目预测等算法训练使用;
  • 一般建议设置为终端用户输入的原始查询词。

    格式

    1. raw_query=content
    2. //API传参content需要URL_ENCODE(SDK不需要encode);content为原始查询词

常见问题

如果模型跑的时间过长或者模型训练结果为失败,请在模型详情页点击“查看记录”按钮,然后查看有问题的任务ID,提工单描述应用信息以及该任务ID,以便我们查找问题。