筛选实时建议 - Amazon Personalize
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

筛选实时建议

您可以使用 Amazon Personalize 控制台筛选实时建议。Amazon Command Line Interface(Amazon CLI),或者Amazon开发工具包。

筛选实时建议(控制台)

要使用控制台筛选实时建议,请创建筛选器,然后将其应用于建议请求。

注意

要使用具有参数的筛选器和 2020 年 11 月 10 日之前部署的广告活动筛选推荐,您必须使用UpdateCampaign操作或创建新活动。

创建筛选条件(控制台)

要在控制台中创建筛选器,请选择包含要用于获取筛选推荐的广告系列或推荐者的数据集组。然后提供筛选器名称和筛选条件表达式。

创建筛选条件(控制台)

  1. 从打开 Amazon Personalize 控制台https://console.aws.amazon.com/personalize/home然后登录您的账户。

  2. 选择包含要用于获取筛选出建议的市场活动或建议者的数据集组。

  3. 在导航页面中,选择筛选条件然后选择创建新筛选条件. 这些区域有:创建筛选器页面随即显示。

  4. 适用于筛选器名称输入筛选器的名称。当您将该名称应用于推荐请求时,您将按此名称选择筛选器。

  5. 适用于表达式,选择构建表达式要么手动添加表达式然后构建或插入你的表达式:

    • 要使用表达式构建器,请选择构建表达式. 表达式构建器提供了用于构建格式正确的筛选器表达式的结构、字段和指导 有关更多信息,请参阅 使用筛选器表达式构建器

    • 要输入自己的表达式,请选择手动添加表达式. 有关更多信息,请参阅 筛选表达式元素

  6. 选择 Finish (结束)。筛选器的概述页面显示筛选器的 Amazon 资源名称 (ARN)、状态和完整筛选条件表达式。要删除筛选器,请选择Delete. 有关离开概述页面后查找和删除筛选器的信息,请参阅删除筛选条件(控制台).

应用筛选条件(控制台)

要应用筛选条件,请在测试推荐者推荐者(域数据集组)的面板或测试活动结果针对广告系列(自定义数据集组)的面板中,选择筛选器并输入任何筛选器参数值。然后获取用户的推荐。

重要

对于使用INCLUDE要包含项目,必须为表达式中定义的所有参数提供值。对于包含使用EXCLUDE要排除项目的元素,可以省略filter-values. 在这种情况下,Amazon Personalize 化不会使用表达式的那一部分来筛选推荐。

应用筛选条件(控制台)

  1. 从打开 Amazon Personalize 控制台https://console.aws.amazon.com/personalize/home然后登录您的账户。

  2. 选择包含要用于获取筛选出建议的市场活动或建议者的数据集组。

  3. 根据数据集组类型,请执行以下操作之一:

    1. 对于域数据集组,在导航窗格中选择推荐者.

    2. 对于自定义数据集组,在导航窗格中选择自定义资源然后活动.

  4. 在存储库的推荐者要么活动页面中,选择目标推荐者或广告系列。

  5. 为了进行比较,请先在不应用筛选器的情况下获取给用户的建议。在测试推荐者/测试活动结果中,输入要为其获取建议的用户的 ID,然后选择获取建议. 此时将显示一个包含用户的前几项建议的表。

  6. 筛选器名称菜单中,选择您创建的筛选器。如果过滤器有任何占位符参数,则会显示每个参数的关联字段。

  7. 如果使用带占位符参数的过滤器,则为每个参数输入值以设置筛选条件。要对一个参数使用多个值,请用逗号分隔每个值。

  8. 使用相同的User ID如前面的步骤一样,选择获取建议. 此时将显示建议表。

    如果用户已经购买了推荐商品,筛选器会将其从建议列表中删除。在此示例中,项目 2657、2985 被用用户没有购买的最合适的项目(项目 2641 和 1573)替换。

使用筛选器表达式构建器

这些区域有:构建表达式创建筛选器页面提供了构建格式正确的筛选器的结构、字段和指南

要生成筛选条件表达式:

  • 使用操作属性运算符, 和用于创建表达式的字段。

    对于,输入固定值,或者,要在获得推荐时设置筛选条件,请输入$+ 参数名称。例如:$GENRES。当你得到推荐时,你将提供要筛选的一个或多个值。在此示例中,当你得到推荐时,你将提供一个类型或类型列表。

    使用逗号分隔多个非参数值。不能将逗号分隔的参数添加到筛选器中。

    注意

    选择之后属性(在dataset.property格式),属性链接的任何后续行的值AND要么OR条件必须使用相同dataset.

  • 使用+X按钮用于在表达式中添加或删除行。您无法删除第一行。

  • 对于新行,请使用ANDIF,或者OR上的运营商菜单来创建条件链。

    适用于IF条件:

    • 每个表达式只能包含一个IF项目。如果删除 IF 条件,则表达式构建器将删除任何AND它之后的条件。

    • 您可以使用IF仅适用于按CurrentUser.

  • 选择添加表达式按钮可添加额外的过滤器表达式以实现更精确的筛选,包括使用项目和交互数据集进行筛 首先对每个表达式进行独立评估,结果是两个结果的联合。

    注意

    要创建同时使用 “项目” 和 “交互组件” 数据集的筛选器,必须使用多个表达式。

示例表达式

以下示例说明如何构建一个过滤器,该过滤器排除您在获得推荐时指定的类型的项目(请注意 $GENRES 占位符参数)。过滤器还排除了具有DOWNLOAD_COUNT超过200,但前提是当前用户的年龄大于17.

删除筛选条件(控制台)

删除过滤器将从数据集组的筛选器列表中删除过滤器。

重要

在批量推理任务正在进行时,您不能删除筛选器。

删除筛选条件(控制台)

  1. 从打开 Amazon Personalize 控制台https://console.aws.amazon.com/personalize/home然后登录您的账户。

  2. 数据集组列表中,选择包含要删除的筛选条件的数据集组。

  3. 在导航窗格中,选择筛选条件.

  4. 从筛选条件列表中,选择要删除的筛选条件,然后选择查看详细信. 此时会显示筛选条件详细信息

  5. 选择Delete然后在确认对话框中确认删除操作。

筛选实时建议 (Amazon CLI)

要使用Amazon CLI,您可以创建筛选器,然后通过 ARNGetRecommendations要么GetPersonalizedRanking请求.

重要

要使用包含参数的筛选器和 2020 年 11 月 10 日之前部署的广告活动筛选推荐,您必须使用UpdateCampaign打电话或创建新活动。

创建筛选条件 (Amazon CLI)

使用以下命令create-filter操作来创建筛选器并指定筛选条件表达式。

替换Filter name使用筛选器的名称和Dataset group ARN使用数据集组的 Amazon 资源名称 (ARN)。替换样品filter-expression使用自己的筛选条件表达式。

aws personalize create-filter \ --name Filter name \ --dataset-group-arn dataset group arn \ --filter-expression "EXCLUDE ItemID WHERE Items.CATEGORY IN (\"$CATEGORY\")"

如果成功,将显示筛选器 ARN。请将其记录以便将来使用。要验证筛选器是否处于活动状态,请使用DescribeFilter在使用过滤器之前进行操作。

有关该 API 的更多信息,请参阅CreateFilter。有关筛选条件表达式(包括示例)的更多信息,请创建筛选表达式.

应用筛选条件 (Amazon CLI)

当您使用get-recommendations要么get-personalized-ranking操作,请通过传递filter-arn以及任何过滤器值作为参数。

以下是的示例。get-recommendationsoperation. ReplaceCampaign ARN使用活动的 Amazon 资源名称 (ARN)User ID使用您获得推荐的用户的 ID,以及Filter ARN使用筛选条件的 ARN。如果你从推荐人而不是广告活动那里获得推荐,请使用--recommender-arn而不是--campaign-arn并为推荐者提供 ARN。

如果你的表达式有任何参数,请包括filter-values对象。对于过滤器表达式中的每个参数,请提供参数名称(区分大小写)和值。例如,如果你的过滤器表达式有$GENRE参数,提供“流派”作为钥匙,还有类型或类型,例如"Comedy",作为值。使用逗号分隔多个值。例如:"\"comedy\",\"drama\",\"horror"\"

重要

对于使用INCLUDE要包含项目,必须为表达式中定义的所有参数提供值。对于包含使用EXCLUDE要排除项目的元素,可以省略filter-values. 在这种情况下,Amazon Personalize 化不会使用表达式的那一部分来筛选推荐。

aws personalize-runtime get-recommendations \ --campaign-arn Campaign ARN \ --user-id User ID \ --filter-arn Filter ARN \ --filter-values '{ "Parameter name": "\"value\"", "Parameter name": "\"value1\",\"value2\",\"value3\"" }'

删除筛选条件 (Amazon CLI)

使用以下命令delete-filter删除筛选条件的操作。Replacefilter ARN使用筛选条件的 ARN。

aws personalize delete-filter --filter-arn Filter ARN

筛选实时建议 (Amazon开发工具包)

要使用Amazon开发工具包,您可以创建筛选器,然后通过 ARNGetRecommendations要么GetPersonalizedRanking请求.

重要

要使用包含参数的筛选器和 2020 年 11 月 10 日之前部署的广告活动筛选推荐,您必须使用UpdateCampaign打电话或创建新活动。

创建筛选条件 (Amazon开发工具包)

使用创建新筛选条件CreateFilteroperation.

SDK for Python (Boto3)

使用以下命令create_filter方法来创建一个过滤器Amazon SDK for Python (Boto3). ReplaceFilter Name使用筛选器的名称,Dataset Group ARN使用数据集组的 Amazon 资源名称 (ARN)。替换示例filterExpression使用自己的筛选条件表达式。

import boto3 personalize = boto3.client('personalize') response = personalize.create_filter( name = 'Filter Name', datasetGroupArn = 'Dataset Group ARN', filterExpression = 'EXCLUDE ItemID WHERE Items.CATEGORY IN ($CATEGORY)' ) filter_arn = response["filterArn"] print("Filter ARN: " + filter_arn)

记下筛选器 ARN 以备将来使用。要验证筛选器是否处于活动状态,请使用DescribeFilter在使用过滤器之前进行操作。有关该 API 的更多信息,请参阅CreateFilter。有关筛选条件表达式(包括示例)的更多信息,请创建筛选表达式.

SDK for Java 2.x

以下createFilter方法演示如何使用Amazon SDK for Java 2.x. 该方法返回新筛选器的 ARN(亚马逊资源编号)。将以下内容作为参数传递:Amazon Personalize 服务客户端、筛选器的名称、要在其中创建筛选器的数据集组以及筛选器表达式。有关筛选条件表达式(包括示例)的更多信息,请创建筛选表达式.

public static String createFilter(PersonalizeClient personalizeClient, String filterName, String datasetGroupArn, String filterExpression) { try { CreateFilterRequest request = CreateFilterRequest.builder() .name(filterName) .datasetGroupArn(datasetGroupArn) .filterExpression(filterExpression) .build(); return personalizeClient.createFilter(request).filterArn(); } catch(PersonalizeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }

应用筛选条件 (Amazon开发工具包)

当您使用get_recommendations要么get_personalized_ranking方法,通过传递一个过滤器filterArn以及任何过滤器值作为参数。

以下代码演示如何使用Amazon SDK for Python (Boto3)或者Amazon SDK for Java 2.x.

重要

对于使用INCLUDE要包含项目,必须为表达式中定义的所有参数提供值。对于包含使用EXCLUDE要排除项目的元素,可以省略filter-values. 在这种情况下,Amazon Personalize 化不会使用表达式的那一部分来筛选推荐。

SDK for Python (Boto3)

使用以下命令get_recommendations使用 SDK for Python (Boto3) 筛选建议的方法。ReplaceCampaign ARN使用活动的 Amazon 资源名称 (ARN),User ID使用您获得推荐的用户的 ID,以及Filter ARN使用筛选条件的 ARN。如果你从推荐人而不是广告活动那里获得推荐,请使用recommenderArn而不是campaignArn并为推荐者提供 ARN。

适用于filterValues,对于筛选器表达式中的每个可选参数,请提供参数名称(区分大小写)和一个或多个值。例如,如果你的过滤器表达式有$GENRES参数,提供“流派”作为钥匙,还有类型或类型,例如"\"Comedy"\",作为值。对于多个值,请用逗号分隔每个值。例如:"\"comedy\",\"drama\",\"horror\""

import boto3 personalize_runtime = boto3.client("personalize-runtime") response = personalize_runtime.get_recommendations( campaignArn = "Campaign ARN", userId = "User ID", filterArn = "Filter ARN", filterValues = { "Parameter name": "\"value1\"", "Parameter name": "\"value1\",\"value2\",\"value3\"" .... } )
SDK for Java 2.x

使用以下命令getFilteredRecs方法来对 Amazon Personalize 化推荐请求应用筛选条件。将以下内容作为参数传递:Amazon Personalize 化运行时服务客户端、广告活动的 ARN(亚马逊资源名称)、用户的用户 ID、筛选器的 ARN 以及任何筛选器参数名称(区分大小写)及其值。例如,如果你的过滤器表达式有$GENRES参数,提供“流派”作为参数名称。如果你从推荐人而不是广告活动那里获得推荐,请使用recommenderArn而不是campaignArn并为推荐者提供 ARN。

以下示例使用两个参数,一个具有两个值,一个参数具有一个值。根据过滤器表达式,修改代码以添加或删除 ParameterName 和 ParameterValue 字段。

public static void getFilteredRecs(PersonalizeRuntimeClient personalizeRuntimeClient, String campaignArn, String userId, String filterArn, String parameter1Name, String parameter1Value1, String parameter1Value2, String parameter2Name, String parameter2Value){ try { Map<String, String> filterValues = new HashMap<>(); filterValues.put(parameter1Name, String.format("\"%1$s\",\"%2$s\"", parameter1Value1, parameter1Value2)); filterValues.put(parameter2Name, String.format("\"%1$s\"", parameter2Value)); GetRecommendationsRequest recommendationsRequest = GetRecommendationsRequest.builder() .campaignArn(campaignArn) .numResults(20) .userId(userId) .filterArn(filterArn) .filterValues(filterValues) .build(); GetRecommendationsResponse recommendationsResponse = personalizeRuntimeClient.getRecommendations(recommendationsRequest); List<PredictedItem> items = recommendationsResponse.itemList(); for (PredictedItem item: items) { System.out.println("Item Id is : "+item.itemId()); System.out.println("Item score is : "+item.score()); } } catch (PersonalizeRuntimeException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

删除筛选条件 (AmazonPython 开发工具包)

使用以下命令delete_filter删除筛选条件的方法。Replacefilter ARN使用筛选条件的 ARN。

import boto3 personalize = boto3.client("personalize") response = personalize.delete_filter( filterArn = "filter ARN" )